Commit Graph

412 Commits

Author SHA1 Message Date
euri10 1e83ac5137 Color schema (#666)
* First attempt at adding Color in schema() generation

* Lint

* Add history

* Make docs pass

* Added format color

* Format color

* Making history...:)
2019-07-24 10:52:05 +01:00
Arseny Boykov 1b4c1a884c Fix alias_generator and field config conflict (#658)
* Fix alias_generator and field config conflict (see #645)

* HISTORY.rst update: fix alias_generator and field config conflict

* Merge HISTORY.rst with master
2019-07-24 10:32:40 +01:00
Sebastián Ramírez 886d05e100 Use inspect.getdoc to get model description (#657)
* Use inspect.getdoc to get model description

This instead of the custom function clean_docstring.
It also allows models to inherit a description, the same way classes inherit a docstring.

* Update History
2019-07-24 10:00:16 +01:00
Arseny Boykov 74768c1535 Add advanced exclude and include support for dict, json and copy (#648)
* Add advanced exclude support for dict, json and copy

* Add advanced exclude support for dict, json and copy

Add new version section (v0.31)

* Add advanced include support, add more tests, improve code style
Rename ValueExclude to ValueItems and move it to utils
Use old logic to calculate keys, but still exclude it in _iter

* Add more tests for ValueItems

* Removed update arg check in _calculate_keys for return None
This will increase speed when no include or exclude given and skip_defaults is False

* Fix formatting, remove duplicate imports

* Add # pragma: no cover to 'if TYPE_CHECKING:' block

* tweaks and coverage

* fix history

* Add docs

* tweak docs
2019-07-24 09:58:38 +01:00
Justin DuJardin bc60014518 Add better support for floating point multiple_of values (#652)
- modulo doesn't work with floating point values in many cases, e.g. `0.3 % 0.1 == 0.09999999999999998`
 - port implementation from: https://github.com/tdegrunt/jsonschema/issues/187#issuecomment-320664251
 - add tests for int/float multiple_of values
 - update history with pr/author
2019-07-23 16:41:11 +01:00
dmontagu 4c9ee486d8 Add literal docs (#651)
* Add literal docs

* Update history

* Incorporate feedback

* fix history
2019-07-23 16:40:28 +01:00
dmontagu 18d4b2bb2a Make schema work for Literal and NewType (#649)
* Make schema work for Literal and NewType, fix #646

* Fix test when typing_extensions not installed

* Make literal values fetching 3.6 compatible

* Rework to get around issues with Literal in python 3.6

* Make cython-compatible

* Use union for multiple allowed literal values

* Minor simplification of values-gathering

* Updated history
2019-07-15 20:06:35 +01:00
Samuel Colvin 7244aba553 uprev 2019-07-15 19:28:36 +01:00
Levi Naden 61c8ca2f30 Re-enable nested model init calls while still allowing self (#644)
* Re-enable nested model init calls while still allowing self

This commit enables nested model `__init__` statements to be executed
while still allowing `self` as an argument.

Effectively reverses the changes from #632 while still enabling the
feature it implemented. In theory, there will still be a collision if
someone ever tried to use `pydantic_base_model/settings_init` as an arg,
but I don't know how to engineer a case where a collision would *never*
happen, I'm not sure there is one.

This commit also added a test for both BaseModel` and `BaseSettings` for
both the `self`-as-a-parameter and the nested `__init__` features since
`BaseSettings` now has the same issue as `BaseModel` since it invoked
an `__init__` with self.

I have added a comment under the `__init__` for both `BaseModel` and
`BaseSetting` since not having `self` as the first arg is such a
rarity within Python that it will likely confuse future developers who
encounter it.

The actual name of the variable referencing the class itself can be
up for debate.

* Please Lint

* Please Black

* Update from comments
2019-07-11 15:42:48 +02:00
Samuel Colvin b52d877f28 uprev 2019-07-07 11:13:02 +01:00
Samuel Colvin 34f271e8fa support self argument (#632)
* support self argument, fix #629

* support self recursively
2019-07-06 14:22:15 +01:00
Koudai Aono e4b285a0cd support custom root types (#628)
* support custom root types

* update HISTORY.rst for costom root types

* fix invalid arguments case

* remove the keyword argument of "__root__" in __init__
add a keyword argument of "__root__" in parse_obj
fix documents
create a method for cheking valid field name

* fix parse_obj

* Update docs/index.rst

Co-Authored-By: Samuel Colvin <samcolvin@gmail.com>

* Apply suggestions from code review

Co-Authored-By: Samuel Colvin <samcolvin@gmail.com>

* add type cheking for custom root type

* Update docs/index.rst

Co-Authored-By: Samuel Colvin <samcolvin@gmail.com>

* Update index.rst
2019-07-06 09:52:42 +01:00
pyup.io bot 32bc0083d9 Scheduled monthly dependency update for July (#633)
* Update sphinx from 2.0.1 to 2.1.2

* Update typing-extensions from 3.7.2 to 3.7.4

* Update cython from 0.29.9 to 0.29.11

* Update isort from 4.3.20 to 4.3.21

* Update mypy from 0.701 to 0.711

* Update pytest from 4.6.0 to 5.0.0

* pytest and mypy fixes

* prevent deprication warnings
2019-07-06 09:39:39 +01:00
Arseny Boykov 010ba38dc1 Add alias_generator (#622)
* Added alias_provider

* Update HISTORY.rst (+ add alias_provider support #622 by @MrMrRobat)

* Rename alias_provider —> alias_generator
Move docs to config section, reformat example
Separate test_alias_generator

* Update docs/index.rst

Co-Authored-By: Samuel Colvin <samcolvin@gmail.com>

* Update docs/index.rst

Co-Authored-By: Samuel Colvin <samcolvin@gmail.com>

* Update docs/index.rst

Co-Authored-By: Samuel Colvin <samcolvin@gmail.com>

* Fix conflict between dictionary field config in Config.fields and Config.alias_generator

Add one more condition for applying alias_generator

Co-Authored-By: Samuel Colvin <samcolvin@gmail.com>

* Add test for using alias_generator with field schema
2019-07-02 12:13:06 +01:00
dmontagu 8aac71af0f Fix unparameterized generic type schema generation (#625)
* Fix #623

* Update history

* Add List test

* Augment test
2019-07-02 10:44:24 +01:00
Sebastián Ramírez 3cdbbaee95 Fix circular schema generation, remove None checking hack (#621)
* Fix circular schema generation, remove None checking hack

* Include test written by @wongpat to make it run in CI

* Update History

* Update nested_models in-place

Co-Authored-By: Patrick Wong <wongpat@users.noreply.github.com>

* Update nested_models in-place

Co-Authored-By: Patrick Wong <wongpat@users.noreply.github.com>

* Update nested_models in place everywhere for consistency
2019-06-28 10:49:26 +01:00
dmontagu ccdf8e12cd Fix #608 (repr on model with class) (#611)
* Fix #608

* add try-except

* Fix quotes
2019-06-26 14:03:33 +01:00
dmontagu 3f754c8cbd Fix #609 (default arguments for GenericModel) (#610)
* Fix #609

* Fix formatting

* update history

* add test for non-annotated fields

* Update tests/test_generics.py

Co-Authored-By: Samuel Colvin <samcolvin@gmail.com>

* Update tests/test_generics.py

Co-Authored-By: Samuel Colvin <samcolvin@gmail.com>

* Add another test
2019-06-25 10:58:23 +01:00
dmontagu 3ee54ed2bb Add support for Literal annotation (#582)
fix #561

* Add support for Literal annotation

* Updated requirements.txt

* incorporating feedback

* skip typing_extensions tests if not installed

* missed a spot

* address feedback

* Make work with python 3.6

* Work for *both* 3.6 and 3.7

* incorporate feedback

* fixed naming and quotes

* Trying to fix LGTM bot issue
2019-06-25 10:33:21 +01:00
Jan Vlčinský 7000a27d56 doc: self-referencing got note about rq for python 3.7+ (#618)
* doc: self-referencing got note about rq for python 3.7+

* Update HISTORY.rst

* Use issue # in history record
2019-06-24 14:37:54 +01:00
Samuel Colvin 461b852e4e enforcing single quotes (#612)
* enforcing single quotes

* update history
2019-06-21 12:32:03 +01:00
秋葉 6233554394 fix __post_init__ cause infinite recursion in inheritance (#606)
* fix __post_init__ cause infinite recursion in inheritance

* update changelog

* update code quote

* rename instance to self

* Update HISTORY.rst

Co-Authored-By: Samuel Colvin <samcolvin@gmail.com>
2019-06-21 10:46:21 +01:00
Samuel Colvin dd44fda8a6 uprev 2019-06-19 11:28:14 +01:00
dmontagu b84df079a7 Add generic functionality (#595), fix #556
* Added generic functionality

* Skip tests in python 3.6

* double quote -> single quote

* Simplified, with more comprehensive tests

* double quote -> single quote

* Remove unintentional file

* Add caching

* don't cythonize generics.py

* Make work with mypy

* Remove __parameters__

* double quote -> single quote i'll remember one day

* More cleanup and validation

* Removed unwanted file

* A little more cleanup, and finish the PR

* Add proper inheritance

* Added note about inheritance to docs

* Added error for double-parameterizing

* Should build for python3.7

* Works with both 3.6 and 3.7

* Fixed bug with caching for single argument

* handle __name__ for generic models

* double quote -> single quote

* Updated error messages
2019-06-19 11:22:06 +01:00
Hmvp 1c45373f80 Add conlist type (#583)
* Add conlist type

* Fix cython issue

* Update pydantic/fields.py

Co-Authored-By: Samuel Colvin <samcolvin@gmail.com>

* Update pydantic/types.py

Co-Authored-By: Samuel Colvin <samcolvin@gmail.com>
2019-06-19 11:03:31 +01:00
Adamos Kyriakou 84820bdede Clarification around usage of Union (#594)
* Added two code examples on the correct and incorrect usage of `Union` in type annotations.

* Updated documentation.

* reST fix.

* Update docs/examples/union_type_incorrect.py

Co-Authored-By: Samuel Colvin <samcolvin@gmail.com>

* Update docs/examples/union_type_incorrect.py

Co-Authored-By: Samuel Colvin <samcolvin@gmail.com>

* Update docs/examples/union_type_incorrect.py

Co-Authored-By: Samuel Colvin <samcolvin@gmail.com>

* Update docs/examples/union_type_correct.py

Co-Authored-By: Samuel Colvin <samcolvin@gmail.com>

* PR comments.

* Updated `HISTORY.rst`.

* Update docs/index.rst

Co-Authored-By: Samuel Colvin <samcolvin@gmail.com>

* Update HISTORY.rst

Co-Authored-By: Samuel Colvin <samcolvin@gmail.com>

* Update docs/index.rst

Co-Authored-By: Samuel Colvin <samcolvin@gmail.com>

* Update docs/index.rst

Co-Authored-By: Samuel Colvin <samcolvin@gmail.com>
2019-06-15 14:05:47 +01:00
pfrederiks b77da1ec9e Add support for InitVar (#591)
* Add support for InitVar

* Annotate *initvars as Any

* Simplify tests

* Add line to HISTORY.rst

* Use dataclasses.fields which also ignores ClassVars

* tweak history
2019-06-14 16:56:08 +01:00
Samuel Colvin f5b054b9fc fix deploy 2019-06-11 07:59:01 +01:00
Samuel Colvin 795efe5c1c uprev 2019-06-06 17:33:15 +01:00
Samuel Colvin 8ad9fa45df tweak travis (#581)
* tweak travis

* fix codecov env vars

* try again with env vars
2019-06-06 16:59:21 +01:00
cazgp eb1e640525 StrictBool (#580)
* StrictBool

StrictBool only allows booleans to be parsed. Any other value, no matter
its truthiness, is rejected.

* Fix type of `validate`

Co-Authored-By: Samuel Colvin <samcolvin@gmail.com>

* " => '

* Update the exotic docs with StrictBool

* Fix error message

* Improve docs

* tweak docs.
2019-06-06 15:18:21 +01:00
Samuel Colvin 3dfae21208 ORM mode: Add support for arbitrary class instances (#562)
* Support ORM objects to 'parse_obj', replace #520

* switch to GetterDict and orm_mode

* tweaks

* update docs

* split tests and add @tiangolo's suggestion

* split tests and add @tiangolo's suggestion

* fix coverage
2019-06-06 11:29:09 +01:00
dmontagu 6d5c48e3fd Fix Cython compiled check in ipython (#573)
* Update main.py

Addresses the issue raised in #548 related to running non-compiled in IPython

* except AttributeError

* update HISTORY.rst
2019-06-04 22:07:32 +01:00
Sebastián Ramírez d73aa1bded Add support for JSON Schema with circular references in Python 3.7 (#572)
* Add support for circular references in generated JSON Schema

* Update JSON Schema for referenced models with overrides, using allOf

* Add tests for circular references in Python 3.7

* Update History

* Remove unnecessary check, raise coverage (remove partial)

* Trigger Travis and others

* Use str concat expression instead of double expression in schema

Co-Authored-By: Samuel Colvin <samcolvin@gmail.com>

* Update pydantic/schema.py

Co-Authored-By: Samuel Colvin <samcolvin@gmail.com>

* Partial implementation of PR review

* Simplify definition of known_models
2019-06-04 18:26:36 +01:00
Samuel Colvin 9ffa311f8f dataclasses to json (#575)
* dataclasses to json

* update history
2019-06-04 17:06:08 +01:00
Sebastiaan Van Hoecke 2a04aa76b0 added feature post_init_post_parse (#567)
* added feature post_init_post_parse

* fixed bug where post_init_post_parse was triggered without looking is post_init_original is set

* change double to single quotes

* __doc__ strings fixed back to double quote

* added better way of doing the post_init_post_parse also tests passes now

* removed unused file

* deleted unnecessary test

* update history.rst, changed previouis change 560 to breaking change because it broke the original flow

* update docs, added section post_init_post_parse under dataclasses

* added __post_init_post_parse__ as attribute of DataclassType

* Update HISTORY.rst

Co-Authored-By: Samuel Colvin <samcolvin@gmail.com>

* Update HISTORY.rst

Co-Authored-By: Samuel Colvin <samcolvin@gmail.com>

* Update pydantic/dataclasses.py

Co-Authored-By: Samuel Colvin <samcolvin@gmail.com>

* update docs, added subsection initialize hooks under dataclasses

* my bad

* make tests work again

* removed checking if post_init_parse is none

* correct typo in history

* fixed typo in history.rst
2019-06-04 10:01:09 +01:00
pyup.io bot d10f473732 Scheduled monthly dependency update for June (#570)
* Update pygments from 2.3.1 to 2.4.2

* Update sphinxcontrib-websupport from 1.1.0 to 1.1.2

* Update email-validator from 1.0.3 to 1.0.4

* Update isort from 4.3.17 to 4.3.20

* Update pytest from 4.4.1 to 4.6.0

* Update pytest-cov from 2.6.1 to 2.7.1
2019-06-03 09:44:21 +01:00
Samuel Colvin d69ca21ce4 add 'none-any.whl' to pypi upload (#564)
* add 'none-any.whl' to pypi upload

* reset 'if'
2019-05-30 16:15:55 +01:00
Samuel Colvin 26cbe4868c uprev 2019-05-30 15:29:20 +01:00
Samuel Colvin b248a0984f update benchmarks (#563)
* update benchmarks

* optimize
2019-05-30 12:43:44 +01:00
Samuel Colvin d473f4abc9 cython (#548)
* user cython for fields.py, parse.py and validators.py, fix #547

* fix coverage

* no cython on windows

* speedup error_wrappers, more cython

* conditional validators

* more tweaks to validators.py

* add compiled check

* fix mypy and tweak

* benchmark with cython

* simplify anystr_strip_whitespace

* build binaries on travis

* fix travis manylinux builds

* correct test stages

* cibuildwheel to dist

* fix manylinux build

* don't upgrade pip on wheel build

* try a fix for cibuildwheel

* speedup deploy stage

* revert file rearrangement, cythonize main.py

* tweak main.py

* update docs and history

* fix deploy stage of travis

* Cythonize more files (#553)

* Cythonize more files

* Tests pass

* Fixed ordering

* Some code cleanup

* Every last file cythonized

* cython coverage

* upgrade cython and tweak build setup

* different build stages
2019-05-30 12:04:15 +01:00
dmontagu af26f7f181 Fix issue with unspecified generic type (#554)
* Fix issue with unspecified generic type, fix #550

Seems to solve #550

With this change, models with bare `List` or `Dict` as a typehint still validate for type agreement, but don't validate the type of the parameters.

I'm not sure this is the "right" fix (I don't know the implications of ignoring TypeVars like this), but considering how simple it was I figured I'd at least share.

* Update validators.py

Found this discussion: https://github.com/samuelcolvin/pydantic/issues/545; `lenient_issubclass` does seem to fix it.

* Update validators.py

Hacky solution to prevent no validator exception. Maybe there's a better way?

* Tests pass and PR checklist done

* Check sooner

* Block empty list from dict constructor

* Removed modifications to dict_validator
2019-05-29 19:35:16 +01:00
Vítor Augusto da Silva Vasconcellos 79ed78fda0 Run dataclass' original __post_init__ before validation (#560)
* Run dataclass' original __post_init__ before validation

* Add unit test

* Update HISTORY.rst
2019-05-29 18:14:36 +01:00
Samuel Colvin 4263258207 try to stop annoying warnings in azure pipeline (#549) 2019-05-25 19:10:52 +01:00
Samuel Colvin 9eb132ce99 azure pipeline failOnStderr: false 2019-05-25 18:59:54 +01:00
Samuel Colvin 66ce99e4f0 Azure Pipelines - tests for windows (#538)
* add azure-pipelines.yml

* fix install command

* skip some tests on windows
2019-05-23 10:30:32 +01:00
Sebastián Ramírez cd8c7641bf Fix JSON Schema for list, tuple, and set, improving interoperability (#540)
* Fix JSON Schema for list, tuple, and set, improving interoperatibility

* Update History with PR number
2019-05-23 10:18:46 +01:00
Samuel Colvin d2f6073721 uprev. 2019-05-22 14:06:22 +01:00
Samuel Colvin 22f134475d Colors (#516)
* Color validator MVP

* Color Validator refactored

* Small optimizations applied

* Code coverage improved

* hex processing improved, json encoder and repr added

* Add documentation, update HISTORY (#504)

* Increase test coverage (#504)

* hex helpers refactored (#504)

* Fixes after code review (#509)

* Color Type section in docs reduced

* Check for valid but unnamed colors

* Minor fixes: typo in docs, default value for float comparison function

* rewrite Color

* fix color tests

* tweaks and improve docs

* tweaks and change Color.__str__

* add as_hsla and as_hsl

* support more rgb(a) formats

* add hsl parsing

* parsing hex with alpha channel

* fix hsl parsing

* simpler failure/fallback rules for color display

* storage as floats internally

* tweak docs

* fix type hints
2019-05-22 13:14:35 +01:00
euri10 c0298a8a76 Fix to schema generation for IPv{4,6}{Address,Interface,Network} (#532)
* Fix to schema generation for IPv{4,6}{Address,Interface,Network}, fix #498

* Added docs

* Added PR number

* Updated format to comply with http://json-schema.org/latest/json-schema-validation.html#rfc.section.7.3.4
Modified tests accordingly

* For real
2019-05-21 16:03:34 +01:00