Skip to content

chore(deps): bump the python group across 1 directory with 5 updates - #578

Open
dependabot[bot] wants to merge 1 commit into
masterfrom
dependabot/uv/python-c7205317ff
Open

dependabot[bot] wants to merge 1 commit into
masterfrom
dependabot/uv/python-c7205317ff

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Nov 2, 2026

Copy link
Copy Markdown
Contributor

Bumps the python group with 5 updates in the / directory:

Package From To
fpdf2 2.8.8 2.9.0
pillow 12.3.0 13.0.0
pypdf 6.19.0 6.21.4
pytest 9.1.1 9.2.0
ruff 0.16.9 0.17.3

Updates fpdf2 from 2.8.8 to 2.9.0

Release notes

Sourced from fpdf2's releases.

Tiling patterns, HTML and SVG improvements, and other bug fixes

[2.9.0] - 2026-10-29

Added

  • support for transform, style, opacity, and preserveAspectRatio="none" on SVG <image> tags - cf. [issue #537](py-pdf/fpdf2#537) - thanks to @​agustin18
  • support for colored and uncolored tiling patterns with FPDF.create_pattern() and FPDF.use_pattern(), including SVG <pattern> elements and pattern fills and strokes on referenced <use> shapes - cf. [issue #790](py-pdf/fpdf2#790) - thanks to @​andersonhc
  • support for unordered lists in multi_cell(markdown=True), using *, - or + as bullet markers - cf. [issue #654](py-pdf/fpdf2#654) - thanks to @​chaosreload
  • documentation on generating rMQR Codes - thanks to @​Lucas-C
  • Python 3.15 is now officially supported - thanks to @​andersonhc
  • Unicode font detection and enhanced error handling: when text cannot be encoded with the current font, the FPDFUnicodeEncodingException message now identifies the Unicode script (Cyrillic, Arabic, Chinese, etc.) and suggests a suitable font available on the system, via the new internal UnicodeFontManager - cf. [PR #1563](py-pdf/fpdf2#1563) - thanks to @​otreci4sgelt0nas

Fixed

  • None values in PDF dictionaries are serialized as null instead of an invalid Python literal - cf. [PR #1980](py-pdf/fpdf2#1980) - thanks to @​agustin18
  • Homogeneous arrays of PDF string and name objects use their PDF serialization, including encryption when applicable - cf. [PR #2004](py-pdf/fpdf2#2004) - thanks to @​xiehuanyi and @​andersonhc
  • PDF dates pad years below 1000 to four digits - cf. [PR #2005](py-pdf/fpdf2#2005) - thanks to @​xiehuanyi
  • Corrected the text_columns API documentation link in the English tutorial and 10 translations - cf. [PR #2039](py-pdf/fpdf2#2039) - thanks to @​ryanlcruz
  • FPDF.set_display_mode() rejects infinite numeric zoom values instead of writing invalid PDF numbers.
  • Page-count aliases honor center and right alignment with core fonts when text shaping is enabled.
  • 16-bit grayscale images, like 16-bit grayscale PNG files, are scaled down to 8 bits instead of being converted to RGBA, which made every value above 255 white, and keep the transparency of their tRNS color key - thanks to @​wleeaf
  • Docstrings of PaintedPath.line_relative(), horizontal_line_relative(), vertical_line_relative() and Action name their arguments as the signatures do (dx, dy, next_action) - thanks to @​mmporong
  • Tables inside FPDF.unbreakable() are replayed with their rows and cells intact when the block is moved to a new page - cf. [issue #1230](py-pdf/fpdf2#1230) - thanks to @​alphaZytx
  • FPDF.table() raises a clear ValueError naming the column when text_align is a tuple with fewer values than the table has columns, like it does for col_widths, instead of an IndexError - thanks to @​RavSinghChandan
  • FPDF.table(): a cell with a colspan below 1 spans one column, like a rowspan below 1 already spans one row, instead of raising ZeroDivisionError or FPDFException or breaking the column layout - thanks to @​RavSinghChandan
  • Synchronize font_style and emphasis setters with font selection and state tracking - cf. [issue #1223](py-pdf/fpdf2#1223) - thanks to @​agustin18
  • FPDF.table() raises ValueError: ... is not a valid TableBordersLayout for an unknown borders_layout name, like it does for cell_fill_mode and v_align, instead of a bare AttributeError - thanks to @​RavSinghChandan
  • FPDF.set_font() and FPDF.add_font() treat a repeated style letter as the same style: style="BB" is bold, instead of raising FPDFException: Undefined font: helveticaBB - thanks to @​RavSinghChandan
  • Document outlines count all visible descendants and link siblings by parent, retaining bookmarks when the hierarchy starts below the top level. - thanks to @​xiehuanyi
  • Annotation colors and border widths are serialized as PDF numbers without exponent notation. - thanks to @​xiehuanyi
  • Checksums for compressed embedded files are calculated from the original file bytes, as required by the PDF specification. - thanks to @​xiehuanyi
  • Repeated annotation flags no longer change unrelated flag bits; annotation flags are combined with bitwise OR. - thanks to @​xiehuanyi
  • FPDF.ink_annotation() raises a clear ValueError for an empty coords sequence, instead of ValueError: min() iterable argument is empty - cf. [issue #2072](py-pdf/fpdf2#2072) - thanks to @​agustin18
  • SVG images with a zero width or height disable rendering instead of using viewport dimensions. - thanks to @​xiehuanyi
  • FPDF.write_html() uses the first available font of a <font face> list, like browsers, as in face="Arial, Helvetica, sans-serif", with the generic serif, sans-serif and monospace families rendered by the core fonts, instead of raising FPDFException: Undefined font - thanks to @​RavSinghChandan
  • SVG gradient stop-opacity accepts percentages, clamps out-of-range values to 0-1, and combines with the color's alpha channel instead of replacing it. - thanks to @​xiehuanyi
  • SVG basic-shape coordinates and corner radii now accept absolute length units. - thanks to @​xiehuanyi
  • SVG transforms accept numbers written in scientific notation, such as scale(1e-3), instead of silently ignoring the transform. - thanks to @​xiehuanyi
  • SVG gradient stops honor inline style declarations of stop-opacity over the corresponding presentation attribute. - thanks to @​xiehuanyi
  • SVG length and angle attributes accept scientific notation, such as width="1e2pt", instead of raising ValueError. - thanks to @​xiehuanyi
  • Floating-point numbers in PDF arrays, dictionaries and destinations are written without exponent notation, preserving their values and allowing very small numeric zoom factors to be read correctly. - thanks to @​xiehuanyi
  • SVG byte strings and BytesIO inputs accept a UTF-8 BOM and XML whitespace after <svg or <?xml, instead of being sent to the raster image loader. - thanks to @​xiehuanyi
  • SVG import: a <polygon> or <polyline> whose points has an error (an invalid coordinate or an odd number of them) is drawn up to the last complete point before it, and one with empty points draws nothing, as the SVG specification says, instead of raising IndexError - thanks to @​RavSinghChandan
  • FPDF.write_html() ignores an unsupported align value on <td>, <th> and <tr>, such as middle, like it already does for <p>, instead of raising ValueError - thanks to @​RavSinghChandan
  • FPDF.regular_polygon() raises ValueError: 'numSides' parameter must be equal or greater than 1 for numSides below 1, instead of silently writing a path with no points (a bare h S, which closes a path that was never started) - thanks to @​RavSinghChandan
  • Bulleted text-column paragraphs now honor their top margins, indented paragraphs retain the column's right boundary, and HTML list items honor their TextStyle.t_margin - based on [PR #1218](py-pdf/fpdf2#1218) - thanks to @​andersonhc and @​gmischler
  • FPDF.text_columns() raises a clear ValueError for ncols below 1, like insert_toc_placeholder() does for pages, instead of a ZeroDivisionError or an unrelated Not enough horizontal space error when rendering - thanks to @​RavSinghChandan
  • FPDF() and FPDF.add_page() raise FPDFPageFormatException: Width and height must be positive numbers for a page format whose width or height is zero or negative, such as (0, 0), instead of writing a page with an empty or inverted /MediaBox - thanks to @​RavSinghChandan
  • FPDF.write_html() now supports CSS length units (px, pt) and surrounding whitespace in dimension attributes for <table>, <td>, <th>, <hr>, and <img> elements without raising ValueError - thanks to @​agustin18
  • FPDF.write_html() reads a CSS font-size on <font> with its unit, like browsers, as in style="font-size: 14pt" or "12px", instead of silently ignoring it; a number without a unit is still in points - thanks to @​RavSinghChandan
  • FPDF.write_html() supports <ul type="square">, the third standard HTML bullet type, instead of raising NotImplementedError: Unicode fonts use ▪ and core fonts fall back to the bullet - thanks to @​RavSinghChandan
  • FPDF.write_html() accepts the <ul type> keywords in any case, like browsers: <ul type="CIRCLE"> and <ul type="Square"> no longer raise NotImplementedError - thanks to @​RavSinghChandan
  • FPDF.write_html() supports <ul type="none">, rendering the list items without a marker like browsers do, instead of raising NotImplementedError - thanks to @​RavSinghChandan
  • FPDF.write_html() keeps the default bullet for an empty or unknown <ul type>, such as type="" or a misspelled type="disk", like browsers and like <ol> already does, instead of raising NotImplementedError - thanks to @​RavSinghChandan

... (truncated)

Changelog

Sourced from fpdf2's changelog.

[2.9.0] - 2026-10-29

Added

  • support for transform, style, opacity, and preserveAspectRatio="none" on SVG <image> tags - cf. [issue #537](py-pdf/fpdf2#537) - thanks to @​agustin18
  • support for colored and uncolored tiling patterns with FPDF.create_pattern() and FPDF.use_pattern(), including SVG <pattern> elements and pattern fills and strokes on referenced <use> shapes - cf. [issue #790](py-pdf/fpdf2#790) - thanks to @​andersonhc
  • support for unordered lists in multi_cell(markdown=True), using *, - or + as bullet markers - cf. [issue #654](py-pdf/fpdf2#654) - thanks to @​chaosreload
  • documentation on generating rMQR Codes - thanks to @​Lucas-C
  • Python 3.15 is now officially supported - thanks to @​andersonhc
  • Unicode font detection and enhanced error handling: when text cannot be encoded with the current font, the FPDFUnicodeEncodingException message now identifies the Unicode script (Cyrillic, Arabic, Chinese, etc.) and suggests a suitable font available on the system, via the new internal UnicodeFontManager - cf. [PR #1563](py-pdf/fpdf2#1563) - thanks to @​otreci4sgelt0nas

Fixed

  • None values in PDF dictionaries are serialized as null instead of an invalid Python literal - cf. [PR #1980](py-pdf/fpdf2#1980) - thanks to @​agustin18
  • Homogeneous arrays of PDF string and name objects use their PDF serialization, including encryption when applicable - cf. [PR #2004](py-pdf/fpdf2#2004) - thanks to @​xiehuanyi and @​andersonhc
  • PDF dates pad years below 1000 to four digits - cf. [PR #2005](py-pdf/fpdf2#2005) - thanks to @​xiehuanyi
  • Corrected the text_columns API documentation link in the English tutorial and 10 translations - cf. [PR #2039](py-pdf/fpdf2#2039) - thanks to @​ryanlcruz
  • FPDF.set_display_mode() rejects infinite numeric zoom values instead of writing invalid PDF numbers.
  • Page-count aliases honor center and right alignment with core fonts when text shaping is enabled.
  • 16-bit grayscale images, like 16-bit grayscale PNG files, are scaled down to 8 bits instead of being converted to RGBA, which made every value above 255 white, and keep the transparency of their tRNS color key - thanks to @​wleeaf
  • Docstrings of PaintedPath.line_relative(), horizontal_line_relative(), vertical_line_relative() and Action name their arguments as the signatures do (dx, dy, next_action) - thanks to @​mmporong
  • Tables inside FPDF.unbreakable() are replayed with their rows and cells intact when the block is moved to a new page - cf. [issue #1230](py-pdf/fpdf2#1230) - thanks to @​alphaZytx
  • FPDF.table() raises a clear ValueError naming the column when text_align is a tuple with fewer values than the table has columns, like it does for col_widths, instead of an IndexError - thanks to @​RavSinghChandan
  • FPDF.table(): a cell with a colspan below 1 spans one column, like a rowspan below 1 already spans one row, instead of raising ZeroDivisionError or FPDFException or breaking the column layout - thanks to @​RavSinghChandan
  • Synchronize font_style and emphasis setters with font selection and state tracking - cf. [issue #1223](py-pdf/fpdf2#1223) - thanks to @​agustin18
  • FPDF.table() raises ValueError: ... is not a valid TableBordersLayout for an unknown borders_layout name, like it does for cell_fill_mode and v_align, instead of a bare AttributeError - thanks to @​RavSinghChandan
  • FPDF.set_font() and FPDF.add_font() treat a repeated style letter as the same style: style="BB" is bold, instead of raising FPDFException: Undefined font: helveticaBB - thanks to @​RavSinghChandan
  • Document outlines count all visible descendants and link siblings by parent, retaining bookmarks when the hierarchy starts below the top level. - thanks to @​xiehuanyi
  • Annotation colors and border widths are serialized as PDF numbers without exponent notation. - thanks to @​xiehuanyi
  • Checksums for compressed embedded files are calculated from the original file bytes, as required by the PDF specification. - thanks to @​xiehuanyi
  • Repeated annotation flags no longer change unrelated flag bits; annotation flags are combined with bitwise OR. - thanks to @​xiehuanyi
  • FPDF.ink_annotation() raises a clear ValueError for an empty coords sequence, instead of ValueError: min() iterable argument is empty - cf. [issue #2072](py-pdf/fpdf2#2072) - thanks to @​agustin18
  • SVG images with a zero width or height disable rendering instead of using viewport dimensions. - thanks to @​xiehuanyi
  • FPDF.write_html() uses the first available font of a <font face> list, like browsers, as in face="Arial, Helvetica, sans-serif", with the generic serif, sans-serif and monospace families rendered by the core fonts, instead of raising FPDFException: Undefined font - thanks to @​RavSinghChandan
  • SVG gradient stop-opacity accepts percentages, clamps out-of-range values to 0-1, and combines with the color's alpha channel instead of replacing it. - thanks to @​xiehuanyi
  • SVG basic-shape coordinates and corner radii now accept absolute length units. - thanks to @​xiehuanyi
  • SVG transforms accept numbers written in scientific notation, such as scale(1e-3), instead of silently ignoring the transform. - thanks to @​xiehuanyi
  • SVG gradient stops honor inline style declarations of stop-opacity over the corresponding presentation attribute. - thanks to @​xiehuanyi
  • SVG length and angle attributes accept scientific notation, such as width="1e2pt", instead of raising ValueError. - thanks to @​xiehuanyi
  • Floating-point numbers in PDF arrays, dictionaries and destinations are written without exponent notation, preserving their values and allowing very small numeric zoom factors to be read correctly. - thanks to @​xiehuanyi
  • SVG byte strings and BytesIO inputs accept a UTF-8 BOM and XML whitespace after <svg or <?xml, instead of being sent to the raster image loader. - thanks to @​xiehuanyi
  • SVG import: a <polygon> or <polyline> whose points has an error (an invalid coordinate or an odd number of them) is drawn up to the last complete point before it, and one with empty points draws nothing, as the SVG specification says, instead of raising IndexError - thanks to @​RavSinghChandan
  • FPDF.write_html() ignores an unsupported align value on <td>, <th> and <tr>, such as middle, like it already does for <p>, instead of raising ValueError - thanks to @​RavSinghChandan
  • FPDF.regular_polygon() raises ValueError: 'numSides' parameter must be equal or greater than 1 for numSides below 1, instead of silently writing a path with no points (a bare h S, which closes a path that was never started) - thanks to @​RavSinghChandan
  • Bulleted text-column paragraphs now honor their top margins, indented paragraphs retain the column's right boundary, and HTML list items honor their TextStyle.t_margin - based on [PR #1218](py-pdf/fpdf2#1218) - thanks to @​andersonhc and @​gmischler
  • FPDF.text_columns() raises a clear ValueError for ncols below 1, like insert_toc_placeholder() does for pages, instead of a ZeroDivisionError or an unrelated Not enough horizontal space error when rendering - thanks to @​RavSinghChandan
  • FPDF() and FPDF.add_page() raise FPDFPageFormatException: Width and height must be positive numbers for a page format whose width or height is zero or negative, such as (0, 0), instead of writing a page with an empty or inverted /MediaBox - thanks to @​RavSinghChandan
  • FPDF.write_html() now supports CSS length units (px, pt) and surrounding whitespace in dimension attributes for <table>, <td>, <th>, <hr>, and <img> elements without raising ValueError - thanks to @​agustin18
  • FPDF.write_html() reads a CSS font-size on <font> with its unit, like browsers, as in style="font-size: 14pt" or "12px", instead of silently ignoring it; a number without a unit is still in points - thanks to @​RavSinghChandan
  • FPDF.write_html() supports <ul type="square">, the third standard HTML bullet type, instead of raising NotImplementedError: Unicode fonts use ▪ and core fonts fall back to the bullet - thanks to @​RavSinghChandan
  • FPDF.write_html() accepts the <ul type> keywords in any case, like browsers: <ul type="CIRCLE"> and <ul type="Square"> no longer raise NotImplementedError - thanks to @​RavSinghChandan
  • FPDF.write_html() supports <ul type="none">, rendering the list items without a marker like browsers do, instead of raising NotImplementedError - thanks to @​RavSinghChandan
  • FPDF.write_html() keeps the default bullet for an empty or unknown <ul type>, such as type="" or a misspelled type="disk", like browsers and like <ol> already does, instead of raising NotImplementedError - thanks to @​RavSinghChandan
  • SVG import: color keywords are case-insensitive (fill="RED"), and fill / stroke accept transparent, painting nothing like none, instead of raising ValueError - thanks to @​RavSinghChandan

... (truncated)

Commits
  • c6e7fe0 release fpdf2 2.9.0 (#2092)
  • a8a8035 set_auto_page_break: raise a clear error for a negative margin (#2084)
  • 26133f1 enable endesive 3 on ubuntu26 (#2087)
  • efbe4e1 set_stretching: raise a clear error for a stretching that is not positive (#2...
  • d2da0f0 add otreci4sgelt0nas as a contributor for code (#2086)
  • a418564 feat: Add Unicode font detection and enhanced error handling (#1563)
  • 728b00a ink_annotation: raise a clear error for empty coords (#2073)
  • 69c8742 set_display_mode: raise a clear error for a negative or non-numeric zoom (#2079)
  • 869d810 table: raise a ValueError for an unknown borders_layout (#2078)
  • 3992f86 write_html: ignore an invalid CSS color on a heading, like browsers (#2075)
  • Additional commits viewable in compare view

Updates pillow from 12.3.0 to 13.0.0

Release notes

Sourced from pillow's releases.

13.0.0

https://pillow.readthedocs.io/en/stable/releasenotes/13.0.0.html

Removals

Deprecations

Documentation

Dependencies

... (truncated)

Commits
  • 293218a 13.0.0 version bump
  • 262e8e4 Update release notes for Pillow 13.0.0 (#10223)
  • af56ace Validate TIFF tag values against libtiff's own field definition before TIFFSe...
  • 570df03 Validate TIFF tag values against libtiff's own field definition before TIFFSe...
  • 53318b5 Take libtiff scanline geometry tags from the image, not tiffinfo/exif (#10226)
  • 0a87417 Bound retained TIFF tag data by stream size (#10225)
  • 11582e5 Fix heap buffer overflow in _tiffWriteProc when saving TIFF to BytesIO (#10224)
  • 8501adc Fix test
  • ec5f1cb Take libtiff scanline geometry tags from the image, not tiffinfo/exif
  • 4b63dff Share TIFF tag data budget across frames
  • Additional commits viewable in compare view

Updates pypdf from 6.19.0 to 6.21.4

Release notes

Sourced from pypdf's releases.

Version 6.21.4, 2026-10-28

What's new

Security (SEC)

Documentation (DOC)

Full Changelog

Version 6.21.3, 2026-10-27

What's new

Security (SEC)

Performance Improvements (PI)

Bug Fixes (BUG)

Documentation (DOC)

Developer Experience (DEV)

Maintenance (MAINT)

  • Revert: Reject unsupported key lengths in the /Encrypt dictionary by @​stefan6419846

Full Changelog

Version 6.21.2, 2026-10-21

What's new

Security (SEC)

Bug Fixes (BUG)

... (truncated)

Changelog

Sourced from pypdf's changelog.

Version 6.21.4, 2026-10-28

Security (SEC)

  • Limit the number of copied page attributes during flattening (#4290)
  • Detect EOF when reading standard xref table trailer (#4289)
  • Fix loop detection when cloning DictionaryObject (#4288)

Documentation (DOC)

  • Exclude performance issues from security reports (#4280)

Full Changelog

Version 6.21.3, 2026-10-27

Security (SEC)

  • Use the validated page count after decrypting a document (#4270)
  • Limit total number of cross-reference stream entries (#4269)
  • Avoid excessive error messages (#4265)

Performance Improvements (PI)

  • Read flat page label number trees once for all pages (#4251)
  • Collect the named destinations once when resolving links (#4249)
  • Avoid scanning all objects in get_outline_root (#4245)

Bug Fixes (BUG)

  • Resolve indirect widths in CID font /W arrays (#4267)

Documentation (DOC)

  • Block incremental writes of encrypted documents (#4246)

Developer Experience (DEV)

  • Update to PyPy 3.12 and pinned requirements (#4244)

Maintenance (MAINT)

  • Revert: Reject unsupported key lengths in the /Encrypt dictionary

Full Changelog

Version 6.21.2, 2026-10-21

Security (SEC)

  • Avoid repeated full file loads (#4240)
  • Limit size of standard xref table (#4239)

Bug Fixes (BUG)

  • Decode UniGB-UTF16 CMaps as UTF-16BE (#4231)
  • Keep 8-bit DeviceRGB image mode (#4230)
  • Preserve all annotation quadrilaterals when merging pages (#4223)

Robustness (ROB)

... (truncated)

Commits
  • b2c3fa2 REL: 6.21.4
  • ea4ac66 SEC: Limit the number of copied page attributes during flattening (#4290)
  • 06593f9 SEC: Detect EOF when reading standard xref table trailer (#4289)
  • f176db1 SEC: Fix loop detection when cloning DictionaryObject (#4288)
  • c7d391c PI: Speed up transformation matrix handling for layout mode text extraction (...
  • b330dcd DEV: Bump actions/setup-python from 7.0.0 to 7.1.0 (#4278)
  • 8901534 DOC: Exclude performance issues from security reports (#4280)
  • 70eab9b PI: Speed up parse_bfchar (#4273)
  • 4ef744f ROB: Skip an embedded file specification that is not a dictionary (#4256)
  • 945216f ROB: Keep the text state when a text state operator has no operand in layout ...
  • Additional commits viewable in compare view

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: -c now 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 unhandled FileNotFoundError.

  • #8593: The indirect, ids and scope arguments of Metafunc.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 in indirect and failed with indirect fixture '(1, 2)' doesn't exist; such mistakes now fail with an understandable TypeError. 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_plugins or PYTEST_PLUGINS -- exits with pytest.ExitCode USAGE_ERROR (4), like a conftest.py that fails to import;
    • a plugin that is found but raises while importing -- including a broken pytest11 entry point or a missing plugin dependency -- exits with pytest.ExitCode INTERNAL_ERROR (3), with the traceback preserved.

    pytest.main now returns these codes instead of raising ImportError. Also fixed an IndexError from pytest's own internals when the plugin raised an exception with no arguments.

Deprecations (removal in next major release)

  • #14742: The private _pytest.python.CallSpec2 name has been renamed to CallSpec. The old CallSpec2 alias 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, and session) defined as instance methods are now deprecated.

    They suffer from the same issue the original deprecation only fixed for class-scoped fixtures, see 10819 and 14011.

  • #14808: Passing a non-string value to a string-typed ini option now emits a pytest.PytestRemovedIn10Warning. This affects [tool.pytest.ini_options] in pyproject.toml. In pytest 10 this will raise a TypeError, matching the behavior of the corresponding TOML config path.

  • #7323: Passing bytes to TerminalReporter.write_line() is now deprecated, pass a str instead.

New features

  • #14743: Full diff: now contains a legend explaining the + & - symbols in diff output.
  • #2781: When strict_markers is enabled, marker names used in -m expressions are now validated against registered markers.
  • #6881: Added the parametrize_long_str_id_strategy configuration option to control how long str/bytes parameter values are handled in auto-generated test IDs. Explicit IDs set via ids=[...] or pytest.param(..., id=...) are not affected. Available strategies: short (default, values over 100 chars fall back to argname+index), sha256 (SHA-256 hex digest), legacy (keep full value), and disallow (error requesting explicit IDs).

Improvements in existing functionality

  • #10745: A RecursionError whose 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-trace to see every frame.

... (truncated)

Commits
  • ae1d0ff Prepare release version 9.2.0
  • 143ce31 pre-commit: exclude codespell on generated release announcements
  • 532dc5f tox: add attrs dependency to regen, needed in reportingdemo.rst
  • a7b2446 Merge pull request #15245 from pytest-dev/claude/project-thread-9jcf91
  • 679d09c [pre-commit.ci] pre-commit autoupdate (#15266)
  • 41d12cd docs: clarify typing for yield fixtures
  • b9022ba Merge pull request #15182 from 1871698/docs/improve-getting-started-description
  • 16f87a7 docs: improve getting-started.rst test execution description
  • 082ed70 Merge pull request #15255 from pytest-dev/claude/project-thread-eoi3d6
  • ae37a01 Merge pull request #15227 from pytest-dev/claude/project-thread-4etye4
  • Additional commits viewable in compare view

Updates ruff from 0.16.9 to 0.17.3

Release notes

Sourced from ruff's releases.

0.17.3

Release Notes

Released on 2026-10-26.

Preview features

  • [suspicious] Add shared-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 for httpx (S113) (#27936)

Contributors

Install ruff 0.17.3

Install prebuilt binaries via shell script

Description has been truncated

Bumps the python group with 5 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [fpdf2](https://github.com/py-pdf/fpdf2) | `2.8.8` | `2.9.0` |
| [pillow](https://github.com/python-pillow/Pillow) | `12.3.0` | `13.0.0` |
| [pypdf](https://github.com/py-pdf/pypdf) | `6.19.0` | `6.21.4` |
| [pytest](https://github.com/pytest-dev/pytest) | `9.1.1` | `9.2.0` |
| [ruff](https://github.com/astral-sh/ruff) | `0.16.9` | `0.17.3` |



Updates `fpdf2` from 2.8.8 to 2.9.0
- [Release notes](https://github.com/py-pdf/fpdf2/releases)
- [Changelog](https://github.com/py-pdf/fpdf2/blob/master/CHANGELOG.md)
- [Commits](py-pdf/fpdf2@2.8.8...2.9.0)

Updates `pillow` from 12.3.0 to 13.0.0
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](python-pillow/Pillow@12.3.0...13.0.0)

Updates `pypdf` from 6.19.0 to 6.21.4
- [Release notes](https://github.com/py-pdf/pypdf/releases)
- [Changelog](https://github.com/py-pdf/pypdf/blob/main/CHANGELOG.md)
- [Commits](py-pdf/pypdf@6.19.0...6.21.4)

Updates `pytest` from 9.1.1 to 9.2.0
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](pytest-dev/pytest@9.1.1...9.2.0)

Updates `ruff` from 0.16.9 to 0.17.3
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
- [Commits](astral-sh/ruff@0.16.9...0.17.3)

---
updated-dependencies:
- dependency-name: fpdf2
  dependency-version: 2.9.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python
- dependency-name: pillow
  dependency-version: 13.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: python
- dependency-name: pypdf
  dependency-version: 6.21.4
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: python
- dependency-name: pytest
  dependency-version: 9.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: python
- dependency-name: ruff
  dependency-version: 0.17.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: python
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file python:uv Pull requests that update python:uv code labels Nov 2, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file python:uv Pull requests that update python:uv code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants