Skip to content

Releases: Cadair/parfive

v2.1.0

08 Apr 09:42
293133c
Compare
Choose a tag to compare

Enhancements

Bug Fixes

Misc/Internal Changes

v2.0.2

27 Oct 13:36
6afaeb4
Compare
Choose a tag to compare

Changes

  • Vendor parse_header out of the deprecated cgi module for Python 3.11 compatibility @Cadair (#112)

Documentation and code quality

v2.0.1

14 Jul 15:28
f189530
Compare
Choose a tag to compare

Changes

Bug Fixes

  • Fix a bug where an asyncio.CancelledError was not properly caught @Cadair (#106)

v2.0.0

13 Jul 14:56
d349804
Compare
Choose a tag to compare

This new major version of parfive tackles the usability of the API.

The API of parfive grew organically as support for more use cases were added.
To enable both a highly flexible downloader that can be used for any HTTP/FTP downloads while maintaining an accessible and simple API with the 2.0 release there is now a parfive.SessionConfig object where advanced settings are located.

The other major change in this release is that any files where the download failed before it is completed will be removed from disk. This means that you shouldn't end up with incomplete and corrupt files on disk if the download is interrupted for any reason.

Breaking Changes

  • The file_progress, notebook, use_aiofiles, and header keyword arguments to parfive.Downloader have been removed and moved into the parfive.SessionConfig object.
  • The timeouts keyword argument has been removed from the run_download() and download() methods and replaced by an option in SessionConfig.

Enhancements

  • Improve repr of Results, remove files from disk if download errors before completing and add max_splits as a keyword argument to Downloader by @nabobalis in #76
  • Add a new SessionConfig object to allow advanced configuration of the Downloader by @Cadair in #92
    • A new PARFIVE_HIDE_PROGRESS environment variable will disable all progress bars.
    • All environment variables are now evaluated at the time the Downloader class is instantiated (by the new config classes).
    • It is now possible to customise the instantiation of the aiohttp.ClientSession by passing a function to the aiohttp_session_generator= keyword argument to SessionConfig.
    • It is now possible to configure debug or other levels of logging with SessionConifg where previously it could only be configured with an environment variable.
    • It is now possible to configure the HTTP chunksize with SessionConfig and the default when not using aiofiles has been increased from 100 bytes to 1024 bytes.
    • It is now possible to configure the HTTP(S) proxy URLs with SessionConfig as well as the HTTP[S]_PROXY environment variables.
    • It is now possible to customise all the timeouts supported by aiohttp by passing an aiohttp.ClientTimeout object to SessionConfig.
  • Improve the CLI with more options by @Cadair in #103
  • Cleanup after Keyboard interrupt correctly by @Cadair in #104
    • This means that the download will be killed correctly when the download is interrupted.
    • Note that is does not work on Windows due to the lack of support for signal handling in asyncio on Windows.
  • Remove deprecated loop keyword argument by @Cadair in #88
  • Use tqdm's auto notebook detection by @Cadair in #90

Bug Fixes

  • Do not split download if no "Content-length" by @rlaker in #87
  • Do not overwrite custom headers if user agent isn't specified by @Cadair in #89
  • Fix a bug where only HTTP 200 response codes were accepted as success by @SolarDrew in #95

Misc/Internal Changes

New Contributors

Full Changelog: v1.5.1...v2.0.0

v2.0.0rc4

01 Jul 15:59
1e802fe
Compare
Choose a tag to compare
v2.0.0rc4 Pre-release
Pre-release

Changes

v2.0.0rc3

23 Jun 12:00
455002b
Compare
Choose a tag to compare
v2.0.0rc3 Pre-release
Pre-release

Changes

  • Do not deprecate header kwarg to Downloader @Cadair (#101)

Enhancements

  • Allow the user to override the aiohttp.ClientSession with a callback @Cadair (#99)

Misc/Internal Changes

  • Do not use pydantic for settings validation @Cadair (#98)

v2.0.0rc2

21 Jun 14:08
f3dac92
Compare
Choose a tag to compare
v2.0.0rc2 Pre-release
Pre-release

Changes

v2.0.0rc1

10 Jun 15:25
0664d03
Compare
Choose a tag to compare
v2.0.0rc1 Pre-release
Pre-release
Add a new `SessionConfig` object to allow advanced configuration of t…

…he `Downloader` (#92)

* Refactor API simplify config

* Further typehinting

* More docs

* We need the Literal backport on Python 3.7

* Deprecate headers= and use_aiofiles= Downloader kwargs

* Assorted fixes

* Allow configuration of log level in SessionConfig

* Configure black to 100 lines in the right place

* Bad black config

* timeouts cleanup

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Make sure that when progress is False we don't draw any progress bars

* Use pydantic for config validation

* Fix mypy

* Use platform

* More env var docs

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

v1.5.1

05 Jan 11:28
f8723be
Compare
Choose a tag to compare

Changes

Bug Fixes

  • Fix issue with small files where the size of a chunk would round down to 0 bytes @GitHK (#82)
  • Remove the default download timeout of 5 minutes for a single file @Cadair (#81)
  • Cast timeout environment variables to numbers @dstansby (#80)

Full Changelog: v1.5.0...v1.5.1

v1.5.0

24 Sep 10:14
a2d6c72
Compare
Choose a tag to compare

Changes

  • Add a Downloader.simple_download method to easily download a list of URLs to a single directory @Cadair (#73)

Bug Fixes

  • Make path default to "./" so that it works without specifying it in simple_download @Cadair (#74)