def test_integration(self): os.environ["BOOL"] = "true" os.environ["BOOLSTRING"] = "\"false\"" os.environ["DICT"] = "{ \"dict\": \"value\", \"list-in-dict\": [ \"nested-list1\", \"nested-list2\" ] }" os.environ["FLOAT"] = "1.23" os.environ["INT"] = "123" os.environ["KEY"] = "value" os.environ["LIST"] = "[ \"list1\", \"list2\", { \"dict-in-list\": \"value\" } ]" os.environ["STRING_WITH_SPECIALS"] = "Test!@#$%^&*()-_=+[]{};:,<.>/?\\\'\"`~" os.environ["TUPLE"] = "(123, \"string\")" os.environ["COMPLEX"] = "1+2j" Pconf.env( whitelist=[ 'KEY', 'INT', 'FLOAT', 'COMPLEX', 'LIST', 'DICT', 'TUPLE', 'BOOL', 'BOOLSTRING', 'STRING_WITH_SPECIALS' ], parse_values=True, to_lower=True, convert_underscores=True ) config = Pconf.get() self.assertEqual(config, IntegrationBase.result)
def test_env_optional_params(self): separator = "separator" match = "match" whitelist = ["whitelist"] parse_values = True to_lower = True convert_underscores = True docker_secrets = ["secret_FILE"] Pconf.env( separator, match, whitelist, parse_values, to_lower, convert_underscores, docker_secrets, ) pconf.store.env.Env.assert_called_once_with( separator, match, whitelist, parse_values, to_lower, convert_underscores, docker_secrets, ) self.assertEqual(len(Pconf._Pconf__hierarchy), 1)
def test_env_get(self, mock_env): mocked_env = MagicMock() mocked_env.get.return_value = TEST_ENV_RESULT mock_env.return_value = mocked_env Pconf.env() results = Pconf.get() mocked_env.get.assert_called_once() for key in TEST_ENV_RESULT: self.assertTrue(key in results) self.assertEqual(results[key], TEST_ENV_RESULT[key])
def test_env_optional_params(self): separator = 'separator' match = 'match' whitelist = 'whitelist' parse_values = True to_lower = True convert_underscores = True Pconf.env(separator, match, whitelist, parse_values, to_lower, convert_underscores) pconf.store.env.Env.assert_called_once_with(separator, match, whitelist, parse_values, to_lower, convert_underscores) self.assertEqual(len(Pconf._Pconf__hierarchy), 1)
def test_backward(self, mock_file, mock_env): mocked_env = MagicMock() mocked_env.get.return_value = self.TEST_ENV_RESULT mock_env.return_value = mocked_env mocked_file = MagicMock() mocked_file.get.return_value = self.TEST_FILE_RESULT mock_file.return_value = mocked_file Pconf.file(self.TEST_FILE_PATH) Pconf.env() results = Pconf.get() expected = { "file": "result", "env": "result", "overlapping": "file", "deep": {"stillhere": "stillhere", "overlapping": "file"}, } self.assertEqual(expected, results)
def _init(self, logger): """Read the configuration data from files and profile""" if not self.is_init: if self.pconf_obj: self.pconf_obj.clear() Pconf.clear() Pconf.env() dir = self.get_dir() env_name = self.profile if (len(self.profile)) else os.getenv( 'PY_ENV', 'production') logger.debug('Configuration dir %s with env %s', dir, env_name) if path.isdir(dir): env_file = '' if env_name == 'production': env_file = '%s/production_config.json' % dir elif env_name == 'development': env_file = '%s/development_conf.json' % dir elif env_name == 'integration': env_file = '%s/integration_config.json' % dir elif env_name == 'test': env_file = '%s/test_config.json' % dir elif env_name == 'test_e2e': env_file = '%s/test_e2e_config.json' % dir else: raise ConfigLoadError('Unknown configuration profile: %s' % env_name) if not os.path.exists(env_file): raise ConfigLoadError('Missing configuration file: %s' % env_file) Pconf.file(env_file, encoding='json') base_cfg_file = '%s/config.json' % dir if not os.path.exists(base_cfg_file): raise ConfigLoadError('Missing configuration file: %s' % base_cfg_file) Pconf.file('%s/config.json' % dir, encoding='json') else: raise ConfigLoadError('Missing directory: %s' % dir) self.is_init = True self.pconf_obj = Pconf.get()
def test_integration(self): os.environ["BOOL"] = "true" os.environ["BOOLSTRING"] = '"false"' os.environ[ "DICT" ] = '{ "dict": "value", "list-in-dict": [ "nested-list1", "nested-list2" ] }' os.environ["FLOAT"] = "1.23" os.environ["INT"] = "123" os.environ["KEY"] = "value" os.environ["LIST"] = '[ "list1", "list2", { "dict-in-list": "value" } ]' os.environ["STRING_WITH_SPECIALS"] = "Test!@#$%^&*()-_=+[]{};:,<.>/?\\'\"`~" os.environ["TUPLE"] = '(123, "string")' os.environ["COMPLEX"] = "1+2j" os.environ["SECRET_FILE"] = "./tests/integration/example_secret" Pconf.env( whitelist=[ "KEY", "INT", "FLOAT", "COMPLEX", "LIST", "DICT", "TUPLE", "BOOL", "BOOLSTRING", "STRING_WITH_SPECIALS", "SECRET_FILE", ], parse_values=True, to_lower=True, convert_underscores=True, docker_secrets=["SECRET_FILE"], ) config = Pconf.get() self.assertEqual(config, IntegrationBase.result)
def test_backward(self, mock_file, mock_env): mocked_env = MagicMock() mocked_env.get.return_value = self.TEST_ENV_RESULT mock_env.return_value = mocked_env mocked_file = MagicMock() mocked_file.get.return_value = self.TEST_FILE_RESULT mock_file.return_value = mocked_file Pconf.file(self.TEST_FILE_PATH) Pconf.env() results = Pconf.get() expected = { 'file': 'result', 'env': 'result', 'overlapping': 'file', 'deep': { 'stillhere': 'stillhere', 'overlapping': 'file' } } self.assertEqual(expected, results)
def test_env(self): Pconf.env() pconf.store.env.Env.assert_called_once_with(None, None, None, None, None, None, None) self.assertEqual(len(Pconf._Pconf__hierarchy), 1)
with app.app_context(): text_msg = "今天拉萨的天气。" predict_result = model.parse([text_msg]) print(predict_result) if "gunicorn" in sys.modules: # when called by gunicorn in production environment # disable output log to console import logging log = logging.getLogger("werkzeug") log.disabled = True Pconf.env(whitelist=["MODEL_PATH"]) config = Pconf.get() deliverable_server = load_model(config["MODEL_PATH"]) if __name__ == "__main__": deliverable_server = load_model(sys.argv[1]) warmup_test() threaded = True # set threaded to false because keras based models are not thread safety when prediction # if deliverable_server.model_metadata["model"]["type"] in [ # "keras_h5_model", # "keras_saved_model", # ]:
from datetime import date from dateutil.parser import isoparse from dateutil.relativedelta import relativedelta from jira import JIRA from pconf import Pconf import re Pconf.env(match="^JIRA_.*", docker_secrets=["JIRA_PASSWORD_FILE"], to_lower=True, convert_underscores=True) Pconf.defaults({ "jira-template-type": "Template Task", "jira-target-type": "Task", "jira-project-key": "DAILY", "jira-created-state": "Backlog", "jira-done-state": "Done", "jira-field-name": "Repeat" }) config = Pconf.get() jira = JIRA(config["jira-url"], basic_auth=(config["jira-user"], config["jira-password"])) def has_open_clone(template, status): jql = 'project = {} AND type = "{}" AND issueLinkType = clones AND issuekey in linkedIssues("{}") AND status = "{}"' clones = jira.search_issues( jql.format(config["jira-project-key"], config["jira-target-type"], template.key, status))
"""Application Config""" import os from pconf import Pconf DIR_PATH = os.path.dirname(os.path.realpath(__file__)) Pconf.defaults({ 'bot-move-topic-name': 'bot-move', "bot-speak-topic-name": 'bot-speak', "bot-cam-topic-name": 'cam-command' }) localpath = os.path.join(DIR_PATH, 'dev.json').format() Pconf.file(localpath, encoding='json') Pconf.env() CONFIG = Pconf.get() MQTT_HOST = CONFIG.get("mqtt-host", '') MQTT_USER = CONFIG.get("mqtt-user", '') MQTT_PWD = CONFIG.get("mqtt-pwd", '') MQTT_PORT = int(CONFIG.get("mqtt-port", -1)) MQTT_MOTOR_MOVE_TOPIC_NAME = CONFIG.get("bot-move-topic-name", '') MQTT_SPEAK_TOPIC_NAME = CONFIG.get("bot-speak-topic-name", '') MQTT_CAM_TOPIC_NAME = CONFIG.get("bot-cam-topic-name", '') WEB_PORT = int(CONFIG.get("PORT", 5000))