diff --git a/.travis.yml b/.travis.yml index 60899cc..4d9d3c3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,10 +6,12 @@ python: - 3.8 before_install: -- pip install poetry +- curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py > /tmp/get-poetry.py +- python /tmp/get-poetry.py --preview --yes +- source $HOME/.poetry/env install: -- poetry install -E yaml -E toml -E azure -E aws +- poetry install -E yaml -E toml -E azure -E aws -E gcp script: - poetry run pytest diff --git a/config/configuration.py b/config/configuration.py index 77e0ffd..ec0b485 100644 --- a/config/configuration.py +++ b/config/configuration.py @@ -3,6 +3,7 @@ import base64 from contextlib import contextmanager from copy import deepcopy +from sys import version_info from typing import ( Any, Dict, @@ -27,6 +28,9 @@ interpolate_object, ) +if version_info < (3, 8): + from collections import OrderedDict + class Configuration: """ @@ -299,7 +303,10 @@ def __iter__(self) -> Iterator[Tuple[str, Any]]: # noqa: D105 return iter(dict(self.items())) # type: ignore def __reversed__(self) -> Iterator[Tuple[str, Any]]: # noqa: D105 - return reversed(dict(self.items())) # type: ignore + if version_info < (3, 8): + return OrderedDict(reversed(list(self.items()))) # type: ignore + else: + return reversed(dict(self.items())) # type: ignore def __len__(self) -> int: # noqa: D105 return len(self.keys()) diff --git a/tests/test_interpolation.py b/tests/test_interpolation.py index 65bb18e..238eaaf 100644 --- a/tests/test_interpolation.py +++ b/tests/test_interpolation.py @@ -46,7 +46,10 @@ def test_interpolation(): # type: ignore assert cfg.var1 == "This is a test" cfg = config_from_dict( - VALUES, lowercase_keys=True, interpolate=True, interpolate_type="unknown", + VALUES, + lowercase_keys=True, + interpolate=True, + interpolate_type="unknown", ) with raises(ValueError, match='Invalid interpolation method "unknown"'):