* Add ability to read secrets from files
* Added docs and updated tests to handle new _build_values argument
* Updated docs to note which types are loaded
* Updated deep_update to take a list of update mappings
* Added warning when fields are not defined as a secret type
* Address additional PR feedback
* improve documentation
* remove redundant UserWarning lines
* allow any field type, not just SecretStr
* regex escape paths in windows 😴
* skip tests on windows 😧🔫
Co-authored-by: Samuel Colvin <s@muelcolvin.com>
Gentoo's Portage sets A during the test phase, switching to less common
environment variable names reduces the likelihood of something similar
happening.
* allow use of a `.env`-style files in BaseSettings (#607)
* address various issues with initial implementation
- allow specifying `_env_file` kwarg in instantiation
* overrides any `env_file` specified in the `Config` class
- cast `os.environ` as a dict for better consistenty of behavior
- `env_path` should be a `Path` type
- replace `with open()` with `read_text`
- use regex for parsing the dotenv files and throw error on invalid line
- factor out `read_env_file` into separate file for easier testing
* move back into a single file; revert typing changes; use regex better
* pass `_env_file` argument around instead of setting a class attribute
* add dotenv docs
* add dotenv tests
* Add changes file
* Flesh out the docs a bit
* Apply suggestions from @samuelcolvin's code review
Co-Authored-By: Samuel Colvin <samcolvin@gmail.com>
* wrap docs
* add not about priority
* fix tests and imports
* fix tests
* switch to python-dotenv
* cleanup, test example
* more docs tweaks
* typo
* fix tests for dotenv
Co-authored-by: Samuel Colvin <samcolvin@gmail.com>
* Merge init_kwargs with env variables recursively to handle nested values
This commit implements `deep_update` function that works as standard
`update` method on dicts, but also recursively updates all the nested
dict values. It allows splitting init arguments between environment
variables and in-code values, as long as they create a valid object
when merged together.
* Add entry to changes directory
* Fix CI/CD checks
* Make deep_copy not mutating, improve tests and type annotations
* rename Schema to Field
* add Schema function with deprecation warning
* mypy tests and other tweaks
* tweaks and cleanup
* Update pydantic/fields.py
Co-Authored-By: Sebastián Ramírez <tiangolo@gmail.com>
* 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
* Get rid of `track` in errors
* Move `display_as_type` func into utils module
* Get rid of error as `namedtuple`
* Renamed `Error.index` to `Error.loc`
* New way to get error type
* New way to get error message
* New errors format
* Renamed `flatten_errors` property to `flat_errors`
* `__slots__` for `Error` and `ValidationError`
* `loc` as `tuple`
* Tests
* Review fixes
* `flatten_errors` as generator