Skip to content

Releases: Cadair/parfive

v2.2.0

06 May 16:49
13a83c5

Choose a tag to compare

Changes

Python Versions

  • Python 3.9 support has been dropped and 3.13 is now tested.

New Features

  • Checksums can now be verified when deciding to overwrite a file and when downloads are completed based on user or server provided checksums. (This is opt-in for now) - Add checksums support @Cadair (#165)
  • The first request to download a file will now attempt to use the HEAD method to read the checksum and content-disposition headers. If the HEAD request returns any status code other than 200 the old GET behaviour will be tried - Fix a 302 issue @Cadair (#170), Add a test for the head or get helper @Cadair (#169), Use a HEAD for the first request @Cadair (#168)
  • The URL associated with every downloaded file is now propagated through to the Results object - Add urls to results @samaloney (#146), Fix a bug where result urls were not updated in retry @samaloney (#153)

Maintenance Changes

v2.2.0rc2

30 Apr 17:18
4cd8b5d

Choose a tag to compare

v2.2.0rc2 Pre-release
Pre-release
Fix a 302 issue (#170)

v2.2.0rc1

30 Apr 12:59
8d663a6

Choose a tag to compare

v2.2.0rc1 Pre-release
Pre-release
Add a test for the head or get helper (#169)

v2.1.0

08 Apr 09:42
293133c

Choose a tag to compare

Enhancements

Bug Fixes

Misc/Internal Changes

v2.0.2

27 Oct 13:36
6afaeb4

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

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

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

Choose a tag to compare

v2.0.0rc4 Pre-release
Pre-release

Changes

v2.0.0rc3

23 Jun 12:00
455002b

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

Choose a tag to compare

v2.0.0rc2 Pre-release
Pre-release

Changes