Python包,用于存储您的应用程序设置。验证器已内置!
此版本被撤回的原因
未维护。请考虑使用https://pypi.ac.cn/project/pydantic-settings/
项目描述
pysettings
Pysettings是一个Python包,用于存储您的应用程序设置。与一些设置管理器相比,此包受到了Django Rest Frameworks验证器的启发,您可以在事先验证用户输入。
这简化了您的代码,因为设置不需要在您的应用程序逻辑中进行验证。提供的功能包括
- 在不使用全局对象的情况下存储应用程序设置。
- 使用
BaseSettings
类扩展设置。生成的类可以使用settings.is_valid()
方法进行验证。 - 字段由接受
validators
作为参数的Option
字段表示。如果选项未由用户设置,则可以设置一个default
值。 - 开箱即用的验证器:
not_null
,is_https_url
。 - 可以添加自定义验证器作为函数。
需求
- Python 3.7+
入门指南
pysettings
在PyPI上可用
$ pip install pysettings-validator
创建您的设置
from pysettings.base import BaseSettings
from pysettings.options import Option
from pysettings.validators import is_https_url
# Class definition
class Settings(BaseSettings):
url = Option(validators=[is_https_url])
description = Option()
# Use settings in your application
settings = Settings()
settings.url = "https://example.com"
settings.description = "A shiny Website!"
settings.is_valid() # returns (True, [])
设置API
settings
实例不允许设置未定义为Option
的属性。如果您尝试设置一个未定义的设置,将引发一个OptionNotAvailable
异常
class Settings(BaseSettings):
description = Option()
# Use settings in your application
settings = Settings()
settings.url = "https://example.com" # raise `OptionNotAvailable`
is_valid()
提供了一个raise_exception=True
关键字参数,以便您可以在代码中不引发异常
class Settings(BaseSettings):
url = Option(validators=[is_https_url])
# Use settings in your application
settings = Settings()
settings.url = "http://example.com"
settings.is_valid() # raise ConfigNotValid exception
settings.is_valid(raise_exception=False) # return (False, [{'url': [{'is_https_url': 'The schema must be HTTPS'}]}])
创建自定义验证器
# app/validators.py
from pysettings.exceptions import ValidationError
def is_a_boolean(value):
if isinstance(value, bool):
return True
else:
raise ValidationError("The value must a Boolean")
# app/settings.py
from .validators import is_a_boolean
class Settings(BaseSettings):
dry_run = Option(validators=[is_a_boolean])
description = Option()
# app/main.py
settings = Settings()
settings.dry_run = "Yes"
settings.description = "Dry run mode!"
settings.is_valid() # raises ConfigNotValid exception
测试您的设置(pytest)
如果您需要在测试期间更改某些设置,您可以使用以下代码片段在每个测试后恢复先前的设置
# tests/conftest.py
from app.config import settings as app_settings # Import your global settings
from pysettings.test import SettingsWrapper # Import settings wrapper
@pytest.fixture(scope="function")
def settings():
wrapper = SettingsWrapper(app_settings)
# (Optional) Include test overrides
wrapper.DATABASE_URL = "sqlite://"
yield wrapper
# Restore original settings
wrapper.finalize()
# tests/test_settings.py
def test_settings(settings):
# Change settings for this test only
settings.BATCH_SIZE = 100
# ... Test your code ...
开发
即使项目主要是为了个人需求设计的,我们仍然接受外部贡献。如果您认为某些部分可以通过更通用的接口进行暴露,请随时在GitHub上创建一个issue并讨论您的建议。
编码规范
我们使用flake8作为风格指南的执行工具。但说也罢了,我们也使用black来重排我们的代码,即使是引号、多行块等其他部分也能保持良好的风格。在提交代码之前,请确保运行black
来重排您的PR。
测试
tox
用于执行以下测试矩阵:
lint
:启动flake8
和black --check
以确保代码遵循我们的风格规范py{3.7,3.8,3.9,3.10,3.11}
:启动py.test
以在不同的Python版本上执行测试。
要启动完整的测试矩阵,只需
$ tox
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。
源代码分发
pysettings-validator-0.4.0.tar.gz (11.9 kB 查看哈希值)
构建分发
关闭
pysettings-validator-0.4.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 00602a25c36fe5be2dd30f96ee7ac7f9a4d09453aca2e2ae9d1f292d51427938 |
|
MD5 | 94a4289e56e4c10ffff8c7ab0ea68816 |
|
BLAKE2b-256 | 63a7b21a910c15e9c0296d01283d5520d1f544519a83ce1e2e345126a57e5639 |
关闭
pysettings_validator-0.4.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1b20dd0f1e306f3215332450dd454d0fd4bf9e0878ddd71e0240766cc4d90bff |
|
MD5 | caec22ef7b6c174c3fb0ba5bf26b4f6f |
|
BLAKE2b-256 | 6c16c81af0c8c8000ab687cda5c90ea324a155bfd54822625e75d4a583d3b717 |