Skip to content

Latest commit

 

History

History
353 lines (259 loc) · 10.3 KB

history.rst

File metadata and controls

353 lines (259 loc) · 10.3 KB

x.x.x (xx-xx-xxxx)

0.23.1 (14-10-2024) - update ci

0.23.0 (14-10-2024) - server: fix pathlib relative_to issue (#179) - minimal python version upgraded to 3.9

0.22.3 (05-01-2024) - minimal python version downgraded to 3.8

0.22.2 (29-12-2023)

  • ci: separate build and publish jobs

0.22.1 (29-12-2023)

  • docs: update/fix readthedocs configuration
  • ci: fix workflow file extension from yaml to yml

0.22.0 (29-12-2023)

  • client.list: fix infinite symlink loop for . and .. on FTP servers with UNIX-like filesystem for client.list(path, recursive=True)
  • project file structure: refactor to use pyproject.toml
  • minimal python version bumped to 3.11
  • ci: update publish/deploy job (#171)

0.21.4 (13-10-2022)

  • tests: use pytest_asyncio strict mode and proper decorations (#155)
  • setup/tests: set low bound for version of async-timeout (#159)

0.21.3 (15-07-2022)

  • server/LIST: prevent broken links are listed, but can't be used with stat
  • server: make User.get_permissions async

0.21.2 (22-04-2022)

  • tests: remove exception representation check

0.21.1 (20-04-2022)

  • tests: replace more specific ConnectionRefusedError with OSError for compatibility with FreeBSD (#152)

Thanks to `AMDmi3 https://github.com/AMDmi3`_

0.21.0 (18-03-2022)

  • server: support PASV response with custom address (#150)

Thanks to `janneronkko https://github.com/janneronkko`_

0.20.1 (15-02-2022)

  • server: fix real directory resolve for windows (#147)

Thanks to `ported-pw https://github.com/ported-pw`_

0.20.0 (27-12-2021)

  • add client argument to set priority of custom list parser (parse_list_line_custom_first) (#145)
  • do not ignore failed parsing of list response (#144)

Thanks to `spolloni https://github.com/spolloni`_

0.19.0 (08-10-2021)

  • add client connection timeout (#140)
  • remove explicit coroutine passing to asyncio.wait (#134)

Thanks to decaz

0.18.1 (03-10-2020)

  • sync tests with new siosocks (#127)
  • some docs fixes
  • log level changes

0.18.0 (03-09-2020)

  • server: fix MLSX time format (#125)
  • server: resolve server address from connection (#125)

Thanks to PonyPC

0.17.2 (21-08-2020)

  • server: fix broken python -m aioftp after 3.7 migration

0.17.1 (14-08-2020)

  • common/stream: add readexactly proxy method

0.17.0 (11-08-2020)

  • tests: fix test_unlink_on_dir on POSIX compatible systems (#118)
  • docs: fix extra parentheses (#122)
  • client: replace ClientSession with Client.context

Thanks to AMDmi3, Olegt0rr

0.16.1 (09-07-2020)

  • client: strip date before parsing (#113)
  • client: logger no longer prints out plaintext password (#114)
  • client: add custom passive commands to client (#116)

Thanks to ndhansen

0.16.0 (11-03-2020)

  • server: remove obsolete pass to pass_ command renaming

Thanks to Puddly

  • client: fix leap year bug at parse_ls_date method
  • all: add base exception class

Thanks to decaz

0.15.0 (07-01-2020)

  • server: use explicit mapping of available commands for security reasons

Thanks to Puddly for report

0.14.0 (30-12-2019)

  • client: add socks proxy support via siosocks (#94)
  • client: add custom list parser (#95)

Thanks to purpleskyfall, VyachAp

0.13.0 (24-03-2019)

  • client: add windows list parser (#82)
  • client/server: fix implicit ssl mode (#89)
  • tests: move to pytest
  • all: small fixes

Thanks to jw4js, PonyPC

0.12.0 (15-10-2018)

  • all: add implicit ftps mode support (#81)

Thanks to alxpy, webknjaz

0.11.1 (30-08-2018)

  • server: fix memory pathio is not shared between connections
  • client: add argument to list to allow manually specifying raw command (#78)

Thanks to thirtyseven

0.11.0 (04-07-2018)

  • client: fix parsing ls modify time (#60)
  • all: add python3.7 support (__aiter__ must be regular function since now) (#76, #77)

Thanks to saulcruz, NickG123, rsichny, Modelmat, webknjaz

0.10.1 (01-03-2018)

  • client: more flexible EPSV response parsing

Thanks to p4l1ly

0.10.0 (03-02-2018)

  • server: fix ipv6 peername unpack
  • server: connection object is accessible from path-io layer since now
  • main: add command line argument to set version of IP protocol
  • setup: fix failed test session return zero exit code
  • client: fix download-mkdir (issue #68)
  • client/server: add initial ipv6 support (issue #63)
  • client: change PASV to EPSV with fallback to PASV

Thanks to jacobtomlinson, mbkr1992

0.9.0 (04-01-2018)

  • server: fix server address in passive mode
  • server: do not reraise dispatcher exceptions
  • server: remove wait_closed, close is coroutine since now

Thanks to yieyu, jkr78

0.8.1 (08-10-2017)

  • client: ignore LIST lines, which can't be parsed

Thanks to bachya

0.8.0 (06-08-2017)

  • client/server: add explicit encoding

Thanks to anan-lee

0.7.0 (17-04-2017)

  • client: add base LIST parsing
  • client: add client.list fallback on MLSD «not implemented» status code to LIST
  • client: add client.stat fallback on MLST «not implemented» status code to LIST
  • common: add setlocale context manager for LIST parsing, formatting and thread-safe usage of locale
  • server: add LIST support for non-english locales
  • server: fix PASV sequencies before data transfer (latest PASV win)

Thanks to jw4js, rsichny

0.6.3 (02-03-2017)

  • stream.read will read whole data by default (as asyncio.StreamReader.read)

Thanks to sametmax

0.6.2 (27-02-2017)

  • replace docopt with argparse
  • add syst server command
  • improve client list documentation

Thanks to thelostt, yieyu

0.6.1 (16-04-2016)

  • fix documentation main page client example

0.6.0 (16-04-2016)

  • fix modifed time field for list command result
  • add ClientSession context
  • add REST command to server and client

Thanks to rsichny

0.5.0 (12-02-2016)

  • change development status to production/stable
  • add configuration to restrict port range for passive server
  • build LIST string with stat.filemode

Thanks to rsichny

0.4.1 (21-12-2015)

  • improved performance on non-throttled streams
  • default path io layer for client and server is PathIO since now
  • added benchmark result

0.4.0 (17-12-2015)

  • async for for pathio list function
  • async context manager for streams and pathio files io
  • python 3.5 only
  • logging provided by "aioftp.client" and "aioftp.server"
  • all path errors are now reraised as PathIOError
  • server does not drop connection on path io errors since now, but return "451" code

0.3.1 (09-11-2015)

  • fixed setup.py long-description

0.3.0 (09-11-2015)

  • added handling of OSError in dispatcher
  • fixed client/server close not opened file in finally
  • handling PASS after login
  • handling miltiply USER commands
  • user manager for dealing with user accounts
  • fixed client usage WindowsPath instead of PurePosixPath on windows for virtual paths
  • client protected from "0.0.0.0" ip address in PASV
  • client use pathio
  • throttle deal with multiply connections
  • fixed throttle bug when slow path io (#20)
  • path io timeouts moved to pathio.py
  • with_timeout decorator for methods
  • StreamIO deals with timeouts
  • all socket streams are ThrottleStreamIO since now

Thanks to rsichny, tier2003

0.2.0 (22-09-2015)

  • client throttle
  • new server dispatcher (can wait for connections)
  • maximum connections per user/server
  • new client stream api
  • end of line character "rn" everywhere
  • setup.py support
  • tests via "python setup.py test"
  • "sh" module removed from test requirements

Thanks to rsichny, jettify

0.1.7 (03-09-2015)

  • bugfix on windows (can't make passive connection to 0.0.0.0:port)
  • default host is "127.0.0.1" since now
  • silently ignoring ipv6 sockets in server binding list

0.1.6 (03-09-2015)

  • bugfix on windows (ipv6 address come first in list of binded sockets)

0.1.5 (01-09-2015)

  • bugfix server on windows (PurePosixPath for virtual path)

0.1.4 (31-08-2015)

  • close data connection after client disconnects

Thanks to rsichny

0.1.3 (28-08-2015)

  • pep8 "Method definitions inside a class are surrounded by a single blank line"
  • MemoryPathIO.Stats should include st_mode

Thanks to rsichny

0.1.2 (11-06-2015)

  • aioftp now executes like script ("python -m aioftp")

0.1.1 (10-06-2015)

  • typos in server strings
  • docstrings for path abstraction layer

0.1.0 (05-06-2015)

  • server functionality
  • path abstraction layer

0.0.1 (24-04-2015)

  • first release (client only)