* Fix alias_generator and field config conflict (see #645)
* HISTORY.rst update: fix alias_generator and field config conflict
* Merge HISTORY.rst with master
* 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
* 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
* 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
* 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
* 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
* 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
* 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
* 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
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
* 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
* Add support for InitVar
* Annotate *initvars as Any
* Simplify tests
* Add line to HISTORY.rst
* Use dataclasses.fields which also ignores ClassVars
* tweak history
* 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.
* 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
* 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
* 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
* 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
* 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