Fixed #164: Improved support for reproducible builds by allowing a fixed
date/time to be inserted into created .exe files. Thanks to Somber Night for the
patch.
Fixed #169: Removed usage of deprecated imp module in favour of importlib.
Fixed #170: Corrected implementation of get_required_dists().
Fixed #172: Compute ABI correctly for Python < 3.8.
Changed the default locator configuration.
Made updates in support of PEP 643 / Metadata 2.2.
Updated launcher executables. Thanks to Michael Bikovitsky for his help with
the launcher changes.
Updated to write archive path of RECORD to RECORD instead of staging path.
Thanks to Pieter Pas for the patch.
Releases are normally signed using a GnuPG key with the user id vinay_sajip@yahoo.co.uk and the following fingerprint:
CA74 9061 914E AC13 8E66 EADB 9147 B477 339A 9B86
Bug-fix / Minor Enhancements Release
Fixed #153: Raise warnings in get_distributions() if bad metadata seen, but keep going.
Fixed #154: Determine Python versions correctly for Python >= 3.10.
Updated launcher executables with changes to handle duplication logic.
Code relating to support for Python 2.6 was also removed (support for Python 2.6 was dropped in an earlier release, but supporting code wasn't removed until now).
* Do specifier matching correctly when the specifier contains an epoch number
and has more components than the version (:issue:`683`)
* Support the experimental ``--disable-gil`` builds in packaging.tags
(:issue:`727`)
* BREAKING: Make optional ``metadata.Metadata`` attributes default to ``None`` (:issue:`733`)
* Fix errors when trying to access the ``description_content_type``, ``keywords``,
and ``requires_python`` attributes on ``metadata.Metadata`` when those values
have not been provided (:issue:`733`)
* Fix a bug preventing the use of the built in ``ExceptionGroup`` on versions of
Python that support it (:issue:`725`)
Enforce that the entire marker string is parsed (:issue:687)
Requirement parsing no longer automatically validates the URL (:issue:120)
Canonicalize names for requirements comparison (:issue:644)
Introduce metadata.Metadata (along with metadata.ExceptionGroup and metadata.InvalidMetadata; :issue:570)
Introduce the validate keyword parameter to utils.normalize_name() (:issue:570)
Introduce utils.is_normalized_name() (:issue:570)
Make utils.parse_sdist_filename() and utils.parse_wheel_filename()
raise InvalidSdistFilename and InvalidWheelFilename, respectively,
when the version component of the name is invalid
23.1 - 2023-04-12
* Parse raw metadata (:issue:`671`)
* Import underlying parser functions as an underscored variable (:issue:`663`)
* Improve error for local version label with unsupported operators (:issue:`675`)
* Add dedicated error for specifiers with incorrect `.*` suffix
* Replace spaces in platform names with underscores (:issue:`620`)
* Relax typing of ``_key`` on ``_BaseVersion`` (:issue:`669`)
* Handle prefix match with zeros at end of prefix correctly (:issue:`674`)
23.0 - 2023-01-08
Allow "extra" to be None in the marker environment (:issue:650)
Refactor tags._generic_api to use EXT_SUFFIX (:issue:607)
Correctly handle trailing whitespace on URL requirements (:issue:642)
Fix typing for specifiers.BaseSpecifier.filter() (:issue:643)
Use stable Python 3.11 in tests (:issue:641)
Correctly handle non-normalised specifiers in requirements (:issue:634)
Move to src/ layout (:issue:626)
Remove __about__ file, in favour of keeping constants in __init__ (:issue:626)
[#463](https://github.com/pytest-dev/pluggy/issues/463) <https://github.com/pytest-dev/pluggy/issues/463>_: A warning :class:~pluggy.PluggyTeardownRaisedWarning is now issued when an old-style hookwrapper raises an exception during teardown.
See the warning documentation for more details.
[#471](https://github.com/pytest-dev/pluggy/issues/471) <https://github.com/pytest-dev/pluggy/issues/471>_: Add :func:PluginManager.unblock <pluggy.PluginManager.unblock> method to unblock a plugin by plugin name.
Bug Fixes
[#441](https://github.com/pytest-dev/pluggy/issues/441) <https://github.com/pytest-dev/pluggy/issues/441>_: Fix :func:~pluggy.HookCaller.call_extra() extra methods getting ordered before everything else in some circumstances. Regressed in pluggy 1.1.0.
[#438](https://github.com/pytest-dev/pluggy/issues/438) <https://github.com/pytest-dev/pluggy/issues/438>_: Fix plugins registering other plugins in a hook when the other plugins implement the same hook itself. Regressed in pluggy 1.1.0.
pluggy 1.3.0 (2023-08-26)
Deprecations and Removals
[#426](https://github.com/pytest-dev/pluggy/issues/426) <https://github.com/pytest-dev/pluggy/issues/426>_: Python 3.7 is no longer supported.
Features
[#428](https://github.com/pytest-dev/pluggy/issues/428) <https://github.com/pytest-dev/pluggy/issues/428>_: Pluggy now exposes its typings to static type checkers.
As part of this, the following changes are made:
Renamed _Result to Result, and exported as :class:pluggy.Result.
Renamed _HookRelay to HookRelay, and exported as :class:pluggy.HookRelay.
Renamed _HookCaller to HookCaller, and exported as :class:pluggy.HookCaller.
Exported HookImpl as :class:pluggy.HookImpl.
Renamed _HookImplOpts to HookimplOpts, and exported as :class:pluggy.HookimplOpts.
Renamed _HookSpecOpts to HookspecOpts, and exported as :class:pluggy.HookspecOpts.
Some fields and classes are marked Final and @final.
The :ref:api-reference is updated to clearly delineate pluggy's public API.
Compatibility aliases are put in place for the renamed types.
We do not plan to remove the aliases, but we strongly recommend to only import from pluggy.* to ensure future compatibility.
Please note that pluggy is currently unable to provide strong typing for hook calls, e.g. pm.hook.my_hook(...),
nor to statically check that a hook implementation matches the hook specification's type.
NOTE: In the future release 3.2.0, use of many of the pre-PEP8 methods (such as ParserElement.parseString) will start to raise DeprecationWarnings. 3.2.0 should get released some time later in 2023. I currently plan to completely drop the pre-PEP8 methods in pyparsing 4.0, though we won't see that release until at least late 2023 if not 2024. So there is plenty of time to convert existing parsers to the new function names before the old functions are completely removed. (Big help from Devin J. Pohly in structuring the code to enable this peaceful transition.)
Version 3.2.0 will also discontinue support for Python versions 3.6 and 3.7.
API ENHANCEMENT: Optional(expr) may now be written as expr | ""
This will make this code:
"{" + Optional(Literal("A") | Literal("a")) + "}"
writable as:
"{" + (Literal("A") | Literal("a") | "") + "}"
Some related changes implemented as part of this work:
Literal("") now internally generates an Empty() (and no longer raises an exception)
Empty is now a subclass of Literal
Suggested by Antony Lee (issue #412), PR (#413) by Devin J. Pohly.
Added new class property identifier to all Unicode set classes in pyparsing.unicode, using the class's values for cls.identchars and cls.identbodychars. Now Unicode-aware parsers that formerly wrote:
ident = ppu.Greek.identifier
# or
# ident = ppu.Ελληνικά.identifier
Reworked delimited_list function into the new DelimitedList class. DelimitedList has the same constructor interface as delimited_list, and in this release, delimited_list changes from a function to a synonym for DelimitedList. delimited_list and the older delimitedList method will be deprecated in a future release, in favor of DelimitedList.
Added new class method ParserElement.using_each, to simplify code that creates a sequence of Literals, Keywords, or other ParserElement subclasses.
For instance, to define suppressable punctuation, you would previously write:
using_each will also accept optional keyword args, which it will pass through to the class initializer. Here is an expression for single-letter variable names that might be used in an algebraic expression:
Added ieee_float expression to pyparsing.common, which parses float values,
plus "NaN", "Inf", "Infinity". PR submitted by Bob Peterson (#538).
Updated pep8 synonym wrappers for better type checking compatibility. PR submitted
by Ricardo Coccioli (#507).
Fixed empty error message bug, PR submitted by InSync (#534). This should return
pyparsing's exception messages to a former, more helpful form. If you have code that
parses the exception messages returned by pyparsing, this may require some code
changes.
Added unit tests to test for exception message contents, with enhancement to
pyparsing.testing.assertRaisesParseException to accept an expected exception message.
Updated example select_parser.py to use PEP8 names and added Groups for better retrieval
of parsed values from multiple SELECT clauses.
Added example email_address_parser.py, as suggested by John Byrd (#539).
Added example directx_x_file_parser.py to parse DirectX template definitions, and
generate a Pyparsing parser from a template to parse .x files.
Some code refactoring to reduce code nesting, PRs submitted by InSync.
All internal string expressions using '%' string interpolation and str.format()
converted to f-strings.
Version 3.1.1 - July, 2023
Fixed regression in Word(min), reported by Ricardo Coccioli, good catch! (Issue #502)
Fixed bug in bad exception messages raised by Forward expressions. PR submitted
by Kyle Sunden, thanks for your patience and collaboration on this (#493).
Fixed regression in SkipTo, where ignored expressions were not checked when looking
for the target expression. Reported by catcombo, Issue #500.
Fixed type annotation for enable_packrat, PR submitted by Mike Urbach, thanks! (Issue #498)
Some general internal code cleanup. (Instigated by Michal Čihař, Issue #488)
Version 3.1.0 - June, 2023
Added tag_emitter.py to examples. This example demonstrates how to insert
tags into your parsed results that are not part of the original parsed text.
This release is not a usual bug fix release -- it contains features and improvements, being a follow up
to 8.1.0, which has been yanked from PyPI.
:::
Features
#11475: Added the new consider_namespace_packages{.interpreted-text role="confval"} configuration option, defaulting to False.
If set to True, pytest will attempt to identify modules that are part of namespace packages when importing modules.
#11653: Added the new verbosity_test_cases{.interpreted-text role="confval"} configuration option for fine-grained control of test execution verbosity.
See Fine-grained verbosity <pytest.fine_grained_verbosity>{.interpreted-text role="ref"} for more details.
Improvements
#10865: pytest.warns{.interpreted-text role="func"} now validates that warnings.warn{.interpreted-text role="func"} was called with a [str]{.title-ref} or a [Warning]{.title-ref}.
Currently in Python it is possible to use other types, however this causes an exception when warnings.filterwarnings{.interpreted-text role="func"} is used to filter those warnings (see [CPython #103577](python/cpython#103577) for a discussion).
While this can be considered a bug in CPython, we decided to put guards in pytest as the error message produced without this check in place is confusing.
#11311: When using --override-ini for paths in invocations without a configuration file defined, the current working directory is used
as the relative directory.
Previoulsy this would raise an AssertionError{.interpreted-text role="class"}.
#11475: --import-mode=importlib <import-mode-importlib>{.interpreted-text role="ref"} now tries to import modules using the standard import mechanism (but still without changing :pysys.path{.interpreted-text role="data"}), falling back to importing modules directly only if that fails.
This means that installed packages will be imported under their canonical name if possible first, for example app.core.models, instead of having the module name always be derived from their path (for example .env310.lib.site_packages.app.core.models).
#11801: Added the iter_parents() <_pytest.nodes.Node.iter_parents>{.interpreted-text role="func"} helper method on nodes.
It is similar to listchain <_pytest.nodes.Node.listchain>{.interpreted-text role="func"}, but goes from bottom to top, and returns an iterator, not a list.
#11850: Added support for sys.last_exc{.interpreted-text role="data"} for post-mortem debugging on Python>=3.12.
#11962: In case no other suitable candidates for configuration file are found, a pyproject.toml (even without a [tool.pytest.ini_options] table) will be considered as the configuration file and define the rootdir.
#11978: Add --log-file-mode option to the logging plugin, enabling appending to log-files. This option accepts either "w" or "a" and defaults to "w".
Previously, the mode was hard-coded to be "w" which truncates the file before logging.
Updates the requirements on attrs, distlib, filelock, iniconfig, jsonconversion, packaging, pluggy, pyparsing, pytest, pytest-runner, tox, virtualenv, setuptools, simplejson, cbor2, python-rapidjson and ujson to permit the latest version. Updates
attrs
from 21.2.0 to 23.2.0Commits
Updates
distlib
from 0.3.2 to 0.3.8Release notes
Sourced from distlib's releases.
Changelog
Sourced from distlib's changelog.
... (truncated)
Commits
ab5f8e7
Changes for 0.3.8.86bb212
Update change log.488599f
Updates based on flake8 checks.0e261af
Use legacy version implementation for Python itself.8242f39
Update copyright years.e27569b
Fix #208: Handle deprecation removals in Python 3.13.65a014b
Update requirements and CI matrix.124108a
Skip test for non-final Python versions.ff48e09
Fix #206: include tox.ini in sdist.eeaa18d
Fix #204: Use symlinks in venv creation during test.Updates
filelock
from 3.0.12 to 3.13.3Release notes
Sourced from filelock's releases.
... (truncated)
Changelog
Sourced from filelock's changelog.
... (truncated)
Commits
f50a337
[pre-commit.ci] pre-commit autoupdate (#319)3f6df70
Make singleton class instance dict unique per subclass (#318)9a64375
[BugFix] fix permission denied error when lock file is placed in/tmp
(#317)e2f121b
Update index.rst to improve the demo usage (#314)a46ea71
[pre-commit.ci] pre-commit autoupdate (#312)766e12d
[pre-commit.ci] pre-commit autoupdate (#311)f641eb6
Bump pypa/gh-action-pypi-publish from 1.8.12 to 1.8.14 (#310)9048580
Bump pypa/gh-action-pypi-publish from 1.8.11 to 1.8.12 (#308)7f9041f
[pre-commit.ci] pre-commit autoupdate (#306)b8ae5a1
[pre-commit.ci] pre-commit autoupdate (#305)Updates
iniconfig
from 1.1.1 to 2.0.0Changelog
Sourced from iniconfig's changelog.
Commits
93f5930
Merge pull request #51 from pytest-dev/add-deploy9426557
rework deploy pipeline for hatch usage and modern checkout5f617e3
Merge pull request #49 from pytest-dev/rework-types180065c
changelogc7d1d88
add sectionwrapper get overload types90df3d7
hatch-vcsdf78c51
pre-commit pyproject ftmc113dd6
migrate to hatch0253ff1
implement review comments10583b8
update changelogUpdates
jsonconversion
from 0.2.12 to 1.0.1Release notes
Sourced from jsonconversion's releases.
Commits
ccf704e
fix: Updated build process and version198bdc7
fix: Updated version to 1.0.0f280e75
fix: Updated deprecations66b9e23
Merge remote-tracking branch 'github/master'81abde8
fix(decoder): substitute modules also for type entries462af5c
Merge branch 'release/0.2.12'2007b6a
chore(seqm): add SEQM file90a06d5
chore(conanfile): fill template0214ede
chore: added cissy files from templateUpdates
packaging
from 20.9 to 24.0Release notes
Sourced from packaging's releases.
... (truncated)
Changelog
Sourced from packaging's changelog.
... (truncated)
Commits
7a983f7
Bump for release4d85340
Add riscv64 as a supported manylinux architecture (#751)4dce761
Apply some ruff suggestions (#772)57a6a7f
Appply some bugbear suggestions (#761)7bcd6d8
Apply some refurb suggestions (#763)d0067e9
[StepSecurity] ci: Harden GitHub Actions (#1) (#758)eae70dd
feat: Create dependabot.yml (#757)241bb35
Update URLs (#764)7698237
Remove coverage ignore for non-existent file (#752)b271d2b
Replace PEP references with PUG links (#750)Updates
pluggy
from 0.13.1 to 1.4.0Changelog
Sourced from pluggy's changelog.
... (truncated)
Commits
2efd28e
Preparing release 1.4.0ebeb2f2
Merge pull request #471 from bluetech/unblock3a28b4d
Merge pull request #464 from bluetech/hookwrapper-teardown-warning4331b7a
Merge pull request #473 from bluetech/iterator-invalidation7aef3e6
hooks: fix plugins registering other plugins in a hookcc36605
Merge pull request #472 from bluetech/call-extra-ordering-fix443fee6
hooks: fixcall_extra
extra methods getting ordered before everything else4577b45
hooks: add comment describing_hookimpls
's format/invariants.13b3661
AddPluginManager.unblock
method to unblock a name4b5b2d4
CHANGELOG: fix errors in 1.0.0 entryUpdates
pyparsing
from 2.4.7 to 3.1.2Release notes
Sourced from pyparsing's releases.
... (truncated)
Changelog
Sourced from pyparsing's changelog.
... (truncated)
Commits
7d4bda2
Prep for 3.1.2 release9533fcb
Add early break when checking warning inside a for loopd252980
Update tox.ini to handle posargs when tox is runa1b7aad
Better exception messages for nested expressions; enhance assertRaisesParseEx...5d48b2d
Added directx_x_file_parser.py example (parser + parser generator)e13a03b
Blackening (updated black)26e2180
Blackening670ba22
Convert legacy string formatting to f-strings; expand on some docstrings and ...c19df25
Add CHANGES note for new ieee_float expression in pyparsing.common640d75b
Accept floating-point NaN and Inf literals (#538)Updates
pytest
from 6.2.4 to 8.1.1Release notes
Sourced from pytest's releases.
... (truncated)
Commits
81653ee
Adjust changelog manually for 8.1.1e60b4b9
Prepare release version 8.1.115fbe57
[8.1.x] Revert legacy path removals (#12093)86c3aab
[8.1.x] Do not import duplicated modules with --importmode=importlib (#12077)5b82b0c
[8.1.x] Yank version 8.1.0 (#12076)0a53681
Merge pull request #12054 from pytest-dev/release-8.1.0b9a167f
Prepare release version 8.1.000043f7
Merge pull request #12038 from bluetech/fixtures-rm-arg2indexf4e1025
Merge pull request #12048 from bluetech/fixture-teardown-excgroup43492f5
Merge pull request #12051 from jakkdl/test_debugging_pythonbreakpointUpdates
pytest-runner
from 5.3.1 to 6.0.1Changelog
Sourced from pytest-runner's changelog.
Commits
9d13da8
Update changelog1898992
Merge pull request #62 from pytest-dev/RonnyPfannschmidt-devstatusd9d2ec5
update development status to inactivea3dc9f4
Merge https://github.com/jaraco/tidelift into newmain3b16808
Move module to package for simplicity of packaging.25c91d8
⚫ Fade to black.3e72441
Remove legacy code25b782a
Update changelog.7d3889c
Tests no longer run on Python 3.60b2b132
Merge pull request #59 from foutrelis/python310Updates
tox
from 3.23.1 to 4.14.2Release notes
Sourced from tox's releases.
Looks like these dependencies are updatable in another way, so this is no longer needed.