数据绑定

bindr的Python项目详细描述


活页夹

PyPIpythonTravisCICoveralls githublicense

自动将字典数据绑定到命名元组和数据类中 用于在整个代码库的其余部分进行类型化属性访问。

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中暗示,这是一个明显的 访问多层嵌套字典的优势。

许可证

麻省理工学院许可证

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为什么当我推送更少的数据时堆栈会溢出?   JavaBridge。war+tomcat+phpcgi+glibc_2.7缺少库问题   java获取面板的gridbag约束   基于Web的java应用程序模拟远程处理PLC   默认情况下,javaf:ajax rendered=false   python解决此类问题的最佳方法是什么?(谷歌Foobar 3级)   java获取记录所在的mysql表的名称   java在添加Pulsar appender时收到log4j2的“未找到appender”错误   java子查询结果和一个HQL中的所有表字段   用于读取库代码中文件的java文件路径   bash Java执行命令行程序“find”返回错误   java Google Maps API v3:多方向请求需要不同的时间才能得到响应   java如何从片段引用适配器类中的子视图   java如何在两个活动之间更改主任务?   java AndroidFirebase api   java确定对象属性的数据类型