diff --git a/Pipfile b/Pipfile index a91cb7b..d44347e 100644 --- a/Pipfile +++ b/Pipfile @@ -12,7 +12,7 @@ anyconfig = ">=0.9.8" swagger-ui-bundle = ">=0.0.2" connexion = {extras = ["swagger-ui"],version = ">=2.2.0"} flask-opentracing = "==0.2.0" -tornado = "==5.1.1" +tornado = "==4.5.3" [dev-packages] requests-mock = "*" @@ -24,3 +24,6 @@ tox = "*" [requires] python_version = "3.6" + +[pipenv] +allow_prereleases = true diff --git a/Pipfile.lock b/Pipfile.lock index 83e6890..5814d25 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "0f3a052966b08ba37e4f29496d5939461913f4209665f0e3339ade6fe3c13be8" + "sha256": "1db563ad8f2c822797ba95ecb7f3483d3352b2a82e699ed1b719fa4174088f1f" }, "pipfile-spec": 6, "requires": { @@ -200,12 +200,12 @@ }, "swagger-ui-bundle": { "hashes": [ - "sha256:98a418585f62e5e1193cb0f8000292bcb01e6a33bc39e5ba95b642172ef2664e", - "sha256:dfb9522f9b501db042358b3f6e86b644cc5dd083e162d9b77c7e6b64aeb9a8fe", - "sha256:e23abfae8fd775428a5b0e61214a04646299c61e31d1e46536448a3a04400cb6" + "sha256:0009f3cb6e60b36a57a595eabbff79ecb364c44e0cdf718667d90a93265f2cf2", + "sha256:c7947ebf03632426b64082f85cb9857e42d4a57075ee962be6f0ec6f32ffe8ec", + "sha256:ce6a4f9af1e38ce2e5eace4cc3d4805aa05ea40881b7b57b1efab8c1d2bf3afd" ], "index": "pypi", - "version": "==0.0.2" + "version": "==0.0.3" }, "threadloop": { "hashes": [ @@ -228,6 +228,7 @@ "sha256:ab587996fe6fb9ce65abfda440f9b61e4f9f2cf921967723540679176915e4c3", "sha256:b36298e9f63f18cad97378db2222c0e0ca6a55f6304e605515e05a25483ed51a" ], + "index": "pypi", "version": "==4.5.3" }, "urllib3": { @@ -248,10 +249,10 @@ "develop": { "astroid": { "hashes": [ - "sha256:35b032003d6a863f5dcd7ec11abd5cd5893428beaa31ab164982403bcb311f22", - "sha256:6a5d668d7dc69110de01cdf7aeec69a679ef486862a0850cc0fd5571505b6b7e" + "sha256:7f5a9f32ba7acd09c3c437946a9fc779494fc4dc6110958fe440dda30ffa4db0", + "sha256:dd357d91d582bc775ad635ac6c35e0a5d305678650df23bd6b20138429b9765d" ], - "version": "==2.1.0" + "version": "==2.2.0.dev0" }, "certifi": { "hashes": [ @@ -405,11 +406,11 @@ }, "pylint": { "hashes": [ - "sha256:689de29ae747642ab230c6d37be2b969bf75663176658851f456619aacf27492", - "sha256:771467c434d0d9f081741fec1d64dfb011ed26e65e12a28fe06ca2f61c4d556c" + "sha256:257543f54ebeb964bfc503741ac35748ef8993a36ca8c93f5a7bccb1b4d5fa62", + "sha256:53d04fea752a4edcdd814146e78cca724036491434ff924333514ec51014aecf" ], "index": "pypi", - "version": "==2.2.2" + "version": "==2.3.0.dev0" }, "requests": { "hashes": [ @@ -450,30 +451,32 @@ }, "typed-ast": { "hashes": [ - "sha256:023625bfa9359e29bd6e24cac2a4503495b49761d48a5f1e38333fc4ac4d93fe", - "sha256:07591f7a5fdff50e2e566c4c1e9df545c75d21e27d98d18cb405727ed0ef329c", - "sha256:153e526b0f4ffbfada72d0bb5ffe8574ba02803d2f3a9c605c8cf99dfedd72a2", - "sha256:3ad2bdcd46a4a1518d7376e9f5016d17718a9ed3c6a3f09203d832f6c165de4a", - "sha256:3ea98c84df53ada97ee1c5159bb3bc784bd734231235a1ede14c8ae0775049f7", - "sha256:51a7141ccd076fa561af107cfb7a8b6d06a008d92451a1ac7e73149d18e9a827", - "sha256:52c93cd10e6c24e7ac97e8615da9f224fd75c61770515cb323316c30830ddb33", - "sha256:6344c84baeda3d7b33e157f0b292e4dd53d05ddb57a63f738178c01cac4635c9", - "sha256:64699ca1b3bd5070bdeb043e6d43bc1d0cebe08008548f4a6bee782b0ecce032", - "sha256:74903f2e56bbffe29282ef8a5487d207d10be0f8513b41aff787d954a4cf91c9", - "sha256:7891710dba83c29ee2bd51ecaa82f60f6bede40271af781110c08be134207bf2", - "sha256:91976c56224e26c256a0de0f76d2004ab885a29423737684b4f7ebdd2f46dde2", - "sha256:9bad678a576ecc71f25eba9f1e3fd8d01c28c12a2834850b458428b3e855f062", - "sha256:b4726339a4c180a8b6ad9d8b50d2b6dc247e1b79b38fe2290549c98e82e4fd15", - "sha256:ba36f6aa3f8933edf94ea35826daf92cbb3ec248b89eccdc053d4a815d285357", - "sha256:bbc96bde544fd19e9ef168e4dfa5c3dfe704bfa78128fa76f361d64d6b0f731a", - "sha256:c0c927f1e44469056f7f2dada266c79b577da378bbde3f6d2ada726d131e4824", - "sha256:c0f9a3708008aa59f560fa1bd22385e05b79b8e38e0721a15a8402b089243442", - "sha256:f0bf6f36ff9c5643004171f11d2fdc745aa3953c5aacf2536a0685db9ceb3fb1", - "sha256:f5be39a0146be663cbf210a4d95c3c58b2d7df7b043c9047c5448e358f0550a2", - "sha256:fcd198bf19d9213e5cbf2cde2b9ef20a9856e716f76f9476157f90ae6de06cc6" + "sha256:0948004fa228ae071054f5208840a1e88747a357ec1101c17217bfe99b299d58", + "sha256:10703d3cec8dcd9eef5a630a04056bbc898abc19bac5691612acba7d1325b66d", + "sha256:1f6c4bd0bdc0f14246fd41262df7dfc018d65bb05f6e16390b7ea26ca454a291", + "sha256:25d8feefe27eb0303b73545416b13d108c6067b846b543738a25ff304824ed9a", + "sha256:29464a177d56e4e055b5f7b629935af7f49c196be47528cc94e0a7bf83fbc2b9", + "sha256:2e214b72168ea0275efd6c884b114ab42e316de3ffa125b267e732ed2abda892", + "sha256:3e0d5e48e3a23e9a4d1a9f698e32a542a4a288c871d33ed8df1b092a40f3a0f9", + "sha256:519425deca5c2b2bdac49f77b2c5625781abbaf9a809d727d3a5596b30bb4ded", + "sha256:57fe287f0cdd9ceaf69e7b71a2e94a24b5d268b35df251a88fef5cc241bf73aa", + "sha256:668d0cec391d9aed1c6a388b0d5b97cd22e6073eaa5fbaa6d2946603b4871efe", + "sha256:68ba70684990f59497680ff90d18e756a47bf4863c604098f10de9716b2c0bdd", + "sha256:6de012d2b166fe7a4cdf505eee3aaa12192f7ba365beeefaca4ec10e31241a85", + "sha256:79b91ebe5a28d349b6d0d323023350133e927b4de5b651a8aa2db69c761420c6", + "sha256:8550177fa5d4c1f09b5e5f524411c44633c80ec69b24e0e98906dd761941ca46", + "sha256:898f818399cafcdb93cbbe15fc83a33d05f18e29fb498ddc09b0214cdfc7cd51", + "sha256:94b091dc0f19291adcb279a108f5d38de2430411068b219f41b343c03b28fb1f", + "sha256:a26863198902cda15ab4503991e8cf1ca874219e0118cbf07c126bce7c4db129", + "sha256:a8034021801bc0440f2e027c354b4eafd95891b573e12ff0418dec385c76785c", + "sha256:bc978ac17468fe868ee589c795d06777f75496b1ed576d308002c8a5756fb9ea", + "sha256:c05b41bc1deade9f90ddc5d988fe506208019ebba9f2578c622516fd201f5863", + "sha256:c9b060bd1e5a26ab6e8267fd46fc9e02b54eb15fffb16d112d4c7b1c12987559", + "sha256:edb04bdd45bfd76c8292c4d9654568efaedf76fe78eb246dde69bdb13b2dad87", + "sha256:f19f2a4f547505fe9072e15f6f4ae714af51b5a681a97f187971f50c283193b6" ], "markers": "python_version < '3.7' and implementation_name == 'cpython'", - "version": "==1.2.0" + "version": "==1.1.0" }, "urllib3": { "hashes": [ @@ -491,9 +494,9 @@ }, "wrapt": { "hashes": [ - "sha256:e03f19f64d81d0a3099518ca26b04550026f131eced2e76ced7b85c6b8d32128" + "sha256:4aea003270831cceb8a90ff27c4031da6ead7ec1886023b80ce0dfe0adf61533" ], - "version": "==1.11.0" + "version": "==1.11.1" } } } diff --git a/examples/mininum_microservice_docker/main.py b/examples/mininum_microservice_docker/main.py index e8c99c1..0c7bf34 100644 --- a/examples/mininum_microservice_docker/main.py +++ b/examples/mininum_microservice_docker/main.py @@ -1,5 +1,5 @@ -import os from flask import jsonify + from pyms.flask.app import Microservice ms = Microservice(service="my-minimal-microservice", path=__file__) diff --git a/pyms/config/confile.py b/pyms/config/confile.py index d9219df..19d5abb 100644 --- a/pyms/config/confile.py +++ b/pyms/config/confile.py @@ -50,6 +50,11 @@ def normalize_keys(self, key): key = key.replace("-", "_") return key + def __eq__(self, other): + if not isinstance(other, ConfFile) and not isinstance(other, dict): + return False + return dict(self) == dict(other) + def __getattr__(self, name, *args, **kwargs): try: keys = self.normalize_keys(name).split(".") diff --git a/tests/tests_config.py b/tests/tests_config.py index 7af0596..d014ee3 100644 --- a/tests/tests_config.py +++ b/tests/tests_config.py @@ -3,7 +3,6 @@ import unittest from pyms.config.conf import Config - from pyms.config.confile import ConfFile from pyms.constants import CONFIGMAP_FILE_ENVIRONMENT, LOGGER_NAME from pyms.exceptions import AttrDoesNotExistException, ConfigDoesNotFoundException, ServiceDoesNotExistException @@ -48,6 +47,26 @@ def test_dictionary_recursive_dict_normal_key_dinamyc(self): config = ConfFile(config={"test-1": {"test-1-1": "a", "test_1-2": "b"}, "test_2": "c"}) self.assertEqual(getattr(config, "test_1.test_1_2"), "b") + def test_equal_instances_error(self): + config1 = ConfFile(config={"test-1": {"test-1-1": "a", "test_1-2": "b"}, "test_2": "c"}) + config2 = ConfFile(config={"test-1": {"test-1-1": "a", "test_1-2": "b"}}) + self.assertNotEqual(config1, config2) + + def test_equal_instances_error2(self): + config1 = ConfFile(config={"test-1": {"test-1-1": "a", "test_1-2": "b"}}) + config2 = {"test-1": {"test-1-1": "a", "test-1-2": "b"}} + self.assertNotEqual(config1, config2) + + def test_equal_instances_ok(self): + config1 = ConfFile(config={"test-1": {"test-1-1": "a", "test_1-2": "b"}}) + config2 = ConfFile(config={"test-1": {"test-1-1": "a", "test_1-2": "b"}}) + self.assertEqual(config1, config2) + + def test_equal_instances_ok2(self): + config1 = ConfFile(config={"test-1": {"test-1-1": "a", "test_1-2": "b"}}) + config2 = {"test_1": {"test_1_1": "a", "test_1_2": "b"}} + self.assertEqual(config1, config2) + def test_dictionary_attribute_not_exists(self): config = ConfFile(config={"test-1": "a"}) with self.assertRaises(AttrDoesNotExistException): @@ -98,3 +117,7 @@ def test_empty_conf_two_levels(self): def test_empty_conf_three_levels(self): config = ConfFile(empty_init=True) self.assertEqual(config.my_ms.level_two.level_three, {}) + + +if __name__ == '__main__': + unittest.main()