def test_build_list_of_type_not_a_list(self): validator = validation.build_list_type_validator( validation.validate_any) assert_raises_and_contains( errors.ValidationError, 'Invalid iterable', validator, None)
def test_build_list_of_type_ints_success(self): validator = validation.build_list_type_validator( validation.validate_int) assert_equal(validator(['0', '1', '2']), [0, 1, 2])
def test_build_list_of_type_float_failed(self): validator = validation.build_list_type_validator( validation.validate_float) assert_raises_and_contains( errors.ValidationError, 'Invalid float: a', validator, ['0.1', 'a'])
def test_build_list_of_type_empty_list(self): validator = validation.build_list_type_validator( validation.validate_string) assert_equal(validator([]), [])
def test_build_list_of_type_ints_success(self): validator = validation.build_list_type_validator( validation.validate_int) expected = range(3) assert_equal(validator(['0', '1','2']), expected)
def get_all_accessors(name_factory): for name, validator in validation.get_validators(): yield name_factory.get_name(name), validator yield (name_factory.get_list_of_name(name), validation.build_list_type_validator(validator))
def test_build_list_of_type_float_failed(self): validator = validation.build_list_type_validator( validation.validate_float) assert_raises_and_contains(errors.ValidationError, 'Invalid float: a', validator, ['0.1', 'a'])
def test_build_list_of_type_empty_list(self): validator = validation.build_list_type_validator( validation.validate_string) assert_equal(validator([]), [])
def test_build_list_of_type_not_a_list(self): validator = validation.build_list_type_validator( validation.validate_any) assert_raises_and_contains(errors.ValidationError, 'Invalid iterable', validator, None)
def test_build_list_of_type_ints_success(self): validator = validation.build_list_type_validator( validation.validate_int) assert_equal(validator(['0', '1', '2']), [0, 1, 2])
def test_build_list_of_type_ints_success(self): validator = validation.build_list_type_validator( validation.validate_int) expected = range(3) assert_equal(validator(['0', '1', '2']), expected)
def get_all_accessors(name_factory): for name, validator in validation.get_validators(): yield name_factory.get_name(name), validator yield (name_factory.get_list_of_name(name), validation.build_list_type_validator(validator))
def build_attr(name, attribute): if not isinstance(attribute, ValueTypeDefinition): return name, attribute return build_token(name, attribute) attributes = dict(build_attr(*item) for item in attributes.iteritems()) attributes['_tokens'] = tokens return attributes class Schema(object): __metaclass__ = SchemaMeta namespace = None def build_value_type(validator): return functools.partial(ValueTypeDefinition, validator) # Backwards compatible with staticconf 0.5.2 create_value_type = build_value_type for name, validator in validation.get_validators(): name = name or 'any' globals()[name] = build_value_type(validator) list_of_validator = validation.build_list_type_validator(validator) globals()['list_of_%s' % name] = build_value_type(list_of_validator)
attributes = dict( build_attr(*item) for item in six.iteritems(attributes)) attributes['_tokens'] = tokens return attributes @six.add_metaclass(SchemaMeta) class Schema(object): """Base class for configuration schemas, uses :class:`SchemaMeta`.""" namespace = None def build_value_type(validator): """A factory function to create a new schema type. :param validator: a function which accepts one argument and returns that value as the correct type. """ return functools.partial(ValueTypeDefinition, validator) # Backwards compatible with staticconf 0.5.2 create_value_type = build_value_type for name, validator in validation.get_validators(): name = name or 'any' globals()[name] = build_value_type(validator) list_of_validator = validation.build_list_type_validator(validator) globals()['list_of_%s' % name] = build_value_type(list_of_validator)
# TODO:make staticconf.Schema accept a path argument class FeedConfig(object): def __init__(self, config_dict): self.config = config_dict def __getattr__(self, name): return self.config[name] def validate_feed_config(value): return FeedConfig(value) get_feed_config = getters.build_getter( validation.build_list_type_validator(validate_feed_config)) def setup_logging(verbose=True): fmt = "%(asctime)s %(levelname)7s %(name)s %(message)s" level = logging.INFO if verbose else logging.WARN logging.basicConfig(stream=sys.stdout, level=level, format=fmt) def get_app(api_key): cloud = heroku.from_key(api_key) return cloud.apps[app_name] def load_app_config(api_key=None): app = get_app(api_key or os.environ.get('HEROKU_API_KEY'))