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
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