数据绑定
bindr的Python项目详细描述
活页夹
自动将字典数据绑定到命名元组和数据类中 用于在整个代码库的其余部分进行类型化属性访问。
frombindrimportbindfromtypingimportDict,List,NamedTuplefromyamlimportsafe_loadclassConfig(NamedTuple):classSMSServiceConfig(NamedTuple):host:strport:intusername:strpassword:strclassS3Config(NamedTuple):default_bucket:strdefault_region:strmax_item_size:intsupport_emails:List[str]api_key:strtimeout_ms:intpi:floatsms_providers:List[SMSServiceConfig]s3_settings:S3Configaccounts:Dict[str,str]config=bind(Config,safe_load("config.yaml"))config.s3_settings.max_item_size# <-- int
安装
粘合剂是在GitHub和 主持于PyPI。你可以拿活页夹 使用一个简单的:
pip install bindr为什么存在这种现象?
binder不是用来替代12Factor 方法论。有些特殊的案例你可能想读 在结构化文件(如json或yaml)中,并将其直接绑定到 应用程序配置之外的类型化对象(如 上面的例子)。实际上,应用程序配置创建为字典 (可能来自环境变量)仍然是绑定的有效用例 反对。
Bindr作为替代的自动绑定语法提供 通过PyYAML。默认的对象反序列化语法 在pyyaml中是一个泄漏的抽象。声明性数据格式,如yaml 不应关注对象如何反序列化的详细信息 在你的应用程序代码中。
通过binder生成的对象将为您提供可传递的类型化对象 由mypy进行验证,并在pycharm中暗示,这是一个明显的 访问多层嵌套字典的优势。
许可证
麻省理工学院许可证