mirror of
https://github.com/kennethreitz/pydantic.git
synced 2026-06-05 23:00:18 +00:00
7eaa582980
* Add RabbitmqDsn Will update once finished - haven't looked at the CONTRIB yet. Want to test locally to see if it works. * added tests; added to docs * added changes * fixed import in networks.py * fixed linting issues; fixed __init__.py import issue * sorted imports * added trailing comma on imports * Merge master * Change class name from RabbitmqDsn to RabbitMqDsn * Format code * Rename change file and prettify content * Fix RabbitMQ name on documentation * Add a trivial test * Address Samuel and Nuno's comments * Refactor AMQP tests according to Redis tests style * Update docs/examples/settings_main.py * cleanup Co-authored-by: Thomas <thomas@9bitbyte.com> Co-authored-by: Thomas Crha <tom.crha@dragonflytechnologies.com> Co-authored-by: Samuel Colvin <s@muelcolvin.com>
50 lines
1.1 KiB
Python
50 lines
1.1 KiB
Python
from typing import Set
|
|
|
|
from pydantic import (
|
|
BaseModel,
|
|
BaseSettings,
|
|
PyObject,
|
|
RedisDsn,
|
|
PostgresDsn,
|
|
AmqpDsn,
|
|
Field,
|
|
)
|
|
|
|
|
|
class SubModel(BaseModel):
|
|
foo = 'bar'
|
|
apple = 1
|
|
|
|
|
|
class Settings(BaseSettings):
|
|
auth_key: str
|
|
api_key: str = Field(..., env='my_api_key')
|
|
|
|
redis_dsn: RedisDsn = 'redis://user:pass@localhost:6379/1'
|
|
pg_dsn: PostgresDsn = 'postgres://user:pass@localhost:5432/foobar'
|
|
amqp_dsn: AmqpDsn = 'amqp://user:pass@localhost:5672/'
|
|
|
|
special_function: PyObject = 'math.cos'
|
|
|
|
# to override domains:
|
|
# export my_prefix_domains='["foo.com", "bar.com"]'
|
|
domains: Set[str] = set()
|
|
|
|
# to override more_settings:
|
|
# export my_prefix_more_settings='{"foo": "x", "apple": 1}'
|
|
more_settings: SubModel = SubModel()
|
|
|
|
class Config:
|
|
env_prefix = 'my_prefix_' # defaults to no prefix, i.e. ""
|
|
fields = {
|
|
'auth_key': {
|
|
'env': 'my_auth_key',
|
|
},
|
|
'redis_dsn': {
|
|
'env': ['service_redis_dsn', 'redis_url']
|
|
}
|
|
}
|
|
|
|
|
|
print(Settings().dict())
|