503 Commits

Author SHA1 Message Date
florianfischer91 f55515820a Rename model methods (#4889)
* renaming .json -> .model_dump_json

* renaming .dict -> .model_dump

* renaming .__fields__ -> .model_fields

* renaming .schema -> .model_json_schema

* renaming .construct -> .model_construct

* renaming .parse_obj -> .model_validate

* make linters happy

* add changes md-file

Co-authored-by: Samuel Colvin <s@muelcolvin.com>
2023-01-05 11:30:44 +00:00
Arseny Boykov 8b7c568794 [1.10.x] Properly encode model and dataclass default for schema (#4781)
* Properly encode model and dataclass default for schema

* Wrap type annotation in quotes

* Fix compatibility

* Add changes file

* Remove unnecessary import

Co-authored-by: Hasan Ramezani <hasan.r67@gmail.com>

* Add a blank line back

* Reorder conditions

As per suggestion in https://github.com/pydantic/pydantic/pull/4781#discussion_r1034709528.

Co-authored-by: Hasan Ramezani <hasan.r67@gmail.com>
2022-11-29 13:14:29 +00:00
Samuel Colvin 182e182f4a Add Jina AI to sponsors (#4767)
* add Jina AI to sponsors

* add change description
2022-11-22 22:28:51 +00:00
Mòrian 5dd9b4f5ca Add postgresql+psycopg as allowed scheme for PostgreDsn (#4689) (#4690) 2022-10-31 10:37:57 +00:00
Samuel Colvin ee52496101 Email tweaks (#988)
* small tweaks to email validation

* more test examples

* change and better error messages

* remove duplicate tests

* linting

* tweak from @hramezani
2022-09-08 15:46:58 +00:00
Samuel Colvin bc74342b39 prepare for v1.10.2 2022-09-05 17:35:13 +01:00
Eric Jolibois f1e9883157 fix: dataclass wrapper was not always called (#4484) 2022-09-05 17:32:29 +01:00
Sveinung Gundersen 91bb8d4482 Basic fix of GenericModel cache to detect order of args in Union models [#4474] (#4482) 2022-09-05 15:51:20 +01:00
Samuel Colvin eccd85e4d0 prevent long strings as int inputs (#4480)
* prevent long strings as int inputs, fix #1477

* fix tests 🤦

* fix length in change file
2022-09-05 12:35:08 +01:00
Samuel Colvin a4367c1c58 Revert percent encoding in URLs. (#4470)
* Revert "Fix `AnyUrl.build` doesn't do percent encoding (#3061) (#4224)"

This reverts commit e34ff9255f.

* change and warning
2022-09-05 11:02:43 +01:00
Samuel Colvin 02cf7f5d7b fix mypy with default_factory=list etc. (#4471)
* fix mypy with default_factory=list etc.

* fix tests

* add error case
2022-09-05 11:01:43 +01:00
Shantanu 5a2ddec9b2 Use tomllib on Python 3.11 (#4476)
* Use tomllib on Python 3.11

* changelog
2022-09-05 11:00:56 +01:00
Samuel Colvin 32ea885345 prepare for v1.10.1 2022-08-31 10:57:25 +01:00
Grzegorz Bokota 3a2e83ce64 Add __hash__ operator to Color class (#4455)
* add __hash__ operator to Color

* add changes file

* fix code style

* add type annotation

* Update changes/4455-czaki.md

Co-authored-by: Hasan Ramezani <hasan.r67@gmail.com>

Co-authored-by: Hasan Ramezani <hasan.r67@gmail.com>
2022-08-31 10:53:59 +01:00
Samuel Colvin 64f24726d1 v1.10 💥 (#4452) 2022-08-30 16:51:46 +01:00
Samuel Colvin b065908490 fix type hints in BaseSettings.Config (#4450)
* fix type hints in BaseSettings.Config

* add tests and change notice
2022-08-30 13:08:23 +01:00
Samuel Colvin f8575aa379 prepare for v1.10.0b1 release 2022-08-24 20:14:26 +01:00
Samuel Colvin 0244b06be5 Warn and ignore __slots__ argument to create_model (#4432)
* add test for create_model with slots

* add test for create_model with slots

* add warning and change description

* fix flakey none tests on 3.8.10

* avoid flakey coverage changes
2022-08-24 20:13:07 +01:00
Samuel Colvin 934adc1d85 prepare for v1.10.0a2 release 2022-08-24 12:28:43 +01:00
commonism 135e3a57d9 setup - require typing_extensions>=4.1.0 for dataclass_transform (#4424)
* setup - require typing_extensions>=4.1.0 for dataclass_transform

* add changes file

* Update changes/4424-commonism.md

Co-authored-by: Markus Koetter <koetter@cispa.de>
Co-authored-by: Samuel Colvin <samcolvin@gmail.com>
2022-08-23 10:35:38 +00:00
Samuel Colvin 5b2bcfd73c correct copy_on_model_validation docs (#4420)
* correct "copy_on_model_validation" docs, fix #4369

* Update docs/usage/model_config.md

* correct docs
2022-08-22 22:00:18 +01:00
Samuel Colvin f1df0896f9 prepare for v1.10 (#4418) 2022-08-22 16:21:17 +00:00
Anthony Miyaguchi fe7c9da6c1 Fix #1458 - Allow for custom parsing of environment variables via parse_env_var in Config object (#4406)
* Fix #1458 - Allow for custom parsing of environment variables via env_parse

* Add docs for env_parse usage

* Add changes file for #3977

* fixup: remove stray print statement

* Revert env_parse property on field

* Add parse_env_var classmethod in nested Config

* Update documentation for parse_env_var

* Update changes file.

* fixup: linting in example

* Rebase and remove quotes around imported example

* fix example

* my suggestions

* remove unnecessary Field(env_parse=_parse_custom_dict)

Co-authored-by: Samuel Colvin <s@muelcolvin.com>
2022-08-22 16:06:14 +00:00
Sebastián Ramírez 8dade7e9ac Add JSON-compatible float constraints for NaN and Inf (#3994)
*  Add JSON-compatible float constraints for NaN and Inf

* switching to a single "allow_inf_nan"

* fix tests

* add change and docs

* add allow_inf_nan to Config

Co-authored-by: Samuel Colvin <s@muelcolvin.com>
2022-08-22 15:21:56 +01:00
Talley Lambert beb3e4c8f1 Fix duplicate calls to __set_name__ for non-private attributes in BaseModel.__new__ (#4410)
* fix: double call for public attrs, extend test

* add changes

* remove change file, update 4407 file
2022-08-22 11:16:53 +00:00
Talley Lambert d501c39f2b Fix PEP487 __set_name__ protocol in BaseModel (#4407)
* fix: fix __set_name__ protocol in BaseModel

* undo changes

* add comment

* fix lint

* fix lint

* add change file

* remove mock, move imports
2022-08-21 13:53:26 +00:00
Hasan Ramezani abcf81ec10 Rename master to main (#4405) 2022-08-19 18:49:13 +01:00
DetachHead 9585ef3475 fix dataclass containing Any (#4356)
Co-authored-by: detachhead <detachhead@users.noreply.github.com>
2022-08-19 11:46:09 +01:00
Fares Ahmed e34ff9255f Fix AnyUrl.build doesn't do percent encoding (#3061) (#4224)
* Fix `AnyUrl.build` doesn't do percent encoding (#3061)

please review

* Use `urllib.parse` instead of custom implementation for percent encoding

* Make `quote_plus` a `stricturl` option

* Add docs for `stricturl(quote_plus=True)`

* Better changes message for #3061

Co-authored-by: Samuel Colvin <samcolvin@gmail.com>

* Fix precent encoding version note to V1.10

Co-authored-by: Samuel Colvin <samcolvin@gmail.com>

* Fix `Building URLs` snippit markdown

Co-authored-by: Samuel Colvin <samcolvin@gmail.com>

* Fix formatting for `docs/examples/types_url_building.py`

* fix docs

Co-authored-by: Samuel Colvin <samcolvin@gmail.com>
Co-authored-by: Samuel Colvin <s@muelcolvin.com>
2022-08-19 09:20:20 +00:00
chbndrhnns ba58f94150 feat: Make SecretStr hashable (#4399)
* feat: Make SecretStr hashable

* docs: Add change documentation

* test: Assert that the hash of SecretStr is an integer value

Co-authored-by: Hasan Ramezani <hasan.r67@gmail.com>

* feat: Make SecretBytes hashable

Co-authored-by: Johannes Rueschel <johannes.rueschel@telekom.de>
Co-authored-by: Hasan Ramezani <hasan.r67@gmail.com>
2022-08-19 09:13:30 +00:00
Hasan Ramezani 899b5f0661 Fix StrictStr does not raise ValidationError when max_length is present in Field (#4388) 2022-08-19 09:51:59 +01:00
Jean 67b653f19a fix: strictbytes-max-length (#4383)
* fix: strictbytes-max-length

* fix: apply feedbacks

* Update changes/4380-JeanArhancet.md

Co-authored-by: Hasan Ramezani <hasan.r67@gmail.com>

Co-authored-by: Hasan Ramezani <hasan.r67@gmail.com>
2022-08-16 23:41:17 +02:00
rafael 7344374dd0 BaseModel: Document and test structural pattern matching (#3921)
* BaseModel: Add __match_args__ attribute to namespace

* changelog

* amend docs

* add tests

* Update changes/3920-irgolic.md

Co-authored-by: Samuel Colvin <samcolvin@gmail.com>

* Update .github/workflows/ci.yml

Co-authored-by: Samuel Colvin <samcolvin@gmail.com>

* rename test_match => test_structural_pattern_matching

* pytest.skip => pytest.mark.skipif

* Revert "BaseModel: Add __match_args__ attribute to namespace"

This reverts commit 79367356fddac90b047b10620dc895425ec25b40.

* adjust tests for kwarg only structural pattern matching

* adjust docs for kwarg only pattern matching

* changes: Support => Document

* fix docs?

Co-authored-by: Samuel Colvin <samcolvin@gmail.com>
2022-08-16 08:47:17 +02:00
Hasan Ramezani dab478aa81 Add support for bare type (#4375) 2022-08-14 21:52:34 +01:00
Samuel Colvin cc68900274 Build binaries for Python 3.11 (#4374)
* build binaries for python 3.11

* add change

* [skip ci] revert CI if comment

* add 3.11 to pypi classifiers
2022-08-14 18:32:33 +01:00
Arseny Boykov c24d33e5f1 Generate docs exampels for Python 3.10 and above (#4339)
* Generate docs exampels for Python 3.10 and above

Code quality is not great and main intent here is to show the result.

* Fix docs build on 3.9

* Build docs on 3.10

* What's Python 3.1?

* Create temp dir if not exists

* Refactor and improve imlementetion

* Keep runtime typing in examples

* Revert unrelated formatting changes

* Add changes file

* Allow specifying requirements in examples

* Pin autoflake and pyupgrade

* Add docs/build to Makefile lint/format/mypy

* ignore_missing_imports for ansi2html and devtools

* Add .tmp-projections to .gitignore

* Remove dont-upgrade now when Pattern is supported

* Update postponed evaluation examples

Co-authored-by: Samuel Colvin <s@muelcolvin.com>
2022-08-14 17:21:53 +01:00
hottwaj cdd091c8ac Initial implementation of ConstrainedDate, condate (#3740)
* Initial implmenetation of ConstrainedDate, condate, with tests and docs

* Attempt at fixing hypothesis tests for ConstrainedDate.  Suspect still not working

* removed forgotten breakpoint() :(

* suggested changes to pydantic/_hypothesis_plugin.py for condate etc

Co-authored-by: Zac Hatfield-Dodds <zac.hatfield.dodds@gmail.com>

* - fixed import for hypothesis tests

* - linting fixes only

* - more fixes for linting

* changes following review by samuelcolvin 2022-08-08.  Will rebase next

* - added changes to changes file

* fixed changes file filename to PR #3740

* additional changes requested by samuelcolvin 2022-08-11: add test for schema_json, add hypothesis test, etc

* make test_json_schema compare to a dictionary rather than json string

* added test_date_constrained_types to test_schema

* rewrite tests

Co-authored-by: Zac Hatfield-Dodds <zac.hatfield.dodds@gmail.com>
Co-authored-by: Samuel Colvin <s@muelcolvin.com>
2022-08-12 14:37:41 +00:00
KotlinIsland 03606916e4 Fix mypy version check (#3783)
* fix mypy version check

* fix mypy version check

* implement parse_mypy_version and test

* add change file

Co-authored-by: KotlinIsland <kotlinisland@users.noreply.github.com>
Co-authored-by: Samuel Colvin <s@muelcolvin.com>
2022-08-12 15:07:43 +01:00
Kyungmin Lee 0320a99361 feat: add support multiple dotenv files (#1497) (#3222)
* feat: support multiple dotenv files

Allow BaseSettings to accept multiple dotenv files in Config as a list
or tuple.

* docs: add multiple dotenv support

* docs: add a change summary

* test: add missing tests

* fix: test coverage

* refactor: raise a TypeError when an object of an invalid type is passed

* fix: a lint error

* refactor: remove `_read_process_env_vars` method

* docs: update priority

* refactor: apply a review

* test: simplify testing

* refactor: apply reviews

* reverse piority order, reduce diff size

* fix change file grammar

* correct docs, avoid unnecessary copy of os.environ

* correct wording in docs

Co-authored-by: Samuel Colvin <s@muelcolvin.com>
2022-08-12 12:17:01 +00:00
Hasan Ramezani 104748c793 Add support for re.Pattern (#4366) 2022-08-12 12:36:15 +01:00
Samuel Colvin 47362e33b6 Pick 1.9 (#4350)
* generate history from changes, uprev

* Pydantic V2 blog (#4218)

* first draft of pydantic V2 blog

* more blog

* blog rendering and formatting

* more section

* completing conversion table

* prompt build

* reviewing blog post

* more reviewing and extending

* recommendations from @Rabscuttler and @PrettyWood

* add implementation details and more suggestions

* comment about breaking changes

* convert namespae to table, more removals

* Apply suggestions from code review by @tiangolo

Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>

* feedback from @tiangolo's review

* changes from @adriangb's review

* Apply suggestions from code review

Co-authored-by: Zac Hatfield-Dodds <zac.hatfield.dodds@gmail.com>

* convert namespace info to psuedo-code

* rename property, remove schema_json()

* adding validation context

* remove 'model_schema_json', take 2

* more tweaks while reviewing

* comment about pypy and tagged unions

* add thanks :prey:, prepare for release

* suggestions from @PrettyWood

* suggestions from @PrettyWood, model_dump_json comment

Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
Co-authored-by: Zac Hatfield-Dodds <zac.hatfield.dodds@gmail.com>

* comments mostly from @PrettyWood (#4226)

* comments mostly from @PrettyWood

* add updated comment

* fix pre-commit

* allow for shallow copies (#4093)

* allow for shallow copies

* Add changes file

* tweak change

* update for comments

* rename attr

* use single quotes

* bump ci

* add warning if not a string, switch to string literals

* fix linting, prompt ci

* fix ci

* extend and fix tests

* change default to "shallow"

Co-authored-by: Samuel Colvin <s@muelcolvin.com>

* uprev and prepare for release

* linting

Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
Co-authored-by: Zac Hatfield-Dodds <zac.hatfield.dodds@gmail.com>
Co-authored-by: Tim Paine <t.paine154@gmail.com>
2022-08-12 11:09:49 +01:00
Samuel Colvin 5c8942bdd4 Revert "Add nested json encoding (#3941)" (#4367)
This reverts commit b42fae081c.
2022-08-12 11:08:33 +01:00
Matt Coneybeare b8a695788e Catch Exceptions in smart_deepcopy (#4187)
* Catch Exceptions in smart_deepcopy

* address feedback
2022-08-12 07:56:47 +00:00
Amin Alaee fa6b9788a1 Allow BaseModel schema to have fields of type Type (#4154)
* Allow BaseModel to have fields of type Type

* update

* minor update

* update tests

* update

* fix type

* update

* Update changes/4051-aminalaee.md

Co-authored-by: Samuel Colvin <samcolvin@gmail.com>
2022-08-11 11:47:30 +00:00
Amin Alaee 1f83221323 Fix imports indirectly from pydantic typing (#4358)
* Fix imports indirectly from pydantic typing

* fix pipeline

* Add MappingIntStrAny to __all__

* fix ForwardRef

* Fix Callable

* remove from ForwardRef imports

* Add changes
2022-08-11 12:35:56 +01:00
DetachHead 1e821b6df4 fix "extra fields not permitted" error when dataclass with Extra.forbid is validated multiple times (#4354)
Co-authored-by: detachhead <detachhead@users.noreply.github.com>
2022-08-11 11:23:57 +00:00
Kyle Amos a587ecee88 Fix #4192 bug with BaseModel.construct and aliased Fields (#4191)
* Fix a bug where BaseModel.construct would not appropriately respect field aliases

* Perhaps do not raise on construct and just apply the fix

* Fix quotes and remove check on allow_population_by_field_name

* Fix lint

* Fix lint, remove bad arg

* Black formatted

* Mmmm black formatter and single quotes linting, what a world

* Added change file

* PR feedback

Co-authored-by: Kyle Amos <kamos@seatgeek.com>
2022-08-11 11:49:07 +01:00
Max McLennan 4cb58cf9df Discriminated union schemas use oneOf instead of anyOf (#4335) 2022-08-11 11:42:28 +01:00
Hasan Ramezani 149c05bc2e Fix __post_init_post_parse__ is incorrectly passed keyword arguments when no __post_init__ is defined (#4361) 2022-08-11 12:40:50 +02:00
arsenron 6650edfe8f Fix #3807: matching characters in nested env delimeter and env prefix (#3975)
* fix nested env delimeter with matching prefix

* Update env_settings and add change readme

* fix change and add comment

Co-authored-by: Samuel Colvin <s@muelcolvin.com>
2022-08-11 11:35:03 +01:00