chore(deps): update python dependencies
This MR contains the following updates:
Package | Type | Update | Change |
---|---|---|---|
pydantic (changelog) | dependencies | minor |
2.6.4 -> 2.7.1
|
ruff (source, changelog) | dev | minor |
^0.3.0 -> ^0.4.0
|
Release Notes
pydantic/pydantic (pydantic)
v2.7.1
What's Changed
Packaging
- Bump
pydantic-core
tov2.18.2
by @sydney-runkle in #9307
New Features
- Ftp and Websocket connection strings support by @CherrySuryp in #9205
Changes
- Use field description for RootModel schema description when there is
…
by @LouisGobert in #9214
Fixes
- Fix
validation_alias
behavior withmodel_construct
forAliasChoices
andAliasPath
by @sydney-runkle in #9223 - Revert
typing.Literal
and import it outside the TYPE_CHECKING block by @frost-nzcr4 in #9232 - Fix
Secret
serialization schema, applicable for unions by @sydney-runkle in #9240 - Fix
strict
application tofunction-after
withuse_enum_values
by @sydney-runkle in #9279 - Address case where
model_construct
on a class which definesmodel_post_init
fails withAttributeError
by @babygrimes in #9168 - Fix
model_json_schema
with config types by @NeevCohen in #9287 - Support multiple zeros as an
int
by @samuelcolvin in pydantic/pydantic-core#1269 - Fix validation of
int
s with leading unary plus by @cknv in pydantic/pydantic-core#1272 - Fix interaction between
extra != 'ignore'
andfrom_attributes=True
by @davidhewitt in pydantic/pydantic-core#1276 - Handle error from
Enum
'smissing
function asValidationError
by @sydney-runkle in pydantic/pydantic-core#1274 - Fix memory leak with
Iterable
validation by @davidhewitt in pydantic/pydantic-core#1271
New Contributors
- @zzstoatzz made their first contribution in #9219
- @frost-nzcr4 made their first contribution in #9232
- @CherrySuryp made their first contribution in #9205
- @vagenas made their first contribution in #9268
- @ollz272 made their first contribution in #9262
- @babygrimes made their first contribution in #9168
- @swelborn made their first contribution in #9296
- @kf-novi made their first contribution in #9236
- @lgeiger made their first contribution in #9288
v2.7.0
The code released in v2.7.0 is practically identical to that of v2.7.0b1.
What's Changed
Packaging
- Reorganize
pyproject.toml
sections by @Viicos in #8899 - Bump
pydantic-core
tov2.18.1
by @sydney-runkle in #9211 - Adopt
jiter
v0.2.0
by @samuelcolvin in pydantic/pydantic-core#1250
New Features
- Extract attribute docstrings from
FieldInfo.description
by @Viicos in #6563 - Add a
with_config
decorator to comply with typing spec by @Viicos in #8611 - Allow an optional separator splitting the value and unit of the result of
ByteSize.human_readable
by @jks15satoshi in #8706 - Add generic
Secret
base type by @conradogarciaberrotaran in #8519 - Make use of
Sphinx
inventories for cross references in docs by @Viicos in #8682 - Add environment variable to disable plugins by @geospackle in #8767
- Add support for
deprecated
fields by @Viicos in #8237 - Allow
field_serializer('*')
by @ornariece in #9001 - Handle a case when
model_config
is defined as a model property by @alexeyt101 in #9004 - Update
create_model()
to supporttyping.Annotated
as input by @wannieman98 in #8947 - Add
ClickhouseDsn
support by @solidguy7 in #9062 - Add support for
re.Pattern[str]
topattern
field by @jag-k in #9053 - Support for
serialize_as_any
runtime setting by @sydney-runkle in #8830 - Add support for
typing.Self
by @Youssefares in #9023 - Ability to pass
context
to serialization by @ornariece in #8965 - Add feedback widget to docs with flarelytics integration by @sydney-runkle in #9129
- Support for parsing partial JSON strings in Python by @samuelcolvin in pydantic/jiter#66
Finalized in v2.7.0, rather than v2.7.0b1:
- Add support for field level number to str coercion option by @NeevCohen in #9137
- Update
warnings
parameter for serialization utilities to allow raising a warning by @Lance-Drane in #9166
Changes
- Correct docs, logic for
model_construct
behavior withextra
by @sydney-runkle in #8807 - Improve error message for improper
RootModel
subclasses by @sydney-runkle in #8857 - Use
PEP570
syntax by @Viicos in #8940 - Add
enum
andtype
to the JSON schema for single item literals by @dmontagu in #8944 - Deprecate
update_json_schema
internal function by @sydney-runkle in #9125 - Serialize duration to hour minute second, instead of just seconds by @kakilangit in pydantic/speedate#50
- Trimming str before parsing to int and float by @hungtsetse in pydantic/pydantic-core#1203
Performance
-
enum
validator improvements by @samuelcolvin in #9045 - Move
enum
validation and serialization to Rust by @samuelcolvin in #9064 - Improve schema generation for nested dataclasses by @sydney-runkle in #9114
- Fast path for ASCII python string creation in JSON by @samuelcolvin in in pydantic/jiter#72
- SIMD integer and string JSON parsing on
aarch64
(Note: SIMD on x86 will be implemented in a future release) by @samuelcolvin in in pydantic/jiter#65 - Support JSON
Cow<str>
fromjiter
by @davidhewitt in pydantic/pydantic-core#1231 - MAJOR performance improvement: update to PyO3 0.21 final by @davidhewitt in pydantic/pydantic-core#1248
- cache Python strings by @samuelcolvin in pydantic/pydantic-core#1240
Fixes
- Fix strict parsing for some
Sequence
s by @sydney-runkle in #8614 - Add a check on the existence of
__qualname__
by @anci3ntr0ck in #8642 - Handle
__pydantic_extra__
annotation being a string or inherited by @alexmojaki in #8659 - Fix json validation for
NameEmail
by @Holi0317 in #8650 - Fix type-safety of attribute access in
BaseModel
by @bluenote10 in #8651 - Fix bug with
mypy
plugin andno_strict_optional = True
by @dmontagu in #8666 - Fix
ByteSize
errortype
change by @sydney-runkle in #8681 - Fix inheriting annotations in dataclasses by @sydney-runkle in #8679
- Fix regression in core schema generation for indirect definition references by @dmontagu in #8702
- Fix unsupported types bug with plain validator by @sydney-runkle in #8710
- Reverting problematic fix from 2.6 release, fixing schema building bug by @sydney-runkle in #8718
- fixes
__pydantic_config__
ignored for TypeDict by @13sin in #8734 - Fix test failures with
pytest v8.0.0
due topytest.warns()
starting to work insidepytest.raises()
by @mgorny in #8678 - Use
is_valid_field
from 1.x formypy
plugin by @DanielNoord in #8738 - Better-support
mypy
strict equality flag by @dmontagu in #8799 - model_json_schema export with Annotated types misses 'required' parameters by @LouisGobert in #8793
- Fix default inclusion in
FieldInfo.__repr_args__
by @sydney-runkle in #8801 - Fix resolution of forward refs in dataclass base classes that are not present in the subclass module namespace by @matsjoyce-refeyn in #8751
- Fix
BaseModel
type annotations to be resolvable bytyping.get_type_hints
by @devmonkey22 in #7680 - Fix: allow empty string aliases with
AliasGenerator
by @sydney-runkle in #8810 - Fix test along with
date
->datetime
timezone assumption fix by @sydney-runkle in #8823 - Fix deprecation warning with usage of
ast.Str
by @Viicos in #8837 - Add missing
deprecated
decorators by @Viicos in #8877 - Fix serialization of
NameEmail
if name includes an email address by @NeevCohen in #8860 - Add information about class in error message of schema generation by @Czaki in #8917
- Make
TypeAdapter
's typing compatible with special forms by @adriangb in #8923 - Fix issue with config behavior being baked into the ref schema for
enum
s by @dmontagu in #8920 - More helpful error re wrong
model_json_schema
usage by @sydney-runkle in #8928 - Fix nested discriminated union schema gen, pt 2 by @sydney-runkle in #8932
- Fix schema build for nested dataclasses / TypedDicts with discriminators by @sydney-runkle in #8950
- Remove unnecessary logic for definitions schema gen with discriminated unions by @sydney-runkle in #8951
- Fix handling of optionals in
mypy
plugin by @dmontagu in #9008 - Fix
PlainSerializer
usage with std type constructor by @sydney-runkle in #9031 - Remove unnecessary warning for config in plugin by @dmontagu in #9039
- Fix default value serializing by @NeevCohen in #9066
- Fix extra fields check in
Model.__getattr__()
by @NeevCohen in #9082 - Fix
ClassVar
forward ref inherited from parent class by @alexmojaki in #9097 - fix sequence like validator with strict
True
by @andresliszt in #8977 - Improve warning message when a field name shadows a field in a parent model by @chan-vince in #9105
- Do not warn about shadowed fields if they are not redefined in a child class by @chan-vince in #9111
- Fix discriminated union bug with unsubstituted type var by @sydney-runkle in #9124
- Support serialization of
deque
when passed toSequence[blah blah blah]
by @sydney-runkle in #9128 - Init private attributes from super-types in
model_post_init
by @Viicos in #9134 - fix
model_construct
withvalidation_alias
by @ornariece in #9144 - Ensure json-schema generator handles
Literal
null
types by @bruno-f-cruz in #9135 - Fixed in v2.7.0: Fix allow extra generic by @dmontagu in #9193
New Contributors
- @hungtsetse made their first contribution in #8546
- @StrawHatDrag0n made their first contribution in #8583
- @anci3ntr0ck made their first contribution in #8642
- @Holi0317 made their first contribution in #8650
- @bluenote10 made their first contribution in #8651
- @ADSteele916 made their first contribution in #8703
- @musicinmybrain made their first contribution in #8731
- @jks15satoshi made their first contribution in #8706
- @13sin made their first contribution in #8734
- @DanielNoord made their first contribution in #8738
- @conradogarciaberrotaran made their first contribution in #8519
- @chris-griffin made their first contribution in #8775
- @LouisGobert made their first contribution in #8793
- @matsjoyce-refeyn made their first contribution in #8751
- @devmonkey22 made their first contribution in #7680
- @adamency made their first contribution in #8847
- @MamfTheKramf made their first contribution in #8851
- @ornariece made their first contribution in #9001
- @alexeyt101 made their first contribution in #9004
- @wannieman98 made their first contribution in #8947
- @solidguy7 made their first contribution in #9062
- @kloczek made their first contribution in #9047
- @jag-k made their first contribution in #9053
- @priya-gitTest made their first contribution in #9088
- @Youssefares made their first contribution in #9023
- @chan-vince made their first contribution in #9105
- @bruno-f-cruz made their first contribution in #9135
- @Lance-Drane made their first contribution in #9166
astral-sh/ruff (ruff)
v0.4.1
Preview features
- [
pylint
] Implementinvalid-hash-returned
(PLE0309
) (#10961) - [
pylint
] Implementinvalid-index-returned
(PLE0305
) (#10962)
Bug fixes
- [
pylint
] AllowNoReturn
-like functions for__str__
,__len__
, etc. (PLE0307
) (#11017) - Parser: Use empty range when there's "gap" in token source (#11032)
- [
ruff
] Ignore stub functions inunused-async
(RUF029
) (#11026) - Parser: Expect indented case block instead of match stmt (#11033)
v0.4.0
A new, hand-written parser
Ruff's new parser is >2x faster, which translates to a 20-40% speedup for all linting and formatting invocations. There's a lot to say about this exciting change, so check out the blog post for more details!
See #10036 for implementation details.
A new language server in Rust
With this release, we also want to highlight our new language server. ruff server
is a Rust-powered language
server that comes built-in with Ruff. It can be used with any editor that supports the Language Server Protocol (LSP).
It uses a multi-threaded, lock-free architecture inspired by rust-analyzer
and it will open the door for a lot
of exciting features. It’s also faster than our previous Python-based language server
-- but you probably guessed that already.
ruff server
is only in alpha, but it has a lot of features that you can try out today:
- Lints Python files automatically and shows quick-fixes when available
- Formats Python files, with support for range formatting
- Comes with commands for quickly performing actions:
ruff.applyAutofix
,ruff.applyFormat
, andruff.applyOrganizeImports
- Supports
source.fixAll
andsource.organizeImports
source actions - Automatically reloads your project configuration when you change it
To setup ruff server
with your editor, refer to the README.md.
Preview features
- [
pycodestyle
] Do not triggerE3
rules ondef
s following a function/method with a dummy body (#10704) - [
pylint
] Implementinvalid-bytes-returned
(E0308
) (#10959) - [
pylint
] Implementinvalid-length-returned
(E0303
) (#10963) - [
pylint
] Implementself-cls-assignment
(W0642
) (#9267) - [
pylint
] Omit stubs frominvalid-bool
andinvalid-str-return-type
(#11008) - [
ruff
] New ruleunused-async
(RUF029
) to detect unneededasync
keywords on functions (#9966)
Rule changes
- [
flake8-bandit
] Allowurllib.request.urlopen
calls with staticRequest
argument (S310
) (#10964) - [
flake8-bugbear
] Treatraise NotImplemented
-only bodies as stub functions (B006
) (#10990) - [
flake8-slots
] Respect same-fileEnum
subclasses (SLOT000
) (#11006) - [
pylint
] Support inverted comparisons (PLR1730
) (#10920)
Linter
- Improve handling of builtin symbols in linter rules (#10919)
- Improve display of rules in
--show-settings
(#11003) - Improve inference capabilities of the
BuiltinTypeChecker
(#10976) - Resolve classes and functions relative to script name (#10965)
- Improve performance of
RuleTable::any_enabled
(#10971)
Server
This section is devoted to updates for our new language server, written in Rust.
- Enable ruff-specific source actions (#10916)
- Refreshes diagnostics for open files when file configuration is changed (#10988)
- Important errors are now shown as popups (#10951)
- Introduce settings for directly configuring the linter and formatter (#10984)
- Resolve configuration for each document individually (#10950)
- Write a setup guide for Neovim (#10987)
Configuration
- Add
RUFF_OUTPUT_FILE
environment variable support (#10992)
Bug fixes
- Avoid
non-augmented-assignment
for reversed, non-commutative operators (PLR6104
) (#10909) - Limit commutative non-augmented-assignments to primitive data types (
PLR6104
) (#10912) - Respect
per-file-ignores
forRUF100
on blanket# noqa
(#10908) - Consider
if
expression for parenthesized with items parsing (#11010) - Consider binary expr for parenthesized with items parsing (#11012)
- Reset
FOR_TARGET
context for all kinds of parentheses (#11009)
v0.3.7
Preview features
- [
flake8-bugbear
] Implementloop-iterator-mutation
(B909
) (#9578) - [
pylint
] Implement rule to prefer augmented assignment (PLR6104
) (#9932)
Bug fixes
- Avoid TOCTOU errors in cache initialization (#10884)
- [
pylint
] Recodenan-comparison
rule toW0177
(#10894) - [
pylint
] Reverse min-max logic inif-stmt-min-max
(#10890)
v0.3.6
Preview features
- [
pylint
] Implementbad-staticmethod-argument
(PLW0211
) (#10781) - [
pylint
] Implementif-stmt-min-max
(PLR1730
,PLR1731
) (#10002) - [
pyupgrade
] Replacestr,Enum
multiple inheritance withStrEnum
UP042
(#10713) - [
refurb
] Implementif-expr-instead-of-or-operator
(FURB110
) (#10687) - [
refurb
] Implementint-on-sliced-str
(FURB166
) (#10650) - [
refurb
] Implementwrite-whole-file
(FURB103
) (#10802) - [
refurb
] Supportitemgetter
inreimplemented-operator
(FURB118
) (#10526) - [
flake8_comprehensions
] Addsum
/min
/max
to unnecessary comprehension check (C419
) (#10759)
Rule changes
- [
pydocstyle
] Require capitalizing docstrings where the first sentence is a single word (D403
) (#10776) - [
pycodestyle
] Ignore annotated lambdas in class scopes (E731
) (#10720) - [
flake8-pyi
] Various improvements to PYI034 (#10807) - [
flake8-slots
] Flag subclasses of call-basedtyping.NamedTuple
s as well as subclasses ofcollections.namedtuple()
(SLOT002
) (#10808) - [
pyflakes
] Allow forward references in class bases in stub files (F821
) (#10779) - [
pygrep-hooks
] Improveblanket-noqa
error message (PGH004
) (#10851)
CLI
- Support
FORCE_COLOR
env var (#10839)
Configuration
- Support negated patterns in
[extend-]per-file-ignores
(#10852)
Bug fixes
- [
flake8-import-conventions
] Accept non-aliased (but correct) import inunconventional-import-alias
(ICN001
) (#10729) - [
flake8-quotes
] Add semantic model flag when inside f-string replacement field (#10766) - [
pep8-naming
] Recursively resolveTypeDicts
for N815 violations (#10719) - [
flake8-quotes
] RespectQ00*
ignores inflake8-quotes
rules (#10728) - [
flake8-simplify
] Show negated condition inneedless-bool
diagnostics (SIM103
) (#10854) - [
ruff
] Use within-scope shadowed bindings inasyncio-dangling-task
(RUF006
) (#10793) - [
flake8-pytest-style
] Fix single-tuple conversion inpytest-parametrize-values-wrong-type
(PT007
) (#10862) - [
flake8-return
] Ignore assignments to annotated variables inunnecessary-assign
(RET504
) (#10741) - [
refurb
] Do not allow any keyword arguments forread-whole-file
inrb
mode (FURB101
) (#10803) - [
pylint
] Don't recommend decorating staticmethods with@singledispatch
(PLE1519
,PLE1520
) (#10637) - [
pydocstyle
] Use section name range for all section-related docstring diagnostics (#10740) - Respect
# noqa
directives on__all__
openers (#10798)
Configuration
-
If you want to rebase/retry this MR, check this box
This MR has been generated by Renovate Bot.