Skip to content

Conversation

@renovate
Copy link
Contributor

@renovate renovate bot commented Nov 18, 2024

This PR contains the following updates:

Package Type Update Change Age Adoption Passing Confidence
pyo3 dependencies minor 0.22.0 -> 0.23.0 age adoption passing confidence
ruff (source, changelog) project.optional-dependencies minor ==0.7.3 -> ==0.8.2 age adoption passing confidence

Release Notes

pyo3/pyo3 (pyo3)

v0.23.3

Compare Source

Packaging
  • Bump optional python3-dll-a dependency to 0.2.11. #​4749
Fixed
  • Fix unresolved symbol link failures on Windows when compiling for Python 3.13t with abi3 features enabled. #​4733
  • Fix unresolved symbol link failures on Windows when compiling for Python 3.13t using the generate-import-lib feature. #​4749
  • Fix compile-time regression in PyO3 0.23.0 where changing PYO3_CONFIG_FILE would not reconfigure PyO3 for the new interpreter. #​4758

v0.23.2

Compare Source

Added
Fixed
  • Fix compile failures when building for free-threaded Python when the abi3 or abi3-pyxx features are enabled. #​4719
  • Fix ambiguous_associated_items lint error in #[pyclass] and #[derive(IntoPyObject)] macros. #​4725

v0.23.1

Compare Source

Re-release of 0.23.0 with fixes to docs.rs build.

v0.23.0

Compare Source

Packaging
  • Drop support for PyPy 3.7 and 3.8. #​4582
  • Extend range of supported versions of hashbrown optional dependency to include version 0.15. #​4604
  • Bump minimum version of eyre optional dependency to 0.6.8. #​4617
  • Bump minimum version of hashbrown optional dependency to 0.14.5. #​4617
  • Bump minimum version of indexmap optional dependency to 2.5.0. #​4617
  • Bump minimum version of num-complex optional dependency to 0.4.6. #​4617
  • Bump minimum version of chrono-tz optional dependency to 0.10. #​4617
  • Support free-threaded Python 3.13t. #​4588
Added
  • Add IntoPyObject (fallible) conversion trait to convert from Rust to Python values. #​4060
  • Add #[pyclass(str="<format string>")] option to generate __str__ based on a Display implementation or format string. #​4233
  • Implement PartialEq for Bound<'py, PyInt> with u8, u16, u32, u64, u128, usize, i8, i16, i32, i64, i128 and isize. #​4317
  • Implement PartialEq<f64> and PartialEq<f32> for Bound<'py, PyFloat>. #​4348
  • Add as_super and into_super methods for Bound<T: PyClass>. #​4351
  • Add FFI definitions PyCFunctionFast and PyCFunctionFastWithKeywords #​4415
  • Add FFI definitions for PyMutex on Python 3.13 and newer. #​4421
  • Add PyDict::locked_for_each to iterate efficiently on freethreaded Python. #​4439
  • Add FFI definitions PyObject_GetOptionalAttr, PyObject_GetOptionalAttrString, PyObject_HasAttrWithError, PyObject_HasAttrStringWithError, Py_CONSTANT_* constants, Py_GetConstant, Py_GetConstantBorrowed, and PyType_GetModuleByDef on Python 3.13 and newer. #​4447
  • Add FFI definitions for the Python critical section API available on Python 3.13 and newer. #​4477
  • Add derive macro for IntoPyObject. #​4495
  • Add Borrowed::as_ptr. #​4520
  • Add FFI definition for PyImport_AddModuleRef. #​4529
  • Add PyAnyMethods::try_iter. #​4553
  • Add pyo3::sync::with_critical_section, a wrapper around the Python Critical Section API added in Python 3.13. #​4587
  • Add #[pymodule(gil_used = false)] option to declare that a module supports the free-threaded build. #​4588
  • Add PyModule::gil_used method to declare that a module supports the free-threaded build. #​4588
  • Add FFI definition PyDateTime_CAPSULE_NAME. #​4634
  • Add PyMappingProxy type to represent the mappingproxy Python class. #​4644
  • Add FFI definitions PyList_Extend and PyList_Clear. #​4667
  • Add derive macro for IntoPyObjectRef. #​4674
  • Add pyo3::sync::OnceExt and pyo3::sync::OnceLockExt traits. #​4676
Changed
  • Prefer IntoPyObject over IntoPy<Py<PyAny>>> for #[pyfunction] and #[pymethods] return types. #​4060
  • Report multiple errors from #[pyclass] and #[pyo3(..)] attributes. #​4243
  • Nested declarative #[pymodule] are automatically treated as submodules (no PyInit_ entrypoint is created). #​4308
  • Deprecate PyAnyMethods::is_ellipsis (Py::is_ellipsis was deprecated in PyO3 0.20). #​4322
  • Deprecate PyLong in favor of PyInt. #​4347
  • Rename IntoPyDict::into_py_dict_bound to IntoPyDict::into_py_dict. #​4388
  • PyModule::from_code now expects &CStr as arguments instead of &str. #​4404
  • Use "fastcall" Python calling convention for #[pyfunction]s when compiling on abi3 for Python 3.10 and up. #​4415
  • Remove Copy and Clone from PyObject struct FFI definition. #​4434
  • Python::eval and Python::run now take a &CStr instead of &str. #​4435
  • Deprecate IPowModulo, PyClassAttributeDef, PyGetterDef, PyMethodDef, PyMethodDefType, and PySetterDef from PyO3's public API. #​4441
  • IntoPyObject impls for Vec<u8>, &[u8], [u8; N], Cow<[u8]> and SmallVec<[u8; N]> now convert into Python bytes rather than a list of integers. #​4442
  • Emit a compile-time error when attempting to subclass a class that doesn't allow subclassing. #​4453
  • IntoPyDict::into_py_dict is now fallible due to IntoPyObject migration. #​4493
  • The abi3 feature will now override config files provided via PYO3_BUILD_CONFIG. #​4497
  • Disable the GILProtected struct on free-threaded Python. #​4504
  • Updated FFI definitions for functions and struct fields that have been deprecated or removed from CPython. #​4534
  • Disable PyListMethods::get_item_unchecked on free-threaded Python. #​4539
  • Add GILOnceCell::import. #​4542
  • Deprecate PyAnyMethods::iter in favour of PyAnyMethods::try_iter. #​4553
  • The #[pyclass] macro now requires a types to be Sync. (Except for #[pyclass(unsendable)] types). #​4566
  • PyList::new and PyTuple::new are now fallible due to IntoPyObject migration. #​4580
  • PyErr::matches is now fallible due to IntoPyObject migration. #​4595
  • Deprecate ToPyObject in favour of IntoPyObject #​4595
  • Deprecate PyWeakrefMethods::get_option. #​4597
  • Seal PyWeakrefMethods trait. #​4598
  • Remove PyNativeTypeInitializer and PyObjectInit from the PyO3 public API. #​4611
  • Deprecate IntoPy in favor of IntoPyObject #​4618
  • Eagerly normalize exceptions in PyErr::take() and PyErr::fetch() on Python 3.11 and older. #​4655
  • Move IntoPy::type_output to IntoPyObject::type_output. #​4657
  • Change return type of PyMapping::keys, PyMapping::values and PyMapping::items to Bound<'py, PyList> instead of Bound<'py, PySequence>. #​4661
  • Complex enums now allow field types that either implement IntoPyObject by reference or by value together with Clone. This makes Py<T> available as field type. #​4694
Removed
  • Remove all functionality deprecated in PyO3 0.20. #​4322
  • Remove all functionality deprecated in PyO3 0.21. #​4323
  • Deprecate PyUnicode in favour of PyString. #​4370
  • Remove deprecated gil-refs feature. #​4378
  • Remove private FFI definitions _Py_IMMORTAL_REFCNT, _Py_IsImmortal, _Py_TPFLAGS_STATIC_BUILTIN, _Py_Dealloc, _Py_IncRef, _Py_DecRef. #​4447
  • Remove private FFI definitions _Py_c_sum, _Py_c_diff, _Py_c_neg, _Py_c_prod, _Py_c_quot, _Py_c_pow, _Py_c_abs. #​4521
  • Remove _borrowed methods of PyWeakRef and PyWeakRefProxy. #​4528
  • Removed private FFI definition _PyErr_ChainExceptions. #​4534
Fixed
  • Fix invalid library search path lib_dir when cross-compiling. #​4389
  • Fix FFI definition Py_Is for PyPy on 3.10 to call the function defined by PyPy. #​4447
  • Fix compile failure when using #[cfg] attributes for simple enum variants. #​4509
  • Fix compiler warning for non_snake_case method names inside #[pymethods] generated code. #​4567
  • Fix compile error with #[derive(FromPyObject)] generic struct with trait bounds. #​4645
  • Fix compile error for #[classmethod] and #[staticmethod] on magic methods. #​4654
  • Fix compile warning for unsafe_op_in_unsafe_fn in generated macro code. #​4674
  • Fix incorrect deprecation warning for #[pyclass] enums with custom __eq__ implementation. #​4692
  • Fix non_upper_case_globals lint firing for generated __match_args__ on complex enums. #​4705
astral-sh/ruff (ruff)

v0.8.2

Compare Source

Preview features
  • [airflow] Avoid deprecated values (AIR302) (#​14582)
  • [airflow] Extend removed names for AIR302 (#​14734)
  • [ruff] Extend unnecessary-regular-expression to non-literal strings (RUF055) (#​14679)
  • [ruff] Implement used-dummy-variable (RUF052) (#​14611)
  • [ruff] Implement unnecessary-cast-to-int (RUF046) (#​14697)
Rule changes
  • [airflow] Check AIR001 from builtin or providers operators module (#​14631)
  • [flake8-pytest-style] Remove @ in pytest.mark.parametrize rule messages (#​14770)
  • [pandas-vet] Skip rules if the panda module hasn't been seen (#​14671)
  • [pylint] Fix false negatives for ascii and sorted in len-as-condition (PLC1802) (#​14692)
  • [refurb] Guard hashlib imports and mark hashlib-digest-hex fix as safe (FURB181) (#​14694)
Configuration
  • [flake8-import-conventions] Improve syntax check for aliases supplied in configuration for unconventional-import-alias (ICN001) (#​14745)
Bug fixes
  • Revert: [pyflakes] Avoid false positives in @no_type_check contexts (F821, F722) (#​14615) (#​14726)
  • [pep8-naming] Avoid false positive for class Bar(type(foo)) (N804) (#​14683)
  • [pycodestyle] Handle f-strings properly for invalid-escape-sequence (W605) (#​14748)
  • [pylint] Ignore @overload in PLR0904 (#​14730)
  • [refurb] Handle non-finite decimals in verbose-decimal-constructor (FURB157) (#​14596)
  • [ruff] Avoid emitting assignment-in-assert when all references to the assigned variable are themselves inside asserts (RUF018) (#​14661)
Documentation
  • Improve docs for flake8-use-pathlib rules (#​14741)
  • Improve error messages and docs for flake8-comprehensions rules (#​14729)
  • [flake8-type-checking] Expands TC006 docs to better explain itself (#​14749)

v0.8.1

Compare Source

Preview features
  • Formatter: Avoid invalid syntax for format-spec with quotes for all Python versions (#​14625)
  • Formatter: Consider quotes inside format-specs when choosing the quotes for an f-string (#​14493)
  • Formatter: Do not consider f-strings with escaped newlines as multiline (#​14624)
  • Formatter: Fix f-string formatting in assignment statement (#​14454)
  • Formatter: Fix unnecessary space around power operator (**) in overlong f-string expressions (#​14489)
  • [airflow] Avoid implicit schedule argument to DAG and @dag (AIR301) (#​14581)
  • [flake8-builtins] Exempt private built-in modules (A005) (#​14505)
  • [flake8-pytest-style] Fix pytest.mark.parametrize rules to check calls instead of decorators (#​14515)
  • [flake8-type-checking] Implement runtime-cast-value (TC006) (#​14511)
  • [flake8-type-checking] Implement unquoted-type-alias (TC007) and quoted-type-alias (TC008) (#​12927)
  • [flake8-use-pathlib] Recommend Path.iterdir() over os.listdir() (PTH208) (#​14509)
  • [pylint] Extend invalid-envvar-default to detect os.environ.get (PLW1508) (#​14512)
  • [pylint] Implement len-test (PLC1802) (#​14309)
  • [refurb] Fix bug where methods defined using lambdas were flagged by FURB118 (#​14639)
  • [ruff] Auto-add r prefix when string has no backslashes for unraw-re-pattern (RUF039) (#​14536)
  • [ruff] Implement invalid-assert-message-literal-argument (RUF040) (#​14488)
  • [ruff] Implement unnecessary-nested-literal (RUF041) (#​14323)
  • [ruff] Implement unnecessary-regular-expression (RUF055) (#​14659)
Rule changes
  • Ignore more rules for stub files (#​14541)
  • [pep8-naming] Eliminate false positives for single-letter names (N811, N814) (#​14584)
  • [pyflakes] Avoid false positives in @no_type_check contexts (F821, F722) (#​14615)
  • [ruff] Detect redirected-noqa in file-level comments (RUF101) (#​14635)
  • [ruff] Mark fixes for unsorted-dunder-all and unsorted-dunder-slots as unsafe when there are complex comments in the sequence (RUF022, RUF023) (#​14560)
Bug fixes
  • Avoid fixing code to None | None for redundant-none-literal (PYI061) and never-union (RUF020) (#​14583, #​14589)
  • [flake8-bugbear] Fix mutable-contextvar-default to resolve annotated function calls properly (B039) (#​14532)
  • [flake8-pyi, ruff] Fix traversal of nested literals and unions (PYI016, PYI051, PYI055, PYI062, RUF041) (#​14641)
  • [flake8-pyi] Avoid rewriting invalid type expressions in unnecessary-type-union (PYI055) (#​14660)
  • [flake8-type-checking] Avoid syntax errors and type checking problem for quoted annotations autofix (TC003, TC006) (#​14634)
  • [pylint] Do not wrap function calls in parentheses in the fix for unnecessary-dunder-call (PLC2801) (#​14601)
  • [ruff] Handle attrs's auto_attribs correctly (RUF009) (#​14520)

v0.8.0

Compare Source

Check out the blog post for a migration guide and overview of the changes!

Breaking changes

See also, the "Remapped rules" section which may result in disabled rules.

  • Default to Python 3.9

    Ruff now defaults to Python 3.9 instead of 3.8 if no explicit Python version is configured using ruff.target-version or project.requires-python (#​13896)

  • Changed location of pydoclint diagnostics

    pydoclint diagnostics now point to the first-line of the problematic docstring. Previously, this was not the case.

    If you've opted into these preview rules but have them suppressed using
    noqa comments in
    some places, this change may mean that you need to move the noqa suppression
    comments. Most users should be unaffected by this change.

  • Use XDG (i.e. ~/.local/bin) instead of the Cargo home directory in the standalone installer

    Previously, Ruff's installer used $CARGO_HOME or ~/.cargo/bin for its target install directory. Now, Ruff will be installed into $XDG_BIN_HOME, $XDG_DATA_HOME/../bin, or ~/.local/bin (in that order).

    This change is only relevant to users of the standalone Ruff installer (using the shell or PowerShell script). If you installed Ruff using uv or pip, you should be unaffected.

  • Changes to the line width calculation

    Ruff now uses a new version of the unicode-width Rust crate to calculate the line width. In very rare cases, this may lead to lines containing Unicode characters being reformatted, or being considered too long when they were not before (E501).

Removed Rules

The following deprecated rules have been removed:

Remapped rules

The following rules have been remapped to new rule codes:

Stabilization

The following rules have been stabilized and are no longer in preview:

The following behaviors have been stabilized:

The following fixes have been stabilized:

Preview features
  • [flake8-datetimez] Exempt min.time() and max.time() (DTZ901) (#​14394)
  • [flake8-pie] Mark fix as unsafe if the following statement is a string literal (PIE790) (#​14393)
  • [flake8-pyi] New rule redundant-none-literal (PYI061) (#​14316)
  • [flake8-pyi] Add autofix for redundant-numeric-union (PYI041) (#​14273)
  • [ruff] New rule map-int-version-parsing (RUF048) (#​14373)
  • [ruff] New rule redundant-bool-literal (RUF038) (#​14319)
  • [ruff] New rule unraw-re-pattern (RUF039) (#​14446)
  • [pycodestyle] Exempt pytest.importorskip() calls (E402) (#​14474)
  • [pylint] Autofix suggests using sets when possible (PLR1714) (#​14372)
Rule changes
  • invalid-pyproject-toml (RUF200): Updated to reflect the provisionally accepted PEP 639.
  • [flake8-pyi] Avoid panic in unfixable case (PYI041) (#​14402)
  • [flake8-type-checking] Correctly handle quotes in subscript expression when generating an autofix (#​14371)
  • [pylint] Suggest correct autofix for __contains__ (PLC2801) (#​14424)
Configuration
  • Ruff now emits a warning instead of an error when a configuration ignores a rule that has been removed (#​14435)
  • Ruff now validates that lint.flake8-import-conventions.aliases only uses valid module names and aliases (#​14477)

v0.7.4

Compare Source

Preview features
  • [flake8-datetimez] Detect usages of datetime.max/datetime.min (DTZ901) (#​14288)
  • [flake8-logging] Implement root-logger-calls (LOG015) (#​14302)
  • [flake8-no-pep420] Detect empty implicit namespace packages (INP001) (#​14236)
  • [flake8-pyi] Add "replace with Self" fix (PYI019) (#​14238)
  • [perflint] Implement quick-fix for manual-list-comprehension (PERF401) (#​13919)
  • [pylint] Implement shallow-copy-environ (W1507) (#​14241)
  • [ruff] Implement none-not-at-end-of-union (RUF036) (#​14314)
  • [ruff] Implementation unsafe-markup-call from flake8-markupsafe plugin (RUF035) (#​14224)
  • [ruff] Report problems for attrs dataclasses (RUF008, RUF009) (#​14327)
Rule changes
  • [flake8-boolean-trap] Exclude dunder methods that define operators (FBT001) (#​14203)
  • [flake8-pyi] Add "replace with Self" fix (PYI034) (#​14217)
  • [flake8-pyi] Always autofix duplicate-union-members (PYI016) (#​14270)
  • [flake8-pyi] Improve autofix for nested and mixed type unions for unnecessary-type-union (PYI055) (#​14272)
  • [flake8-pyi] Mark fix as unsafe when type annotation contains comments for duplicate-literal-member (PYI062) (#​14268)
Server
  • Use the current working directory to resolve settings from ruff.configuration (#​14352)
Bug fixes
  • Avoid conflicts between PLC014 (useless-import-alias) and I002 (missing-required-import) by considering lint.isort.required-imports for PLC014 (#​14287)
  • [flake8-type-checking] Skip quoting annotation if it becomes invalid syntax (TCH001)
  • [flake8-pyi] Avoid using typing.Self in stub files pre-Python 3.11 (PYI034) (#​14230)
  • [flake8-pytest-style] Flag pytest.raises call with keyword argument expected_exception (PT011) (#​14298)
  • [flake8-simplify] Infer "unknown" truthiness for literal iterables whose items are all unpacks (SIM222) (#​14263)
  • [flake8-type-checking] Fix false positives for typing.Annotated (TCH001) (#​14311)
  • [pylint] Allow await at the top-level scope of a notebook (PLE1142) (#​14225)
  • [pylint] Fix miscellaneous issues in await-outside-async detection (PLE1142) (#​14218)
  • [pyupgrade] Avoid applying PEP 646 rewrites in invalid contexts (UP044) (#​14234)
  • [pyupgrade] Detect permutations in redundant open modes (UP015) (#​14255)
  • [refurb] Avoid triggering hardcoded-string-charset for reordered sets (FURB156) (#​14233)
  • [refurb] Further special cases added to verbose-decimal-constructor (FURB157) (#​14216)
  • [refurb] Use UserString instead of non-existent UserStr (FURB189) (#​14209)
  • [ruff] Avoid treating lowercase letters as # noqa codes (RUF100) (#​14229)
  • [ruff] Do not report when Optional has no type arguments (RUF013) (#​14181)
Documentation
  • Add "Notebook behavior" section for F704, PLE1142 (#​14266)
  • Document comment policy around fix safety (#​14300)

Configuration

📅 Schedule: Branch creation - "* 0-3 * * 1" (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate bot force-pushed the renovate/dependencies-(non-major) branch 2 times, most recently from a90b104 to 3341a78 Compare November 29, 2024 06:56
@renovate renovate bot force-pushed the renovate/dependencies-(non-major) branch from 3341a78 to cbc9682 Compare December 5, 2024 15:49
@renovate renovate bot merged commit be001e8 into main Dec 5, 2024
44 checks passed
@renovate renovate bot deleted the renovate/dependencies-(non-major) branch December 5, 2024 20:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant