= Old and new source control revisions = The following table contains the revisions from the Subversion repository before the [http://codespeak.net/pipermail/ftputil/2010q1/000290.html migration to Mercurial] as well as the revision hashes resulting from the migration. Trac automatically links these hashes to the corresponding changeset pages. Some Subversion revisions are missing. A few of them were artifacts from some earlier migration from CVS to Subversion and from Subversion tagging, some others were on the `issue32` branch which I have [http://codespeak.net/pipermail/ftputil/2010q1/000291.html stripped from the Mercurial repository]. || '''Subversion revision''' || '''Mercurial revision''' || '''First line of commit message''' || || 904 || [dba35d241916] || "strongly" perhaps is too strong. ;-) || || 902 || [3335b387c7d2] || Version change patches. || || 901 || [e90102d055af] || Updated version to 2.4.2. || || 900 || [be7dd6979d11] || Added announcement for ftputil 2.4.2. || || 899 || [4a42bfcbe111] || Updated release notes in `README.txt`. || || 898 || [7920a39a379c] || Use former version of `setup.py` for release 2.4.2 final. || || 897 || [81517281879a] || Show an error message upon tried installation if an HTML file is missing. || || 896 || [5ff5c73e495b] || Updated year in copyright notice. || || 894 || [c223441a5d31] || Marked development status as "Production/Stable" instead of "Mature". || || 893 || [01e5b681b92c] || Updated version number and patched via Makefile. || || 892 || [c85ba0f4c532] || Got rid of unnecessary usage of `sysconfig.get_python_lib`. This also || || 891 || [27b6f88cee1e] || Fixes for (hopefully) more robustness in `_real_stat` and `_real_lstat`. || || 890 || [8cb525920db5] || Commented out `test_special_broken_link`. I'll deal with that later, || || 889 || [9040ba4422b4] || Added comments on ticket #39. || || 888 || [6c2f19cdd2c6] || Commented out `print` statement. || || 887 || [f1bd27bc249a] || Added a test for ticket #40, but couldn't reproduce the problem so far. || || 886 || [2a804a48e36d] || Show each test file before running its tests. || || 885 || [be61e2bed030] || With all these little bugs cropping up from time to time it's || || 884 || [45423de79eff] || Added a test for issue #39. || || 883 || [2d2d01ad2ec5] || Added TODO comment. || || 882 || [d16f222c8d44] || Support for limit case of zero size. || || 881 || [3064fdee60b0] || Added test for issue #38. || || 880 || [031617cedff3] || Added ftp.heanet.ie (see issue #35). || || 879 || [0e00af87ab06] || Get directory listings from various public FTP servers and compare || || 877 || [6f76e6fd41ab] || Release-related patches. || || 876 || [9b759d5191e2] || Implemented a workaround for issue #33. From now on, use the || || 875 || [558a2720e0f1] || Assume all FTP servers behave like ftp.sunfreeware.com || || 874 || [1c51f078c784] || Fixed comment. || || 872 || [aaeff6db2578] || Complete milestone before posting the announcement. || || 871 || [52cb5a25265a] || Removed #TODO comment. || || 870 || [667708101939] || Add item to mark milestone as completed. || || 869 || [7823a108a00b] || Make comment clearer. || || 868 || [b37577197f7e] || Updated README and announcements. Increased version number to 2.4.1. || || 867 || [c08941e6112b] || Adapted Debian files for upcoming version 2.4.1. || || 866 || [ff1b73253239] || Fix handling of 12 AM and 12 PM times in the MS format parser. || || 865 || [7a14276b224c] || In the docstring for `synchronize_times`, point out that the time || || 864 || [6929c27acdc9] || Tried to make the documentation more readable. In particular, removed || || 863 || [743125307fe7] || Note that the time shift can be different from zero even if client || || 862 || [1bf78b8bafef] || Discussed why `isdir`, `isfile` and `islink` sometimes seem to || || 861 || [0ef45c839810] || Add tests for Python 2.4 to MANIFEST file. || || 860 || [99f2a5c66f27] || Use spaces for consecutive lines (after backslash). || || 859 || [06f681345c6e] || Fix for bug #36 (reported by Nicola). || || 858 || [2148fae72310] || Some small improvements. || || 857 || [b3672c4b4ce5] || Distinguish version number parts by Evan and by the ftputil project. || || 856 || [b263a58e4a48] || Added comment for `_sort_key` method from Peter Stirling's patch. || || 855 || [0b29d67d4210] || Use a counter instead of `time.time()` to determine the heap order. || || 837 || [4da2efa4bf8f] || Reverted changes which should have gone into the issue32 branch. || || 836 || [7515d06b2284] || Made test cache smaller. || || 835 || [26ec6614a1af] || Try to minimize further. || || 834 || [e8690b575b06] || Try to minimize code for error reproduction. || || 833 || [0ae4120c9040] || Added comment on cache invalidation in `FTPHost.file`. || || 832 || [2f6b2934a207] || Fixed typo. || || 817 || [1ce961cbb4b8] || Ignore directories for sync tests, test_empty and test_target. || || 816 || [f8810caff279] || Consider missing test directories. || || 815 || [e630c1599d67] || Silenced pylint error 1101 and added reasoning for that. || || 814 || [1a6bf04c66fa] || Removed the sync test directories. If those directories are || || 813 || [3f242dcc1f22] || Directories used by ftp sync unit tests. || || 812 || [e30f19b0424b] || Fix copyright notice (this module was started 2006). || || 811 || [8ca6b70c01d7] || Removed long-outdated points. || || 810 || [de1877c8c9d6] || Give a more helpful error message if an item to remove doesn't || || 809 || [2166f443d615] || Make the `ftp_error` module more robust with respect to `ftplib` || || 808 || [b5489dc35a4e] || Remove `super` call from `StatResult.__init__`. || || 807 || [da2f3a875b36] || Substituted double backticks for single ones according to || || 805 || [d24996d8d029] || Changes for version 2.4. || || 804 || [684625bf9a1a] || Re-added `_test_with_statement.py` to `MANIFEST` file but changed || || 803 || [12a0a3d8e810] || Preparation for upcoming 2.4b2 version. || || 802 || [8ef5bc0d184f] || Remove all but custom directory from debian directory in debdistclean. || || 801 || [700612900b37] || Removed dirs/files from experiments on ftputil 2.3 package. || || 800 || [79c640bc80ea] || Omit unit tests for `with` statement because they'll break on Python<=2.4. || || 799 || [c3cdc4e4165e] || Completed Debian package building. || || 798 || [f701ea8fea09] || Updated for Debian packaging. || || 797 || [ce270f3beb83] || Removed reference to bug number. I don't know if it has to refer to || || 796 || [ed665b85e8d0] || Added changelog file (still the template). || || 795 || [c94855dd8063] || Custom control and rules files. || || 794 || [b3860ad4a7f1] || Use ftputil's copyright for the Debian packaging, too (as seen at || || 793 || [20afcd92491b] || Added download URL. || || 792 || [1fee0f787e57] || Deleted the comment on different licenses. lrucache was originally || || 791 || [a545ccb6241b] || Debian copyright file with authors and Copyright notices. || || 790 || [ab500b95e0ee] || Use VERSION variable instead of `cat VERSION`. Started debdist target. || || 789 || [32f229d60308] || Customized files for Debian packaging. || || 788 || [7a9d13b116cf] || Some experiments regarding Debian packaging. || || 786 || [5030c7856184] || Add reasoning regarding second commit round. || || 785 || [1b2665163d8c] || Inserted an additional heading "Incompatibility notice". || || 784 || [9fbb716966f0] || Improved MANIFEST diff listing. || || 783 || [d87146681af5] || Added target manifestdiff to compare the MANIFEST file with a current || || 782 || [b0840cfdb265] || Sorted MANIFEST to make it easier to diff with a directory listing || || 781 || [04e99bb9cd15] || Added note about `find_deprecated_code.py` script. || || 780 || [94114c042f28] || Improved wording. || || 779 || [3cdd3be89edd] || Implicitly updated release date. || || 778 || [15d1bd65b452] || Distinguish items only necessary for non-alpha/beta releases. || || 777 || [9a994e8c06e4] || Changed for ftputil 2.4b. || || 776 || [e4f6f7346c69] || Improved wording. || || 775 || [7f95dce5ef66] || Added announcement for version 2.4b. || || 774 || [0f9c7274e435] || Make statement about `xreadlines` removal a bit clearer. || || 773 || [d8e611fd3012] || Be explicit about deprecation and removal of `xreadlines` and error || || 772 || [7853d8340c0f] || Explain the use of the literal slash in `invalidate` better. || || 771 || [27623d5a9237] || Improved comments. || || 770 || [b1b5a237a8ca] || Using one-line workaround docstrings is better than using two-line || || 769 || [768b047b51ac] || Fixed test; I was too hasty here (thanks again, Tom). || || 768 || [cea0938649bf] || Added a unit test and a fix for a bug found by Tom Parker. || || 767 || [9548c798d3f8] || Added `find_deprecated_code.py` to production files so they're || || 766 || [6e0fdfa22eeb] || Added a comment on subclass relationship `PermanentError` / || || 765 || [42c8d0551fc8] || Tended to !PyLint warnings. || || 764 || [0d93a978ad85] || Changed wording of deprecation message so users don't think they'll || || 763 || [ffc00d64ee93] || Added svn:mime-type text/x-python to the Python files which didn't || || 762 || [607c9181be87] || Added script find_deprecated_code.py to MANIFEST. || || 761 || [e4fd26d9ff27] || Added docstrings. || || 760 || [1b27ffe9a904] || Removed tools directory. || || 759 || [f833490d6741] || First attempt at a script which finds use of deprecated features. || || 758 || [e842d927263b] || Added tools directory. || || 757 || [42b9376b114f] || Use normal functions instead of lambda expressions. || || 756 || [afd89ecbd727] || Issue a deprecation warning if someone uses the `xreadline` method. || || 755 || [73a52962b097] || Sorted imported exception classes alphabetically. || || 754 || [f3f570705fe7] || Removed confusing part of docstring. After all, commands like || || 753 || [b49269498696] || Pipe output of pylint through less, so it gets read. || || 752 || [d0ea977217e6] || Prepared for version 2.4b. || || 751 || [ce67cced118f] || Run targets test and pylint even when making a distribution. || || 750 || [22a4bfedaf89] || Fixed missing variable rename. || || 749 || [5353ec9a050e] || Dealt with warnings/errors in production code mentioned by pylint. || || 748 || [c377d222ca12] || Let pylint use the new configuration file. || || 747 || [37900fae2d36] || Pylint configuration, generated by pylint's --generate-rcfile option. || || 746 || [c0ab7063491b] || Tended to warnings of pychecker (tested before pylint). || || 745 || [680e6a3c6670] || Added new target pylint. Checks still need to be configured. || || 744 || [03855a7b4676] || Added _test_ftp_file.py to MANIFEST. || || 743 || [e0b3a3cde421] || Moved low-level file tests from `_test_ftputil.py` to new file || || 742 || [3da749db59a7] || Make close operations of `_FTPFile` and `FTPHost` more robust. || || 741 || [616f25cfc357] || "test for" sounds slightly better than "test" here. || || 740 || [f5f57be74722] || Added a new exception `CommandNotImplementedError`, derived from || || 739 || [3d67776ae5c3] || Added documentation for the `chmod` method. || || 738 || [ea85fe1fd815] || Added support for the SITE CHMOD command. || || 737 || [6c3570f0fd5c] || Regrouped tests. || || 736 || [a1b7c141121b] || Though after the tagging, this is the actual announcement for || || 734 || [1c2921b9f36c] || Change files for release 2.3. || || 733 || [3e86c3bf1e8e] || Remind to do commits before release-related commits. || || 732 || [5d0c33975249] || Redundant whitespace removal. || || 731 || [13ff52c9cdf1] || Little cleanup. || || 730 || [adc6d6c4c515] || Use a cleaner class to make tests more robust. In particular, || || 729 || [73ad91d942b3] || Updated year numbers in copyright notices according to changes || || 728 || [6b3dd855918a] || Changed URL where to find lrucache to current notation || || 727 || [20c14c99b0a5] || Add documentation on the `with` statement. || || 726 || [906a4f95da58] || Simplified test code still a bit. || || 725 || [f6b3f0c89892] || Included a slightly modified variant of Roger Demetrescu's patch to || || 724 || [d08ca0ca87b3] || Made docstring more readable. || || 722 || [fbc868918cf7] || Prepare bugfix release 2.2.4. || || 721 || [543018bbb890] || Make sure `_test_real_ftp.py` is the last test file which is || || 720 || [1cfa3425de27] || Don't mix printed output into the output of the unit tests. || || 719 || [911549769e8a] || Fixed bug reported by Richard Holden, see || || 718 || [6e078f1c4942] || Make the tests work again after upgrading pure-ftpd. The problem is || || 717 || [9d8097e1dd3a] || Added/changed a few comments. || || 715 || [a09e4a4f0c9d] || Updates for version 2.2.3. || || 714 || [589248058eaa] || Note: Add new version to Trac's issue tracker. || || 713 || [9d7ee9d45ffe] || Added test code and applied a fix for a failing `makedirs` called from || || 712 || [71ec8c36b32d] || Refactored syncing code: Make a method `sync` which handles both || || 711 || [f4405b7674a3] || Preliminary, incomplete version of directory tree synchronization. || || 710 || [556f08b08c54] || Added `SyncError`, derived from `PermanentError`, to signal problems || || 709 || [16e76b94e500] || Improved comment a bit. || || 708 || [cc436d273369] || Set svn:keywords property to "Id". || || 707 || [c74c48ecec8e] || Unit tests for the `ftp_sync` module. || || 706 || [3f97934659f9] || Set svn:keywords on `ftp_sync.py` to "Id". || || 705 || [146753140c92] || Tools for syncing local and remote directory trees. || || 704 || [a946c5764c79] || Make sure all names of temporary directories and files have a leading || || 703 || [1a53d8b2dcd7] || Removed obsolete note from documentation. || || 701 || [e555c14cb2f2] || Increased version number. || || 700 || [2c12221c4a73] || Added announcement for version 2.2.2. || || 699 || [8679ed051764] || Add a question about uploading/downloading in ASCII vs. binary mode. || || 698 || [00780fbaee39] || Note on using exceptions via the `ftp_error` module. || || 697 || [dd77acbb83f7] || Remove things which are already in the issue tracker. || || 696 || [889d04fb3522] || Fixed typo. || || 695 || [1dec7cfdba78] || Moved test for inaccessible login directory before comment. This || || 694 || [c53c37156c92] || Added a test case for directory and file names which contain spaces. || || 693 || [ec6f8388053f] || In `_check_inaccessible_login_directory`, be more explicit that || || 692 || [5fd2a61be7a5] || Changed year according to file update. || || 691 || [dd7f0cd9ea3d] || Handle special case when renaming an item in a directory whose name || || 690 || [74cac1b559d1] || Don't handle paths with whitespace in the `rename` command (yet). || || 689 || [217c5f610076] || Handle directories with whitespace in them more gracefully (based on || || 688 || [a49b4aec0107] || Added directories `build` and `dist` to ignored items. || || 687 || [5e58ca953169] || Simplified code dealing with "session_factory" argument in `kwargs`. || || 686 || [df9a626f0a80] || Actually, use the stat calls. The previously used print commands || || 685 || [4a9c7b6fc1b7] || Make comment a bit more clear. || || 684 || [e899ee3bf82f] || In SSL example, make it more obvious that some code is missing. || || 683 || [cf3c835487fd] || Update to version 2.2.1. || || 682 || [043f0537db5d] || Mention that this is a bugfix release. Add URL to documentation to || || 681 || [c6d9cb7ba777] || Increased version number to 2.2.1. || || 680 || [e0dc9f569cd7] || Added announcement for ftputil 2.2.1. || || 679 || [8213195b860e] || Consider status code 451: || || 677 || [8e3fbb31cc80] || Increased version to 2.2. || || 676 || [2512d0af8676] || Increased version number to 2.2. || || 675 || [ebe70ab7417d] || Added announcement for ftputil 2.2 (final). || || 674 || [c567eedcdb0a] || Moved note on custom parsers before files supporting the iterator || || 673 || [e7d68f07ef60] || Fixed some typos. || || 672 || [69be188f3e6e] || Fixed typo. || || 671 || [043663022829] || Use Python 2.2 style dictionary key test. || || 670 || [c3028d2a9cad] || The single dot in `st_.time` looked weird, `st_...time` hopefully || || 669 || [ff9169cf7d44] || Added a paragraph which was actually included in the announcement || || 668 || [70efc486dcf8] || Added PKG-INFO. || || 665 || [e940c4c4a23b] || Version change via `make dist`. || || 663 || [64f441817a6a] || Fixed minimum Python version. || || 662 || [fcc887403844] || Updated to 2.2b2 . || || 661 || [c7fa164c1701] || Some simplifications. || || 660 || [462b66d7e29f] || Added announcement for ftputil-2.2b2 . || || 659 || [416a6f2379a6] || Mention parsers, not just count them. ;-) || || 658 || [cd6dd66b67b1] || Small changes at bottom of file. || || 657 || [70cdc7a8398f] || Small changes. || || 656 || [42c46e115fc1] || Added note regarding custom parsers. Added Evan Prodromou as author || || 655 || [dd1901b91831] || Moved info on writing custom parsers to its own section. || || 654 || [f25a6fb0339b] || Extended documentation on writing custom parsers. || || 653 || [9cf4a9ec1ede] || Renamed method `ignore_line` to `ignores_line` to better describe || || 652 || [3a4e22be7734] || Extracted date/time parsing methods into `Parser` base class. || || 651 || [9f40aaf8fda1] || Use string containment test in Python 2.3 style. || || 650 || [16b027960943] || Extracted a new method `parse_mode` out of `UnixParser` and moved it || || 649 || [efbd28c6bc3d] || Don't compare apples with oranges, i. e. don't compare stat results || || 648 || [4a92c70558e1] || Fixed error message. || || 647 || [165734ae2b14] || Turn classes into new-style classes by letting them inherit from || || 646 || [46557535213c] || Fixed typo. || || 645 || [d72cf4f7bb29] || Let `FTPError` inherit from `Exception`. || || 644 || [72d6b46688d7] || Added subsection on writing own parsers. || || 643 || [ef6c5dfa4379] || Added line for default.css . || || 642 || [8739e5d1edbd] || Adapted stylesheet path. || || 641 || [5e63dda13a86] || Added default stylesheet from docutils project. || || 640 || [2ab2c8a08d73] || Made parsers public, i. e. removed the underscore in front of || || 639 || [b94a6dd1df28] || Added method `FTPHost.set_parser`. || || 638 || [ec9258eac326] || Add parser method `ignore_line` and use it. || || 637 || [3536e49fc67e] || Use shorter names for parser classes. They have long been line || || 636 || [5a9c27304169] || Merged in the rest of the changes from the branch add_stat_caching: || || 635 || [2ac8410b0a70] || Ignore tags file. || || 634 || [f2ab969f29b5] || Moved unused code into sandbox. || || 633 || [34a5c709c989] || Merged in changes from feature branch add_stat_caching: || || 632 || [26bd1014b2b7] || Added a test to make sure that a `listdir` on an empty directory || || 631 || [22a0f6aa7364] || Added mock directory listings to test an empty directory. || || 630 || [83dda12c086f] || Leave `_real_listdir` early if no lines were found. || || 629 || [923443c9cd90] || Updated to version 2.2b. || || 628 || [e45298207132] || Updated to 2.2b. || || 627 || [7d901252fc5e] || Added classifiers. || || 625 || [fee84e3496a6] || Added note on updated documentation. || || 624 || [503954c425f7] || Wrote announcement for ftputil 2.2b1. || || 623 || [0b945aa60ed3] || Added note on iterator protocol for files. || || 622 || [87250caa0077] || Unlimited cache entry age corresponds to `None`. || || 621 || [677d7e4f849a] || Use `None` as special value, not 0, for unlimited age. || || 620 || [475571f05c77] || Let `max_age` == 0 be a special value meaning unlimited age. || || 619 || [2786879e1803] || Small fixes in section on stat caching. || || 618 || [71dfdb2991e5] || Added documentation on lstat caching and file iterators. || || 617 || [3376329092e5] || Added test of stat cache invalidation for concurrent access. || || 616 || [ccad912adb87] || Remove obsolete method `set_directory_format`, as was already || || 615 || [ea9c079e5f5f] || Make sure that `invalidate` gets an absolute path. || || 614 || [1ab7b9a1d482] || Invalidate the corresponding cache entry when beginning to write a || || 613 || [92867832b7a3] || Decreased default cache size to 1000 entries. || || 612 || [f0832919e4bc] || Use `enumerate` in `readlines` method. || || 611 || [417ecf074ea6] || Fixed typo in docstring. || || 610 || [06608a909664] || Iterator protocol implemented. `xreadlines` stays, as in current file || || 609 || [79fe7ae18727] || Added iterator interface for `FTPFile`s. || || 608 || [d4cfbef5634a] || Support expiration of cache entries. || || 607 || [1598dd7ef548] || Caching is now implemented. || || 606 || [2259d416bedf] || If the cache is disabled, raise a `CacheMissError`, even of the || || 605 || [5c5035d784a2] || Removed debugging code. || || 604 || [3a6566773c0d] || Added a `resize` method to the cache. The default size is now 2000. || || 603 || [59c8e31d7fcf] || Don't print cache contents. For the LRU cache, this takes a large || || 602 || [303585eee8f4] || Use Evan Prodromou's lrucache module instead of an "infinite" || || 601 || [2654b5037ac0] || Added lrucache.py to the MANIFEST's list. || || 600 || [71bf82018417] || Avoid some redundancy in comment on origin. || || 599 || [3bb87e1bdae5] || Added a pointer to the original lrucache package. || || 598 || [dfdfc8d079e2] || Fixed comment identation in docstring (tabs -> spaces). || || 597 || [1df4c98d966c] || Removed whitespace at end of lines. || || 596 || [b809f6354077] || Added comment for dual licensing (revised BSD license for ftputil). || || 595 || [f70e3c428b54] || Original version of lrucache.py 0.2 by Evan Prodromou. || || 594 || [4d05178dc3af] || Add FAQ on SSL support. || || 593 || [72ebc25b5c85] || Set svn:keywords property to "Id". || || 590 || [4683d9ed51ea] || Added announcement for ftputil 2.2a1. || || 589 || [dd9df94227cc] || Changed release notes for ftputil 2.2a1. || || 587 || [14454aca79be] || Increased version number to 2.2a1. || || 586 || [34080664ac12] || Added lines for `ftp_stat_cache.py` and the accompanying tests. || || 585 || [5a43ee5e33c1] || Explicitly enable the stat cache. || || 584 || [49d17798af7b] || Added timing results for activated caching in `_real_listdir`. || || 583 || [683b3776c26d] || Added docstrings. || || 582 || [fb34001a1d39] || Tests for disabled cache. || || 581 || [74a24984f41d] || Added enable/disable methods. || || 580 || [9f9876445d7f] || Added tests for stat cache. || || 579 || [14667be6a379] || Set svn:keywords property. || || 578 || [0f602ec3347d] || Tests for module ftp_stat_cache.py. || || 577 || [b20b6da7d082] || Removed irrelevant comment in `FTPHost.walk`. || || 576 || [26164e36adc0] || Fixed bug when storing stat results in `_real_listdir`. || || 575 || [1dccfc3c76b2] || Make sure the experimental ftputil version with cache support is used. || || 574 || [31fe71fcdd4f] || Clear stat cache when closing the connection. || || 573 || [a636f024a831] || Added caching to `_real_listdir` method. || || 572 || [a2c8c2c58a2a] || Add error message to raise of `CacheMissError`. || || 571 || [755b538cb146] || Let ftputil use the stat cache in ftp_stat_cache.py. With the script || || 570 || [449d24ae8306] || Moved upload_download_test.py into sandbox directory. || || 569 || [5001b1e5ea56] || List some directories recursively on a FreeBSD FTP server. This is || || 568 || [76616eb39cab] || Experiments etc. || || 567 || [51f781c40daf] || Rudimentary stat cache without expiration of entries. || || 566 || [f775ed97d207] || Use slightly faster version of `chdir` (don't query the server again || || 565 || [f0657c692a3f] || Removed lines related to the directory cache (see previous commit). || || 564 || [8cd8577fb139] || Remember current working directory locally. || || 563 || [116aad1f76d7] || Use Python 2.3 compatible string search. || || 562 || [a807c01d17f4] || Dropped support for Python versions < 2.3 . || || 561 || [3eec907a31ce] || Merged revision 545 -> 546 from trunk, which was accidentally omitted || || 560 || [468cd27a4377] || Merged revisions from 546 to 559 from trunk into branch add_stat_caching. || || 559 || [cbd0c5346f48] || Make `FTPHost.__copy_file` more robust. || || 558 || [0b3e33aee4a7] || Replace variable version number in PKG-INFO. || || 557 || [ca7d7602e302] || Small text change for ftputil 2.1.1 announcement. || || 556 || [a10d7eb25ee6] || Added announcement for ftputil 2.1.1. || || 554 || [ea898f19e4ce] || Avoid repetition of sed parameters. || || 553 || [3c8dcf4c8035] || PKG-INFO wasn't included. || || 552 || [ef6879641769] || Increased version number to 2.1.1. || || 551 || [bad81b103d7c] || Removed underscore from `exception_`. || || 550 || [7de51a61f52a] || Make comment slighly more readable. || || 549 || [4981041e6e69] || Added a workaround for issue #17. || || 548 || [b79155d713d4] || Included the word "remote" in two error messages to make the error || || 547 || [df8e74261caf] || FTPHost.file: Changed wording of error message to include that the directory || || 546 || [0ac2841758e2] || Added code to work around the problem of not being able to go up in the || || 545 || [1b5db4835f74] || Code contributed by Martin Wilck. (Thank you!) I might use some of || || 544 || [03f81d4f2eea] || Add a feature branch to add caching of stat results. || || 542 || [a80f4e5dcba9] || Added keywords for PyPI entry. || || 541 || [034a8bf8214b] || Fixed typo. || || 540 || [b69badc3b25c] || Added task of updating the website's documentation. || || 538 || [709496c34c87] || Added two more steps. || || 537 || [7d432d25d0b6] || Changed wording of license (the FSF website says "revised" instead of || || 536 || [874767a97458] || Added section on licensing. || || 535 || [21525eb838d4] || Changed ftputil homepage URL. || || 534 || [80bf47430542] || Updated release procedure in order to consider the new website instead || || 533 || [ae8a3541b3a6] || Updated section on changes. || || 532 || [9dddb389a9c3] || Added announcement for ftputil 2.1. || || 531 || [23069faad58f] || New version 2.1. || || 530 || [6e8ccbb3c512] || Increased version to 2.1. || || 529 || [64663f67b004] || Removed "keep alive" functionality. Nobody on the list seemed to need it, || || 528 || [f4b1fe507d1f] || Remove remote data file. || || 527 || [76297ac3c2b8] || Return actually entered login data. || || 526 || [f8808288ae23] || Print summary at the end. || || 525 || [0dee32f7b681] || Fix comment. || || 524 || [4bae7997ee9b] || Return actually entered login data. || || 523 || [20754f9a40b0] || Remove `stat` call. If the upload isn't ok, we'll get an error message || || 522 || [af9785ca9b1c] || Test script to check for bug #13. || || 521 || [58faa90f78a4] || Fixed now-obsolete comment in `_UnixDirectoryParser._split_line`. || || 520 || [d6ddfef5b1d9] || Added `ftputil_version.py`. || || 519 || [7e61a5b0e3e7] || Include ftputil version and Python version in traceback. This should || || 518 || [09adfbf0b02f] || Fixed docstring in `_split_line`. || || 517 || [a34f7794b476] || Extended Unix format parser to deal with an unusual format variant. || || 515 || [2f44a5efbf43] || Update version to 2.1b2. || || 514 || [efc7a2f2d16b] || Update to 2.1b2. || || 513 || [c07c11ba8d3e] || Included Russian documentation despite some changes (2.0.3 vs. 2.1 beta x). || || 512 || [23ddeb50d25a] || Updated documentation for 2.1 beta x. This documentation contains almost || || 511 || [0646003fa0a0] || Included some parts for upcoming release 2.1. Thanks to Anton Stepanov! || || 510 || [bbb12d16377f] || Reworked keep-alive functionality regarding writable files. If you read || || 509 || [c5b0ebdb9574] || Documentation update is done. || || 508 || [e5c90d782f04] || Extended `test_keep_connection`. This doesn't work as expected, though. || || 507 || [dbb9a9d9321e] || Changed download address. || || 506 || [e68724ac688d] || Added an optional parameter `also_files` to `FTPHost.keep_alive` || || 504 || [210e88e14aff] || Removed old Russian documentation because the original documentation || || 503 || [d35053c2f0e7] || Documented `keep_alive` methods in `FTPHost` and `_FTPFile`. || || 502 || [f0d33047a58d] || Added `keep_alive` methods to `FTPHost` and `_FTPFile` objects. || || 501 || [be4b6164f280] || Reordered some text and fixed links. || || 500 || [a40dbd8736e5] || Restructured contents. || || 499 || [710045177a07] || The previous commit message was for `ftputil.txt`. The real change || || 498 || [e1da62b3b54a] || Lots of changes. See the diff for details. || || 497 || [a50aaa96d8fc] || Lots of changes. See the diff for details. || || 496 || [b98ed005b1be] || Let `FTPHost.rmtree` specifically raise `PermanentError`, not just || || 495 || [34454ddf1c96] || Shorten version name for bug tracker. || || 494 || [13996691c16c] || Get rid of wrong assumption in `FTPHost.synchronize_times`. || || 493 || [d3a64ca4087c] || Remove `_FTPFile`'s `__del__` method to avoid reference cycles that || || 492 || [edc97f5c9d33] || Prepare for version 2.1 beta. || || 491 || [53470193e22b] || Be more explicit regarding the obselescence of || || 490 || [efb7b88db9b1] || No longer allow `FTPHost.rmdir` to remove non-empty directories. || || 489 || [9ccdaa182d69] || Exception hierarchy changes || || 488 || [28354286868b] || FTPHost: Added `rmtree` method, resembling that in Python's || || 487 || [2cff42f0cc10] || FTPHost.remove: Explicitly mention deletion of links in error message. || || 486 || [cc5bfe25c71b] || FTPHost.remove: Allow to remove also links to directories. || || 485 || [8b8975fc135d] || `FTPHost.remove/unlink` are no longer allowed to remove directories, || || 484 || [5183048698b1] || Improved documentation (docstrings, comments). || || 483 || [9784b14d58c3] || Removed dictionary `_available_parsers`. It's no longer needed. || || 482 || [9f5ec52f635c] || Removed the no-longer-needed `FormatDetectionError`. || || 481 || [33e8e5a070cb] || Removed obsolete autodetection of directory format. || || 480 || [a0acc362be40] || Switch automatically to the Microsoft format parser if the Unix || || 479 || [e183639bc3f9] || _Stat: Improve exception handling in `listdir` and `lstat`. || || 478 || [5c772aa7f887] || _Stat.listdir: Be more explicit on things like "total ..." in listings. || || 477 || [99b172b92d41] || Removed obsolete comment. || || 476 || [dfa799fdf923] || Extract parser classes out of the `_Stat` classes. There are now || || 474 || [17ce2164b30f] || Rename `set_directory_format` to `set_directory_parser` (but keep || || 473 || [b73b5eb1f2c6] || Added two rather short-term TODO items. || || 472 || [f5f0bf8286e0] || _Stat.(l)stat: Be even more clear about usage of extra method || || 471 || [6340a607d6c1] || FTPHost.makedirs: Removed commented-out `print` statement which || || 470 || [119a34559b1e] || When auto-setting the directory format, set "ms" format first to || || 469 || [1e91469fbf24] || Fixed typo. || || 468 || [1bac6c89ddf7] || FTPHost.set_directory_format: Renamed parameter `server_platform` || || 467 || [1e20ca71482a] || Added backticks to one identifier. || || 466 || [b076d3ebdafc] || Whitespace changes. || || 465 || [c2e4c654ae8a] || `FTPHost.__emits_ms_format`: Added comment on automatical detection. || || 464 || [d751fe9f0189] || _Stat.listdir: Provide a more meaningful error message if the wrong || || 463 || [f331e0b199ad] || Removed CVS to Subversion integration. That was long ago. ;-) || || 462 || [d23258f75b65] || Set svn:mime-type to allow syntax highlighting. || || 461 || [5bb28ccda817] || Set svn:mime-type to text/x-python to make syntax highlighting in || || 460 || [293a79fd5097] || Set version to 2.0.3 because that is the corresponding English version. || || 459 || [75984ea90e47] || Use right file name for Russian reStructuredText documentation. || || 458 || [86d16eb9fb27] || Added compatibilty note regarding `FTPHost.walk`. || || 457 || [c45f498f1060] || Documented `FTPHost.walk` by referencing the documentation of || || 456 || [365374eef1fb] || Implemented `FTPHost.walk`, similar to `os.walk`. || || 455 || [4184061abe7a] || Increase copyright year to 2006. || || 454 || [7a6ffdf8949b] || FTPHost.makedirs: Change index arithmetic slightly to make clearer || || 453 || [ff78568498a1] || Give the user a chance to skip the test(s). || || 452 || [6722e5fca54e] || Documented `FTPHost.makedirs`. || || 451 || [f892aa696b0b] || Added `FTPHost.makedirs` method, similar to `os.makedirs`. || || 450 || [1a9af17a0165] || Ignore also pyc and html files. || || 449 || [0aca079e7ecd] || Use hard-coded hostname and credentials for the FTP server. The || || 448 || [1b4ea95cf898] || `TestStatParsers.test_valid_unix_lines`: Use a new method, || || 447 || [ca674d35920d] || Set copyright year to 2006. || || 446 || [b6ac38e2bd70] || Removed `ftputil_ru.txt`. Its (identical) content is now in || || 445 || [e459f34b88fb] || Changed STYLESHEET_PATH to match newer docutils version. || || 444 || [24181ff46676] || Original translation of the ftputil documentation in Windows-CP1251 || || 443 || [e2e44f550605] || Added explicit example under "Tips and tricksi/FAQ" / "Using active || || 442 || [cf50c70790ba] || Added credit and link for Russian translation. || || 441 || [1b87d89a6d9d] || Use correct word for table of contents. || || 440 || [87f7545c6a50] || Update to version 2.0.4 . || || 439 || [093813ebd579] || Allow for different option name for sed's extended regular expressions. || || 438 || [c199add3ba2a] || Update to 2.0.4 . || || 437 || [5aa5ae2ec091] || Introduced `STYLESHEET_PATH` variable. || || 436 || [15e51fe11b4c] || Added Russian documentation files. || || 435 || [b43fc5d687e7] || Fixed rst errors and warnings due to accidental line breaks. || || 434 || [45a32afc08fb] || Converted DOS-style to Unix-style line endings. || || 433 || [a64d9f632a8e] || Version 2.0.4. Include Russian translation of the documentation || || 432 || [438026f99bb9] || Russian translation of the documentation. (Contributed by || || 431 || [1ef3513a3ce6] || Underline with backticks instead of commas. || || 430 || [c72093987414] || Normalized $Id$ keyword. || || 429 || [6b192ecdfc28] || Removed `ftputil_pydoc.txt`, it has been obsolete for a long time || || 428 || [9ebfdf3d73b7] || Added properties svn:mime-type, svn:eol-style, svn:keywords. || || 427 || [606ef382340d] || Added several properties. || || 426 || [30609c6e20a6] || Added announcement for ftputil 2.0.3 . || || 424 || [f8d0c19e1722] || Increased version number to 2.0.3. || || 423 || [2ad1f63147b8] || Removed colons in bug report subsection. || || 421 || [3a8af43ad6f5] || Increased version number to 2.0.3b2. || || 420 || [2f8408858383] || Look for exception classes in module `ftp_error`, not in module `ftputil`. || || 419 || [85870ef242ae] || Adapt unit tests to changes in `FTPHost.file`. || || 418 || [8780446c1f1f] || FTPHost.file: Change to effective directory. Use only a filename for the || || 417 || [15213e697557] || FTPHost.file: Added a comment regarding the `OSError` -> `IOError` || || 416 || [9696c38f7f3a] || FTPHost.file: Raise a `FTPIOError` if `basedir` isn't accessible. This can || || 414 || [2e7adfc91a3c] || Added subsection on bug reports to "Tips and tricks" section. || || 413 || [fc06dc38bb99] || Document the changes in the exception hierarchy (including the new class || || 412 || [e27d76182fa6] || Module: Added warning converning the exception classes in `__all__`. || || 411 || [259eecde397c] || Added tests for workaround when a path contains spaces. || || 410 || [dde7fb0c7412] || Module: Changed date in copyright. || || 409 || [c2f78e3d1502] || Module: Make `RootDirError` a subclass of the new exception class || || 408 || [4367472eff8f] || Due to a change in `FTPHost._dir`, some of the directories used in the || || 407 || [66f2d2079e86] || FTPHost._dir: No longer use the workaround for space-containing || || 406 || [5d8c21137143] || Increased version number to 2.0.3b. || || 405 || [b3e9c9d9e1e4] || Increased date for new version 2.0.2. || || 404 || [8d1e11460703] || Touch `${WWW_DIR}/python/python_software.tmpl` so trigger the update of || || 402 || [d42a78d1f560] || Changed/added summary line. || || 401 || [d37722f46160] || Sorted lines in file alphabetically (with Unix sort). || || 400 || [3537d808aca7] || Increased to 2.0.2. || || 399 || [9778ae096bee] || Fixed typo. || || 398 || [1e74aa42299e] || Added the `MANIFEST` file itself. || || 397 || [91e29360302b] || Moved TODO section from `ftputil.py` to `TODO` file. || || 396 || [c00e7e6e47ab] || Delete `build` directory (or at least try to do it). || || 395 || [292d2aa2b83c] || Increased year values in copyright notices. || || 394 || [959fc7d8e387] || Fixed bug in `sed` call (use empty string as extension). || || 393 || [4c8a89493abb] || Atomated patching, thus removed TODO item on automation. || || 392 || [ba7133772230] || Automate patching of files. || || 391 || [83484cd4637b] || Allow finer-grained control. || || 390 || [71df641e062c] || Added some TODO items. || || 388 || [a46de9b17633] || Replaced summary and description with somewhat improved texts. || || 387 || [c1ba407a251d] || Updated version number for 2.0.1 release. || || 386 || [32b4fee4a985] || Make `True` (used in `_Stat.lstat`) known for use in Python before 2.2.1 || || 385 || [de5b379beb2e] || Refer to URL without `#ftputil` target, so visitors may note the reference || || 384 || [dbdb29e50a15] || Mention mailing list in FAQ. || || 383 || [dee1c9514b89] || Announce copy operations to lacal webspace. || || 382 || [c8b996dac443] || Mentioned mailing list at top. || || 381 || [41a4ef5748d6] || Added download links to 2.0 announcement. || || 379 || [aa47ecfa21a6] || Bugfix w. r. t. `$HOME`. || || 378 || [f3ba17cc5985] || Added proposed announcement for `ftputil` 2.0 . || || 377 || [413db5a95b7b] || "several" bugfixes. || || 376 || [332ea16d964b] || Fixed `extdist` target. || || 375 || [6ca3a39b851c] || Updated year values in copyright notice. || || 374 || [bb414bd4a7d3] || Added note on mailing list. || || 373 || [c70dc905a864] || Increased version number. || || 372 || [6bdc64790365] || Adapted for new stylesheet path. || || 371 || [db75d0115a27] || Set to version 2.0. || || 370 || [4c5900a4f022] || Added #TODO on custom session classes. || || 369 || [98b4d4c7e78d] || Use only tuple -> float conversion (via time.mktime); don't try to use || || 368 || [6120ec64d892] || `TestStatParsers.test_valid_unix_lines`: Changed entry for 2003-01-19 to || || 367 || [24c6f2343475] || Added line `from __future__ import division`. || || 366 || [059056ecde3d] || time.mktime seems to assume that the argument is a local time. Some tests || || 365 || [87765f85d865] || FTPHost.rmdir: Renamed parameter `remove_only_empty` to || || 364 || [f98444989eca] || Document changed behaviour of `FTPHost.rmdir`. || || 363 || [9b1e7731ac3e] || Test real FTP access (in addition to the present mock object tests). || || 362 || [d458fa0f01bc] || FTPHost.rmdir: Change method interface so that by default, only empty || || 360 || [81a5e60f62ab] || Formatting changes; mostly removed whitespace in nested parentheses. || || 359 || [6f1a9179411f] || Removed redundant line on `ftputil.txt`. || || 358 || [fda7b0720f30] || Changed date for 2.0 beta 3. || || 357 || [1bd9f2e35b34] || Formatting fixes. || || 356 || [2c6b86883fa4] || Formatting changes. || || 355 || [8fefc22e2992] || Formatting change. || || 354 || [2c339acf43bb] || Small formatting changes. || || 353 || [1ec5d8c90b10] || _Stat.stat_candidates: Compacted list comprehension. || || 352 || [50b601b90d2b] || _Stat.parse_lines: Compacted implementation. || || 351 || [72f895916692] || _Stat.stat: Include the original path in the error message. || || 348 || [6fd9af870132] || `_Path.exists` no longer returns `False` for an abnormal FTP error (e. g. || || 347 || [f573e621076d] || Reverted the patch from the last commit. || || 346 || [113beb5c2ac3] || Execute only time shift tests. || || 345 || [87c58ee53026] || _Stat.lstat: Joined a comment to occupy only one line. || || 344 || [74ea296f38b6] || _Stat.lstat: Changed implementation to be more similar to that of the || || 343 || [b2d7a19be1ef] || _Stat.lstat: Fixed typo. || || 342 || [7a71ef707194] || Removed the trailing slash from package specification. This caused the || || 341 || [baeddd847608] || Removed obsolete #TODO comment. || || 340 || [7d0613e239c6] || Increased version number to 2.0b3. || || 339 || [cbca1271f262] || Added long description to metadata. || || 338 || [30e40b2db885] || Increased to 2.0b3. || || 337 || [0adf2f75734a] || The setup parameter `download_url` is now only used if the Python version || || 336 || [aa8d97ffb50e] || Added weaknesses of `upload_if_newer` and `download_if_newer`, and || || 335 || [6c06aff68fb1] || Added some points. || || 334 || [246f95ada04b] || Added `extdist` target. This also copies some files to the WWW directory || || 333 || [371974bf88cb] || Updated version number. || || 332 || [49c8c9860601] || Reformatted list on changes. || || 331 || [29d192952f4a] || Todo list for releasing a new version. || || 330 || [adec0d011085] || Corrected release date. || || 329 || [20f70bee7305] || Updated to 2.0 beta 2. || || 328 || [fe5e5e2059f0] || `FTPHost.__emits_ms_format`: Fixed docstring. || || 327 || [8dd38feea991] || FTPHost: Refactored automatic determination of directory output format. || || 326 || [bf2e42b64ab4] || Some small text changes. || || 325 || [50aeb83009f9] || Added keyword table at top. || || 323 || [2d03f6315e45] || Some small corrections. || || 322 || [748b710a69d0] || Formatting fixes. || || 321 || [cb94a096af84] || Added section "What's new?". || || 320 || [ecb985edf672] || Added a missing parenthesis. || || 319 || [65f7300bc005] || Suggest to remove older versions of the software. || || 318 || [60ca5098b431] || Set to 2.0b1. || || 317 || [ad4102279aa2] || FTPHost._dir: Made comment before method a bit clearer. || || 316 || [d0434f9ab00a] || FTPHost._dir: Implemented a workaround similar to those suggested by || || 315 || [6b29c0d8d2e4] || Updated comment on custom `FTPHost` classes. || || 314 || [df3dc0d856c5] || Added test code for time shift consideration in Unix-style parser. || || 313 || [29d010bc6695] || _UnixStat.parse_line: Added an addend in the year-determination logic, so || || 312 || [1939a5ac0635] || Style change: remove some empty lines at beginnings of classes. || || 311 || [8e5e40619aff] || Remove empty line at end. || || 310 || [cea9f5fdbc1a] || Put documentation files in the package directory, not in the `doc` || || 309 || [1bbdb2677e28] || Re-add test files and document them. || || 308 || [6332566cb788] || Added TODO item (bugfixing). || || 307 || [51dc4a585f57] || Documented `set_directory_format`. || || 306 || [bbc24ecbd222] || FTPHost.set_directory_format: Simplified method; use either "unix" or "ms" || || 305 || [b538d3d7f502] || Added one more sentence to the section "Purpose". || || 304 || [566e28572bc5] || Removed an empty line. || || 303 || [7e1966b7757e] || _Stat.listdir: Exclude `self._host.curdir` and `self._host.pardir` from || || 302 || [d74ab753fa89] || FTPHost: Added method `set_directory_format` to set the format "manually" || || 301 || [08b77c5184f6] || Added remark on exception namespace. || || 300 || [1901959bef48] || Moved section on time zone setting further up. || || 299 || [e6de63f16446] || Added "Tips and tricks" section. || || 298 || [21ef1becc865] || Some reorganization. || || 297 || [100a1b838af7] || Added more information on `TimeShiftError` exception. || || 296 || [dfff0cb22387] || Added subheadings to section "FTPHost attributes and methods". || || 295 || [e3ea216ae309] || Remove detailed information on files, instead provide only some general || || 294 || [bf6c25c4cf67] || FTPHost: Renamed `synchronize_time` to `synchronize_times`. || || 293 || [429aa3afc896] || Makefile for ftputil maintainance. || || 292 || [30e543570160] || Change documentation directory. || || 291 || [f1492fb1dc8c] || Added documentation files. || || 290 || [6d749d560381] || README file for a short overview and a installation instructions. || || 289 || [aa26052a7525] || Setup script for Python distutils. || || 288 || [d17d6dbf91b2] || Version of next planned release (now: 2.0). || || 287 || [13a2831d6864] || Changed for new package distribution. || || 286 || [fc3cdefd1b0a] || Init file for ftputil package. || || 285 || [fae4666ee5d0] || Consider the time shift in stat'ing files on Unix servers. || || 284 || [5a2aa918c9af] || FTPHost.synchronize_time: Rename `remote_time` to `server_time` for || || 283 || [5a245a87472d] || FTPHost.set_time_shift: Made definition more explicit and provide || || 282 || [7d7a42eaa7a0] || Fixed some docstrings. || || 281 || [8d1d82a52520] || _MSStat.parse_line: Reverted argument order: `12 + hour` -> `hour + 12`. || || 280 || [c175e0dba686] || _Path.isfile/isdir/islink: Put the `return` statement for the non- || || 279 || [e51ad8256e60] || Extended comment on test for stat result's base class. || || 278 || [b732b1c74708] || Set the stat result base class without explicitly querying the Python || || 277 || [0fef0c7a080f] || Added and changed comments and docstrings. || || 276 || [a31d2f88b493] || Added markup for the `closed` attribute. || || 275 || [f498f86933ac] || Turned the descriptions of the exception classes into an ordinary list. || || 274 || [1891cc709d71] || Fixed broken link to mock objects document. || || 273 || [47f7b71b6f6b] || Moved somewhat away from manpage style: United sections "Name" and || || 272 || [10ae2ae12014] || Converted definition lists to ordinary bulleted lists. || || 271 || [21dbff0003ca] || Added a lot of links. || || 270 || [ad8e135de0ba] || Most of conversion to reStructuredText format done. || || 269 || [6cc36c8cfc11] || Moved test for embedded `_Path` object from `_test_ftputil.py` into its || || 268 || [7c33dc2a37b8] || _Stat.__init__: Make an instance variable `_path`, taken from the given || || 267 || [35b492c6f398] || `TestStatParsers`: Use `_test_base.ftp_host_factory` instead of setting || || 266 || [2ac3e3daee22] || Let unit tests use `_Stat` objects. Use `FTPHost` objects only indirectly. || || 265 || [0bebb5381df6] || Moved tests for `lstat` and `stat` from `_test_ftputil.py` to || || 264 || [f58a322211cf] || Extracted `ftp_host_factory` from `_test_ftputil.py` and added it into new || || 263 || [28b1dd6b283b] || Module: Added docstrings for classes derived from `_Stat`. || || 262 || [bfd9c99e7d0b] || Removed `stat` module from list of imports. || || 261 || [37fcd66ab2d0] || Module: Added/substituted lots of backtics. || || 260 || [d83f220cce89] || Moved `listdir` implementation from class `ftputil.FTPHost` to || || 259 || [147d59af6dfc] || _Path: Use the implementation of `split` in module `posixpath` instead of || || 258 || [715b9c01a120] || Moved `lstat` and `stat` method bodies from class `ftputil.FTPHost` to || || 257 || [8d5a24ced345] || Module: Renamed `_Stat` to `_StatResult`. || || 256 || [2005b37968d7] || FTPHost: Get rid of `_parse_line`. || || 255 || [e10e51fe2001] || FTPHost: Refactored `listdir` and `lstat`, thereby introducing a new || || 254 || [21052a55ba9f] || _StatParser: Changed name and interface of former || || 253 || [1481b2223e62] || Added more tests. || || 252 || [1febce624019] || _MSStatParser.parse_line: Add more sanity error checking. || || 251 || [4491659bea5e] || Tests for stat parsers. || || 250 || [433b30f85c57] || In line parser methods, renamed `result` to `stat_result`. || || 249 || [e439ef5262c1] || FTPHost: Imroved two comments. || || 248 || [96542ca6b5eb] || Module: Added parser info to module docstring. || || 247 || [a969b12f42ea] || Module: Changed version for next release to 1.2 beta. || || 246 || [4ea01c5104a0] || Moved line parsers from `ftputil.py` to `ftp_stat.py`. These parsers go || || 245 || [b702aae1c49b] || _Path.__init__: Extended comment on `posixpath`. || || 244 || [9d8d0ac2e0d5] || Module: Added `_StatParser` class with methods `parse_line` and || || 243 || [de8684c9435f] || _FTPFile.writelines: Added comment on (not) modifying `lines` in-place. || || 242 || [d3ef709456c5] || `_FTPFile.__getattr__`: Fixed unclear logic in docstring. || || 241 || [1b6c7b445136] || Module: Added some backticks in comments to signify program code || || 240 || [c2e98e292d7a] || Module: Added TODO comment for version 1.2. || || 239 || [eb20da006eca] || FTPHost.lstat: Add ``s to `os.lstat` in docstring. || || 238 || [cfff8c3db6b8] || Fixed/added several docstrings and comments. || || 237 || [3a5666a824b4] || Module: Reordered import statements. || || 236 || [160daf5b0a94] || Module: Removed `_Stat` class and adapted `FTPHost` class. || || 235 || [51fd597e35ea] || `stat` result class for ftputil. || || 234 || [cd9b8e32be3b] || FTPHost.lstat: Fixed indentation. || || 233 || [b0b8bd39ed17] || Module: Added module docstring. || || 232 || [0a4ac626c5b8] || Extracted `_Path` class to module `ftp_path.py`. || || 231 || [dba658ea1495] || Module: Support similar to `os.path` but for file(s) on FTP server(s). || || 230 || [f1fe7c7a3740] || Module: Simple assignments, not tuple assignments. || || 229 || [d46da97dc874] || Replaced explicit code for `True` and `False` with import of || || 228 || [f786d968f0a9] || Constants `True` and `False` for Python versions lower than 2.2.2. || || 227 || [f6ca14c3ddda] || Module: Added definitions for `True` and `False` in case we don't have at || || 226 || [49fe012c8a5f] || Adaptions for refactorings w. r. t. `ftp_error.py`, `ftp_file.py` and || || 225 || [a77ad580f2af] || Module: Removed stuff that is now in `ftp_error.py` and `ftp_file.py`. || || 224 || [31f7934104aa] || File-like objects located on FTP servers. || || 223 || [51d91513b685] || ftputil exceptions and their wrappers. || || 221 || [a9fe73654ee1] || FTPHost: Used `True` and `False` instead of `1` and `0` for flag `fail`. || || 220 || [686bd8c39f6c] || FTPHost: Removed threading stuff which was a non-working attempt. To make || || 219 || [8f9bf8c05e9a] || FTPHost.file: Method is now (hopefully) thread-safe in the sense that || || 218 || [9dd038c4ed75] || FTPHost: Factored method `__copy_file_if_newer` out of `upload_if_newer` || || 217 || [f40e7795d634] || FTPHost.upload/download: Factored out new method `__copy_file`. The former || || 216 || [b959a007165d] || FTPHost: Extracted calculation of local modification time into new method || || 215 || [c3ccda9125e8] || FTPHost.upload_if_newer/download_if_newer: Consider time shift between || || 214 || [1a4ec4074f19] || `TimeShiftMockSession`: Removed unneeded `current_dir` attribute. || || 213 || [71b4e5e23cfe] || `MockSession`: Reverted last change, i. e. removed mock directory line for || || 212 || [0a1ef28f5917] || FTPHost: Added support for synchronizing local times of client and server. || || 211 || [1ead266501ef] || `MockSession`: Added a directory line for dummy directory `/login/dir`. || || 210 || [7f0fd434c82b] || FTPHost.copyfileobj: Renamed `buf` to `buffer`. || || 209 || [29ca502cdad5] || FTPHost: Reordered some methods. || || 208 || [4faa1d0d8dbc] || FTPHost: Replaced two `while 1` with `while True`. || || 207 || [ff666749b632] || Module: Formatting changes (70-characters-wide display) and "`" characters. || || 206 || [78447a523484] || Module: Minor formatting changes (mostly inserted "`" characters for code || || 205 || [c139b745ac24] || Module: Reformatted comments and docstrings to 70 characters-wide display. || || 204 || [1a9240094e79] || Module: Line endings conversion OS/2 -> Unix. || || 202 || [003a40a10b6d] || Documented changes in `upload_if_newer` and `download_if_newer`. || || 201 || [1372b96e3bea] || Module: Replaced 1 with `True` and 0 with `False` where appropriate. || || 200 || [05cd43588288] || Module: Made assignments for `True` and `False` more readable. Put || || 199 || [63f31b87b334] || FTPHost.upload_if_newer/download_if_newer: Return a flag telling whether || || 198 || [9864aa0befbb] || FTPHost.__init__: added comment on directory format determination. || || 196 || [166654a407e8] || FTPHost.__init__: the Microsoft-style parser now is also invoked for || || 194 || [ffeb6a4e7b53] || Added EXAMPLE_PORT variable. || || 193 || [1eef91169c64] || Added example for session factory as a wrapper class of ftplib.FTP . || || 192 || [6dbf67e913e6] || Small change regarding new session factory in constructor. || || 190 || [04ab5a54489b] || Release 1.1.1 (repackaged the zip to use its own directory). || || 188 || [85b8c11b2182] || Changed to version 1.1. || || 186 || [99e6d4a2c5a0] || Documented the problem with (l)stat and `RootDirError`. || || 185 || [737c9c16bf3f] || Module: added `RootDirError` to `__all__`. || || 184 || [f860d316ad50] || `TestStat`: added a test to check for `RootDirError` if stat is requested for || || 183 || [3e90b1b0dc4e] || FTPHost.lstat/stat: stat'ing the root directory is not possible with the || || 182 || [0020c2923f59] || `MockSession.dir_contents`: added entry for root directory. || || 181 || [63a31d79fc6d] || Release 1.1 b1 || || 179 || [fc1a1df64b69] || Wrote announcement for ftputil 1.1 || || 178 || [0eecfb0698d5] || Module: minor comment changes. || || 177 || [66d52c85c23a] || Expanded FTPHost.path and FTPFile method lists to make them more readable. || || 176 || [79d49ecaba7e] || Announcements for comp.lang.python etc. || || 175 || [4723dca546a9] || Added ftputil_pydoc.txt || || 174 || [ac9cea009706] || Added ftputil.txt and ftputil_pydoc.txt to Files section. || || 173 || [dab8d2f94899] || ftputil documentation generated with pydoc. || || 172 || [e274821cb6eb] || Additions to Bugs/Limitations. Added Files section. || || 171 || [555cd0fa0b6a] || Module: if Python version is >= 2.2, tuple is used as base class for || || 170 || [260d502d3f21] || Documentation mostly complete. || || 169 || [fa6fd2b51c6d] || FTPHost.rename: changes parameters to source and target. || || 168 || [53bb6503b8ee] || ftputil documentation. || || 167 || [c5bbd756c39c] || File list for ftputil distribution. || || 166 || [58baa1c01679] || FTPHost.open: fixed call of file method. || || 165 || [6bc1598eec42] || FTPHost: added open as an alias for file. || || 164 || [21d56106487f] || `TestStat.test_lstat_one_dir`: added comment on mtime deviations due to || || 163 || [11c06d8337b1] || FTPHost._parse_unix_line/_parse_robin_line: use time.mktime with || || 162 || [0de19ee93637] || FTPHost.stat: added support for following links. Recursive link structures || || 161 || [8ecd52b03684] || `TestStat`: added method test_stat_following_link. || || 160 || [2d44067315d7] || `MockSession.dir_contents`: added one directory and several links for || || 159 || [96721385347a] || FTPHost/_Stat: re-added support for name and link name. However, these are || || 158 || [efe7eb078ff6] || _Stat/FTPHost: removed support for st_target field. || || 157 || [c342d2f5be81] || `TestStat.test_lstat_one_file/test_lstat_one_dir`: checking st_target || || 156 || [5809390c1c8d] || _Stat._index_mapping: added field st_target (for link targets). || || 155 || [091e6cb64a7e] || `MockSession._remove_trailing_slash`: retain single slash denoting the || || 154 || [cccc2d443274] || FTPHost: removed copyfile method. || || 153 || [7760bb1655f5] || `MockFile`: extended docstring a bit. || || 152 || [00fcb45c2d5c] || binary_data: fixed typo in docstring. || || 151 || [ebeb60ff34b2] || FTPHost: added methods upload_if_newer and download_if_newer for || || 150 || [c0cee0002080] || `TestUploadAndDownload`: added tests for condiitional upload and download. || || 149 || [24e12bcb6cca] || `MockSession`: added two files, "older" and "newer" to virtual directory || || 148 || [0de437c43328] || `TestFileOperations`: unified docstrings of test methods. || || 147 || [46eae1ff960b] || _FTPFile.readline: replaced "data and data[-1] == '\r'" with the simpler || || 146 || [fbee507186b1] || Module: joined several source lines which were broken for the book layout. || || 145 || [535beed99fa9] || Module: joined more source code lines. || || 144 || [eff13ed57afc] || Module: minor layout changes. || || 143 || [3bfbb14a2c25] || `MockSession.close`: do only more if self.closed is false. || || 142 || [c622a1920a70] || Module: removed unused version of `MockSession` (which was copied with || || 141 || [e4be3e861085] || Module: added testcase class `TestOpenAndClose`. || || 140 || [b9a01a1c2c20] || Module: reorganized and commented. || || 139 || [046b754c6804] || Module: moved test_ascii_upload and test_binary_download from class || || 138 || [fded3cf504d8] || `TestFileOperations`: adapted test_caching to use mock objects. || || 137 || [4367105bc97b] || Module: moved code to generate random strings from class `TestFileOperations` || || 136 || [8b964abba1db] || Module: instead of using the class `InspectableFTPHost` with its quite || || 135 || [8498db577333] || Module: the path of a file is now passed from `MockSession.transfercmd` to || || 134 || [c955585f2fde] || Module: put calls to file_content_for_child after close calls. || || 133 || [c2a46c957a00] || Module: implemented `MockFile` class to be used by `MockSocket`. An object of || || 132 || [4667403ffb59] || `TestFileOperations`: removed test_remote_copy. || || 131 || [88cc06dc4f8c] || `MockSession`: patched transfercmd so it will raise ftplib.error_perm if || || 130 || [d2602b98fd78] || `TestFileOperations`: added test test_read_unknown_file. || || 129 || [8a497e659b8b] || `TestFileOperations`: converted ascii_xreadlines to test_ascii_xreadlines. || || 128 || [b3b1aae8d095] || `TestFileOperations`: converted ascii_readlines to test_ascii_readlines. || || 127 || [1761ce206ad3] || Module: renamed `AsciiReadMockSession1` to `ReadMockSession` and || || 126 || [5612e72b89c8] || `TestFileOperations`: converted ascii_readline to test_ascii_readline. || || 125 || [1b6121d007a5] || `TestFileOperations`: converted ascii_read to test_ascii_read using || || 124 || [2ef8d9c96b03] || `TestFileOperations`: converted ascii_writelines to test_ascii_writelines, || || 123 || [c36b3f4f97e6] || `TestFileOperations`: converted method ascii_write to test_ascii_write. || || 122 || [63e3ebde7bd1] || `MockSocket`: added close method. || || 121 || [8fe742211bc8] || Module: made `_mock_ftplib.MockSession` the default for ftp_host_factory. || || 120 || [eb6a93d64ce5] || Moved class `FailOnLoginSession` from _mock_ftplib.py to _test_ftputil.py . || || 119 || [954d34b03351] || `MockSession`: added methods _remove_trailing_slash and transfercmd. || || 118 || [1990d77f340f] || `TestStat`: added new method test_failing_lstat to test whether a || || 117 || [165cd62a8148] || `TestStat`: added test_failing_lstat to test for exception. || || 116 || [6e4e619eba0e] || `TestStat`: refactored test_lstat into three methods test_lstat_one_file, || || 115 || [3e2596186b74] || `TestStat.test_lstat`: extended checking of a directory entry. || || 114 || [79c99882db30] || `TestFileOperations`: removed method write_test_data because its no longer || || 113 || [d939ecb1d2d8] || `TestPath.test_isdir_isfile_islink`: modified to work with mock session. || || 112 || [bb4d77bc1ce2] || `MockSession.pwd`: simplified implementation; now a newly introduced || || 111 || [6ea91ee6ff38] || _Path: fixed a bug occuring when the path argument which was passed to || || 110 || [b5a396d46026] || `TestStat`: test_lstat now passes. || || 109 || [42607e69afec] || Module: renamed class `ListdirTest` to `StatTest`. || || 108 || [707ecf45c4fc] || Module: commented out a lot of test cases. || || 107 || [69b7bbd0660e] || Module: implemented more lightweight version of `MockSession` class. || || 106 || [b4dfe4880a86] || Module: removed rather trivial tests in `TestDirectories` class (and the || || 105 || [22d6f4d36405] || Module: removed rather trivial tests in `TestRemoveAndRename` class. || || 104 || [6b8985f5b139] || `FTPHostWrapper`: constructor now takes one argument, the factory to use. || || 103 || [6023174cb7a2] || Module: added skeleton for `MockSocket` (returned by transfercmd). || || 102 || [b01a3e4c03d1] || FTP: took not only method heads but also method implementations. || || 101 || [c168f95b9eab] || FTP: added some method heads with their docstrings from ftplib.FTP . || || 100 || [86a6feb8338d] || `FTPHostWrapper`: prepared to use mock version of FTP session class. || || 99 || [868081123ce0] || Module: removed comment which was rather intended for _test_ftputil.py || || 98 || [2d9dd2410935] || Module: added wrapper class `FTPHostWrapper` to encapsulate the session || || 97 || [6ef78c01c467] || FTPHost: use a session_factory passed into the constructor. || || 96 || [e7a542807e56] || Mock implementation of ftplib.py from the standard library. || || 95 || [1fb1c3cb848b] || Module: added revision id. || || 94 || [507d3c41a291] || Module: revision id. || || 93 || [9e95c1890c33] || Module: docstring normalization. || || 92 || [63f0df89bc7d] || Module: extended some comments on builtin-tuple compatibility. || || 91 || [c54e15c23c7c] || Further modifications, e. g. casts with "tuple", not "list". || || 90 || [d9e1ee4f9857] || First attempt to `UserTuple` (deleted and changed several methods in the || || 89 || [21c101725cbb] || Starting point for _Stat's base class, taken from `UserList.py` || || 88 || [c3ac3e4e38cd] || `_Stat.__getattr__`: use || || 87 || [8edc69613c5e] || Moved || || 86 || [0d79a5127226] || Release 1.0.7rc1 || || 85 || [1401e72bb177] || FTPHost: moved listdir method. || || 84 || [be6804debfbb] || Module: several rather small changes. || || 83 || [16a7531b3fe0] || `TestFileOperations`: added method test_caching to check the FTPHost's || || 82 || [69cb753ae8db] || Module: added xreadline support for ASCII transfers. || || 81 || [d6971cbed067] || `TestFileOperations`: added method ascii_xreadlines. || || 80 || [7a3e3aa0ce8b] || Release 1.0.6 || || 79 || [8ea4ee8def83] || _FTPFile._open: append mode is denoted by 'a', not '+'. || || 78 || [c727e01ffc55] || `TestFileOperations`: added methods ascii_write, ascii_readline, || || 77 || [6239271cb827] || Release 1.0.5 || || 76 || [a71fcedcf523] || _FTPFile.read: fixed a bug where contained line separators in an ASCII || || 75 || [55389f8fef36] || `TestFileOperations`: added read test. || || 74 || [4e82a8cc74e0] || `TestFileOperations`: added some tests for writing remote files (methods || || 73 || [748383d405fa] || _FTPFile._open: self.closed is set to 0 at the very end of the method. || || 72 || [64dad0a42c7c] || `TestStat`: added tests test_getmtime and test_getsize. || || 71 || [55db7cd5debc] || This was wrong in the last commit message: || || 70 || [a306c74c0efe] || `TestStat`: renamed test_isdir to test_isdir_isfile_islink. || || 69 || [dd44675e6517] || FTPHost._parse_unix_line: introduced a dictionary that maps the first || || 68 || [b6cedb2b5e51] || FTPHost.getmtime/getsize: now follow links || || 67 || [fcbf8f2158f0] || FTPHost.listdir: listdir used to return an empty list for paths that || || 66 || [b7c61741289a] || FTPHost.isdir/isfile/islink: return 0 for a non-existent path (like || || 65 || [afef405a8504] || FTPHost: renamed __parse_unix_line to _parse_unix_line and || || 64 || [b713a25444c3] || Module: implemented wrappers for ftputil exceptions on the module level || || 63 || [674fdaa3ed95] || `TestPath`: added test_isdir. || || 62 || [42b3330f7da8] || Module: renamed `TestFiles` to `TestFileOperations`. || || 61 || [635267ae49b0] || `TestRemoveAndRename.test_remove`: added implementation. || || 60 || [eb88ecbbabf6] || Module: renamed `TestLoginAndClose` to `TestLogin`. || || 59 || [5d5ecd33bbb8] || Module: added class `TestRemoveAndRename`. || || 58 || [c0187f8be3ca] || `TestDirectories`: extended test_rmdir (try to remove current dir). || || 57 || [b22285189805] || `TestDirectories`: added test_rmdir. || || 56 || [b3198f220e12] || `TestDirectories`: added test_mkdir. || || 55 || [e4ff75e5d519] || Added some test classes (Base, `TestLoginAndClose`, `TestDirectories`, || || 54 || [0665575c8fe3] || Unit test for ftputil.py || || 53 || [55e459e80b78] || Release 1.0.4 || || 52 || [2372a6c1206f] || Reorganized exception hierarchy. || || 51 || [fffd328bda86] || FTPOSError: removed any uses of the attribute ftp_exception. Because || || 50 || [80d94964ef0f] || Release 1.0.3 || || 49 || [3bd327c8db8e] || Extended FTPOSError hierarchy. || || 48 || [a2b37e8ac5ad] || Release 1.0.2 || || 47 || [0d0443d9b41f] || _FTPFile: || || 46 || [e4f91515d3ae] || Module: renamed _native_to_python_linesep to _crlf_to_python_linesep and || || 45 || [c439e01f8854] || Module: extended comment for _native_to_python_linesep. || || 44 || [e6b17eeae47b] || Module: Fixed linesep conversion bug in _native_to_python_linesep || || 43 || [d97334098af4] || _FTPFile: renamed _binary to _binmode. || || 42 || [17abc311e8c9] || Release 1.0.1 || || 41 || [ef12b53f131a] || _Path: made delegation to posixpath easier. || || 40 || [8f793817276d] || FTPHost: renamed stat_data and stat_ to stat_result. || || 39 || [e68b708ff4ac] || This is version 1.0 . || || 38 || [53b9a482638e] || Changed some docstrings and comments slightly. || || 37 || [886b2a9281ef] || _Path: added walk method. || || 36 || [f7703507d4cb] || FTPHost: added methods copyfileobj, upload and download. || || 35 || [d274c54611f4] || FTPHost: added alternative DIR parser __parse_robin_line for || || 34 || [a258732bb167] || Added FTPIOError class. || || 33 || [6b7ef120a57e] || FTPHost.listdir: cleaned up implementation. || || 32 || [67acc14f0d9d] || FTPHost.listdir: added implementation. || || 31 || [232a35f6ba7a] || FTPHost.stat: added. || || 30 || [8ece8c81a0ca] || FTPHost._stat_candidates: changed implementation. || || 29 || [45455e40d4d1] || Removed server OS dependent stuff like _unix_strings, _dos_strings, || || 28 || [d2a22a5e9b9f] || FTPHost._parse_line: parsing for st_mtime seems to work :-) || || 27 || [ee38675205c2] || FTPHost: Moved line_pattern outside of lstat method, renamed to || || 26 || [6bdc2d713d9e] || FTPHost.lstat: preliminary version; most of the parsing works though || || 25 || [b307973afc4d] || FTPHost: Added method _set_os_strings to set self.curdir etc. || || 24 || [627c1889e085] || FTPOSError.__init__: now catching `TypeError` and `IndexError` exceptions if the || || 23 || [7e80c5defa38] || FTPHost: Added implementation notes. || || 22 || [67ef83b2d60d] || _FTPFile: renamed _fp attribute to _fo (file object). || || 21 || [63cb5572a0b8] || Added a docstring to the module. || || 20 || [1a308017f13a] || FTPIOError: currently not used, thus deleted. || || 19 || [adb98b60e012] || FTPHost: Fixed some docstrings and comments. || || 18 || [e61f5f5de95b] || FTPHost: Renamed _clones to _children and _available_clone to || || 17 || [96792a7f21f9] || FTPHost: Now caching host objects ("clones") instead of _FTPFile's. || || 16 || [5a61737f3d98] || FTPHost: Added _try method to provide exception handling for a lot of || || 15 || [e08352e2ad7e] || `_FTPFile.__getattr__`: Changed eval expression to use getattr function. || || 14 || [3e7d631aad3a] || FTPHost._copy: Added a comment on not copying _file_pool. || || 13 || [fadd6cf83d9f] || FTPHost: Extended __init__, file and close to allow for caching and || || 12 || [70d391ee15a5] || _FTPFile: factored a new method _open out of `__init__`. || || 11 || [910a53e1f0a1] || Some docstring and comment changes. || || 10 || [625d8c4e7fea] || Renamed _ftplib_host attribute to _session. || || 9 || [2c1667efde36] || FTPHost: fixed class docstring. || || 8 || [7c63c553d2c5] || _FTPFile: read* methods now use method(*args, **kwargs) instead of || || 7 || [4be21d2e4619] || FTPHost.file: Moved most of the code to `_FTPFile.__init__` where it belongs. || || 6 || [5880f30b0a9c] || `_FTPFile.__del__`: Check if file is closed, if yes, return immediately. || || 5 || [8c490fb1ee4e] || Implemented some os.path-like methods by using the posixpath module. || || 4 || [26f438882921] || Preparations for support of several methods similar to those in os(.path). || || 3 || [834304b43268] || Added read and write operations to _FTPFile class. || || 2 || [e93155993afc] || Significant parts of _FTPFile and FTPHost implemented. || || 1 || [9db916ed2259] || Added skeleton for FTP file-like objects. ||