高效的python环境变量管理和输入。

rhea的Python项目详细描述


License: MITBuild StatusPyPI versionCodacy BadgeSlack

RHEA

高效的python环境变量管理和输入。

安装

pip install -U rhea

功能

  • 环境变量的类型化检索。
  • 处理可选、机密和局部变量。
  • 从不同来源读取:os、json文件、yaml文件。
  • 已分析参数的集合。

用法

从参数读取类型化值

fromrheaimportRhearhea_config=Rhea(bool_value1='1',bool_value2='false',bool_value3=True)rhea_config.get_boolean('bool_value1')# Truerhea_config.get_boolean('bool_value2')# Falserhea_config.get_boolean('bool_value3')# True

从env vars中读取类型化值

importosfromrheaimportRhearhea_config=Rhea.read_configs(os.environ)

从不同来源读取键入的值

importosfromrheaimportRhearhea_config=Rhea.read_configs([os.environ,'json_file.json','yaml_file.yaml','another_file_override.json',{'foo':'bar'}])

基本类型

示例:

BOOL_ENV_VALUE1: 1
BOOL_ENV_VALUE2: true
BOOL_ENV_VALUE3: f
BOOL_ENV_VALUE4: on

INT_ENV_VALUE1: '1' 
INT_ENV_VALUE2: -100

STRING_ENV_VALUE: 'some string'

FLOAT_ENV_VALUE1: '1.1'
FLOAT_ENV_VALUE2: -1.3
FLOAT_ENV_VALUE3: 1111.1
FLOAT_ENV_VALUE4: -33

DICT_ENV_VALUE: {"foo": "bar", "1": "2"}

LIST_ENV_VALUE: 'foo, bar, boo'

URI_ENV_VALUE1: user:pass@host.com
URI_ENV_VALUE2: user:pass@host:4000

AUTH_ENV_VALUE: user:pass

阅读:

fromrheaimportRhearhea_config=Rhea.read_configs([...])rhea_config.get_boolean('BOOL_ENV_VALUE1')# Truerhea_config.get_boolean('BOOL_ENV_VALUE2')# Truerhea_config.get_boolean('BOOL_ENV_VALUE3')# Falserhea_config.get_boolean('BOOL_ENV_VALUE4')# Truerhea_config.get_int('INT_ENV_VALUE1')# 1rhea_config.get_int('INT_ENV_VALUE2')# -100rhea_config.get_string('STRING_ENV_VALUE')# some stringrhea_config.get_float('FLOAT_ENV_VALUE1')# 1.1rhea_config.get_float('FLOAT_ENV_VALUE1')# -1.3rhea_config.get_float('FLOAT_ENV_VALUE1')# 1111.1rhea_config.get_float('FLOAT_ENV_VALUE1')# -33.0rhea_config.get_dict('DICT_ENV_VALUE')# {'foo': 'bar', '1': '2'}rhea_config.get_list('LIST_ENV_VALUE')# ['foo', 'bar', 'boo']rhea_config.get_uri('URI_ENV_VALUE1')# UriSpec('user', 'pass', 'host')rhea_config.get_uri('URI_ENV_VALUE2')# UriSpec('user', 'pass', 'host:4000')rhea_config.get_uri('AUTH_ENV_VALUE')# AuthSpec('user', 'pass')

基类型列表

示例:

BOOLS_ENV_VALUE: '[1, 0, "true", "false", "t", "f", "on", "off"]'
INTS_ENV_VALUE: '[1, 0, -100]'
STRINGS_ENV_VALUE: '["some_string", "another_string"]'
FLOATS_ENV_VALUE: '[1.1, -1.3, 0.03, 1111.1, 1.]'
DICTS_ENV_VALUE: '[{"foo": "bar", "1": 2}, {"foo": "bar", "1": 2}]'
DICT_OF_DICTS_ENV_VALUE: '{"key1": {"foo": "bar", "1": 2}, "key2": {"foo": "bar", "1": 2}}'
URIS_ENV_VALUE: '["user:pass@host.com", "user:pass@host:4000"]'
AUTHS_ENV_VALUE: '["user1:pass1", "user2:pass2"]'

阅读:

fromrheaimportRhearhea_config=Rhea.read_configs([...])rhea_config.get_boolean('BOOLS_ENV_VALUE',is_list=True)#  [True, False, True, False, True, False, True, False]rhea_config.get_int('INTS_ENV_VALUE',is_list=True)# [1, 0, -100]rhea_config.get_string('STRINGS_ENV_VALUE',is_list=True)# ['some_string', 'another_string']rhea_config.get_float('FLOATS_ENV_VALUE',is_list=True)# [1.1, -1.3, 0.03, 1111.1, 1.0]rhea_config.get_dict('DICTS_ENV_VALUE',is_list=True)# [{'foo1': 'bar1', '1': 2}, {'foo2': 'bar2', '3': 4}]rhea_config.get_dict_of_dicts('DICT_OF_DICTS_ENV_VALUE')# {'key1': {'foo': 'bar', '1': 2}, 'key2': {'foo': 'bar', '1': 2}}rhea_config.get_uri('URIS_ENV_VALUE',is_list=True)# [UriSpec('user', 'pass', 'host'), UriSpec('user', 'pass', 'host:4000')]rhea_config.get_uri('AUTHS_ENV_VALUE',is_list=True)# [UriSpec('user1', 'pass1'), UriSpec('user2', 'pass2')]

可选值和默认值

fromrheaimportRhearhea_config=Rhea.read_configs([...])rhea_config.get_boolean('BOOL_ENV_VALUE',is_optional=True)# Nonerhea_config.get_boolean('BOOL_ENV_VALUE',is_optional=True,default=True)# Truerhea_config.get_int('INT_ENV_VALUE',is_optional=True)# Nonerhea_config.get_int('INT_ENV_VALUE',is_optional=True,default=101)# 101rhea_config.get_float('FLOAT_ENV_VALUE',is_optional=True)# Nonerhea_config.get_float('FLOAT_ENV_VALUE',is_optional=True,default=-3.3)# -3.3rhea_config.get_float('STRING_ENV_VALUE',is_optional=True)# Nonerhea_config.get_float('STRING_ENV_VALUE',is_optional=True,default='default')# default

值验证

fromrheaimportRhearhea_config=Rhea.read_configs([...])# INT_ENV_VALUE = 11rhea_config.get_int('INT_ENV_VALUE',options=[1,2,3])# raise RheaErrorrhea_config.get_int('INT_ENV_VALUE',options=[1,2,3,11])# 11

分析数据

fromrheaimportRhearhea_config=Rhea.read_configs([...])rhea_config.get_requested_data(include_locals=False,include_secrets=False)# {'key1': 'value1', ...}

django的示例

fromrheaimportRhearhea_config=Rhea.read_configs([...])DEBUG=rhea_config.get_boolean('DJANGO_DEBUG_MODE',is_optional=True,default=False)SECRET_KEY=rhea_config.get_string('POLYAXON_SECRET_KEY',is_secret=True)

运行测试

pytest

许可证

FOSSA Status

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

推荐PyPI第三方库


热门话题
json到bson转换中的java性能问题   java设置一个内部接口。用于GUI的txt文件,并从中检索文本。txt文件   java Android系统GUI事件监听器   java此方法必须返回int类型的结果?   xmpp中无法识别java登录方法   java这个伞状异常的原因是什么   JAVA木卫一。IOException:无法删除原始文件   java找出循环依赖项的路径   排序java ArrayList合并排序   java使用StAX读取所有文本元素   java规则可能会被忽略   java如何在Arraylist中查找具有多个属性的对象?   java RecyclerView行在插入项目时闪烁/闪烁   java在表中选择行时更改文本框中的文本