diff --git a/envparse.py b/envparse.py index e13b584..5591469 100644 --- a/envparse.py +++ b/envparse.py @@ -84,6 +84,10 @@ def __call__(self, var, default=NOTSET, cast=None, subcast=None, subcast = params.get('subcast', subcast) if default == NOTSET: default = params.get('default', default) + if preprocessor is None: + preprocessor = params.get('preprocessor', preprocessor) + if postprocessor is None: + postprocessor = params.get('postprocessor', postprocessor) else: if cast is None: cast = params diff --git a/tests/test_casts.py b/tests/test_casts.py index ecb6bd8..071741d 100644 --- a/tests/test_casts.py +++ b/tests/test_casts.py @@ -123,6 +123,20 @@ def test_preprocessor(): assert_type_value(str, 'FOO', env('STR', preprocessor=lambda v: v.upper())) +def test_dict_preprocessor(monkeypatch): + + monkeypatch.setenv('TEST', 'test_case') + e = Env(TEST=dict(cast=str, preprocessor=lambda x: x.upper())) + + assert_type_value(str, 'TEST_CASE', e('TEST')) + +def test_dict_postprocessor(monkeypatch): + + monkeypatch.setenv('TEST', 'test') + e = Env(TEST=dict(cast=str, postprocessor=lambda x: x + "_case")) + + assert_type_value(str, 'test_case', e('TEST')) + def test_postprocessor(monkeypatch): """