Skip to content

Commit

Permalink
Merge pull request #1213 from defuz/config-patch
Browse files Browse the repository at this point in the history
Add trim_namespace argument for app.config.get_namespace (with tests)
  • Loading branch information
untitaker committed Oct 25, 2014
2 parents 7b3e52b + 5e8d503 commit fe2d75e
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 2 deletions.
9 changes: 7 additions & 2 deletions flask/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ def from_mapping(self, *mapping, **kwargs):
self[key] = value
return True

def get_namespace(self, namespace, lowercase=True):
def get_namespace(self, namespace, lowercase=True, trim_namespace=True):
"""Returns a dictionary containing a subset of configuration options
that match the specified namespace/prefix. Example usage::
Expand All @@ -236,14 +236,19 @@ def get_namespace(self, namespace, lowercase=True):
:param namespace: a configuration namespace
:param lowercase: a flag indicating if the keys of the resulting
dictionary should be lowercase
:param trim_namespace: a flag indicating if the keys of the resulting
dictionary should not include the namespace
.. versionadded:: 1.0
"""
rv = {}
for k, v in iteritems(self):
if not k.startswith(namespace):
continue
key = k[len(namespace):]
if trim_namespace:
key = k[len(namespace):]
else:
key = k
if lowercase:
key = key.lower()
rv[key] = v
Expand Down
8 changes: 8 additions & 0 deletions tests/test_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -182,3 +182,11 @@ def test_get_namespace():
assert 2 == len(bar_options)
assert 'bar stuff 1' == bar_options['STUFF_1']
assert 'bar stuff 2' == bar_options['STUFF_2']
foo_options = app.config.get_namespace('FOO_', trim_namespace=False)
assert 2 == len(foo_options)
assert 'foo option 1' == foo_options['foo_option_1']
assert 'foo option 2' == foo_options['foo_option_2']
bar_options = app.config.get_namespace('BAR_', lowercase=False, trim_namespace=False)
assert 2 == len(bar_options)
assert 'bar stuff 1' == bar_options['BAR_STUFF_1']
assert 'bar stuff 2' == bar_options['BAR_STUFF_2']

0 comments on commit fe2d75e

Please sign in to comment.