Bump the python-minor-and-patch group across 1 directory with 17 updates
Type: Pull Request
State: Open
Association: Unknown
Comments: 1
(about 6 hours ago)
(about 6 hours ago)
Bumps the python-minor-and-patch group with 17 updates in the / directory:
| Package | From | To |
|---|---|---|
| pytest | 9.1.1 |
9.2.0 |
| hypothesis | 6.170.9 |
6.170.14 |
| ruff | 0.16.10 |
0.17.3 |
| mypy | 2.4.0 |
2.4.1 |
| pip-tools | 7.6.1 |
7.6.2 |
| cyclonedx-bom | 7.5.0 |
7.6.0 |
| numpy | 2.5.3 |
2.5.4 |
| pycparser | 3.0 |
3.12 |
| ast-serialize | 0.12.1 |
0.13.1 |
| chardet | 7.6.0 |
7.7.0 |
| coverage | 7.16.2 |
7.17.0 |
| iniconfig | 2.3.0 |
2.3.1 |
| jsonpointer | 3.1.1 |
3.7 |
| pluggy | 1.6.0 |
1.7.0 |
| pyinstaller-hooks-contrib | 2026.8 |
2026.9 |
| tzdata | 2026.5 |
2026.6 |
| pip | 26.2.1 |
26.2.2 |
Updates pytest from 9.1.1 to 9.2.0
Release notes
Sourced from pytest's releases.
9.2.0
pytest 9.2.0 (2026-10-27)
Removals and backward incompatible breaking changes
#14716:
-cnow raises a usage error for a path that does not exist, is a directory, or is in a format pytest has no loader for. Such paths were previously either ignored or reported as an unhandledFileNotFoundError.#8593: The
indirect,idsandscopearguments ofMetafunc.parametrize() <pytest.Metafunc.parametrize>-- and therefore of@pytest.mark.parametrize <pytest.mark.parametrize ref>-- are now keyword-only.Passing them positionally was a common source of confusing errors, e.g.
parametrize("arg1", "arg2", [(1, 2)])made the argvalues land inindirectand failed withindirect fixture '(1, 2)' doesn't exist; such mistakes now fail with an understandableTypeError. The type annotations have always declared these arguments as keyword-only.#993: Plugin import failures at startup are now reported and classified instead of escaping as a raw traceback with the accidental exit code
1:
- a plugin that cannot be found -- via
-p,pytest_pluginsorPYTEST_PLUGINS-- exits withpytest.ExitCodeUSAGE_ERROR(4), like aconftest.pythat fails to import;- a plugin that is found but raises while importing -- including a broken
pytest11entry point or a missing plugin dependency -- exits withpytest.ExitCodeINTERNAL_ERROR(3), with the traceback preserved.
pytest.mainnow returns these codes instead of raisingImportError. Also fixed anIndexErrorfrom pytest's own internals when the plugin raised an exception with no arguments.Deprecations (removal in next major release)
#14742: The private
_pytest.python.CallSpec2name has been renamed toCallSpec. The oldCallSpec2alias remains available for now and will be removed in pytest 10 or 11.#14755: Schedule yield_fixture decorator for removal in pytest 10 or 11.
#14774: Similarly to the deprecation of class-scoped fixtures defined as instance methods in pytest 9.1, all higher-scoped fixtures (
module,package, andsession) defined as instance methods are now deprecated.They suffer from the same issue the original deprecation only fixed for class-scoped fixtures, see
10819and14011.#14808: Passing a non-string value to a
string-typed ini option now emits apytest.PytestRemovedIn10Warning. This affects[tool.pytest.ini_options]inpyproject.toml. In pytest 10 this will raise aTypeError, matching the behavior of the corresponding TOML config path.#7323: Passing
bytestoTerminalReporter.write_line()is now deprecated, pass astrinstead.New features
- #14743: Full diff: now contains a legend explaining the + & - symbols in diff output.
- #2781: When
strict_markersis enabled, marker names used in-mexpressions are now validated against registered markers.- #6881: Added the
parametrize_long_str_id_strategyconfiguration option to control how longstr/bytesparameter values are handled in auto-generated test IDs. Explicit IDs set viaids=[...]orpytest.param(..., id=...)are not affected. Available strategies:short(default, values over 100 chars fall back toargname+index),sha256(SHA-256 hex digest),legacy(keep full value), anddisallow(error requesting explicit IDs).Improvements in existing functionality
- #10745: A
RecursionErrorwhose recursion origin cannot be located now shows only the first and last 10 stack frames, matching what pytest already did when locating the origin failed outright. Previously the full traceback -- often around a thousand near-identical frames -- was rendered, which was both slow and unreadable. Pass--full-traceto see every frame.
... (truncated)
Commits
ae1d0ffPrepare release version 9.2.0143ce31pre-commit: exclude codespell on generated release announcements532dc5ftox: add attrs dependency to regen, needed in reportingdemo.rsta7b2446Merge pull request #15245 from pytest-dev/claude/project-thread-9jcf91679d09c[pre-commit.ci] pre-commit autoupdate (#15266)41d12cddocs: clarify typing for yield fixturesb9022baMerge pull request #15182 from 1871698/docs/improve-getting-started-description16f87a7docs: improve getting-started.rst test execution description082ed70Merge pull request #15255 from pytest-dev/claude/project-thread-eoi3d6ae37a01Merge pull request #15227 from pytest-dev/claude/project-thread-4etye4- Additional commits viewable in compare view
Updates hypothesis from 6.170.9 to 6.170.14
Commits
255a880Bump hypothesis version to 6.170.14 and update changelogfd6038cMerge pull request #4949 from moreati/issue4926-denylist8dd4664Rephrase RELEASE note following review5e93693Bump hypothesis version to 6.170.13 and update changeloga5512a3Merge pull request #4952 from jorenham/codemods/characters-kwargs8375d12Fixcharacters()codemod crash with**kwargsac21c15Add RELEASE note04e55b4dateutil: Exclude coverage measurement of old releases891e478Update pinned dependencies (to block eMudhra certificates)8fca8fdBump hypothesis version to 6.170.12 and update changelog- Additional commits viewable in compare view
Updates ruff from 0.16.10 to 0.17.3
Release notes
Sourced from ruff's releases.
0.17.3
Release Notes
Released on 2026-10-26.
Preview features
- [
suspicious] Addshared-clock-mock(#29074)Bug fixes
- [
pyupgrade] Avoid incorrect conversions to f-strings (UP032) (#25485)Performance
- Buffer stdout in
ruff format(#29631)- Specialize ASCII identifier lexing (#29503)
- Speed up identifier and keyword lexing (#29463)
Documentation
- [
flake8-bandit] Describe what the rule actually checks forhttpx(S113) (#27936)Contributors
Install ruff 0.17.3
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.17.3/ruff-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/ruff/releases/download/0.17.3/ruff-installer.ps1 | iex"Download ruff 0.17.3
File Platform Checksum ruff-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum ruff-x86_64-apple-darwin.tar.gz Intel macOS checksum ruff-aarch64-pc-windows-msvc.zip ARM64 Windows checksum
... (truncated)
Changelog
Sourced from ruff's changelog.
0.17.3
Released on 2026-10-26.
Preview features
- [
suspicious] Addshared-clock-mock(#29074)Bug fixes
- [
pyupgrade] Avoid incorrect conversions to f-strings (UP032) (#25485)Performance
- Buffer stdout in
ruff format(#29631)- Specialize ASCII identifier lexing (#29503)
- Speed up identifier and keyword lexing (#29463)
Documentation
- [
flake8-bandit] Describe what the rule actually checks forhttpx(S113) (#27936)Contributors
0.17.2
Released on 2026-10-22.
Preview features
- [
complexity] Addunnecessary-regular-expression-compile(#25533)Bug fixes
- Avoid syntax errors for type variables with starred constraints (
UP040,UP046,UP047,RUF053) (#28362)- [
pydocstyle] Treat backslash-escaped*argsand**kwargsas documented (D417) (#29536)- [
pylint] Avoid false positive on starred elements (PLE0643) (#29483)- [
pylint] Mark fixes unsafe when deleting comments (PLR5501,PLW0120) (#29414)- [
pyupgrade] Mark fix unsafe when deleting comments (UP035) (#29413)Performance
... (truncated)
Commits
ba65abfBump version to 0.17.3 (#29745)fb2f921[ty] Fix narrowing of strings and integers compared with enum members (#29743)d181287[ty] Index nominal union alternatives (#29196)07872ad[ty] Preserve string literals in comparisons withLiteralString(#29741)95888b2[ty] Preserve narrowing after guarded match subject captures (#29558)3c8166b[ty] Fix hang when negating recursive unions of instance types (#29652)3fd20e0[ty] Preserve generic callback specializations during return refinement (#29667)2f0a29e[ty] Record predicate truthiness alongside expression inference (#29706)60f104a[ty] Honor@overrideon overload implementations in stubs (#29470)207ec3a[ty] Add diagnostic baseline support (#27636)- Additional commits viewable in compare view
Updates mypy from 2.4.0 to 2.4.1
Changelog
Sourced from mypy's changelog.
Mypy 2.4.1
- Process overloads as a whole in two-phase type checking (Ivan Levkivskyi, PR 22231)
- Skip recursive setup for frame-private nested functions in mypyc (Piotr Sawicki, PR 22187)
Acknowledgements
Thanks to all mypy contributors who contributed to this release:
- A5rocks
- Adam Dangoor
- Alex Waygood
- Ali Hamdan
- Brian Helba
- Chad Dombrova
- David Foster
- dnwpark
- Edgar Ramírez Mondragón
- Giorgos Michas
- Ivan Levkivskyi
- Jelle Zijlstra
- Jukka Lehtosalo
- Marc Mueller
- Michael R. Crusoe
- NIYONSHUTI Emmanuel
- Piotr Sawicki
- Shantanu
- themylogin
- Vaggelis Danias
- Willy Bruns
I'd also like to thank my employer, Dropbox, for supporting mypy development.
Mypy 2.3
We've just uploaded mypy 2.3.0 to the Python Package Index (PyPI). Mypy is a static type checker for Python. This release includes new features, performance improvements and bug fixes. You can install it as follows:
python3 -m pip install -U mypyYou can read the full documentation for this release on Read the Docs.
The Upcoming Switch to the New Native Parser
We are planning to enable the new native parser (
--native-parser) by default soon. We recommend that you test the native parser in your projects and report any issues in the mypy issue tracker.Mypyc Free-threading Memory Safety
... (truncated)
Commits
ad02a35Skip test for 2.4.1cad7794Finalize version to 2.4.1d9cbcbcAdd changelog for Mypy 2.4.1 (#22310)2860baaProcess overloads as a whole in two-phase type-checking (#22231)9b3e307[mypyc] Skip recursive setup for frame-private nested functions (#22187)10ad5f6Bump ast-serialize to 0.12.1 (#22093)350052fBump ast-serialize to 0.12.0 (#22087)f7d08cfBump version to 2.4.1+dev- See full diff in compare view
Updates pip-tools from 7.6.1 to 7.6.2
Release notes
Sourced from pip-tools's releases.
v7.6.2
Bug fixes
Fixed
pip-compilesometimes adding--no-indexto the recorded command even when it was not passed, with click 8.5.0 -- by@mnencia.PRs and issues: #2472
Make
pip-toolscompatible with {pypi}clickversion8.5-- by@sirosen.PRs and issues: #2474
Packaging updates and notes for downstreams
- License metadata has updated to use :pep:
639License-Expressiondata -- by@sirosen.Contributor-facing changes
Changelog
Sourced from pip-tools's changelog.
v7.6.2
2026-10-06
Bug fixes
Fixed
pip-compilesometimes adding--no-indexto the recorded command even when it was not passed, with click 8.5.0 -- by {user}mnencia.PRs and issues: {issue}
2472Make
pip-toolscompatible with {pypi}clickversion8.5-- by {user}sirosen.PRs and issues: {issue}
2474Packaging updates and notes for downstreams
- License metadata has updated to use :pep:
639License-Expressiondata -- by {user}sirosen.Contributor-facing changes
pip-toolsnow has a localcoverageplugin for conditional coverage based on the installedpipversion -- by {user}sirosen.PRs and issues: {issue}
2264
Commits
4492554Merge pull request #2486 from sirosen/release/v7.6.2a427c88Update changelog for v7.6.2b81fb05Merge pull request #2485 from jazzband/dependabot/pip/docs/urllib3-2.8.09707a2aMerge pull request #2453 from sirosen/testing/coverage/env-var8962828Improve env var context manager per review245d716Move and make the "_env_var" wrapper testable77c0000Bump urllib3 from 2.7.0 to 2.8.0 in /docs71a34a6Merge pull request #2484 from jazzband/pre-commit-ci-update-config8ed9836[pre-commit.ci] pre-commit autoupdate28538e4Merge pull request #2477 from jazzband/dependabot/pip/docs/soupsieve-2.9- Additional commits viewable in compare view
Updates cyclonedx-bom from 7.5.0 to 7.6.0
Release notes
Sourced from cyclonedx-bom's releases.
v7.6.0 (2026-10-28)
Features
What's Changed
- feat(environment): add option -E to ignore parent PYTHON* env vars by
@juliosuasin CycloneDX/cyclonedx-python#1106- tests: fix pipenv runner by
@jkowalleckin CycloneDX/cyclonedx-python#1132- chore(deps-dev): Update uv requirement from 0.12.17 to 0.13.4 by
@dependabot[bot] in CycloneDX/cyclonedx-python#1133- chore(deps): Bump zizmorcore/zizmor-action from 0.6.4 to 0.7.1 by
@dependabot[bot] in CycloneDX/cyclonedx-python#1130- chore(deps): Bump actions/upload-artifact from 7.0.1 to 7.0.2 by
@dependabot[bot] in CycloneDX/cyclonedx-python#1125- chore(deps): Bump actions/download-artifact from 8.0.1 to 8.0.2 by
@dependabot[bot] in CycloneDX/cyclonedx-python#1124- chore(deps): Bump python-semantic-release/publish-action from 10.5.3 to 10.7.0 by
@dependabot[bot] in CycloneDX/cyclonedx-python#1114- chore(deps): Bump python-semantic-release/python-semantic-release from 10.0.2 to 10.7.0 by
@dependabot[bot] in CycloneDX/cyclonedx-python#1113New Contributors
@juliosuasmade their first contribution in CycloneDX/cyclonedx-python#1106Full Changelog: https://github.com/CycloneDX/cyclonedx-python/compare/v7.5.0...v7.6.0
Commits
5a81ff8chore(release): 7.6.0bb67847chore(deps): Bump python-semantic-release/python-semantic-release from 10.0.2...797a9b4chore(deps): Bump python-semantic-release/publish-action from 10.5.3 to 10.7....afdcda4chore(deps): Bump actions/download-artifact from 8.0.1 to 8.0.2 (#1124)89cf5c8chore(deps): Bump actions/upload-artifact from 7.0.1 to 7.0.2 (#1125)d72f8c8chore(deps): Bump zizmorcore/zizmor-action from 0.6.4 to 0.7.1 (#1130)105750echore(deps-dev): Update uv requirement from 0.12.17 to 0.13.4 (#1133)6b7184etests: fix pipenv runner (#1132)87fc286feat(environment): add option -E to ignore parent PYTHON* env vars (#1106)- See full diff in compare view
Updates numpy from 2.5.3 to 2.5.4
Release notes
Sourced from numpy's releases.
v2.5.4 (Oct 10, 2026)
NumPy 2.5.4 Release Notes
Released on 2026-10-10.
NumPy 2.5.4 is a patch release that fixes bugs discovered after the 2.5.3 release. Highlights are:
- Many typing fixes and improvements,
- A workaround for the MSVC 19.51 bug, see below.
This release supports Python versions 3.12-3.15.
Improvements
numpy.linalg.svdandnumpy.linalg.lstsqnow raise for inputs containing infinities instead of returning garbage results.Fixed hangs in
numpy.linalg.svdandnumpy.linalg.lstsqfor certain inputs containing infinities for recent versions of some LAPACK implementations.
numpy.linalg.condnow handles non-finite inputs more consistently.(gh-32593)
StringDType hashing with NaN sentinels
StringDTypeinstances with equivalent floating-point NaN sentinels now have equal hashes. Previously, distinct NaN objects could produce equal dtype instances with different hashes, causing dictionary lookups and set deduplication to fail.(gh-32563)
Changes
MaskedArrayresets a fill_value that cannot be represented in a new dtypeA fill_value copied from a source array is now reset to the default fill_value for the new dtype when it cannot be represented in that dtype. Previously the copied value could be stale: ufuncs that change dtype left the result holding a fill_value typed for the old dtype, which raised a
TypeErroronly when something later validated it (such as.view()), and a floating point fill_value that overflows an integer dtype was kept as an out-of-range value together with aRuntimeWarning. Both now fall back to the default, including when a masked array is passed toMaskedArraywith a differentdtype. A fill_value given explicitly by the user is still validated and raises as before. This can now raise aComplexWarningif the fill_value is complex and the new dtype is real.
... (truncated)
Commits
a3d0ef1Merge pull request #32969 from charris/prepare-2.5.4087b536MAINT: Make OpenBLAS version check use 2.5.x branch.91acd87REL: Prepare for the NumPy 2.5.4 release.9cc555bMerge pull request #32956 from charris/backport-typing-1e04b972TYP:dtype[void].names: allow setting with list (#32943)d929969TYP:timedelta64:datetime.timedeltaconstruction isn't deprecated (#...839467fTYP:ma.getmaskarray: accept array-likes (#32934)64b721bTYP:polynomial: accept scalarcoefin the poly constructors (#32931)06b7ad2TYP:void: accept anydtype: strin constructor calls (#32928)c7bcd2cTYP:place: widenmask(#32926)- Additional commits viewable in compare view
Updates pycparser from 3.0 to 3.12
Release notes
Sourced from pycparser's releases.
release_v3.12
What's Changed
- Emit one type definition for declarators that share it by
@Cherith1222in eliben/pycparser#621- raise ParseError for _Atomic applied to array or function type by
@arfa-21in eliben/pycparser#623- Fix code generation for the _Pragma operator by
@hulkbigin eliben/pycparser#625- Parse GNU statement expressions as primary expressions by
@hulkbigin eliben/pycparser#628- Fix shared type declarations in switch cases by
@hulkbigin eliben/pycparser#630- raise ParseError for typedef in a parameter declaration by
@arfa-21in eliben/pycparser#631- Scope for loop init declarations to the loop by
@arfa-21in eliben/pycparser#634Full Changelog: https://github.com/eliben/pycparser/compare/release_v3.11...release_v3.12
release_v3.11
Enhanced C11 support
Full Changelog: https://github.com/eliben/pycparser/compare/release_v3.01...release_v3.11
release_v3.01
What's Changed
- Drop an unneeded direct build depndency on wheel by
@hroncokin eliben/pycparser#597- fix: handle integer suffix in #line directive without crashing by
@SAY-5in eliben/pycparser#601- Update default branch to main by
@myd7349in eliben/pycparser#602- fix: raise ParseError instead of AssertionError on unmatched '}' by
@patchwrightin eliben/pycparser#604- Add support for Python 3.15 by
@kyttain eliben/pycparser#605- Fix empty compound literal (type){} raising ParseError by
@IMGillusionin eliben/pycparser#606- Fix compound literal statements in C generator by
@Rayan-and-beyondin eliben/pycparser#607- Keep the contents of adjacent u8 string literals by
@SashaMITin eliben/pycparser#609Full Changelog: https://github.com/eliben/pycparser/compare/release_v3.00...release_v3.01
Commits
3ec766bTweak build1771cbfPrepare to release 3.1251715bfAdd documentation on using methods of ast node878c289Support va_arg properly840fe55Add some Linux kernel headers to benchmark8fd2299Add ArrayDesignator AST node to distinguish array indices in designatorsaa32af5Fix crashes in generator with empty case bodiesf29e8efRegression test for #215a74aa74Support form feed and vertical tabs as whitespace02380d0Comment fixes- Additional commits viewable in compare view
Updates ast-serialize from 0.12.1 to 0.13.1
Commits
Updates chardet from 7.6.0 to 7.7.0
Release notes
Sourced from chardet's releases.
7.7.0
Big release: raising
max_bytesto cover a huge input no longer makesdetect()slow, every answer now decodes the window it was detected from, and markup declarations are read the way browsers read them. A lot of this came from new contributors, so thank you all!Performance
- Raising
max_byteson large inputs no longer gets slow. On compiled wheels,detect(data, max_bytes=len(data))on 272 MiB takes about 0.2s for cp1252 and 0.5s for Shift_JIS, down from several seconds. UTF-8 validation and a final decode of the winner still read the whole window, and the other stages stop at a 256 KiB evidence cap (ADR-0006). The default 200 KB cap is still the fastest path, and default calls are unchanged.- The pure-Python wheel on CPython scores bigram models through
operator.itemgetterinstead of a Python loop, makingdetect()about 1.25x faster anddetect_all()about 1.35x faster. (#404, thanks@deadstrobe5)- Fixed three scans that went quadratic on hostile input: the UTF-7
+scan on line-wrapped base64 (128 KiB went from 5.4s to 1.2ms), unclosed<metaand<?xmltags in the markup scan, and the EBCDIC charset-declaration regex. (#403, thanks@Samin061)Bug Fixes
- Every answer now decodes the examined window under the name you get back. BOMs, BOM-less UTF-16/32 null patterns, ISO-2022/HZ escapes, and
<meta charset>declarations used to be trusted without decoding the rest of the window, so a confident answer could still raise further in. The 5.x/6.x display names (EUC-JP,SHIFT_JIS,Big5,ISO-2022-JP) are only used when those narrower codecs decode it too. (#394 and #396, thanks@Samin061)- Markup declarations follow the WHATWG prescan: declarations inside comments are ignored, a
charset=inside another attribute (like a refresh URL) no longer beats a real<meta charset>, quoted or spacedcontentcharsets work, and an ASCII page declaringutf-16leno longer comes back as UTF-16-LE. (#389 and #398, thanks@SashaMITand@xiehuanyi)- PEP 263 cookies resolve the way
tokenize.detect_encodingresolves them, including only counting a line-2 cookie when line 1 is blank or a comment. (#391, thanks@xiehuanyi)- Fixed BOM-bearing UTF-32 coming back as UTF-16 when
max_bytescuts a code unit. (#405, thanks@AryanRG)- Fixed language labels on Unicode text tilting toward accent-heavy languages, so a French paragraph with a few accents no longer comes back as Hungarian. Mislabels on the test corpus's Unicode files dropped from 140 to 104.
- Fixed a mostly-ASCII Windows-1252 file with a single
Ödetecting as HP-Roman8, and English with a loneÉdetecting as MacRoman. (#383, thanks@aadsm)- Fixed null-separated records like
find -print0output coming back as UTF-16-LE with Chinese as the language.prefer_superset=Trueno longer swaps in a code page that can't decode the data, and now respectsinclude_encodings/exclude_encodings. (#393, thanks@00200200)chardetectandUniversalDetectorno longer mistake input cut exactly at the byte cap for the whole stream. (#392, thanks@00200200)lookup_encoding's cache is capped at 1024 entries, since charset names come from untrusted markup. (#390, thanks@Samin061)- Plus smaller fixes to
detect_all()ranking, EBCDIC XML MIME types, and the deprecatedchardet.equivalencesshim. The changelog has the full list.Improvements
- New
-m/--mime-typeflag forchardetectshows the MIME type next to the encoding, likefile -i. (#384, thanks@smi11for the request)- Visual-order Hebrew is now detected, and cp864 Arabic is trained on contextually shaped text in visual order, the way real cp864 systems stored it.
EncodingInfo.is_multibyteis nowis_multibyte_cjk. The old name still works with aDeprecationWarningand goes away in 8.0.pipeline/markup.pyis now compiled by mypyc (15 modules total), and CI enforces 100% test coverage.Full Changelog: https://github.com/chardet/chardet/compare/7.6.0...7.7.0
Changelog
Sourced from chardet's changelog.
7.7.0 (2026-10-17)
Features:
- Added a
-m/--mime-typeflag to thechardetectCLI, which shows the detected MIME type next to the encoding, likefile -i. (Dan Blanchard <https://github.com/dan-blanchard>_ via Claude,[#384](https://github.com/chardet/chardet/issues/384) <https://github.com/chardet/chardet/issues/384>_)Accuracy:
- Visual-order Hebrew is now detected. The ISO-8859-8 model trains on both bidi conventions, so 1990s visual-order pages come back as ISO-8859-8 while logical-order text still prefers Windows-1255. (
Dan Blanchard <https://github.com/dan-blanchard>_ via Claude)- cp864 Arabic now trains on contextually shaped text in visual order, the way real cp864 systems stored it, instead of isolated letter forms in logical order. (
Dan Blanchard <https://github.com/dan-blanchard>_ via Claude)Performance:
- Raising
max_byteson large inputs no longer gets slow. On the compiled build,detect(data, max_bytes=len(data))on 272 MiB takes about 0.23s for cp1252 and 0.56s for Shift_JIS, down from several seconds. UTF-8 validation and a final decode of the winner still read the whole window, so the answer still decodes it. The other stages stop at a 256 KB evidence cap, which sits above the defaultmax_bytes, so default calls are unchanged, and the default 200 KB cap is still the fastest path. ADR-0006 has the design. (Dan Blanchard <https://github.com/dan-blanchard>_ via Claude)- The UTF-7
+scan is no longer quadratic on line-wrapped base64 like PEM certificates, MIME attachments, and JWTs. 128 KiB of it went from 5.4 seconds to 1.2 milliseconds. (Dan Blanchard <https://github.com/dan-blanchard>_ via Claude)- A head full of unclosed
<metaor<?xmltags no longer makes the markup scan quadratic, taking it from about 5 ms to about 20 µs. A literal<inside an attribute value now hides that one tag. (Dan Blanchard <https://github.com/dan-blanchard>_ via Claude)- An EBCDIC
charset=orencoding=followed by whitespace and no value no longer makes the declaration scan backtrack quadratically. A crafted 4 KB document used to costdetect()about 60 ms. (Samina <https://github.com/Samin061>,[#403](https://github.com/chardet/chardet/issues/403) <https://github.com/chardet/chardet/pull/403>)- The pure-Python install on CPython scores bigram models with
operator.itemgetterinstead of a Python loop, makingdetect()about 1.25x faster anddetect_all()about 1.35x faster across the test corpus. Compiled builds and PyPy keep their existing paths. (Afonso Ribeiro <https://github.com/deadstrobe5>_)
... (truncated)
Commits
7a87294Release 7.7.01785c56docs: label the base64 large-input rows as ascii with a footnote4ec13a0test: take the best of three cold starts in the cold-vs-warm checkd7be8c7docs: re-measure the large-input table for 7.7.0d6dcc41docs: update benchmark numbers for 7.7.0cc5924aRename EncodingInfo.is_multibyte to is_multibyte_cjke0a7ff9docs: derive the multi-byte column from the codeca3699c9Fix UTF-32 BOM detection for truncated max_bytes windows (#405)89cab01Score bigram models through itemgetter on interpreted CPython (#404)ea3ef5fFix quadratic backtracking in the EBCDIC charset-declaration scan (#403)- Additional commits viewable in compare view
Updates coverage from 7.16.2 to 7.17.0
Release notes
Sourced from coverage's releases.
7.17.0
Version 7.17.0 — 2026-10-22
- Dropped support for Python 3.10.
- Binary wheels are now provided for iOS and Android. This allows the use of the optimized C tracer on mobile platforms.
- Fix: three or more levels of nested
withstatements could make awithline look like a branch with an exit that can never happen. Using the sys.monitoring core, these phantom branches were reported as partial. Other cores hid the problem but still counted the phantom branches in the total. Closes issue 1987.- Fix: a comment or string that merely mentioned
if True:orwhile True:could mark its line as a branch that is known to be partial, so a branch that never ran was reported as taken. These built-in patterns now only match at the start of the statement. Closes issue 2314.- Fix: region detection missed functions defined in unusual places, such as
elseandexceptclauses. This is now fixed.- Fix: recent versions of the lcov tool complain if the same function name appears more than once in a report. Python can have multiple same-named functions in a few ways, for example, getters/setters or conditionally defined functions. These are now disambiguated by adding a
@<line number>suffix to the function name. Fixes issue 2335.- Fix: The “Can’t combine statement coverage data with branch data” error now names the two data files it couldn’t combine. The error description in the docs now lists common causes and how to find the process that wrote the file.
- Fix: at coverage totals close to 0 or 100, the XML report could get incorrect
line-ratevalues like8.333e-05or1. This is now fixed, closing issue 2293 and issue 2294.- Fix: a parallel data file saved more than once kept the hash of its first save in its file name. Combining could then skip it as a duplicate of another file that had the same data at that point, and delete it, losing the data recorded after the first save. Each save now updates the hash. This had been a problem since 7.13.1. Fixes issue 2338.
- Fixes for obscure but legal file names:
- File names (and plugin names) can contain control characters, which are legal in POSIX paths but unsafe in reports: in XML 1.0 they make the document non-well-formed, and in a terminal they act as escape sequences (colors, title/clipboard sequences, cursor moves that forge output). Now the XML report, the text and Markdown summary reports, and
coverage debug datareplace non-printable characters in names. Printable names are unchanged.- A file pattern (from
include,omit, or a[paths]alias) containing a newline sent the glob-to-regex translation into an infinite loop, hanging the process. Newlines in patterns are now handled like any other character.- Fixes in the implementation of the C tracer:
- If a plugin’s
dynamic_source_filenamemethod raised an exception, lines in that function could be recorded as belonging to a different file. Also fixed some minor memory ...Description has been truncated
Package Dependencies
Technical Details
| ID: | 16804383 |
| UUID: | 6283613589 |
| Node ID: | PR_kwDOVVYnj88AAAABNz4_Xg |
| Host: | GitHub |
| Repository: | LocalGateKeys/LocalGateKeys |