* 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
* Update sphinx from 2.0.0 to 2.0.1
* Update isort from 4.3.16 to 4.3.17
* Update mypy from 0.670 to 0.701
* Update pytest from 4.4.0 to 4.4.1
* Update pytest-mock from 1.10.3 to 1.10.4
* fix typing
* feat: implement const keyword in Schema
Fix#434.
* make fields marked `const` optional
* move `const` out of the `Field`
* check that `schema` is not `None` instead of using `getattr`
* tweak constant error
* fix json for Path, FilePath, and DirectoryPath objects, fix#473
* convert to single spaces
* assert result to a string
* Update test_json.py
* encode entire Path hierarchy the same way
* Added validators for dataclass, fix#415
* Added dataclass validators
* Added dataclass validators
* Updated docs for added validating to dataclass
* Updated docs for added validating to dataclass
* Fixed line endings
* Set __validators__ type to Mapping instead of Dict
* Update History
* Use __mro__ instead of __bases__ for gather_validators
* Fix PR number
* Fix issue.rst header underline
* Fix HISTORY.rst merge conflict
* Fix utils.py merge conflict
* fix utils.py
* Rebase and other fixes
* Fix rebase and other issues
* Change history
* Remove unnecessary lines in main.py
* Rebase
* Update history
* Rename ModelType to ModelOrDc
* Added inheritance replace test
* More consiste dataclass validator tests
* fix history.
* Remove Optional ModelOrDc Type
* Fix ModelOrDc
* fix: serialize secrets to json, fix#462
* feat: adjust documentation for secretstr.
* feat: undo unnecessary changes. keep tests.
* fix: tests were broken, now they're fixed again.
* feat: add display fn to SecretStr and SecretBytes, to be used for json output.
* fix: minor typo.
* fix: last few comments.
* feat: add SecretStr and SecretBytes.
* chore: update HISTORY.rst
* fix: file permissions were incorrect.
* feat: lint, format, fix comments.
* feat: changed inner type of SecretBytes in the schema to string as there is no bytes type in json.
* feat: remove format from secret str and secret bytes.
* feat: fix schema mapping.
* Update sphinx from 1.8.4 to 2.0.0
* Update attrs from 18.2.0 to 19.1.0
* Update black from 18.9b0 to 19.3b0
* Update coverage from 4.5.2 to 4.5.3
* Update isort from 4.3.9 to 4.3.16
* Update pytest from 4.3.0 to 4.4.0
* Update pytest-isort from 0.2.1 to 0.3.1
* Update pytest-mock from 1.10.1 to 1.10.3
* IPv{4,6,Any}{Network,Interface} types added, unittests and docs updated
* HISTORY.rst minor update
* Remove strict argument from IP network types
* IP Networks validators and type hints fixed
* tweak history
* Update sphinx from 1.8.3 to 1.8.4
* Update flake8 from 3.7.4 to 3.7.7
* Update isort from 4.3.4 to 4.3.9
* Update mypy from 0.660 to 0.670
* Update pyflakes from 2.1.0 to 2.1.1
* Update pytest from 4.2.0 to 4.3.0
* Update pytest-mock from 1.10.0 to 1.10.1
fix#378
* Tracking for setting attributes
* Fixes accidental leak of fields
* Allows defaults fields to be recursively set
* Docs and history for skip_defaults
* Mypy fix on calculate keys
* Update pydantic/main.py
Co-Authored-By: dgasmith <dgasmith@icloud.com>
* Update pydantic/main.py
Co-Authored-By: dgasmith <dgasmith@icloud.com>
* Update HISTORY.rst
Co-Authored-By: dgasmith <dgasmith@icloud.com>
* Cleanup pass based off review
* Simplifies constructors based on feedback
* Makes mypy happy with exlicit KeysView
* SetOrKeys and faster key search
* Formats files once more
* add tests for dict, pickle and construct
* fixes for dict, pickle and construct
* correct field_set for extra.ignore
* Fixes format
* add type hints, fix#372
* fix tests and BaseModel inference
* fix#280
* fix dataclasses and docs
* more typing
* adding hints to fields.py
* type **EVERTHING*
* fix for 3.6
* small speed ups and some typ checks
* correct model.copy
* update history
deprecated `ignore_extra` and `allow_extra` Config fields in favor of `extra`, fix#352
* refaactored extra types to use a single enum
* slightly simplified
* added tests
* fixed most stuff
* docs and some simplifications
* better assert
* changed enum and fixed logic
* trying to capture deprecation warning
* make format
* fixing tests and moving exta logic to __new__
* set_extra tests
* fox benchmarks
* formatting
* updated history
* docs
* added a negative tests
* reverted format changes
* format
* matched casing
* renamed values
* more fixes
* forgot values change
* another one
* weird stuff
* linting issue
* Update pydantic/main.py
Co-Authored-By: liiight <4374581+liiight@users.noreply.github.com>
fix#279
* Support typing.Callable validation.
* Add myself to HISTORY.
* Prove it works with just Callable.
* Document callable validator behavior.
* Support differences in typing module between py36 and py37.
* Remove callable filed from JSON schema with warning.
* Update pydantic/schema.py
Co-Authored-By: proofit404 <proofit404@gmail.com>
* Update tests/test_callable.py
Co-Authored-By: proofit404 <proofit404@gmail.com>
* Update pydantic/validators.py
Co-Authored-By: proofit404 <proofit404@gmail.com>
* Update tests/test_callable.py
Co-Authored-By: proofit404 <proofit404@gmail.com>
* Move callables to the exotic types.
* Move Callable type choice to the import time.
* Move is_callable_type to the utils module.
* Raise warning at skip except.
* Update pydantic/schema.py
Co-Authored-By: proofit404 <proofit404@gmail.com>
* Update docs/index.rst
Co-Authored-By: proofit404 <proofit404@gmail.com>
* Update pydantic/schema.py
Co-Authored-By: proofit404 <proofit404@gmail.com>
* uprev
* Update index.rst (#370)
* Update history.rst
* Make the example a little more concise.
* Use callable import from the utils.
* Remove blank line.
* Remove duplication comments.
* fix history
* support postponed annotations in python 3.7
* support for full ForwardRef
* tweak update_forward_refs
* better ForwardRef resolution
* remove debug, fix linting
* fix comments
* docs and history
* Add support for passing Configs to Dataclasses
* formatting and fixes
* move tests into dataclasses_config.py
* use inherit_config in create_model
fix#276
* Add section "Based on Pydantic" with FastAPI
* Update History
* Update Third-Party libraries section, based on the style of AIOHTTP
* Remove release History details
* 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
* 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
* 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
* 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