From 5263ba99d9c67684a93cefd2efb864e9a5327564 Mon Sep 17 00:00:00 2001 From: Gavin Ooi Date: Mon, 5 Oct 2020 22:18:24 +0800 Subject: [PATCH 1/2] Add mypy check to github actions --- .github/workflows/python-package.yml | 4 + Pipfile.lock | 196 ++++++++++++++++++++++----- setup.cfg | 5 +- setup.py | 3 +- 4 files changed, 169 insertions(+), 39 deletions(-) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 3105b94..80dba14 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -32,6 +32,10 @@ jobs: - name: Test with pytest run: | python setup.py test + - name: Run mypy + continue-on-error: true + run: | + mypy pyms - name: Lint with flake8 run: | # stop the build if there are Python syntax errors or undefined names diff --git a/Pipfile.lock b/Pipfile.lock index f585ade..24de97e 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -26,21 +26,22 @@ "sha256:26b54ddbbb9ee1d34d5d3668dd37d6cf74990ab23c828c2888dccdceee395594", "sha256:fce7fc47dfc976152e82d53ff92fa0407700c21acd20886a13777a0d20e655dc" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==20.2.0" }, "boto3": { "hashes": [ - "sha256:87534080a5addad135fcd631fa8b57a12e1a234c23d86521e84fbbd9217fd6a5", - "sha256:c4c84c6647e84a9f270d86da7eea1a250c2529e26ddb39320546f235327f10e6" + "sha256:5f3969dd167b787e5bc6742afbfe15e149051d8c6aa1edaa4858133384f64ec7", + "sha256:713da2b28e9e4cd77e922690c97935dd2316ab27635b6bab4745a2d42bd887ec" ], - "version": "==1.15.6" + "version": "==1.15.11" }, "botocore": { "hashes": [ - "sha256:31f04b68a6ebe8cfa97b4d70f54f29aef8b6a0bc9c4da7b8ee9b6a53fc69edae", - "sha256:3de32a03679bb172a41c38e3c9af3f7259f3637f705aa2ac384b3233dc985b85" + "sha256:1531ee5d7f7d0f0d9a12ea829ef046ac52063a1948409ae19a452a3f47a07937", + "sha256:a0514ba531148af26fe36bf75c73089698a5ed8ae150695b96e7cbdf32dd232b" ], - "version": "==1.18.6" + "version": "==1.18.11" }, "certifi": { "hashes": [ @@ -102,14 +103,15 @@ "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a", "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==7.1.2" }, "clickclick": { "hashes": [ - "sha256:4a890aaa9c3990cfabd446294eb34e3dc89701101ac7b41c1bff85fc210f6d23", - "sha256:ab8f229fb9906a86634bdfc6fabfc2b665f44804170720db4f6e1d98f8a58f3d" + "sha256:4efb13e62353e34c5eef7ed6582c4920b418d7dedc86d819e22ee089ba01802c", + "sha256:c8f33e6d9ec83f68416dd2136a7950125bd256ec39ccc9a85c6e280a16be2bb5" ], - "version": "==1.2.2" + "version": "==20.10.2" }, "connexion": { "extras": [ @@ -119,6 +121,7 @@ "sha256:1ccfac57d4bb7adf4295ba6f5e48f5a1f66057df6a0713417766c9b5235182ee", "sha256:5439e9659a89c4380d93a07acfbf3380d70be4130574de8881e5f0dfec7ad0e2" ], + "markers": "python_version >= '3.6'", "version": "==2.7.0" }, "contextlib2": { @@ -126,6 +129,7 @@ "sha256:01f490098c18b19d2bd5bb5dc445b2054d2fa97f09a4280ba2c5f3c394c8162e", "sha256:3355078a159fbb44ee60ea80abd0d87b80b78c248643b49aa6d94673b413609b" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==0.6.0.post1" }, "cryptography": { @@ -153,6 +157,7 @@ "sha256:f0e099fc4cc697450c3dd4031791559692dd941a95254cb9aeded66a7aa8b9bc", "sha256:f99317a0fa2e49917689b8cf977510addcfaaab769b3f899b9c481bbd76730c2" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==3.1.1" }, "flask": { @@ -160,6 +165,7 @@ "sha256:4efa1ae2d7c9865af48986de8aeb8504bf32c7f3d6fdc9353d34b21f4b127060", "sha256:8a4fdd8936eba2512e9c85df320a37e694c93945b33ef33c89946a340a238557" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==1.1.2" }, "flask-opentracing": { @@ -172,6 +178,7 @@ "hashes": [ "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d" ], + "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==0.18.2" }, "idna": { @@ -179,6 +186,7 @@ "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6", "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.10" }, "importlib-metadata": { @@ -194,6 +202,7 @@ "sha256:1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417", "sha256:f38b2b640938a4f35ade69ac3d053042959b62a0f1076a5bbaa1b9526605a8a2" ], + "markers": "python_version >= '3.5'", "version": "==0.5.1" }, "itsdangerous": { @@ -201,6 +210,7 @@ "sha256:321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19", "sha256:b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.1.0" }, "jaeger-client": { @@ -214,6 +224,7 @@ "sha256:89aab215427ef59c34ad58735269eb58b1a5808103067f7bb9d5836c651b3bb0", "sha256:f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==2.11.2" }, "jmespath": { @@ -221,6 +232,7 @@ "sha256:b85d0567b8666149a93172712e68920734333c0ce7e89b78b3e987f71e5ed4f9", "sha256:cdf6525904cc597730141d61b36f2e4b8ecc257c420fa2f4549bac2c2d0cb72f" ], + "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==0.10.0" }, "jsonschema": { @@ -266,6 +278,7 @@ "sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7", "sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.1.1" }, "openapi-spec-validator": { @@ -315,25 +328,37 @@ "sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0", "sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.20" }, "pyrsistent": { "hashes": [ "sha256:2e636185d9eb976a18a8a8e96efce62f2905fea90041958d8cc2a189756ebf3e" ], + "markers": "python_version >= '3.5'", "version": "==0.17.3" }, + "pytest-runner": { + "hashes": [ + "sha256:5534b08b133ef9a5e2c22c7886a8f8508c95bb0b0bdc6cc13214f269c3c70d51", + "sha256:96c7e73ead7b93e388c5d614770d2bae6526efd997757d3543fe17b557a0942b" + ], + "markers": "python_version >= '2.7'", + "version": "==5.2" + }, "python-dateutil": { "hashes": [ "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c", "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.8.1" }, "python-json-logger": { "hashes": [ "sha256:6c15023a8571200228472d4c9de7cb891cd45f670061f7729b8209bf643d5bbf" ], + "markers": "python_version >= '3.4'", "version": "==2.0.0" }, "pyyaml": { @@ -357,6 +382,7 @@ "sha256:b3559a131db72c33ee969480840fff4bb6dd111de7dd27c8ee1f820f4f00231b", "sha256:fe75cc94a9443b9246fc7049224f75604b113c36acb93f87b80ed42c44cbb898" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==2.24.0" }, "s3transfer": { @@ -371,6 +397,7 @@ "sha256:21e80ca738975ed513cba859db0a0d2faca2380aef1962f48272ebf9a8a44bd4", "sha256:c0a4a9d1e45557297a722ee9bac3de2ec2ea79016b6ffcaca609b0bc62cf4276" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.10.2" }, "six": { @@ -378,6 +405,7 @@ "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.15.0" }, "swagger-ui-bundle": { @@ -410,6 +438,7 @@ "sha256:d4b3e5329f572f055b587efc57d29bd051589fb5a43ec8898c77a47ec2fa2bbb", "sha256:e5f2585afccbff22390cddac29849df463b252b711aa2ce7c5f3f342a5b3b444" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==5.1.1" }, "urllib3": { @@ -425,6 +454,7 @@ "sha256:2de2a5db0baeae7b2d2664949077c2ac63fbd16d98da0ff71837f7d1dea3fd43", "sha256:6c80b1e5ad3665290ea39320b91e1be1e0d5f60652b964a3070216de83d2e47c" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==1.0.1" }, "wrapt": { @@ -435,10 +465,11 @@ }, "zipp": { "hashes": [ - "sha256:43f4fa8d8bb313e65d8323a3952ef8756bf40f9a5c3ea7334be23ee4ec8278b6", - "sha256:b52f22895f4cfce194bc8172f3819ee8de7540aa6d873535a8668b730b8b411f" + "sha256:64ad89efee774d1897a58607895d80789c59778ea02185dd846ac38394a8642b", + "sha256:eed8ec0b8d1416b2ca33516a37a08892442f3954dee131e92cfd92d8fe3e7066" ], - "version": "==3.2.0" + "markers": "python_version >= '3.6'", + "version": "==3.3.0" } }, "develop": { @@ -461,6 +492,7 @@ "sha256:2f4078c2a41bf377eea06d71c9d2ba4eb8f6b1af2135bec27bbbb7d8f12bb703", "sha256:bc58d83eb610252fd8de6363e39d4f1d0619c894b0ed24603b881c02e64c7386" ], + "markers": "python_version >= '3.5'", "version": "==2.4.2" }, "attrs": { @@ -468,6 +500,7 @@ "sha256:26b54ddbbb9ee1d34d5d3668dd37d6cf74990ab23c828c2888dccdceee395594", "sha256:fce7fc47dfc976152e82d53ff92fa0407700c21acd20886a13777a0d20e655dc" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==20.2.0" }, "bandit": { @@ -543,6 +576,7 @@ "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a", "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==7.1.2" }, "coverage": { @@ -582,6 +616,7 @@ "sha256:cedb2f9e1f990918ea061f28a0f0077a07702e3819602d3507e2ff98c8d20636", "sha256:e8caf961e1b1a945db76f1b5fa9c91498d15f545ac0ababbe575cfab185d3bd8" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", "version": "==5.3" }, "cryptography": { @@ -609,6 +644,7 @@ "sha256:f0e099fc4cc697450c3dd4031791559692dd941a95254cb9aeded66a7aa8b9bc", "sha256:f99317a0fa2e49917689b8cf977510addcfaaab769b3f899b9c481bbd76730c2" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==3.1.1" }, "distlib": { @@ -623,6 +659,7 @@ "sha256:a1b5f169102e1c894f9a7d5ccf6f9402a836a5d24be80a986c7ce9eaed78f367", "sha256:e953a25e44ebb60a5c6efc2add4420c177f1d8404509da88da9729202f306994" ], + "markers": "python_version >= '3.5'", "version": "==0.5.1" }, "filelock": { @@ -634,22 +671,25 @@ }, "flake8": { "hashes": [ - "sha256:15e351d19611c887e482fb960eae4d44845013cc142d42896e9862f775d8cf5c", - "sha256:f04b9fcbac03b0a3e58c0ab3a0ecc462e023a9faf046d57794184028123aa208" + "sha256:749dbbd6bfd0cf1318af27bf97a14e28e5ff548ef8e5b1566ccfb25a11e7c839", + "sha256:aadae8761ec651813c24be05c6f7b4680857ef6afaae4651a4eccaef97ce6c3b" ], - "version": "==3.8.3" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==3.8.4" }, "flask": { "hashes": [ "sha256:4efa1ae2d7c9865af48986de8aeb8504bf32c7f3d6fdc9353d34b21f4b127060", "sha256:8a4fdd8936eba2512e9c85df320a37e694c93945b33ef33c89946a340a238557" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==1.1.2" }, "future": { "hashes": [ "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d" ], + "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==0.18.2" }, "gitdb": { @@ -657,20 +697,23 @@ "sha256:91f36bfb1ab7949b3b40e23736db18231bf7593edada2ba5c3a174a7b23657ac", "sha256:c9e1f2d0db7ddb9a704c2a0217be31214e91a4fe1dea1efad19ae42ba0c285c9" ], + "markers": "python_version >= '3.4'", "version": "==4.0.5" }, "gitpython": { "hashes": [ - "sha256:080bf8e2cf1a2b907634761c2eaefbe83b69930c94c66ad11b65a8252959f912", - "sha256:1858f4fd089abe92ae465f01d5aaaf55e937eca565fb2c1fce35a51b5f85c910" + "sha256:138016d519bf4dd55b22c682c904ed2fd0235c3612b2f8f65ce218ff358deed8", + "sha256:a03f728b49ce9597a6655793207c6ab0da55519368ff5961e4a74ae475b9fa8e" ], - "version": "==3.1.8" + "markers": "python_version >= '3.4'", + "version": "==3.1.9" }, "googleapis-common-protos": { "hashes": [ "sha256:560716c807117394da12cecb0a54da5a451b5cf9866f1d37e9a5e2329a665351", "sha256:c8961760f5aad9a711d37b675be103e0cc4e9a39327e0d6d857872f698403e24" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.52.0" }, "idna": { @@ -678,6 +721,7 @@ "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6", "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.10" }, "importlib-metadata": { @@ -697,16 +741,18 @@ }, "isort": { "hashes": [ - "sha256:6187a9f1ce8784cbc6d1b88790a43e6083a6302f03e9ae482acc0f232a98c843", - "sha256:c16eaa7432a1c004c585d79b12ad080c6c421dd18fe27982ca11f95e6898e432" + "sha256:36f0c6659b9000597e92618d05b72d4181104cf59472b1c6a039e3783f930c95", + "sha256:ba040c24d20aa302f78f4747df549573ae1eaf8e1084269199154da9c483f07f" ], - "version": "==5.5.3" + "markers": "python_version >= '3.6' and python_version < '4.0'", + "version": "==5.5.4" }, "itsdangerous": { "hashes": [ "sha256:321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19", "sha256:b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.1.0" }, "jinja2": { @@ -714,20 +760,23 @@ "sha256:89aab215427ef59c34ad58735269eb58b1a5808103067f7bb9d5836c651b3bb0", "sha256:f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==2.11.2" }, "joblib": { "hashes": [ - "sha256:8f52bf24c64b608bf0b2563e0e47d6fcf516abc8cfafe10cfd98ad66d94f92d6", - "sha256:d348c5d4ae31496b2aa060d6d9b787864dd204f9480baaa52d18850cb43e9f49" + "sha256:698c311779f347cf6b7e6b8a39bb682277b8ee4aba8cf9507bc0cf4cd4737b72", + "sha256:9e284edd6be6b71883a63c9b7f124738a3c16195513ad940eae7e3438de885d5" ], - "version": "==0.16.0" + "markers": "python_version >= '3.6'", + "version": "==0.17.0" }, "jsonpickle": { "hashes": [ "sha256:8919c166bac0574e3d74425c7559434062002d9dfc0ac2afa6dc746ba4a19439", "sha256:e8d4b7cd0bd6826001a74377df1079a76ad8bae0f909282de2554164c837c8ba" ], + "markers": "python_version >= '2.7'", "version": "==1.4.1" }, "lazy-object-proxy": { @@ -754,6 +803,7 @@ "sha256:efa1909120ce98bbb3777e8b6f92237f5d5c8ea6758efea36a473e1d38f7d3e4", "sha256:f3900e8a5de27447acbf900b4750b0ddfd7ec1ea7fbaf11dfa911141bc522af0" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.4.3" }, "lightstep": { @@ -784,6 +834,7 @@ "sha256:1fafe3f1ecabfb514a5285fca634a53c1b32a81cb0feb154264d55bf2ff22c17", "sha256:c467cd6233885534bf0fe96e62e3cf46cfc1605112356c4f9981512b8174de59" ], + "markers": "python_version >= '3.5'", "version": "==3.2.2" }, "markupsafe": { @@ -822,6 +873,7 @@ "sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7", "sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.1.1" }, "mccabe": { @@ -836,22 +888,51 @@ "sha256:096f52ff52c02c7e90332d2e53da862fde5c062086e1b5356a6e392d5d60f5e9", "sha256:f0b61e5402b99d7789efa032c7a74c90a20220a9c81749da06dbfbcbd52ffb39" ], + "markers": "python_version >= '3.5'", "version": "==1.1.2" }, "mkdocs-material": { "hashes": [ - "sha256:79bf2951e5b9d435b8e1c0c3340a642f8359d90656b9344e64d9a2b7b6d2a1bb", - "sha256:8facb50db21fc0152ea5459ef67298512370503816dd2a6a2887f67330f61ed2" + "sha256:1adcb2d1b76b200e26c54b68784a0b3c4cf9bf21efe1c43edf5c59e514b30ef6", + "sha256:67334845400089e87370661bd0b885ba0cc995920ef1d11259d72300a6b9893f" ], - "version": "==6.0.1" + "version": "==6.0.2" }, "mkdocs-material-extensions": { "hashes": [ "sha256:6947fb7f5e4291e3c61405bad3539d81e0b3cd62ae0d66ced018128af509c68f", "sha256:d90c807a88348aa6d1805657ec5c0b2d8d609c110e62b9dce4daf7fa981fa338" ], + "markers": "python_version >= '3.5'", "version": "==1.0.1" }, + "mypy": { + "hashes": [ + "sha256:2c6cde8aa3426c1682d35190b59b71f661237d74b053822ea3d748e2c9578a7c", + "sha256:3fdda71c067d3ddfb21da4b80e2686b71e9e5c72cca65fa216d207a358827f86", + "sha256:5dd13ff1f2a97f94540fd37a49e5d255950ebcdf446fb597463a40d0df3fac8b", + "sha256:6731603dfe0ce4352c555c6284c6db0dc935b685e9ce2e4cf220abe1e14386fd", + "sha256:6bb93479caa6619d21d6e7160c552c1193f6952f0668cdda2f851156e85186fc", + "sha256:81c7908b94239c4010e16642c9102bfc958ab14e36048fa77d0be3289dda76ea", + "sha256:9c7a9a7ceb2871ba4bac1cf7217a7dd9ccd44c27c2950edbc6dc08530f32ad4e", + "sha256:a4a2cbcfc4cbf45cd126f531dedda8485671545b43107ded25ce952aac6fb308", + "sha256:b7fbfabdbcc78c4f6fc4712544b9b0d6bf171069c6e0e3cb82440dd10ced3406", + "sha256:c05b9e4fb1d8a41d41dec8786c94f3b95d3c5f528298d769eb8e73d293abc48d", + "sha256:d7df6eddb6054d21ca4d3c6249cae5578cb4602951fd2b6ee2f5510ffb098707", + "sha256:e0b61738ab504e656d1fe4ff0c0601387a5489ca122d55390ade31f9ca0e252d", + "sha256:eff7d4a85e9eea55afa34888dfeaccde99e7520b51f867ac28a48492c0b1130c", + "sha256:f05644db6779387ccdb468cc47a44b4356fc2ffa9287135d05b70a98dc83b89a" + ], + "markers": "python_version >= '3.5'", + "version": "==0.782" + }, + "mypy-extensions": { + "hashes": [ + "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d", + "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8" + ], + "version": "==0.4.3" + }, "nltk": { "hashes": [ "sha256:845365449cd8c5f9731f7cb9f8bd6fd0767553b9d53af9eb1b3abf7700936b35" @@ -869,6 +950,7 @@ "sha256:4357f74f47b9c12db93624a82154e9b120fa8293699949152b22065d556079f8", "sha256:998416ba6962ae7fbd6596850b80e17859a5753ba17c32284f67bfff33784181" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==20.4" }, "pbr": { @@ -876,6 +958,7 @@ "sha256:14bfd98f51c78a3dd22a1ef45cf194ad79eee4a19e8e1a0d5c7f8e81ffe182ea", "sha256:5adc0f9fc64319d8df5ca1e4e06eea674c26b80e6f00c530b18ce6a6592ead15" ], + "markers": "python_version >= '2.6'", "version": "==5.5.0" }, "pluggy": { @@ -883,6 +966,7 @@ "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0", "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==0.13.1" }, "protobuf": { @@ -913,6 +997,7 @@ "sha256:366389d1db726cd2fcfc79732e75410e5fe4d31db13692115529d34069a043c2", "sha256:9ca6883ce56b4e8da7e79ac18787889fa5206c79dcc67fb065376cd2fe03f342" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.9.0" }, "py-ms": { @@ -927,6 +1012,7 @@ "sha256:2295e7b2f6b5bd100585ebcb1f616591b652db8a741695b3d8f5d28bdc934367", "sha256:c58a7d2815e0e8d7972bf1803331fb0152f867bd89adf8a01dfd55085434192e" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.6.0" }, "pycparser": { @@ -934,6 +1020,7 @@ "sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0", "sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.20" }, "pyflakes": { @@ -941,6 +1028,7 @@ "sha256:0d94e0e05a19e57a99444b6ddcf9a6eb2e5c68d3ca1e98e90707af8152c90a92", "sha256:35b2d75ee967ea93b55750aa9edbbf72813e06a66ba54438df2cfac9e3c27fc8" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.2.0" }, "pygments": { @@ -948,6 +1036,7 @@ "sha256:307543fe65c0947b126e83dd5a61bd8acbd84abec11f43caebaf5534cbc17998", "sha256:926c3f319eda178d1bd90851e4317e6d8cdb5e292a3386aac9bd75eca29cf9c7" ], + "markers": "python_version >= '3.5'", "version": "==2.7.1" }, "pylint": { @@ -955,6 +1044,7 @@ "sha256:bb4a908c9dadbc3aac18860550e870f58e1a02c9f2c204fdf5693d73be061210", "sha256:bfe68f020f8a0fece830a22dd4d5dddb4ecc6137db04face4c3420a46a52239f" ], + "markers": "python_version >= '3.5'", "version": "==2.6.0" }, "pymdown-extensions": { @@ -962,6 +1052,7 @@ "sha256:9ba704052d4bdc04a7cd63f7db4ef6add73bafcef22c0cf6b2e3386cf4ece51e", "sha256:a3689c04f4cbddacd9d569425c571ae07e2673cc4df63a26cdbf1abc15229137" ], + "markers": "python_version >= '3.5'", "version": "==8.0.1" }, "pyparsing": { @@ -969,26 +1060,38 @@ "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1", "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b" ], + "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.4.7" }, "pytest": { "hashes": [ - "sha256:1cd09785c0a50f9af72220dd12aa78cfa49cbffc356c61eab009ca189e018a33", - "sha256:d010e24666435b39a4cf48740b039885642b6c273a3f77be3e7e03554d2806b7" + "sha256:7a8190790c17d79a11f847fba0b004ee9a8122582ebff4729a082c109e81a4c9", + "sha256:8f593023c1a0f916110285b6efd7f99db07d59546e3d8c36fc60e2ab05d3be92" ], - "version": "==6.1.0" + "markers": "python_version >= '3.5'", + "version": "==6.1.1" }, "pytest-cov": { "hashes": [ "sha256:45ec2d5182f89a81fc3eb29e3d1ed3113b9e9a873bcddb2a71faaab066110191", "sha256:47bd0ce14056fdd79f93e1713f88fad7bdcc583dcd7783da86ef2f085a0bb88e" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==2.10.1" }, + "pytest-runner": { + "hashes": [ + "sha256:5534b08b133ef9a5e2c22c7886a8f8508c95bb0b0bdc6cc13214f269c3c70d51", + "sha256:96c7e73ead7b93e388c5d614770d2bae6526efd997757d3543fe17b557a0942b" + ], + "markers": "python_version >= '2.7'", + "version": "==5.2" + }, "python-json-logger": { "hashes": [ "sha256:6c15023a8571200228472d4c9de7cb891cd45f670061f7729b8209bf643d5bbf" ], + "markers": "python_version >= '3.4'", "version": "==2.0.0" }, "pyyaml": { @@ -1038,6 +1141,7 @@ "sha256:b3559a131db72c33ee969480840fff4bb6dd111de7dd27c8ee1f820f4f00231b", "sha256:fe75cc94a9443b9246fc7049224f75604b113c36acb93f87b80ed42c44cbb898" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==2.24.0" }, "requests-mock": { @@ -1052,6 +1156,7 @@ "sha256:23bf20690d4400edc795836b0c983c2b4cbbb922233108ff925b7dd7750f00c9", "sha256:86c1c4a031fe35bd624fce143fbe642a0234d29f7cbf7a9aa269f244a955b087" ], + "markers": "python_version >= '3.5'", "version": "==1.9.0" }, "six": { @@ -1059,6 +1164,7 @@ "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.15.0" }, "smmap": { @@ -1066,6 +1172,7 @@ "sha256:54c44c197c819d5ef1991799a7e30b662d1e520f2ac75c9efbeb54a742214cf4", "sha256:9c98bbd1f9786d22f14b3d4126894d56befb835ec90cef151af566c7e19b5d24" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==3.0.4" }, "stevedore": { @@ -1073,6 +1180,7 @@ "sha256:5e1ab03eaae06ef6ce23859402de785f08d97780ed774948ef16c4652c41bc62", "sha256:f845868b3a3a77a2489d226568abe7328b5c2d4f6a011cc759dfa99144a521f0" ], + "markers": "python_version >= '3.6'", "version": "==3.2.2" }, "thrift": { @@ -1098,6 +1206,7 @@ "sha256:d4b3e5329f572f055b587efc57d29bd051589fb5a43ec8898c77a47ec2fa2bbb", "sha256:e5f2585afccbff22390cddac29849df463b252b711aa2ce7c5f3f342a5b3b444" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==5.1.1" }, "tox": { @@ -1105,6 +1214,7 @@ "sha256:e6318f404aff16522ff5211c88cab82b39af121735a443674e4e2e65f4e4637b", "sha256:eb629ddc60e8542fd4a1956b2462e3b8771d49f1ff630cecceacaa0fbfb7605a" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==3.20.0" }, "tqdm": { @@ -1112,6 +1222,7 @@ "sha256:2dd75fdb764f673b8187643496fcfbeac38348015b665878e582b152f3391cdb", "sha256:93b7a6a9129fce904f6df4cf3ae7ff431d779be681a95c3344c26f3e6c09abfa" ], + "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==4.50.0" }, "typed-ast": { @@ -1138,9 +1249,17 @@ "sha256:fc0fea399acb12edbf8a628ba8d2312f583bdbdb3335635db062fa98cf71fca4", "sha256:fe460b922ec15dd205595c9b5b99e2f056fd98ae8f9f56b888e7a17dc2b757e7" ], - "markers": "implementation_name == 'cpython' and python_version < '3.8'", + "markers": "python_version < '3.8' and implementation_name == 'cpython'", "version": "==1.4.1" }, + "typing-extensions": { + "hashes": [ + "sha256:7cb407020f00f7bfc3cb3e7881628838e69d8f3fcab2f64742a5e76b2f841918", + "sha256:99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c", + "sha256:dafc7639cde7f1b6e1acc0f457842a83e722ccca8eef5270af2d74792619a89f" + ], + "version": "==3.7.4.3" + }, "urllib3": { "hashes": [ "sha256:91056c15fa70756691db97756772bb1eb9678fa585d9184f24534b100dc60f4a", @@ -1151,16 +1270,18 @@ }, "virtualenv": { "hashes": [ - "sha256:43add625c53c596d38f971a465553f6318decc39d98512bc100fa1b1e839c8dc", - "sha256:e0305af10299a7fb0d69393d8f04cb2965dda9351140d11ac8db4e5e3970451b" + "sha256:35ecdeb58cfc2147bb0706f7cdef69a8f34f1b81b6d49568174e277932908b8f", + "sha256:a5e0d253fe138097c6559c906c528647254f437d1019af9d5a477b09bfa7300f" ], - "version": "==20.0.31" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==20.0.33" }, "werkzeug": { "hashes": [ "sha256:2de2a5db0baeae7b2d2664949077c2ac63fbd16d98da0ff71837f7d1dea3fd43", "sha256:6c80b1e5ad3665290ea39320b91e1be1e0d5f60652b964a3070216de83d2e47c" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==1.0.1" }, "wrapt": { @@ -1171,10 +1292,11 @@ }, "zipp": { "hashes": [ - "sha256:43f4fa8d8bb313e65d8323a3952ef8756bf40f9a5c3ea7334be23ee4ec8278b6", - "sha256:b52f22895f4cfce194bc8172f3819ee8de7540aa6d873535a8668b730b8b411f" + "sha256:64ad89efee774d1897a58607895d80789c59778ea02185dd846ac38394a8642b", + "sha256:eed8ec0b8d1416b2ca33516a37a08892442f3954dee131e92cfd92d8fe3e7066" ], - "version": "==3.2.0" + "markers": "python_version >= '3.6'", + "version": "==3.3.0" } } } diff --git a/setup.cfg b/setup.cfg index 5d044dd..0b832bb 100644 --- a/setup.cfg +++ b/setup.cfg @@ -8,4 +8,7 @@ addopts = --cov=pyms --cov=tests tests/ ignore = E501 exclude = .git,__pycache__,docs/source/conf.py,old,build,dist max-complexity = 12 -max-line-length = 120 \ No newline at end of file +max-line-length = 120 + +[mypy] +ignore_missing_imports = True \ No newline at end of file diff --git a/setup.py b/setup.py index ccf89fb..a0a6917 100644 --- a/setup.py +++ b/setup.py @@ -64,7 +64,8 @@ 'mkdocs>=1.1.2', 'mkdocs-material>=6.0.0', 'lightstep>=4.4.8', - 'safety==1.9.0' + 'safety==1.9.0', + 'mypy>=0.782' ] install_all_requires = (install_request_requires + install_swagger_requires + From 8df96bb506a04af82c0b6471e896336d728e4495 Mon Sep 17 00:00:00 2001 From: Gavin Ooi Date: Wed, 7 Oct 2020 09:46:51 +0800 Subject: [PATCH 2/2] Add more type hints & reduce errors in mypy checks --- pyms/cloud/aws/kms.py | 12 ++++++------ pyms/crypt/fernet.py | 6 +++--- pyms/flask/app/create_app.py | 12 ++++++------ pyms/flask/services/driver.py | 6 +++--- pyms/flask/services/requests.py | 2 +- 5 files changed, 19 insertions(+), 19 deletions(-) diff --git a/pyms/cloud/aws/kms.py b/pyms/cloud/aws/kms.py index 8ac21bc..640d540 100644 --- a/pyms/cloud/aws/kms.py +++ b/pyms/cloud/aws/kms.py @@ -8,24 +8,24 @@ class Crypt(CryptAbstract): encryption_algorithm = "SYMMETRIC_DEFAULT" # 'SYMMETRIC_DEFAULT' | 'RSAES_OAEP_SHA_1' | 'RSAES_OAEP_SHA_256' key_id = "" - def __init__(self, *args, **kwargs): + def __init__(self, *args, **kwargs) -> None: self._init_boto() super().__init__(*args, **kwargs) - def encrypt(self, message): # pragma: no cover + def encrypt(self, message: str) -> str: # pragma: no cover ciphertext = self.client.encrypt( KeyId=self.config.key_id, Plaintext=bytes(message, encoding="UTF-8"), ) return str(base64.b64encode(ciphertext["CiphertextBlob"]), encoding="UTF-8") - def _init_boto(self): # pragma: no cover + def _init_boto(self) -> None: # pragma: no cover check_package_exists("boto3") boto3 = import_package("boto3") boto3.set_stream_logger(name='botocore') self.client = boto3.client('kms') - def _aws_decrypt(self, blob_text): # pragma: no cover + def _aws_decrypt(self, blob_text: bytes) -> str: # pragma: no cover response = self.client.decrypt( CiphertextBlob=blob_text, KeyId=self.config.key_id, @@ -33,11 +33,11 @@ def _aws_decrypt(self, blob_text): # pragma: no cover ) return str(response['Plaintext'], encoding="UTF-8") - def _parse_encrypted(self, encrypted): + def _parse_encrypted(self, encrypted: str) -> bytes: blob_text = base64.b64decode(encrypted) return blob_text - def decrypt(self, encrypted): + def decrypt(self, encrypted: str) -> str: blob_text = self._parse_encrypted(encrypted) decrypted = self._aws_decrypt(blob_text) diff --git a/pyms/crypt/fernet.py b/pyms/crypt/fernet.py index c6d9324..0d63ab4 100644 --- a/pyms/crypt/fernet.py +++ b/pyms/crypt/fernet.py @@ -18,8 +18,8 @@ def __init__(self, *args, **kwargs): self._loader = LoadFile(kwargs.get("path"), CRYPT_FILE_KEY_ENVIRONMENT, DEFAULT_KEY_FILENAME) super().__init__(*args, **kwargs) - def generate_key(self, password: Text, write_to_file: bool = False): - password = password.encode() # Convert to type bytes + def generate_key(self, password: Text, write_to_file: bool = False) -> bytes: + byte_password = password.encode() # Convert to type bytes salt = os.urandom(16) kdf = PBKDF2HMAC( algorithm=hashes.SHA512_256(), @@ -28,7 +28,7 @@ def generate_key(self, password: Text, write_to_file: bool = False): iterations=100000, backend=default_backend() ) - key = base64.urlsafe_b64encode(kdf.derive(password)) # Can only use kdf once + key = base64.urlsafe_b64encode(kdf.derive(byte_password)) # Can only use kdf once if write_to_file: self._loader.put_file(key, 'wb') return key diff --git a/pyms/flask/app/create_app.py b/pyms/flask/app/create_app.py index acc57ed..74df253 100644 --- a/pyms/flask/app/create_app.py +++ b/pyms/flask/app/create_app.py @@ -1,6 +1,6 @@ import logging import os -from typing import List +from typing import List, Optional from flask import Flask @@ -73,12 +73,12 @@ def example(): Current services are swagger, request, tracer, metrics """ config_resource = CONFIG_BASE - services: List[DriverService] = [] + services: List[str] = [] application = Flask - swagger: DriverService = None - request: DriverService = None - tracer: DriverService = None - metrics: DriverService = None + swagger: Optional[DriverService] = None + request: Optional[DriverService] = None + tracer: Optional[DriverService] = None + metrics: Optional[DriverService] = None _singleton = True def __init__(self, *args, **kwargs): diff --git a/pyms/flask/services/driver.py b/pyms/flask/services/driver.py index 7bf4042..1b118c1 100644 --- a/pyms/flask/services/driver.py +++ b/pyms/flask/services/driver.py @@ -9,7 +9,7 @@ logger = logging.getLogger(LOGGER_NAME) -def get_service_name(service_base=SERVICE_BASE, service=""): +def get_service_name(service_base: str = SERVICE_BASE, service: str = "") -> str: return ".".join([service_base, service]) @@ -48,10 +48,10 @@ def __getattr__(self, attr, *args, **kwargs): return config_attribute if config_attribute == "" or config_attribute != {} else self.default_values.get(attr, None) - def is_enabled(self): + def is_enabled(self) -> bool: return self.enabled - def exists_config(self): + def exists_config(self) -> bool: return self.config is not None and isinstance(self.config, ConfFile) diff --git a/pyms/flask/services/requests.py b/pyms/flask/services/requests.py index adf66c9..20113e8 100644 --- a/pyms/flask/services/requests.py +++ b/pyms/flask/services/requests.py @@ -97,7 +97,7 @@ def set_propagate_headers(headers: dict) -> dict: headers.update({k: v}) return headers - def _get_headers(self, headers, propagate_headers=False): + def _get_headers(self, headers: dict, propagate_headers: bool = False) -> dict: """If enabled appends trace headers to received ones. :param headers: dictionary of HTTP Headers to send.