Commit Graph

92 Commits

Author SHA1 Message Date
Samuel Colvin 8301f9e4b2 dataclass validation (#334)
* dataclass validation, fix #273

* support for tuple or dict in dataclasses

* tweaks

* adding example in docs
2018-12-27 19:15:39 +00:00
jarekkar 72791787ea Add support for passing Configs to Dataclasses (#285)
* Add support for passing Configs to Dataclasses

* formatting and fixes

* move tests into dataclasses_config.py

* use inherit_config in create_model

fix #276
2018-12-27 17:54:17 +00:00
Samuel Colvin 94fc64f5e1 uprev pydantic and test deps 2018-12-25 22:55:18 +00:00
Samuel Colvin 2512f25df7 tweak 'Using Pydantic' (#326)
* tweak 'Using Pydantic'

* typo

* remove gitter
2018-12-25 21:32:05 +00:00
Sebastián Ramírez 96020e91f6 Add section "Based on Pydantic" with FastAPI (#323)
* Add section "Based on Pydantic" with FastAPI

* Update History

* Update Third-Party libraries section, based on the style of AIOHTTP

* Remove release History details
2018-12-23 12:15:26 +00:00
Sebastián Ramírez 81f155864e Fix schema for timedelta as number, instead of str (#325) 2018-12-23 12:13:29 +00:00
Samuel Colvin 7a06736ead Add additional parameters to Schema for validation and annotation (#319)
* Add additional parameters to Schema for validation and annotation (#311)

* Add tests for validation declared via Schema class in defaults

* Add validations to field from declarations in Schema

* Add annotations in generated JSON Schema from validations via Schema

* Augment tests for schema generation

* Simplify validations from Schema in fields, from coverage hints

* Update schema test to use the spec plural "examples"

* Add docs and simple example of the additional parameters for Schema

* Update history

* Fix number of PR in HISTORY

* Refactor check for numeric types, remove break to make coverage happy

* Fix typo in docs, I confused gt with maximum

* Finish docstring for Schema (I had forgotten about it)

* Implement code review requests and lenient_issubclass with tests

* Move Schema to its now file to extract from fields.py but avoid circular imports

* Control coverage

* Schema fixes (#318)

* rearrange code

* cleanup get_annotation_from_schema

* fix typo

* rename _schema to schema
2018-12-03 12:37:39 +00:00
pyup.io bot a34cfd23da Scheduled monthly dependency update for December (#316)
* Update pygments from 2.2.0 to 2.3.0

* Update sphinx from 1.8.1 to 1.8.2

* Update coverage from 4.5.1 to 4.5.2

* Update pytest from 3.9.3 to 4.0.1

* Update pytest-sugar from 0.9.1 to 0.9.2
2018-12-03 09:32:37 +00:00
Jason Kuhrt a0aa9e78cd feat: add support for case insensitive env names (#313)
* feat: add support for case insensitive env names

Closes #277

* feedback: just alias os.environ

* doc: update history

* doc: mention case_insensitive option

* refactor: feedback if-else expression assignment

* fix: formatting

* chore: encode black configuration in file to support IDEs

* docs: fix example

* feedback: no suppport for IDEs in this PR

* feedback: style
2018-11-26 14:57:09 +00:00
Sebastián Ramírez 94706bc834 JSON Schema update/refactor/augment, to conform to spec (#308)
* Update schema tests to conform to JSON Schema spec

* Add JSON Schema tests for all supported types

including datetime and all supported Pydantic.types

* Add JSON Schema conforming schema sub module

* Update BaseModel to use schema module for JSON Schema generation

and update/simplify internal Schema methods

* Remove Schema code from Field class, replaced with JSON Schema module

* Add submodules to test model name generation for JSON Schemas

* Refactor/rewrite schema module to generate definions and refs

* Update and augment JSON Schema tests to include definitions and refs

and generation of a single JSON Schema with definitions from multiple (unrelated) models

* Add ref_prefix functionality to JSON Schema generation functions

* Test custom ref_prefix in JSON Schema generation

* Remove un-used BaseModel method, now refactored to schema module

* Update formating of test_schema

* Fix long lines in test_schema

* Fix imported but unused in fields

* Fix imported but unused in main.py

* Ignore imported but unused for testing modulec

* Refactor schema module for complexity

* Add conflicting name model to raise coverage

* Add conflicting model to test other flow and raise coverage

* Ignore complexity as destructuring more would make it more complex

and more difficult to understand, similar to .fields.validate

* Fix import sorting

* Update formatting with black, with CI settings

* Fix test for schemas with email validation

* Check if field is class before checking if is subclass

* Improve schema error when using unsuported types

* Add additional tests for corner cases, raise coverage to 100%

* Rename BaseModel.schema_json to schema_str (EAFP Python style)

* Add more tests to utils.display_as_type to increase the coverage for enums

* Remove unused catched error in schema tests

* Fix formatting with black

* Update docs schema example

* Add schema examples for top-level schema with multiple models

* Update docs, section Schema, with new JSON Schema generation details

* Update docs, history, with new features

* Update fields, remove unnecessary schema code for enums

* Update docs, fix links and typos in Schema section

* Trigger CI, as Python 3.7-dev seems to have random CI errors

* Revert Model.schema_str to Model.schema_json as requested

* Remove unnecessary assert in schema module as requested

* Remove annotations in internal functions, as requested

* Refactor get_flat_models_from_fields and reuse

* Use set short assignment syntax in schema module

* Remove unwanted assertion

* Make get_long_model_name a single line f-string

* Update model_name_map, add docstring and remove first return value

* Simplify dict operation in get_model_name_map as requested

* Make more concise model_name_map computation

* Remove bool from field check in schema as is subclass of int

* Make ref_prefix default to None and use global default

* Fix formatting for schema.py

* Refactor field_singleton_schema to use data structures

* Move main functions to top of schema, and add docstrings for them

* Implement __all__, move and order parts of schema

* Remove schema testing sub-package code as requested

* Generate schema testing subpackage in code

* Update schema tests with several related fields to use parametrized pytest

* Fix formatting and imports I missed after rebase

* Fix new formatting errors from CI

* Re-trigger Travis CI, Python 3.7-dev random error again, no re-run click in Travis for non owners

* Trigger annotation error with non-forward references

* Add docstrings for submodel schema

* tweaks and rewrite schema mapping table in python

* support complex defaults

* use str not int as dict keys

* Fix links to JSON Schema and OpenAPI
2018-11-22 16:00:06 +00:00
Guillermo cd50601172 Fix typos (#274) 2018-10-07 16:57:36 +01:00
Samuel Colvin 5089865857 uprev 2018-10-02 17:36:41 +01:00
pyup.io bot cdcf611f41 Scheduled monthly dependency update for October (#271)
* Update sphinx from 1.7.8 to 1.8.1

* Update mypy from 0.620 to 0.630

* Update pytest-cov from 2.5.1 to 2.6.0

* Update pytest-isort from 0.2.0 to 0.2.1
2018-10-02 17:34:46 +01:00
Samuel Colvin f3a278bb8d Dataclasses (#269)
* pydantic.dataclasses.dataclass decorator

* add dataclasses to requirnment.txt

* reimplement dataclasses

* fix linting, fix coverage

* docs
2018-10-01 09:48:28 +01:00
Stefan Gangefors c32ce342c9 Add support for deep copying of models (#261)
Using `model.copy(deep=True)` will deep copy a module instance.

Making a deep copy is useful for models that have lists of dicts or
any other non-simple data structure to not accidentally modify data
between instances.

`model.copy()` behaviour is unchanged and will do a shallow copy of
the model instance.

fix #249
2018-09-10 11:35:58 -04:00
pyup.io bot 9f874a7e97 Scheduled monthly dependency update for September (#256)
* Update sphinx from 1.7.6 to 1.7.8

* Update attrs from 18.1.0 to 18.2.0

* Update pytest from 3.7.2 to 3.7.4
2018-09-10 05:46:05 -04:00
Samuel Colvin c7c15bc415 fix json documentation (#253) 2018-08-29 10:38:02 +01:00
Samuel Colvin 0839646788 uprev 2018-08-25 17:15:22 +01:00
Samuel Colvin f46dc0c56f timedelta json encoding (#247)
* timedelta json encoding, altnative to #220

* history and tests

* fix comments and tests

* docs for json_encoders

* tests plain timedelta object parsing

* uprev

* tweak docs
2018-08-25 17:06:32 +01:00
Samuel Colvin e0a8dd2da8 issue and pull request templates, favicon 2018-08-25 16:49:36 +01:00
pyup.io bot f32ecf2258 Scheduled monthly dependency update for August (#240)
* Update sphinx from 1.7.5 to 1.7.6

* Update mypy from 0.610 to 0.620

* Update pycodestyle from 2.3.1 to 2.4.0

* Update pytest from 3.6.2 to 3.7.0

* uprev pytest

* reset pycodestyle
2018-08-20 12:03:54 +01:00
Nikita Grishko aad175a25f add `UrlStr and urlstr` types #236 (#246)
fix #236

* add ``UrlStr`` and ``urlstr`` types #236

* review fixes
2018-08-20 10:14:46 +01:00
Evghenii Goncearov a0e0aa4f79 Docs for json type (#228) 2018-07-11 15:08:51 +01:00
Samuel Colvin 1dc294015d cleaning up _populate_sub_fields, support tuples (#227)
* cleaning up _populate_sub_fields

* support tuples, fix #12

* fix, history and docs

* rename _create_sub_type
2018-07-10 18:45:15 +01:00
pyup.io bot 9f83ca48b9 Scheduled monthly dependency update for July (#217)
* Update sphinxcontrib-websupport from 1.0.1 to 1.1.0

* Update mypy from 0.600 to 0.610

* Update pycodestyle from 2.3.1 to 2.4.0

* Update pytest from 3.6.0 to 3.6.2

* revert pycodestyle agaaaain
2018-07-02 12:12:01 +01:00
Evghenii Goncearov 73015d2a72 Allow arbitrary types in model (#209)
* Allow arbitrary types in model

* Replaced ConfigError with RuntimeError

* Corrections of the ArbitraryTypeError exception class
2018-07-02 12:08:43 +01:00
Nikita Grishko d43ab483ee fix schema creation docs (#212)
* fix schema creation docs

* review fixes
2018-06-30 23:06:39 +01:00
Samuel Colvin 37364a05b9 implement JSON serialisation (#210)
* implement JSON serialisation, fix #133

* documenting JSON serialisation

* fix coverage
2018-06-28 18:21:45 +01:00
Samuel Colvin dd8d013e10 Schemas (#190)
* starting field and model schemas

* field.schema()

* sub-models working

* move default in Schema and tests

* adding schema

* tweak docs
2018-06-28 13:06:24 +01:00
Nikita Grishko f8c1a350f4 add `FilePath and DirectoryPath` types #10 (#208)
* add ``FilePath`` and ``DirectoryPath`` types #10

* review fixes

* improve tests

* simplify errors
2018-06-28 11:04:00 +01:00
clip d2745065f5 fix typo (#207)
* fix typo

* fix test
2018-06-24 17:52:56 +01:00
Ben Demaree 29d61400f1 Fix doc references to values and add some clarifications (#204) 2018-06-19 16:39:05 +01:00
Samuel Colvin 9338c413c7 remove msgpack (#201)
* remove msgpack

* update history
2018-06-18 12:20:10 +01:00
Samuel Colvin f0f9de5f96 improve docs on error handling (#198)
* improve docs on error handling

* change ValidationError signature

* cleanup

* rename _raw_errors > raw_errors

* improve _display_error_type_and_ctx
2018-06-11 13:06:50 +01:00
Jasper Schulz 3ef595556c Added le and ge bounds to constrained numerics. (#194)
* Added `le` and `ge` bounds to constrained numerics.

* Addressed comments.

* Addressed @Gr1N comments.

* Removed comment.
2018-06-08 10:32:26 +01:00
Nikita Grishko 3f53cb5980 Update documentation (#162) (#189)
* Update documentation (#162)

* More docs about error handling
2018-06-04 10:55:48 +01:00
pyup.io bot cbfbe6b11c Scheduled monthly dependency update for June (#186)
* Update sphinx from 1.7.4 to 1.7.5

* Update attrs from 17.4.0 to 18.1.0

* Update pycodestyle from 2.3.1 to 2.4.0

* Update pyflakes from 1.6.0 to 2.0.0

* Update pytest from 3.5.1 to 3.6.0

* Update pytest-isort from 0.1.0 to 0.2.0

* Update pytest-mock from 1.9.0 to 1.10.0

* revert pycodestyle, yawwwwn
2018-06-02 15:35:52 +01:00
Samuel Colvin 1bf385f5bd adding gitter badges 2018-05-24 16:58:18 +01:00
Ben Demaree 62d39d90a7 Make model dump/load symmetric for aliased fields (#160)
* Make dump/load symmetric for aliased fields

* Only populate model fields by alias if enabled

* Document Config.allow_population_by_alias

* Update history

* Fix doc formatting

* Fix doc errors
2018-05-24 16:46:03 +01:00
Nikita Grishko 99d7eafa61 add `Decimal, ConstrainedDecimal and condecimal` types #170 (#175) 2018-05-10 12:11:45 +01:00
pyup.io bot f4207281a0 Scheduled monthly dependency update for May (#168)
* Update sphinx from 1.7.2 to 1.7.4

* Update mypy from 0.580 to 0.590

* Update pycodestyle from 2.3.1 to 2.4.0

* Update pytest from 3.5.0 to 3.5.1

* Update pytest-mock from 1.7.1 to 1.9.0

* correct pycodestyle and mypy

* update history
2018-05-05 14:55:55 +01:00
Nikita Grishko b4d3a2d544 add `UUID1, UUID3, UUID4 and UUID5` types (#167) (#167) 2018-05-02 22:49:55 +01:00
Samuel Colvin 36a20613fb uprev, add links to contributors in history 2018-04-28 19:37:35 +01:00
Nikita Grishko dc07277017 add `ConstrainedFloat, confloat, PositiveFloat and NegativeFloat` types #166 (#166) 2018-04-28 18:40:28 +01:00
Nikita Grishko f88e5925b5 add strip_whitespace option for ConstrainedStr and constr (#163) 2018-04-25 02:29:25 +07:00
clip cfb1057ae6 add document about "custom data types" (#157) 2018-04-16 19:32:50 +01:00
Samuel Colvin e8a6e8266f tweak history links (#152) 2018-04-06 09:59:17 +01:00
Samuel Colvin 2966beeb40 rerun benchmarks, update history 2018-03-25 18:24:40 +01:00
Samuel Colvin afb90b91e8 implement email validator (#142)
* implement email validator, replace #112

* coverage and cleanup

* update docs
2018-03-25 18:09:37 +01:00
Samuel Colvin a8096959e2 check for invalid validators (#140)
* check for invalid validators

* documentation and history
2018-03-25 16:41:48 +01:00