

.. towncrier release notes start

4.1.0 (2025-05-18)
==================

Other Changes
-------------

- Use ``__slots__`` to reduce memory usage of ``Version``.


4.0.4 (2024-04-20)
==================

Bug Fixes
---------

- Use ``filter='data'`` for ``extractall`` call on supported Python versions as additional guard to the existing out of path checks against malicious tar files.

- Remove custom ``LegacyVersion`` and use ``packaging-legacy`` instead, which is also used by pypi.org.


4.0.3 (2023-11-23)
==================

Bug Fixes
---------

- Add ``is_prerelease`` and other methods to ``LegacyVersion`` to fix ``get_sorted_versions`` with ``stable=True`` and some other cases.


4.0.2 (2023-10-15)
==================

Bug Fixes
---------

- Do not mark commands with returncode ``None`` from tox 4.x as failed.


4.0.1 (2023-10-15)
==================

Bug Fixes
---------

- Restore flushing after each written line in new TerminalWriter.


4.0.0 (2023-10-11)
==================

Deprecations and Removals
-------------------------

- Removed ``HTMLPage`` class originally vendored from pip.

- Dropped support for Python <= 3.6.

Features
--------

- Add ``chdir`` context handler in devpi_common.contextlib. Starting with Python 3.11 the original from ``contextlib`` is used.

- Hide username from URL representation.

- Added stripped down TerminalWriter from ``py`` library which only supports coloring.

Bug Fixes
---------

- Fix #939: custom legacy version parsing (non PEP 440) after packaging >= 22.0 removed support.


3.7.2 (2023-01-24)
==================

Bug Fixes
---------

- Fix #928: correct default for pre-release matching after switching from ``pkg_resources`` to ``packaging``.

- Fix #949: correct parsing of wheel tags for Python 3.10 and above.


3.7.1 (2022-12-16)
==================

Bug Fixes
---------

- Fix #939: pin packaging to <22 as it removed the deprecated LegacyVersion.


3.7.0 (2022-08-16)
==================

Features
--------

- Add ``hash_type`` and ``fragment`` attributes to URL class.

- Replace ``pkg_resources`` usage with ``packaging``.

Bug Fixes
---------

- Fix #895: return content of data-yanked.

- Fixed some cases where name and version weren't split off correctly from filename.


3.6.0 (2020-09-13)
==================

Features
--------

- Hide password from URL representation.

- Allow replacement of individual netloc parts with URL.replace method.


3.5.0 (2020-05-04)
==================

Features
--------

- fix #792: support data-yanked attribute in HTMLPage parser.

- Replace "cached_property" with "lazy" package, which uses __dict__ directly for much faster reads.


3.4.0 (2019-06-28)
==================

Features
--------

- Added full query string support to URL object.


3.3.2 (2019-04-04)
==================

Bug Fixes
---------

- Fix #641: support change of return code from string to integer in tox 3.8.x.


3.3.1 (2018-09-18)
==================

Bug Fixes
---------

- Fix uploading documentation in devpi-client < 4.1.0.


3.3.0 (2018-09-08)
==================

Features
--------

- Add parsing of data-requires-python to link parser. Thanks to Sergey Kolosov


3.2.3 (2018-05-04)
==================

Deprecations and Removals
-------------------------

- remove unused vendored _verlib.py module


3.2.2 (2018-04-11)
==================

Other Changes
-------------

- fix deprecation warning from pkg_resources.


3.2.1 (2018-01-18)
==================

Bug Fixes
---------

- fix issue496: PyPy 5.10 wheel upload failed because the version in the
  filename is longer again, the check for it is now removed, because it's
  pointless.


3.2.0 (2017-11-23)
==================

No significant changes.


3.2.0rc1 (2017-09-08)
=====================

Bug Fixes
---------

- fix issue343: enhanced ``splitbasename`` to split the name and version
  correctly in more cases.

- fix for url decoding issue with mirrors. When package filenames contain
  characters such as `!` or `+`, these get URL encoded to `%21` and `%2B` in
  the remote simple index. This fix ensures that in the filename saved to the
  disk cache these are decoded back to `!` or `+`.


3.1.0 (2017-04-18)
==================

- add ``username``, ``password``, ``hostname`` and ``port`` properties to
  URL objects

- expose SSLError on Session object to allow checking for verification errors

- add ``max_retries`` keyword option to ``new_requests_session``.

- fix ``get_latest_version`` when there are no versions.


3.0.1 (2016-07-07)
==================

- fix issue355: accept PyPy version numbers in package filenames


3.0.0 (2016-05-12)
==================

- fully implement normalization from PEP-503 to allow pip 8.1.2 to install
  packages with dots in their name

- dropped support for Python 2.6.


2.0.10 (2016-05-11)
===================

- revert the normalization change, as it causes other issues


2.0.9 (2016-05-11)
==================

- fix issue343 and issue344: fully implement normalization from PEP-503 to
  allow pip 8.1.2 to install packages with dots in their name


2.0.8 (2015-11-11)
==================

- fix URL.joinpath to not add double slashes


2.0.7 (2015-09-14)
==================

- fix issue272: added __ne__ to URL class, so comparisons work correctly with
  Python 2.x


2.0.6 (2015-05-13)
==================

- add devpi_common.type.parse_hash_spec helper for parsing 
  "HASH_TYPE=VALUE" strings into an callable algorithm and the value

- add hash_type, hash_value and hash_algo to URL class


2.0.5 (2015-02-24)
==================

- added code to allow filtering on stable version numbers.


2.0.4 (2014-11-27)
==================

- gracefully handle missing toxresult files. They can be missing on replicas
  while it's catching up with the master.


2.0.3 (2014-09-22)
==================

- added code to iterate over toxresults handling all the details.


2.0.2
=====

- fix issue144: offer session.Errors for catching the possible
  exceptions that requests can throw (RequestException and urllib3..HTTPError
  currently)


2.0.1
=====

- fix issue145: re-introduce propmapping so that devpi-common
  has higher chances to work for devpi-server<2.0


2.0
===

- avoid depending on requests-2.0.1 which does not support SNI.
  addresses issue21

- fix issue104: don't define an entrypoint. Thanks Maximilien Riehl.

- fix issue88: don't do our own proxy handling because requests-2.2.1
  does it itself.


1.2
===

- initial release, shifted functionality from devpi-server and
  devpi-client
