diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000000..c3821e832e --- /dev/null +++ b/.editorconfig @@ -0,0 +1,26 @@ +root = true + +[*] +indent_style = space +indent_size = 4 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false + +[*.toml] +indent_size = 2 + +[*.yaml] +indent_size = 2 + +# Makefiles always use tabs for indentation +[Makefile] +indent_style = tab + +# Batch files use tabs for indentation +[*.bat] +indent_style = tab diff --git a/.vsts-ci/docs.yml b/.vsts-ci/docs.yml new file mode 100644 index 0000000000..1b9d3701f5 --- /dev/null +++ b/.vsts-ci/docs.yml @@ -0,0 +1,20 @@ +phases: +- phase: + displayName: Docs + queue: Hosted Linux Preview + + steps: + - task: UsePythonVersion@0 + inputs: + versionSpec: '3.7' + + - template: steps/install-dependencies.yml + + - bash: tox -e docs + displayName: Build docs + + - task: PublishBuildArtifacts@1 + displayName: 'Publish Artifact: docs' + inputs: + PathtoPublish: docs/build + ArtifactName: docs diff --git a/.vsts-ci/linux.yml b/.vsts-ci/linux.yml new file mode 100644 index 0000000000..7968801c5e --- /dev/null +++ b/.vsts-ci/linux.yml @@ -0,0 +1,8 @@ +phases: +- template: phases/test.yml + parameters: + queue: Hosted Linux Preview + +- template: phases/run-vendor-scripts.yml + parameters: + queue: Hosted Linux Preview diff --git a/.vsts-ci/phases/run-manifest-check.yml b/.vsts-ci/phases/run-manifest-check.yml new file mode 100644 index 0000000000..484641dcd5 --- /dev/null +++ b/.vsts-ci/phases/run-manifest-check.yml @@ -0,0 +1,14 @@ +steps: +- task: UsePythonVersion@0 + displayName: Use Python $(python.version) + inputs: + versionSpec: '$(python.version)' + architecture: '$(python.architecture)' + +- template: ../steps/install-dependencies.yml + +- bash: | + export GIT_SSL_CAINFO=$(python -m certifi) + export LANG=C.UTF-8 + python -m pip install check-manifest + check-manifest diff --git a/.vsts-ci/phases/run-tests-windows.yml b/.vsts-ci/phases/run-tests-windows.yml new file mode 100644 index 0000000000..6b6f86fa3b --- /dev/null +++ b/.vsts-ci/phases/run-tests-windows.yml @@ -0,0 +1,12 @@ +steps: +- task: UsePythonVersion@0 + displayName: Use Python $(python.version) + inputs: + versionSpec: '$(python.version)' + architecture: '$(python.architecture)' + +- template: ../steps/install-dependencies.yml + +- template: ../steps/create-virtualenv.yml + +- template: ../steps/run-tests.yml diff --git a/.vsts-ci/phases/run-tests.yml b/.vsts-ci/phases/run-tests.yml new file mode 100644 index 0000000000..81f02875ff --- /dev/null +++ b/.vsts-ci/phases/run-tests.yml @@ -0,0 +1,37 @@ +steps: +- task: UsePythonVersion@0 + displayName: Use Python $(python.version) + inputs: + versionSpec: '$(python.version)' + architecture: '$(python.architecture)' + +- template: ../steps/install-dependencies.yml + +- bash: | + mkdir -p "$AGENT_HOMEDIRECTORY/.virtualenvs" + mkdir -p "$WORKON_HOME" + pip install certifi + export GIT_SSL_CAINFO=$(python -m certifi) + export LANG=C.UTF-8 + export PIP_PROCESS_DEPENDENCY_LINKS="1" + echo "Path: $PATH" + echo "Installing Pipenv…" + pip install -e "$(pwd)" --upgrade + pipenv install --deploy --dev + echo pipenv --venv && echo pipenv --py && echo pipenv run python --version + displayName: Make Virtualenv + +- script: | + # Fix Git SSL errors + export GIT_SSL_CAINFO=$(python -m certifi) + export LANG=C.UTF-8 + export PIP_PROCESS_DEPENDENCY_LINKS="1" + pipenv run pytest --junitxml=test-results.xml + displayName: Run integration tests + +- task: PublishTestResults@2 + displayName: Publish Test Results + inputs: + testResultsFiles: '**/test-results.xml' + testRunTitle: 'Python $(python.version)' + condition: succeededOrFailed() diff --git a/.vsts-ci/phases/run-vendor-scripts.yml b/.vsts-ci/phases/run-vendor-scripts.yml new file mode 100644 index 0000000000..b96f64f5ca --- /dev/null +++ b/.vsts-ci/phases/run-vendor-scripts.yml @@ -0,0 +1,39 @@ +parameters: + queue: + +phases: +- phase: Vendor_Scripts + displayName: Test Vendor Scripts + + queue: + name: ${{ parameters.queue }} + parallel: 4 + matrix: + ${{ if eq(parameters.queue, 'Hosted VS2017') }}: + # TODO remove once Hosted VS2017 has Python 3.7 + Python37: + python.version: '>= 3.7.0-b2' + python.architecture: x64 + ${{ if ne(parameters.queue, 'Hosted VS2017' )}}: + Python37: + python.version: '>= 3.7' + python.architecture: x64 + steps: + - task: UsePythonVersion@0 + displayName: Use Python $(python.version) + inputs: + versionSpec: '$(python.version)' + architecture: '$(python.architecture)' + + - template: ../steps/install-dependencies.yml + + - bash: | + mkdir -p "$AGENT_HOMEDIRECTORY/.virtualenvs" + mkdir -p "$WORKON_HOME" + pip install certifi + export GIT_SSL_CAINFO=$(python -m certifi) + export LANG=C.UTF-8 + python -m pip install --upgrade invoke requests parver + python -m invoke vendoring.update + + - template: ./run-manifest-check.yml diff --git a/.vsts-ci/phases/test.yml b/.vsts-ci/phases/test.yml new file mode 100644 index 0000000000..b0de1e23bc --- /dev/null +++ b/.vsts-ci/phases/test.yml @@ -0,0 +1,49 @@ +parameters: + queue: + +phases: +- phase: Test_Primary + displayName: Test Primary + + queue: + name: ${{ parameters.queue }} + parallel: 4 + matrix: + Python27: + python.version: '2.7' + python.architecture: x64 + ${{ if eq(parameters.queue, 'Hosted VS2017') }}: + # TODO remove once Hosted VS2017 has Python 3.7 + Python37: + python.version: '>= 3.7.0-b2' + python.architecture: x64 + ${{ if ne(parameters.queue, 'Hosted VS2017' )}}: + Python37: + python.version: '>= 3.7' + python.architecture: x64 + steps: + - ${{ if eq(parameters.queue, 'Hosted VS2017') }}: + - template: ./run-tests-windows.yml + + - ${{ if ne(parameters.queue, 'Hosted VS2017') }}: + - template: ./run-tests.yml + +- phase: Test_Secondary + displayName: Test python3.6 + # Run after Test_Primary so we don't devour time and jobs if tests are going to fail +# dependsOn: Test_Primary + + queue: + name: ${{ parameters.queue }} + parallel: 4 + matrix: + Python36: + python.version: '3.6' + python.architecture: x64 + steps: + - ${{ if eq(parameters.queue, 'Hosted VS2017') }}: + - template: ./run-tests-windows.yml + + - ${{ if ne(parameters.queue, 'Hosted VS2017') }}: + - template: ./run-tests.yml + diff --git a/.vsts-ci/steps/create-virtualenv.yml b/.vsts-ci/steps/create-virtualenv.yml new file mode 100644 index 0000000000..a72e996455 --- /dev/null +++ b/.vsts-ci/steps/create-virtualenv.yml @@ -0,0 +1,6 @@ +steps: +- script: | + virtualenv D:\.venv + D:\.venv\Scripts\pip.exe install -e . && D:\.venv\Scripts\pipenv install --dev + echo D:\.venv\Scripts\pipenv --venv && echo D:\.venv\Scripts\pipenv --py && echo D:\.venv\Scripts\pipenv run python --version + displayName: Make Virtualenv diff --git a/.vsts-ci/steps/install-dependencies.yml b/.vsts-ci/steps/install-dependencies.yml new file mode 100644 index 0000000000..dfe733b6df --- /dev/null +++ b/.vsts-ci/steps/install-dependencies.yml @@ -0,0 +1,3 @@ +steps: +- script: 'python -m pip install --upgrade pip && python -m pip install -e .' + displayName: Upgrade Pip & Install Pipenv diff --git a/.vsts-ci/steps/run-tests.yml b/.vsts-ci/steps/run-tests.yml new file mode 100644 index 0000000000..cb24b092f5 --- /dev/null +++ b/.vsts-ci/steps/run-tests.yml @@ -0,0 +1,20 @@ +steps: +- powershell: | + # Fix Git SSL errors + pip install certifi + python -m certifi > cacert.txt + $env:GIT_SSL_CAINFO = $(Get-Content cacert.txt) + # Shorten paths to get under MAX_PATH or else integration tests will fail + # https://bugs.python.org/issue18199 + subst T: $env:TEMP + $env:TEMP = "T:\" + $env:TMP = "T:\" + D:\.venv\Scripts\pipenv run pytest -n 4 --ignore=pipenv\patched --ignore=pipenv\vendor --junitxml=test-results.xml tests + displayName: Run integration tests + +- task: PublishTestResults@2 + displayName: Publish Test Results + inputs: + testResultsFiles: '**/test-results.xml' + testRunTitle: 'Python $(python.version)' + condition: succeededOrFailed() diff --git a/.vsts-ci/windows.yml b/.vsts-ci/windows.yml new file mode 100644 index 0000000000..a397a23c67 --- /dev/null +++ b/.vsts-ci/windows.yml @@ -0,0 +1,4 @@ +phases: +- template: phases/test.yml + parameters: + queue: Hosted VS2017 diff --git a/MANIFEST.in b/MANIFEST.in index 6c57403b71..f593cf781c 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,6 +1,33 @@ -include README.md CHANGELOG.rst LICENSE NOTICES HISTORY.txt pipenv/patched/safety.zip -include pipenv/vendor/pipreqs/stdlib -include pipenv/vendor/pipreqs/mapping -include pipenv/vendor/click_completion/*.j2 +include LICENSE README.md CONTRIBUTING.md CODE_OF_CONDUCT.md CHANGELOG.rst NOTICES HISTORY.txt +include Makefile pyproject.toml get-pipenv.py +include examples/Pipfil* +recursive-include pipenv LICENSE LICENSE* *LICENSE* *COPYING* t32.exe t64.exe w32.exe w64.exe cacert.pem +recursive-include pipenv *.cfg +recursive-include pipenv/vendor *.c *.j2 +recursive-include pipenv *.md *.APACHE *.BSD +recursive-include pipenv Makefile +recursive-include pipenv/vendor vendor.txt +recursive-include pipenv README +include pipenv/patched/notpip/_vendor/vendor.txt +include pipenv/patched/safety.zip pipenv/patched/patched.txt +include pipenv/vendor/pipreqs/stdlib pipenv/vendor/pipreqs/mapping +include pipenv/vendor/*.txt pipenv/vendor/pexpect/bashrc.sh +include pipenv/vendor/Makefile include pipenv/pipenv.1 -recursive-include pipenv *LICENSE* *COPYING* t32.exe t64.exe w32.exe w64.exe cacert.pem +exclude .editorconfig .travis.yml .env appveyor.yml tox.ini pytest.ini +exclude Pipfile* CHANGELOG.draft.rst +exclude docker-compose.yml Dockerfile +exclude run-tests.sh run-tests.bat + +recursive-include docs Makefile *.rst *.py *.bat +recursive-include docs/_templates *.html +recursive-include docs/_static *.js *.css *.png +recursive-exclude docs requirements*.txt + +prune .buildkite +prune .github +prune .vsts-ci +prune docs/build +prune news +prune tasks +prune tests diff --git a/Pipfile b/Pipfile index 53539f1f0b..a1db217c69 100644 --- a/Pipfile +++ b/Pipfile @@ -20,6 +20,7 @@ invoke = "*" jedi = "*" isort = "*" rope = "*" +passa = {editable = true, git = "https://github.com/sarugaku/passa.git"} [packages] diff --git a/Pipfile.lock b/Pipfile.lock index 1f0fd5bc6a..a5f12e14be 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "88d256c1798cc297772ecd3d2152013e0b28201a5364a1c0f8e4dde79b6e200c" + "sha256": "6acc712d82698e574727d19b22d05bf46565ecaa414e288fd0d79e385f8fdd10" }, "pipfile-spec": 6, "requires": {}, @@ -27,7 +27,7 @@ "sha256:37228cda29411948b422fae072f57e31d3396d2ee1c9783775980ee9c9990af6", "sha256:58587dd4dc3daefad0487f6d9ae32b4542b185e1c36db6993290e7c41ca2b47c" ], - "markers": "python_version >= '2.7' and python_version != '3.0.*' and python_version != '3.1.*' and python_version != '3.2.*' and python_version != '3.3.*'", + "markers": "python_version >= '2.7' and python_version != '3.1.*' and python_version != '3.2.*' and python_version != '3.3.*' and python_version != '3.0.*'", "version": "==1.5" }, "appdirs": { @@ -82,12 +82,18 @@ "markers": "python_version >= '3.6'", "version": "==18.6b4" }, + "cerberus": { + "hashes": [ + "sha256:f5c2e048fb15ecb3c088d192164316093fcfa602a74b3386eefb2983aa7e800a" + ], + "version": "==1.2" + }, "certifi": { "hashes": [ - "sha256:376690d6f16d32f9d1fe8932551d80b23e9d393a8578c5633a2ed39a64861638", - "sha256:456048c7e371c089d0a77a5212fb37a2c2dce1e24146e3b7e0261736aaeaa22a" + "sha256:4c1d68a1408dd090d2f3a869aa94c3947cc1d967821d1ed303208c9f41f0f2f4", + "sha256:b6e8b28b2b7e771a41ecdd12d4d43262ecab52adebbafa42c77d6b57fb6ad3a4" ], - "version": "==2018.8.24" + "version": "==2018.8.13" }, "chardet": { "hashes": [ @@ -119,6 +125,12 @@ "markers": "python_version < '3.2'", "version": "==3.5.0" }, + "distlib": { + "hashes": [ + "sha256:cd502c66fc27c535bab62dc4f482e403e2369c2c05281a79cc2d4e2f42a87f20" + ], + "version": "==0.2.7" + }, "docutils": { "hashes": [ "sha256:02aec4bd92ab067f6ff27a38a38a41173bf01bed8f89157768c1573f53e474a6", @@ -142,9 +154,16 @@ "sha256:a7a84d5fa07a089186a329528f127c9d73b9de57f1a1131b82bb5320ee651f6a", "sha256:fc155a6b553c66c838d1a22dba1dc9f5f505c43285a878c6f74a79c024750b83" ], - "markers": "python_version >= '2.7' and python_version != '3.0.*' and python_version != '3.1.*' and python_version != '3.2.*' and python_version != '3.3.*'", + "markers": "python_version >= '2.7' and python_version != '3.1.*' and python_version != '3.2.*' and python_version != '3.3.*' and python_version != '3.0.*'", "version": "==1.5.0" }, + "first": { + "hashes": [ + "sha256:3bb3de3582cb27071cfb514f00ed784dc444b7f96dc21e140de65fe00585c95e", + "sha256:41d5b64e70507d0c3ca742d68010a76060eea8a3d863e9b5130ab11a4a91aa0e" + ], + "version": "==2.0.1" + }, "flake8": { "hashes": [ "sha256:7253265f7abd8b313e3892944044a365e3f4ac3fcdcfb4298f55ee9ddf188ba0", @@ -265,6 +284,14 @@ "index": "pypi", "version": "==2.0.0" }, + "modutil": { + "hashes": [ + "sha256:2c85c1666649e92e56de17c00e1e831313602d9b55e8661d39c01e39003b45f7", + "sha256:cc3dad264e36ed359fdd67c4588959d2996bd0402ad9c9d974ca906821537218" + ], + "markers": "python_version >= '3.7'", + "version": "==2.0.0" + }, "more-itertools": { "hashes": [ "sha256:c187a73da93e7a8acc0001572aebc7e3c69daf7bf6881a2cea10650bd4420092", @@ -295,13 +322,10 @@ "index": "pypi", "version": "==0.1.1" }, - "pathlib2": { - "hashes": [ - "sha256:8eb170f8d0d61825e09a95b38be068299ddeda82f35e96c3301a8a5e7604cb83", - "sha256:d1aa2a11ba7b8f7b21ab852b1fb5afb277e1bb99d5dfc663380b5015c0d80c5a" - ], - "markers": "python_version < '3.6'", - "version": "==2.3.2" + "passa": { + "editable": true, + "git": "https://github.com/sarugaku/passa.git", + "ref": "54e65e01744cafbcab44eb15422e1604b615caae" }, "pbr": { "hashes": [ @@ -310,6 +334,13 @@ ], "version": "==4.2.0" }, + "pip-shims": { + "hashes": [ + "sha256:9c8a568b4a8ce4000a2982224f48a35736fca81214dfdb30dcae24287866a7e4", + "sha256:ebc2bb29ddd21fa00c0cf28a5d8c725100f2f7ee98703aba237efd02e205c1c1" + ], + "version": "==0.1.2" + }, "pipenv": { "editable": true, "path": "." @@ -321,6 +352,14 @@ ], "version": "==1.4.2" }, + "plette": { + "hashes": [ + "sha256:3c2bbf439dad64d9a89459c20305b976d797ae1c2ad48a540e7022b377717851", + "sha256:cc9490a009494395dea286f4f488e0839ac06e1361d4951cc12fe621b6f0a68c" + ], + "markers": "python_version >= '2.6'", + "version": "==0.1.1" + }, "pluggy": { "hashes": [ "sha256:6e3836e39f4d36ae72840833db137f7b7d35105079aee6ec4a62d9f80d594dd1", @@ -376,6 +415,7 @@ "sha256:e4500cd0509ec4a26535f7d4112a8cc0f17d3a41c29ffd4eab479d2a55b30805", "sha256:f275cb48a73fc61a6710726348e1da6d68a978f0ec0c54ece5a5fae5977e5a08" ], + "markers": "python_version >= '2.7' and python_version != '3.1.*' and python_version != '3.2.*' and python_version != '3.3.*' and python_version != '3.0.*'", "version": "==0.2" }, "pytest-pypy": { @@ -392,11 +432,11 @@ }, "pytest-xdist": { "hashes": [ - "sha256:0875deac20f6d96597036bdf63970887a6f36d28289c2f6682faf652dfea687b", - "sha256:28e25e79698b2662b648319d3971c0f9ae0e6500f88258ccb9b153c31110ba9b" + "sha256:3308c4f6221670432d01e0b393b333d77c1fd805532e1d64450e8140855eb51b", + "sha256:cce08b4b7f56d34d43b365e2b3667ebb8edcf91d01c2a8fccf45c56d37e71bc1" ], "index": "pypi", - "version": "==1.23.0" + "version": "==1.22.5" }, "pytz": { "hashes": [ @@ -420,6 +460,20 @@ ], "version": "==0.8.0" }, + "requirementslib": { + "hashes": [ + "sha256:698a566272669a470a8a439250353b0b628468ea0879f4f32e22245c2b9d9e44", + "sha256:c7031b128e13eb8d8847f9ce409f3bfab49e8d111e7e8fca432ff8a737820653" + ], + "version": "==1.1.1" + }, + "resolvelib": { + "hashes": [ + "sha256:d52f2c0762deeb2a4cc34a84371a7a5ac85e111bdc69ce9ae729d8d636606ad6", + "sha256:eb759d43bbf50de9bf36afb9f6c269fabf9ff49084dbfad4ba67252d134bf4b5" + ], + "version": "==0.2.1" + }, "rope": { "hashes": [ "sha256:a108c445e1cd897fe19272ab7877d172e7faf3d4148c80e7d20faba42ea8f7b2" @@ -427,23 +481,6 @@ "index": "pypi", "version": "==0.11.0" }, - "scandir": { - "hashes": [ - "sha256:04b8adb105f2ed313a7c2ef0f1cf7aff4871aa7a1883fa4d8c44b5551ab052d6", - "sha256:1444134990356c81d12f30e4b311379acfbbcd03e0bab591de2696a3b126d58e", - "sha256:1b5c314e39f596875e5a95dd81af03730b338c277c54a454226978d5ba95dbb6", - "sha256:346619f72eb0ddc4cf355ceffd225fa52506c92a2ff05318cfabd02a144e7c4e", - "sha256:44975e209c4827fc18a3486f257154d34ec6eaec0f90fef0cca1caa482db7064", - "sha256:61859fd7e40b8c71e609c202db5b0c1dbec0d5c7f1449dec2245575bdc866792", - "sha256:a5e232a0bf188362fa00123cc0bb842d363a292de7126126df5527b6a369586a", - "sha256:c14701409f311e7a9b7ec8e337f0815baf7ac95776cc78b419a1e6d49889a383", - "sha256:c7708f29d843fc2764310732e41f0ce27feadde453261859ec0fca7865dfc41b", - "sha256:c9009c527929f6e25604aec39b0a43c3f831d2947d89d6caaab22f057b7055c8", - "sha256:f5c71e29b4e2af7ccdc03a020c626ede51da471173b4a6ad1e904f2b2e04b4bd" - ], - "markers": "python_version < '3.5'", - "version": "==1.9.0" - }, "six": { "hashes": [ "sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9", @@ -479,7 +516,6 @@ "sha256:68ca7ff70785cbe1e7bccc71a48b5b6d965d79ca50629606c7861a21b206d9dd", "sha256:9de47f375baf1ea07cdb3436ff39d7a9c76042c10a769c52353ec46e4e8fc3b9" ], - "markers": "python_version >= '2.7' and python_version != '3.0.*' and python_version != '3.1.*' and python_version != '3.2.*' and python_version != '3.3.*'", "version": "==1.1.0" }, "stdeb": { @@ -503,6 +539,14 @@ ], "version": "==0.9.4" }, + "tomlkit": { + "hashes": [ + "sha256:4f112445d6e52a038adf23b027ccb11905fdf88976990116e8f7b171b768cedb", + "sha256:8b84ac193aa6366769f89541cf213efe9784ac125f08164974400c43f18fcd9f" + ], + "markers": "python_version != '3.2.*' and python_version != '3.3.*' and python_version != '3.1.*' and python_version != '3.0.*' and python_version >= '2.7'", + "version": "==0.4.2" + }, "towncrier": { "editable": true, "git": "https://github.com/hawkowl/towncrier.git", @@ -513,7 +557,7 @@ "sha256:5ef526702c0d265d5a960a3b27f3971fac13c26cf0fb819294bfa71fc6026c88", "sha256:a3364bd83ce4777320b862e3c8a93d7da91e20a95f06ef79bed7dd71c654cafa" ], - "markers": "python_version != '3.0.*' and python_version != '3.1.*' and python_version >= '2.6'", + "markers": "python_version != '3.1.*' and python_version != '3.0.*' and python_version >= '2.6'", "version": "==4.25.0" }, "twine": { @@ -538,7 +582,6 @@ "sha256:a68ac5e15e76e7e5dd2b8f94007233e01effe3e50e8daddf69acfd81cb686baf", "sha256:b5725a0bd4ba422ab0e66e89e030c806576753ea3ee08554382c14e685d117b5" ], - "markers": "python_version != '3.2.*' and python_version != '3.3.*' and python_version != '3.0.*' and python_version != '3.1.*' and python_version < '4' and python_version >= '2.6'", "version": "==1.23" }, "virtualenv": { @@ -546,7 +589,7 @@ "sha256:2ce32cd126117ce2c539f0134eb89de91a8413a29baac49cbab3eb50e2026669", "sha256:ca07b4c0b54e14a91af9f34d0919790b016923d157afda5efdde55c96718f752" ], - "markers": "python_version >= '2.7' and python_version != '3.0.*' and python_version != '3.1.*' and python_version != '3.2.*'", + "markers": "python_version != '3.0.*' and python_version >= '2.7' and python_version != '3.2.*' and python_version != '3.1.*'", "version": "==16.0.0" }, "virtualenv-clone": { @@ -556,12 +599,27 @@ ], "version": "==0.3.0" }, + "vistir": { + "hashes": [ + "sha256:011e52dd2e09f948f638262dc39fef38998d134538705a810e88ad6d7bb94c1c", + "sha256:f447923d4c59e8d50add4a9d8275b25a1f038f1a1a00ded50ee3c3d00a3c7f5d" + ], + "version": "==0.1.4" + }, "werkzeug": { "hashes": [ "sha256:c3fd7a7d41976d9f44db327260e263132466836cef6f91512889ed60ad26557c", "sha256:d5da73735293558eb1651ee2fddc4d0dedcfa06538b8813a2e20011583c9e49b" ], "version": "==0.14.1" + }, + "wheel": { + "hashes": [ + "sha256:0a2e54558a0628f2145d2fc822137e322412115173e8a2ddbe1c9024338ae83c", + "sha256:80044e51ec5bbf6c894ba0bc48d26a8c20a9ba629f4ca19ea26ecfcf87685f5f" + ], + "markers": "python_version != '3.0.*' and python_version >= '2.7' and python_version != '3.2.*' and python_version != '3.3.*' and python_version != '3.1.*'", + "version": "==0.31.1" } } } diff --git a/run-tests.sh b/run-tests.sh index cc5252d14c..167556237c 100755 --- a/run-tests.sh +++ b/run-tests.sh @@ -26,6 +26,8 @@ if [[ ! -z "$HOME" ]]; then export PATH="${HOME}/.local/bin:${PATH}" fi # pip uninstall -y pipenv +pip install certifi +export GIT_SSL_CAINFO=$(python -m certifi) echo "Path: $PATH" echo "Installing Pipenv…" PIP_USER="1" python -m pip install --upgrade setuptools diff --git a/setup.cfg b/setup.cfg index c2f10f1727..f0cb3bf581 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,3 +1,8 @@ +[metadata] +long_description = file: README.md +license = MIT +license_file = LICENSE + [flake8] exclude = .git,__pycache__,docs/,pipenv/vendor/,get-pipenv.py,setup.py ignore = @@ -13,3 +18,14 @@ ignore = # E501: line too long # W503: line break before binary operator E127,E128,E129,E222,E231,E402,E501,W503 + +[isort] +atomic=true +lines_after_imports=2 +lines_between_types=1 +multi_line_output=5 +not_skip=__init__.py +known_first_party = + passa + tests +ignore_trailing_comma=true