From d27c24d345338a557b38c751e2a6380ab3207544 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Tue, 22 Oct 2019 21:52:44 -0400 Subject: [PATCH 01/10] Initial Commit --- .github/pr-labeler.yml | 2 + .github/workflows/pr-labeler.yml | 13 + .github/workflows/python-checks.yml | 68 +++ .github/workflows/python-deploy.yml | 63 +++ .github/workflows/release-management.yml | 15 + .gitignore | 12 + LICENSE => LICENSE.md | 2 +- README.md | 4 +- conan_for_poetry/__init__.py | 1 + conan_for_poetry/commands/__init__.py | 1 + conan_for_poetry/commands/add.py | 7 + conan_for_poetry/commands/build.py | 8 + conan_for_poetry/commands/check.py | 7 + conan_for_poetry/commands/config.py | 7 + conan_for_poetry/commands/env.py | 7 + conan_for_poetry/commands/export.py | 7 + conan_for_poetry/commands/init.py | 7 + conan_for_poetry/commands/install.py | 18 + conan_for_poetry/commands/lock.py | 7 + conan_for_poetry/commands/new.py | 7 + conan_for_poetry/commands/publish.py | 9 + conan_for_poetry/commands/remove.py | 7 + conan_for_poetry/commands/search.py | 7 + conan_for_poetry/commands/show.py | 7 + conan_for_poetry/commands/update.py | 15 + conan_for_poetry/commands/version.py | 7 + conan_for_poetry/plugin.py | 80 ++++ poetry.lock | 585 +++++++++++++++++++++++ pyproject.toml | 30 ++ tests/__init__.py | 1 + tests/commands/__init__.py | 1 + tests/commands/test_add.py | 12 + tests/commands/test_build.py | 13 + tests/commands/test_check.py | 12 + tests/commands/test_config.py | 12 + tests/commands/test_env.py | 12 + tests/commands/test_export.py | 12 + tests/commands/test_init.py | 12 + tests/commands/test_install.py | 12 + tests/commands/test_lock.py | 12 + tests/commands/test_new.py | 12 + tests/commands/test_publish.py | 12 + tests/commands/test_remove.py | 12 + tests/commands/test_search.py | 12 + tests/commands/test_show.py | 12 + tests/commands/test_update.py | 12 + tests/commands/test_version.py | 12 + tests/test_plugin.py | 97 ++++ 48 files changed, 1299 insertions(+), 3 deletions(-) create mode 100644 .github/pr-labeler.yml create mode 100644 .github/workflows/pr-labeler.yml create mode 100644 .github/workflows/python-checks.yml create mode 100644 .github/workflows/python-deploy.yml create mode 100644 .github/workflows/release-management.yml create mode 100644 .gitignore rename LICENSE => LICENSE.md (96%) create mode 100644 conan_for_poetry/__init__.py create mode 100644 conan_for_poetry/commands/__init__.py create mode 100644 conan_for_poetry/commands/add.py create mode 100644 conan_for_poetry/commands/build.py create mode 100644 conan_for_poetry/commands/check.py create mode 100644 conan_for_poetry/commands/config.py create mode 100644 conan_for_poetry/commands/env.py create mode 100644 conan_for_poetry/commands/export.py create mode 100644 conan_for_poetry/commands/init.py create mode 100644 conan_for_poetry/commands/install.py create mode 100644 conan_for_poetry/commands/lock.py create mode 100644 conan_for_poetry/commands/new.py create mode 100644 conan_for_poetry/commands/publish.py create mode 100644 conan_for_poetry/commands/remove.py create mode 100644 conan_for_poetry/commands/search.py create mode 100644 conan_for_poetry/commands/show.py create mode 100644 conan_for_poetry/commands/update.py create mode 100644 conan_for_poetry/commands/version.py create mode 100644 conan_for_poetry/plugin.py create mode 100644 poetry.lock create mode 100644 pyproject.toml create mode 100644 tests/__init__.py create mode 100644 tests/commands/__init__.py create mode 100644 tests/commands/test_add.py create mode 100644 tests/commands/test_build.py create mode 100644 tests/commands/test_check.py create mode 100644 tests/commands/test_config.py create mode 100644 tests/commands/test_env.py create mode 100644 tests/commands/test_export.py create mode 100644 tests/commands/test_init.py create mode 100644 tests/commands/test_install.py create mode 100644 tests/commands/test_lock.py create mode 100644 tests/commands/test_new.py create mode 100644 tests/commands/test_publish.py create mode 100644 tests/commands/test_remove.py create mode 100644 tests/commands/test_search.py create mode 100644 tests/commands/test_show.py create mode 100644 tests/commands/test_update.py create mode 100644 tests/commands/test_version.py create mode 100644 tests/test_plugin.py diff --git a/.github/pr-labeler.yml b/.github/pr-labeler.yml new file mode 100644 index 0000000..4bba0fe --- /dev/null +++ b/.github/pr-labeler.yml @@ -0,0 +1,2 @@ +feature: 'feature/*' +fix: fix/* diff --git a/.github/workflows/pr-labeler.yml b/.github/workflows/pr-labeler.yml new file mode 100644 index 0000000..164027a --- /dev/null +++ b/.github/workflows/pr-labeler.yml @@ -0,0 +1,13 @@ +name: PR Labeler +on: + pull_request: + types: + - opened + +jobs: + pr-labeler: + runs-on: ubuntu-latest + steps: + - uses: TimonVS/pr-labeler-action@v2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/python-checks.yml b/.github/workflows/python-checks.yml new file mode 100644 index 0000000..c8525dd --- /dev/null +++ b/.github/workflows/python-checks.yml @@ -0,0 +1,68 @@ +name: Deploy Project + +on: + push + + +jobs: + + PyPI Master Deployment: + + runs-on: ubuntu-latest + strategy: + max-parallel: 4 + matrix: + python-version: [3.7] + + # Only deploy on release branches + if: github.ref != master && github.ref != development && startsWith(github.event.ref, 'refs/tags') + + steps: + + - uses: actions/checkout@v1 + + - name: Install Poetry + uses: dschep/install-poetry-action@v1.2 + + - name: Install Dependencies + run: poetry install + + - name: Build + run: poetry build + + - name: Publish + uses: pypa/gh-action-pypi-publish@master + with: + user: __token__ + password: ${{ secrets.PyPIToken }} + repository_url: https://pypi.org + + PyPI Development Deployment: + + runs-on: ubuntu-latest + strategy: + max-parallel: 4 + matrix: + python-version: [3.7] + + if: github.ref != development + + steps: + + - uses: actions/checkout@v1 + + - name: Install Poetry + uses: dschep/install-poetry-action@v1.2 + + - name: Install Dependencies + run: poetry install + + - name: Build + run: poetry build + + - name: Publish + uses: pypa/gh-action-pypi-publish@master + with: + user: __token__ + password: ${{ secrets.TestPyPIToken }} + repository_url: https://test.pypi.org/ diff --git a/.github/workflows/python-deploy.yml b/.github/workflows/python-deploy.yml new file mode 100644 index 0000000..de3a0c5 --- /dev/null +++ b/.github/workflows/python-deploy.yml @@ -0,0 +1,63 @@ +name: Deploy Project + +on: + release: + types: [published] + +jobs: + + PyPI Master Deployment: + + runs-on: ubuntu-latest + strategy: + max-parallel: 4 + matrix: + python-version: [3.8] + + steps: + + - uses: actions/checkout@v1 + + - name: Install Poetry + uses: dschep/install-poetry-action@v1.2 + + - name: Install Dependencies + run: poetry install + + - name: Build + run: poetry build + + - name: Publish + uses: pypa/gh-action-pypi-publish@master + with: + user: __token__ + password: ${{ secrets.PyPIToken }} + repository_url: https://pypi.org + + PyPI Development Deployment: + + runs-on: ubuntu-latest + strategy: + max-parallel: 4 + matrix: + python-version: [3.8] + + steps: + + - uses: actions/checkout@v1 + + - name: Install Poetry + uses: dschep/install-poetry-action@v1.2 + + - name: Install Dependencies + run: poetry install + + - name: Build + run: poetry build + + - name: Publish + uses: pypa/gh-action-pypi-publish@master + with: + user: __token__ + password: ${{ secrets.TestPyPIToken }} + repository_url: https://test.pypi.org/ diff --git a/.github/workflows/release-management.yml b/.github/workflows/release-management.yml new file mode 100644 index 0000000..f65d71f --- /dev/null +++ b/.github/workflows/release-management.yml @@ -0,0 +1,15 @@ +name: Release Management + +on: + push: + branches: + - development + - release-* + +jobs: + update_draft_release: + runs-on: ubuntu-latest + steps: + - uses: toolmantim/release-drafter@v5.2.0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2ab43b0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +#Project +Build/ + +#Visual Studio +*.sln +*.pyproj + +#Python +*.egg-info +*.pyc +dist/ +.vs/ \ No newline at end of file diff --git a/LICENSE b/LICENSE.md similarity index 96% rename from LICENSE rename to LICENSE.md index 60c11c2..9953010 100644 --- a/LICENSE +++ b/LICENSE.md @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2019 Synodic Software +Copyright (c) 2019 Asher Norland Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index c1775ee..8dde1f1 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ -# Conan-Poetry-Plugin -A Plugin for Poetry that enables integrated Conan support. +# Conan-for-Poetry +A plugin for Poetry that enables integrated Conan support. diff --git a/conan_for_poetry/__init__.py b/conan_for_poetry/__init__.py new file mode 100644 index 0000000..5f28270 --- /dev/null +++ b/conan_for_poetry/__init__.py @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/conan_for_poetry/commands/__init__.py b/conan_for_poetry/commands/__init__.py new file mode 100644 index 0000000..5f28270 --- /dev/null +++ b/conan_for_poetry/commands/__init__.py @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/conan_for_poetry/commands/add.py b/conan_for_poetry/commands/add.py new file mode 100644 index 0000000..c7095f5 --- /dev/null +++ b/conan_for_poetry/commands/add.py @@ -0,0 +1,7 @@ +from conans.client.conan_api import ConanAPIV1 + +def ConanAdd(): + + api = ConanAPIV1() + + raise NotImplementedError() \ No newline at end of file diff --git a/conan_for_poetry/commands/build.py b/conan_for_poetry/commands/build.py new file mode 100644 index 0000000..dbd5b2b --- /dev/null +++ b/conan_for_poetry/commands/build.py @@ -0,0 +1,8 @@ +from conans.client.conan_api import ConanAPIV1 + +def ConanBuild(): + + api = ConanAPIV1() + + # TODO: call build + raise NotImplementedError() \ No newline at end of file diff --git a/conan_for_poetry/commands/check.py b/conan_for_poetry/commands/check.py new file mode 100644 index 0000000..f49a830 --- /dev/null +++ b/conan_for_poetry/commands/check.py @@ -0,0 +1,7 @@ +from conans.client.conan_api import ConanAPIV1 + +def ConanCheck(): + + api = ConanAPIV1() + + raise NotImplementedError() \ No newline at end of file diff --git a/conan_for_poetry/commands/config.py b/conan_for_poetry/commands/config.py new file mode 100644 index 0000000..10c498a --- /dev/null +++ b/conan_for_poetry/commands/config.py @@ -0,0 +1,7 @@ +from conans.client.conan_api import ConanAPIV1 + +def ConanConfig(): + + api = ConanAPIV1() + + raise NotImplementedError() \ No newline at end of file diff --git a/conan_for_poetry/commands/env.py b/conan_for_poetry/commands/env.py new file mode 100644 index 0000000..11d8fbf --- /dev/null +++ b/conan_for_poetry/commands/env.py @@ -0,0 +1,7 @@ +from conans.client.conan_api import ConanAPIV1 + +def ConanEnv(): + + api = ConanAPIV1() + + raise NotImplementedError() \ No newline at end of file diff --git a/conan_for_poetry/commands/export.py b/conan_for_poetry/commands/export.py new file mode 100644 index 0000000..52627bc --- /dev/null +++ b/conan_for_poetry/commands/export.py @@ -0,0 +1,7 @@ +from conans.client.conan_api import ConanAPIV1 + +def ConanExport(): + + api = ConanAPIV1() + + raise NotImplementedError() \ No newline at end of file diff --git a/conan_for_poetry/commands/init.py b/conan_for_poetry/commands/init.py new file mode 100644 index 0000000..1bda841 --- /dev/null +++ b/conan_for_poetry/commands/init.py @@ -0,0 +1,7 @@ +from conans.client.conan_api import ConanAPIV1 + +def ConanInit(): + + api = ConanAPIV1() + + raise NotImplementedError() \ No newline at end of file diff --git a/conan_for_poetry/commands/install.py b/conan_for_poetry/commands/install.py new file mode 100644 index 0000000..69eaf55 --- /dev/null +++ b/conan_for_poetry/commands/install.py @@ -0,0 +1,18 @@ +from conans.client.conan_api import ConanAPIV1 + +def ConanInstall(): + + api = ConanAPIV1() + + # TODO: Set remotes list + remotes = [] + + for name, url in remotes: + api.remote_add(name, url, verify_ssl = True, force = True) + + + # TODO: grab installation settings + + # TODO: grab editable settings + + raise NotImplementedError() diff --git a/conan_for_poetry/commands/lock.py b/conan_for_poetry/commands/lock.py new file mode 100644 index 0000000..a87f3c9 --- /dev/null +++ b/conan_for_poetry/commands/lock.py @@ -0,0 +1,7 @@ +from conans.client.conan_api import ConanAPIV1 + +def ConanLock(): + + api = ConanAPIV1() + + raise NotImplementedError() \ No newline at end of file diff --git a/conan_for_poetry/commands/new.py b/conan_for_poetry/commands/new.py new file mode 100644 index 0000000..1c5457e --- /dev/null +++ b/conan_for_poetry/commands/new.py @@ -0,0 +1,7 @@ +from conans.client.conan_api import ConanAPIV1 + +def ConanNew(): + + api = ConanAPIV1() + + raise NotImplementedError() \ No newline at end of file diff --git a/conan_for_poetry/commands/publish.py b/conan_for_poetry/commands/publish.py new file mode 100644 index 0000000..55d7a5c --- /dev/null +++ b/conan_for_poetry/commands/publish.py @@ -0,0 +1,9 @@ +from conans.client.conan_api import ConanAPIV1 + +def ConanPublish(): + + api = ConanAPIV1() + + # TODO: Implement upload + + raise NotImplementedError() \ No newline at end of file diff --git a/conan_for_poetry/commands/remove.py b/conan_for_poetry/commands/remove.py new file mode 100644 index 0000000..e8c6007 --- /dev/null +++ b/conan_for_poetry/commands/remove.py @@ -0,0 +1,7 @@ +from conans.client.conan_api import ConanAPIV1 + +def ConanRemove(): + + api = ConanAPIV1() + + raise NotImplementedError() \ No newline at end of file diff --git a/conan_for_poetry/commands/search.py b/conan_for_poetry/commands/search.py new file mode 100644 index 0000000..f08c959 --- /dev/null +++ b/conan_for_poetry/commands/search.py @@ -0,0 +1,7 @@ +from conans.client.conan_api import ConanAPIV1 + +def ConanSearch(): + + api = ConanAPIV1() + + raise NotImplementedError() \ No newline at end of file diff --git a/conan_for_poetry/commands/show.py b/conan_for_poetry/commands/show.py new file mode 100644 index 0000000..6c2036f --- /dev/null +++ b/conan_for_poetry/commands/show.py @@ -0,0 +1,7 @@ +from conans.client.conan_api import ConanAPIV1 + +def ConanShow(): + + api = ConanAPIV1() + + raise NotImplementedError() \ No newline at end of file diff --git a/conan_for_poetry/commands/update.py b/conan_for_poetry/commands/update.py new file mode 100644 index 0000000..c077d71 --- /dev/null +++ b/conan_for_poetry/commands/update.py @@ -0,0 +1,15 @@ +from conans.client.conan_api import ConanAPIV1 + +def ConanUpdate(): + + api = ConanAPIV1() + + # TODO: Set remotes list + remotes = [] + + for name, url in remotes: + api.remote_add(name, url, verify_ssl = True, force = True) + + # TODO: Implement install + + raise NotImplementedError() diff --git a/conan_for_poetry/commands/version.py b/conan_for_poetry/commands/version.py new file mode 100644 index 0000000..146c035 --- /dev/null +++ b/conan_for_poetry/commands/version.py @@ -0,0 +1,7 @@ +from conans.client.conan_api import ConanAPIV1 + +def ConanVersion(): + + api = ConanAPIV1() + + raise NotImplementedError() \ No newline at end of file diff --git a/conan_for_poetry/plugin.py b/conan_for_poetry/plugin.py new file mode 100644 index 0000000..170a1e3 --- /dev/null +++ b/conan_for_poetry/plugin.py @@ -0,0 +1,80 @@ + +class ConanPlugin(): + + def PoetryNew(self): + from .commands.new import ConanNew + ConanNew() + + def PoetryInit(self): + from .commands.init import ConanInit + ConanInit() + + + def PoetryInstall(self): + from .commands.install import ConanInstall + ConanInstall() + + + def PoetryUpdate(self): + from .commands.update import ConanUpdate + ConanUpdate() + + + def PoetryAdd(self): + from .commands.add import ConanAdd + ConanAdd() + + + def PoetryRemove(self): + from .commands.remove import ConanRemove + ConanRemove() + + + def PoetryShow(self): + from .commands.show import ConanShow + ConanShow() + + + def PoetryBuild(self): + from .commands.build import ConanBuild + ConanBuild() + + + def PoetryPublish(self): + from .commands.publish import ConanPublish + ConanPublish() + + + def PoetryConfig(self): + from .commands.config import ConanConfig + ConanConfig() + + + def PoetryCheck(self): + from .commands.check import ConanCheck + ConanCheck() + + + def PoetrySearch(self): + from .commands.search import ConanSearch + ConanSearch() + + + def PoetryLock(self): + from .commands.lock import ConanLock + ConanLock() + + + def PoetryVersion(self): + from .commands.version import ConanVersion + ConanVersion() + + + def PoetryExport(self): + from .commands.export import ConanExport + ConanExport() + + + def PoetryEnv(self): + from .commands.env import ConanEnv + ConanEnv() \ No newline at end of file diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 0000000..cc44641 --- /dev/null +++ b/poetry.lock @@ -0,0 +1,585 @@ +[[package]] +category = "main" +description = "An abstract syntax tree for Python with inference support." +name = "astroid" +optional = false +python-versions = ">=3.5.*" +version = "2.3.2" + +[package.dependencies] +lazy-object-proxy = ">=1.4.0,<1.5.0" +six = "1.12" +wrapt = ">=1.11.0,<1.12.0" + +[[package]] +category = "main" +description = "Classes Without Boilerplate" +name = "attrs" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "19.3.0" + +[[package]] +category = "main" +description = "Fast and simple WSGI-framework for small web-applications." +name = "bottle" +optional = false +python-versions = "*" +version = "0.12.17" + +[[package]] +category = "main" +description = "httplib2 caching for requests" +name = "cachecontrol" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "0.12.5" + +[package.dependencies] +lockfile = ">=0.9" +msgpack = "*" +requests = "*" + +[[package]] +category = "main" +description = "Cachy provides a simple yet effective caching library." +name = "cachy" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "0.2.0" + +[[package]] +category = "main" +description = "Python package for providing Mozilla's CA Bundle." +name = "certifi" +optional = false +python-versions = "*" +version = "2019.9.11" + +[[package]] +category = "main" +description = "Universal encoding detector for Python 2 and 3" +name = "chardet" +optional = false +python-versions = "*" +version = "3.0.4" + +[[package]] +category = "main" +description = "Cleo allows you to create beautiful and testable command-line interfaces." +name = "cleo" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "0.6.8" + +[package.dependencies] +pastel = ">=0.1.0,<0.2.0" +pylev = ">=1.3,<2.0" + +[[package]] +category = "main" +description = "Cross-platform colored terminal text." +name = "colorama" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "0.4.1" + +[[package]] +category = "main" +description = "Conan C/C++ package manager" +name = "conan" +optional = false +python-versions = "*" +version = "1.19.2" + +[package.dependencies] +Jinja2 = ">=2.3,<3" +PyJWT = ">=1.4.0,<2.0.0" +PyYAML = ">=3.11,<6.0" +astroid = ">=1.6.5" +bottle = ">=0.12.8,<0.13" +colorama = ">=0.3.3,<0.5.0" +deprecation = ">=2.0,<2.1" +distro = ">=1.0.2,<1.2.0" +fasteners = ">=0.14.1" +future = ">=0.16.0,<0.19.0" +node-semver = "0.6.1" +patch = "1.16" +pluginbase = ">=0.5,<1.0" +pygments = ">=2.0,<3.0" +pylint = ">=1.9.3,<2.3.0 || >2.3.0" +python-dateutil = ">=2.7.0,<3" +requests = ">=2.8.1,<3.0.0" +six = ">=1.10.0" +tqdm = ">=4.28.1,<5" +urllib3 = "<1.25.4 || >1.25.4,<1.25.5 || >1.25.5" + +[[package]] +category = "dev" +description = "Code coverage measurement for Python" +name = "coverage" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, <4" +version = "4.5.4" + +[[package]] +category = "main" +description = "A library to handle automated deprecations" +name = "deprecation" +optional = false +python-versions = "*" +version = "2.0.7" + +[package.dependencies] +packaging = "*" + +[[package]] +category = "main" +description = "Linux Distribution - a Linux OS platform information API" +name = "distro" +optional = false +python-versions = "*" +version = "1.1.0" + +[[package]] +category = "main" +description = "A python package that provides useful locks." +name = "fasteners" +optional = false +python-versions = "*" +version = "0.15" + +[package.dependencies] +monotonic = ">=0.1" +six = "*" + +[[package]] +category = "main" +description = "Clean single-source support for Python 3 and 2" +name = "future" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +version = "0.18.1" + +[[package]] +category = "main" +description = "HTML parser based on the WHATWG HTML specification" +name = "html5lib" +optional = false +python-versions = "*" +version = "1.0.1" + +[package.dependencies] +six = ">=1.9" +webencodings = "*" + +[[package]] +category = "main" +description = "Internationalized Domain Names in Applications (IDNA)" +name = "idna" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "2.8" + +[[package]] +category = "main" +description = "Read metadata from Python packages" +name = "importlib-metadata" +optional = false +python-versions = ">=2.7,!=3.0,!=3.1,!=3.2,!=3.3" +version = "0.23" + +[package.dependencies] +zipp = ">=0.5" + +[[package]] +category = "main" +description = "A Python utility / library to sort Python imports." +name = "isort" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "4.3.21" + +[[package]] +category = "main" +description = "A very fast and expressive template engine." +name = "jinja2" +optional = false +python-versions = "*" +version = "2.10.3" + +[package.dependencies] +MarkupSafe = ">=0.23" + +[[package]] +category = "main" +description = "An implementation of JSON Schema validation for Python" +name = "jsonschema" +optional = false +python-versions = "*" +version = "3.1.1" + +[package.dependencies] +attrs = ">=17.4.0" +importlib-metadata = "*" +pyrsistent = ">=0.14.0" +setuptools = "*" +six = ">=1.11.0" + +[[package]] +category = "main" +description = "A fast and thorough lazy object proxy." +name = "lazy-object-proxy" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "1.4.2" + +[[package]] +category = "main" +description = "Platform-independent file locking module" +marker = "extra == \"filecache\"" +name = "lockfile" +optional = false +python-versions = "*" +version = "0.12.2" + +[[package]] +category = "main" +description = "Safely add untrusted strings to HTML/XML markup." +name = "markupsafe" +optional = false +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" +version = "1.1.1" + +[[package]] +category = "main" +description = "McCabe checker, plugin for flake8" +name = "mccabe" +optional = false +python-versions = "*" +version = "0.6.1" + +[[package]] +category = "main" +description = "An implementation of time.monotonic() for Python 2 & < 3.3" +name = "monotonic" +optional = false +python-versions = "*" +version = "1.5" + +[[package]] +category = "main" +description = "More routines for operating on iterables, beyond itertools" +name = "more-itertools" +optional = false +python-versions = ">=3.4" +version = "7.2.0" + +[[package]] +category = "main" +description = "MessagePack (de)serializer." +name = "msgpack" +optional = false +python-versions = "*" +version = "0.6.2" + +[[package]] +category = "main" +description = "port of node-semver" +name = "node-semver" +optional = false +python-versions = "*" +version = "0.6.1" + +[[package]] +category = "main" +description = "Core utilities for Python packages" +name = "packaging" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "19.2" + +[package.dependencies] +pyparsing = ">=2.0.2" +six = "*" + +[[package]] +category = "main" +description = "Bring colors to your terminal." +name = "pastel" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "0.1.1" + +[[package]] +category = "main" +description = "Library to parse and apply unified diffs" +name = "patch" +optional = false +python-versions = "*" +version = "1.16" + +[[package]] +category = "main" +description = "Query metadatdata from sdists / bdists / installed packages." +name = "pkginfo" +optional = false +python-versions = "*" +version = "1.5.0.1" + +[[package]] +category = "main" +description = "PluginBase is a module for Python that enables the development of flexible plugin systems in Python." +name = "pluginbase" +optional = false +python-versions = "*" +version = "0.7" + +[[package]] +category = "main" +description = "Python dependency management and packaging made easy." +name = "poetry" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "0.12.17" + +[package.dependencies] +cachecontrol = ">=0.12.4,<0.13.0" +cachy = ">=0.2,<0.3" +cleo = ">=0.6.7,<0.7.0" +html5lib = ">=1.0,<2.0" +jsonschema = ">=3.0a3,<4.0" +pkginfo = ">=1.4,<2.0" +pyparsing = ">=2.2,<3.0" +pyrsistent = ">=0.14.2,<0.15.0" +requests = ">=2.18,<3.0" +requests-toolbelt = ">=0.8.0,<0.9.0" +shellingham = ">=1.1,<2.0" +tomlkit = ">=0.5.1,<0.6.0" + +[[package]] +category = "main" +description = "Pygments is a syntax highlighting package written in Python." +name = "pygments" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +version = "2.4.2" + +[[package]] +category = "main" +description = "JSON Web Token implementation in Python" +name = "pyjwt" +optional = false +python-versions = "*" +version = "1.7.1" + +[[package]] +category = "main" +description = "A pure Python Levenshtein implementation that's not freaking GPL'd." +name = "pylev" +optional = false +python-versions = "*" +version = "1.3.0" + +[[package]] +category = "main" +description = "python code static checker" +name = "pylint" +optional = false +python-versions = ">=3.5.*" +version = "2.4.3" + +[package.dependencies] +astroid = ">=2.3.0,<2.4" +colorama = "*" +isort = ">=4.2.5,<5" +mccabe = ">=0.6,<0.7" + +[[package]] +category = "main" +description = "Python parsing module" +name = "pyparsing" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +version = "2.4.2" + +[[package]] +category = "main" +description = "Persistent/Functional/Immutable data structures" +name = "pyrsistent" +optional = false +python-versions = "*" +version = "0.14.11" + +[package.dependencies] +six = "*" + +[[package]] +category = "main" +description = "Extensions to the standard Python datetime module" +name = "python-dateutil" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +version = "2.8.0" + +[package.dependencies] +six = ">=1.5" + +[[package]] +category = "main" +description = "YAML parser and emitter for Python" +name = "pyyaml" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "5.1.2" + +[[package]] +category = "main" +description = "Python HTTP for Humans." +name = "requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +version = "2.22.0" + +[package.dependencies] +certifi = ">=2017.4.17" +chardet = ">=3.0.2,<3.1.0" +idna = ">=2.5,<2.9" +urllib3 = ">=1.21.1,<1.25.0 || >1.25.0,<1.25.1 || >1.25.1,<1.26" + +[[package]] +category = "main" +description = "A utility belt for advanced users of python-requests" +name = "requests-toolbelt" +optional = false +python-versions = "*" +version = "0.8.0" + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + +[[package]] +category = "main" +description = "Tool to Detect Surrounding Shell" +name = "shellingham" +optional = false +python-versions = ">=2.6,!=3.0,!=3.1,!=3.2,!=3.3" +version = "1.3.1" + +[[package]] +category = "main" +description = "Python 2 and 3 compatibility utilities" +name = "six" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*" +version = "1.12.0" + +[[package]] +category = "main" +description = "Style preserving TOML library" +name = "tomlkit" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "0.5.8" + +[[package]] +category = "main" +description = "Fast, Extensible Progress Meter" +name = "tqdm" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*" +version = "4.36.1" + +[[package]] +category = "main" +description = "HTTP library with thread-safe connection pooling, file post, and more." +name = "urllib3" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4" +version = "1.25.6" + +[[package]] +category = "main" +description = "Character encoding aliases for legacy web content" +name = "webencodings" +optional = false +python-versions = "*" +version = "0.5.1" + +[[package]] +category = "main" +description = "Module for decorators, wrappers and monkey patching." +name = "wrapt" +optional = false +python-versions = "*" +version = "1.11.2" + +[[package]] +category = "main" +description = "Backport of pathlib-compatible object wrapper for zip files" +name = "zipp" +optional = false +python-versions = ">=2.7" +version = "0.6.0" + +[package.dependencies] +more-itertools = "*" + +[metadata] +content-hash = "9e7f8338078d2a6bad17f904438de7c4d59a24886cdcba66580ba7cd86511855" +python-versions = "^3.8" + +[metadata.hashes] +astroid = ["09a3fba616519311f1af8a461f804b68f0370e100c9264a035aa7846d7852e33", "5a79c9b4bd6c4be777424593f957c996e20beb5f74e0bc332f47713c6f675efe"] +attrs = ["08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c", "f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72"] +bottle = ["1896a33b2c7c5be07491e6789e341f2e9593a0ff024cc0374615118587c81647", "e9eaa412a60cc3d42ceb42f58d15864d9ed1b92e9d630b8130c871c5bb16107c"] +cachecontrol = ["cef77effdf51b43178f6a2d3b787e3734f98ade253fa3187f3bb7315aaa42ff7"] +cachy = ["b71513e5a38ce90c1280c02b7d8d6bb3fdf64666c9cc0584f2479afea097d56c", "b71e8e7ddb5b386e23e81befdfac8a93885406139b8681bedc17b3444fcb8fca"] +certifi = ["e4f3620cfea4f83eedc95b24abd9cd56f3c4b146dd0177e83a21b4eb49e21e50", "fd7c7c74727ddcf00e9acd26bba8da604ffec95bf1c2144e67aff7a8b50e6cef"] +chardet = ["84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae", "fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"] +cleo = ["85a63076b72ca376fb06668be1fc7758dc16740b394783d5cc65200c4b32f71b", "9b7f79f1aa470a025c0d28c76aa225ee9e65028d32f80032e871aa3500df61b8"] +colorama = ["05eed71e2e327246ad6b38c540c4a3117230b19679b875190486ddd2d721422d", "f8ac84de7840f5b9c4e3347b3c1eaa50f7e49c2b07596221daec5edaabbd7c48"] +conan = ["1a0761289074b1e1e4d6660e0f9412765a19de13bfbebb429d12df06439f9c26"] +coverage = ["08907593569fe59baca0bf152c43f3863201efb6113ecb38ce7e97ce339805a6", "0be0f1ed45fc0c185cfd4ecc19a1d6532d72f86a2bac9de7e24541febad72650", "141f08ed3c4b1847015e2cd62ec06d35e67a3ac185c26f7635f4406b90afa9c5", "19e4df788a0581238e9390c85a7a09af39c7b539b29f25c89209e6c3e371270d", "23cc09ed395b03424d1ae30dcc292615c1372bfba7141eb85e11e50efaa6b351", "245388cda02af78276b479f299bbf3783ef0a6a6273037d7c60dc73b8d8d7755", "331cb5115673a20fb131dadd22f5bcaf7677ef758741312bee4937d71a14b2ef", "386e2e4090f0bc5df274e720105c342263423e77ee8826002dcffe0c9533dbca", "3a794ce50daee01c74a494919d5ebdc23d58873747fa0e288318728533a3e1ca", "60851187677b24c6085248f0a0b9b98d49cba7ecc7ec60ba6b9d2e5574ac1ee9", "63a9a5fc43b58735f65ed63d2cf43508f462dc49857da70b8980ad78d41d52fc", "6b62544bb68106e3f00b21c8930e83e584fdca005d4fffd29bb39fb3ffa03cb5", "6ba744056423ef8d450cf627289166da65903885272055fb4b5e113137cfa14f", "7494b0b0274c5072bddbfd5b4a6c6f18fbbe1ab1d22a41e99cd2d00c8f96ecfe", "826f32b9547c8091679ff292a82aca9c7b9650f9fda3e2ca6bf2ac905b7ce888", "93715dffbcd0678057f947f496484e906bf9509f5c1c38fc9ba3922893cda5f5", "9a334d6c83dfeadae576b4d633a71620d40d1c379129d587faa42ee3e2a85cce", "af7ed8a8aa6957aac47b4268631fa1df984643f07ef00acd374e456364b373f5", "bf0a7aed7f5521c7ca67febd57db473af4762b9622254291fbcbb8cd0ba5e33e", "bf1ef9eb901113a9805287e090452c05547578eaab1b62e4ad456fcc049a9b7e", "c0afd27bc0e307a1ffc04ca5ec010a290e49e3afbe841c5cafc5c5a80ecd81c9", "dd579709a87092c6dbee09d1b7cfa81831040705ffa12a1b248935274aee0437", "df6712284b2e44a065097846488f66840445eb987eb81b3cc6e4149e7b6982e1", "e07d9f1a23e9e93ab5c62902833bf3e4b1f65502927379148b6622686223125c", "e2ede7c1d45e65e209d6093b762e98e8318ddeff95317d07a27a2140b80cfd24", "e4ef9c164eb55123c62411f5936b5c2e521b12356037b6e1c2617cef45523d47", "eca2b7343524e7ba246cab8ff00cab47a2d6d54ada3b02772e908a45675722e2", "eee64c616adeff7db37cc37da4180a3a5b6177f5c46b187894e633f088fb5b28", "ef824cad1f980d27f26166f86856efe11eff9912c4fed97d3804820d43fa550c", "efc89291bd5a08855829a3c522df16d856455297cf35ae827a37edac45f466a7", "fa964bae817babece5aa2e8c1af841bebb6d0b9add8e637548809d040443fee0", "ff37757e068ae606659c28c3bd0d923f9d29a85de79bf25b2b34b148473b5025"] +deprecation = ["c0392f676a6146f0238db5744d73e786a43510d54033f80994ef2f4c9df192ed", "dc9b4f252b7aca8165ce2764a71da92a653b5ffbf7a389461d7a640f6536ecb2"] +distro = ["722054925f339a39ca411a8c7079f390a41d42c422697bedf228f1a9c46ac1ee", "f0e43d555fd45eda71eb474c2927c17b75e0673bf13f90f70bdce5b1a90cf0c5"] +fasteners = ["007e4d2b2d4a10093f67e932e5166722d2eab83b77724156e92ad013c6226574", "3a176da6b70df9bb88498e1a18a9e4a8579ed5b9141207762368a1017bf8f5ef"] +future = ["858e38522e8fd0d3ce8f0c1feaf0603358e366d5403209674c7b617fa0c24093"] +html5lib = ["20b159aa3badc9d5ee8f5c647e5efd02ed2a66ab8d354930bd9ff139fc1dc0a3", "66cb0dcfdbbc4f9c3ba1a63fdb511ffdbd4f513b2b6d81b80cd26ce6b3fb3736"] +idna = ["c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407", "ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c"] +importlib-metadata = ["aa18d7378b00b40847790e7c27e11673d7fed219354109d0e7b9e5b25dc3ad26", "d5f18a79777f3aa179c145737780282e27b508fc8fd688cb17c7a813e8bd39af"] +isort = ["54da7e92468955c4fceacd0c86bd0ec997b0e1ee80d97f67c35a78b719dccab1", "6e811fcb295968434526407adb8796944f1988c5b65e8139058f2014cbe100fd"] +jinja2 = ["74320bb91f31270f9551d46522e33af46a80c3d619f4a4bf42b3164d30b5911f", "9fe95f19286cfefaa917656583d020be14e7859c6b0252588391e47db34527de"] +jsonschema = ["2fa0684276b6333ff3c0b1b27081f4b2305f0a36cf702a23db50edb141893c3f", "94c0a13b4a0616458b42529091624e66700a17f847453e52279e35509a5b7631"] +lazy-object-proxy = ["02b260c8deb80db09325b99edf62ae344ce9bc64d68b7a634410b8e9a568edbf", "18f9c401083a4ba6e162355873f906315332ea7035803d0fd8166051e3d402e3", "1f2c6209a8917c525c1e2b55a716135ca4658a3042b5122d4e3413a4030c26ce", "2f06d97f0ca0f414f6b707c974aaf8829c2292c1c497642f63824119d770226f", "616c94f8176808f4018b39f9638080ed86f96b55370b5a9463b2ee5c926f6c5f", "63b91e30ef47ef68a30f0c3c278fbfe9822319c15f34b7538a829515b84ca2a0", "77b454f03860b844f758c5d5c6e5f18d27de899a3db367f4af06bec2e6013a8e", "83fe27ba321e4cfac466178606147d3c0aa18e8087507caec78ed5a966a64905", "84742532d39f72df959d237912344d8a1764c2d03fe58beba96a87bfa11a76d8", "874ebf3caaf55a020aeb08acead813baf5a305927a71ce88c9377970fe7ad3c2", "9f5caf2c7436d44f3cec97c2fa7791f8a675170badbfa86e1992ca1b84c37009", "a0c8758d01fcdfe7ae8e4b4017b13552efa7f1197dd7358dc9da0576f9d0328a", "a4def978d9d28cda2d960c279318d46b327632686d82b4917516c36d4c274512", "ad4f4be843dace866af5fc142509e9b9817ca0c59342fdb176ab6ad552c927f5", "ae33dd198f772f714420c5ab698ff05ff900150486c648d29951e9c70694338e", "b4a2b782b8a8c5522ad35c93e04d60e2ba7f7dcb9271ec8e8c3e08239be6c7b4", "c462eb33f6abca3b34cdedbe84d761f31a60b814e173b98ede3c81bb48967c4f", "fd135b8d35dfdcdb984828c84d695937e58cc5f49e1c854eb311c4d6aa03f4f1"] +lockfile = ["6aed02de03cba24efabcd600b30540140634fc06cfa603822d508d5361e9f799", "6c3cb24f344923d30b2785d5ad75182c8ea7ac1b6171b08657258ec7429d50fa"] +markupsafe = ["00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473", "09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161", "09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235", "1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5", "24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff", "29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b", "43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1", "46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e", "500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183", "535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66", "62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1", "6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1", "717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e", "79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b", "7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905", "88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735", "8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d", "98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e", "9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d", "9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c", "ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21", "b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2", "b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5", "b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b", "ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6", "c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f", "cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f", "e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7"] +mccabe = ["ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", "dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"] +monotonic = ["23953d55076df038541e648a53676fb24980f7a1be290cdda21300b3bc21dfb0", "552a91f381532e33cbd07c6a2655a21908088962bb8fa7239ecbcc6ad1140cc7"] +more-itertools = ["409cd48d4db7052af495b09dec721011634af3753ae1ef92d2b32f73a745f832", "92b8c4b06dac4f0611c0729b2f2ede52b2e1bac1ab48f089c7ddc12e26bb60c4"] +msgpack = ["0cc7ca04e575ba34fea7cfcd76039f55def570e6950e4155a4174368142c8e1b", "187794cd1eb73acccd528247e3565f6760bd842d7dc299241f830024a7dd5610", "1904b7cb65342d0998b75908304a03cb004c63ef31e16c8c43fee6b989d7f0d7", "229a0ccdc39e9b6c6d1033cd8aecd9c296823b6c87f0de3943c59b8bc7c64bee", "24149a75643aeaa81ece4259084d11b792308a6cf74e796cbb35def94c89a25a", "30b88c47e0cdb6062daed88ca283b0d84fa0d2ad6c273aa0788152a1c643e408", "32fea0ea3cd1ef820286863a6202dcfd62a539b8ec3edcbdff76068a8c2cc6ce", "355f7fd0f90134229eaeefaee3cf42e0afc8518e8f3cd4b25f541a7104dcb8f9", "4abdb88a9b67e64810fb54b0c24a1fd76b12297b4f7a1467d85a14dd8367191a", "757bd71a9b89e4f1db0622af4436d403e742506dbea978eba566815dc65ec895", "76df51492bc6fa6cc8b65d09efdb67cbba3cbfe55004c3afc81352af92b4a43c", "774f5edc3475917cd95fe593e625d23d8580f9b48b570d8853d06cac171cd170", "8a3ada8401736df2bf497f65589293a86c56e197a80ae7634ec2c3150a2f5082", "a06efd0482a1942aad209a6c18321b5e22d64eb531ea20af138b28172d8f35ba", "b24afc52e18dccc8c175de07c1d680bdf315844566f4952b5bedb908894bec79", "b8b4bd3dafc7b92608ae5462add1c8cc881851c2d4f5d8977fdea5b081d17f21", "c6e5024fc0cdf7f83b6624850309ddd7e06c48a75fa0d1c5173de4d93300eb19", "db7ff14abc73577b0bcbcf73ecff97d3580ecaa0fc8724babce21fdf3fe08ef6", "dedf54d72d9e7b6d043c244c8213fe2b8bbfe66874b9a65b39c4cc892dd99dd4", "ea3c2f859346fcd55fc46e96885301d9c2f7a36d453f5d8f2967840efa1e1830", "f0f47bafe9c9b8ed03e19a100a743662dd8c6d0135e684feea720a0d0046d116"] +node-semver = ["4016f7c1071b0493f18db69ea02d3763e98a633606d7c7beca811e53b5ac66b7", "d4bf83873894591a0cbb6591910d96917fbadc9731e8e39e782d3a2fbc2b841e"] +packaging = ["28b924174df7a2fa32c1953825ff29c61e2f5e082343165438812f00d3a7fc47", "d9551545c6d761f3def1677baf08ab2a3ca17c56879e70fecba2fc4dde4ed108"] +pastel = ["a904e1659512cc9880a028f66de77cc813a4c32f7ceb68725cbc8afad57ef7ef", "bf3b1901b2442ea0d8ab9a390594e5b0c9584709d543a3113506fe8b28cbace3"] +patch = ["c62073f356cff054c8ac24496f1a3d7cfa137835c31e9af39a9f5292fd75bd9f"] +pkginfo = ["7424f2c8511c186cd5424bbf31045b77435b37a8d604990b79d4e70d741148bb", "a6d9e40ca61ad3ebd0b72fbadd4fba16e4c0e4df0428c041e01e06eb6ee71f32"] +pluginbase = ["c0abe3218b86533cca287e7057a37481883c07acef7814b70583406938214cc8"] +poetry = ["0133cd4edc77e955de8cd91203b6728f8365e2849d7fa7da1bfbc14b6529ab43", "6e535de38df7e6ab46ff8d197f53632b071675287d1477efc7bf4a5c4c63bc3f"] +pygments = ["71e430bc85c88a430f000ac1d9b331d2407f681d6f6aec95e8bcfbc3df5b0127", "881c4c157e45f30af185c1ffe8d549d48ac9127433f2c380c24b84572ad66297"] +pyjwt = ["5c6eca3c2940464d106b99ba83b00c6add741c9becaec087fb7ccdefea71350e", "8d59a976fb773f3e6a39c85636357c4f0e242707394cadadd9814f5cbaa20e96"] +pylev = ["063910098161199b81e453025653ec53556c1be7165a9b7c50be2f4d57eae1c3", "1d29a87beb45ebe1e821e7a3b10da2b6b2f4c79b43f482c2df1a1f748a6e114e"] +pylint = ["7b76045426c650d2b0f02fc47c14d7934d17898779da95288a74c2a7ec440702", "856476331f3e26598017290fd65bebe81c960e806776f324093a46b76fb2d1c0"] +pyparsing = ["6f98a7b9397e206d78cc01df10131398f1c8b8510a2f4d97d9abd82e1aacdd80", "d9338df12903bbf5d65a0e4e87c2161968b10d2e489652bb47001d82a9b028b4"] +pyrsistent = ["3ca82748918eb65e2d89f222b702277099aca77e34843c5eb9d52451173970e2"] +python-dateutil = ["7e6584c74aeed623791615e26efd690f29817a27c73085b78e4bad02493df2fb", "c89805f6f4d64db21ed966fda138f8a5ed7a4fdbc1a8ee329ce1b74e3c74da9e"] +pyyaml = ["0113bc0ec2ad727182326b61326afa3d1d8280ae1122493553fd6f4397f33df9", "01adf0b6c6f61bd11af6e10ca52b7d4057dd0be0343eb9283c878cf3af56aee4", "5124373960b0b3f4aa7df1707e63e9f109b5263eca5976c66e08b1c552d4eaf8", "5ca4f10adbddae56d824b2c09668e91219bb178a1eee1faa56af6f99f11bf696", "7907be34ffa3c5a32b60b95f4d95ea25361c951383a894fec31be7252b2b6f34", "7ec9b2a4ed5cad025c2278a1e6a19c011c80a3caaac804fd2d329e9cc2c287c9", "87ae4c829bb25b9fe99cf71fbb2140c448f534e24c998cc60f39ae4f94396a73", "9de9919becc9cc2ff03637872a440195ac4241c80536632fffeb6a1e25a74299", "a5a85b10e450c66b49f98846937e8cfca1db3127a9d5d1e31ca45c3d0bef4c5b", "b0997827b4f6a7c286c01c5f60384d218dca4ed7d9efa945c3e1aa623d5709ae", "b631ef96d3222e62861443cc89d6563ba3eeb816eeb96b2629345ab795e53681", "bf47c0607522fdbca6c9e817a6e81b08491de50f3766a7a0e6a5be7905961b41", "f81025eddd0327c7d4cfe9b62cf33190e1e736cc6e97502b3ec425f574b3e7a8"] +requests = ["11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4", "9cf5292fcd0f598c671cfc1e0d7d1a7f13bb8085e9a590f48c010551dc6c4b31"] +requests-toolbelt = ["42c9c170abc2cacb78b8ab23ac957945c7716249206f90874651971a4acff237", "f6a531936c6fa4c6cfce1b9c10d5c4f498d16528d2a54a22ca00011205a187b5"] +shellingham = ["77d37a4fd287c1e663006f7ecf1b9deca9ad492d0082587bd813c44eb49e4e62", "985b23bbd1feae47ca6a6365eacd314d93d95a8a16f8f346945074c28fe6f3e0"] +six = ["3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c", "d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73"] +tomlkit = ["32c10cc16ded7e4101c79f269910658cc2a0be5913f1252121c3cd603051c269", "96e6369288571799a3052c1ef93b9de440e1ab751aa045f435b55e9d3bcd0690"] +tqdm = ["abc25d0ce2397d070ef07d8c7e706aede7920da163c64997585d42d3537ece3d", "dd3fcca8488bb1d416aa7469d2f277902f26260c45aa86b667b074cd44b3b115"] +urllib3 = ["3de946ffbed6e6746608990594d08faac602528ac7015ac28d33cee6a45b7398", "9a107b99a5393caf59c7aa3c1249c16e6879447533d0887f4336dde834c7be86"] +webencodings = ["a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", "b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"] +wrapt = ["565a021fd19419476b9362b05eeaa094178de64f8361e44468f9e9d7843901e1"] +zipp = ["3718b1cbcd963c7d4c5511a8240812904164b7f381b647143a89d3b98f9bcd8e", "f06903e9f1f43b12d371004b4ac7b06ab39a44adc747266928ae6debfa7b3335"] diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..f3dfa0a --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,30 @@ +[tool.poetry] +name = "conan-for-poetry" +version = "0.0.0" +description = " A Poetry plugin integrating Conan support." + +license = "MIT" + +authors = [ + "Synodic Software" +] + +readme = "README.md" + +repository = "https://github.com/Synodic-Software/Conan-for-Poetry" +homepage = "https://github.com/Synodic-Software/Conan-for-Poetry" + + +[tool.poetry.dependencies] +python = "^3.8" +poetry = "^0.12" +conan = "^1.19" + + +[tool.poetry.dev-dependencies] +pylint = "^2.4" +coverage = "^4.5" + +[build-system] +requires = ["poetry>=0.12"] +build-backend = "poetry.masonry.api" diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..5f28270 --- /dev/null +++ b/tests/__init__.py @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tests/commands/__init__.py b/tests/commands/__init__.py new file mode 100644 index 0000000..5f28270 --- /dev/null +++ b/tests/commands/__init__.py @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tests/commands/test_add.py b/tests/commands/test_add.py new file mode 100644 index 0000000..f0a19db --- /dev/null +++ b/tests/commands/test_add.py @@ -0,0 +1,12 @@ +import unittest + +from conan_for_poetry.commands.add import ConanAdd + +class TestAddCommand(unittest.TestCase): + + def test_Add(self): + self.assertRaises(NotImplementedError, ConanAdd) + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/tests/commands/test_build.py b/tests/commands/test_build.py new file mode 100644 index 0000000..b462457 --- /dev/null +++ b/tests/commands/test_build.py @@ -0,0 +1,13 @@ +import unittest + +from conan_for_poetry.commands.build import ConanBuild + +class TestBuildCommand(unittest.TestCase): + + def test_Build(self): + self.assertRaises(NotImplementedError, ConanBuild) + + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/tests/commands/test_check.py b/tests/commands/test_check.py new file mode 100644 index 0000000..9c5db72 --- /dev/null +++ b/tests/commands/test_check.py @@ -0,0 +1,12 @@ +import unittest + +from conan_for_poetry.commands.check import ConanCheck + +class TestCheckCommand(unittest.TestCase): + + def test_Check(self): + self.assertRaises(NotImplementedError, ConanCheck) + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/tests/commands/test_config.py b/tests/commands/test_config.py new file mode 100644 index 0000000..17ff82c --- /dev/null +++ b/tests/commands/test_config.py @@ -0,0 +1,12 @@ +import unittest + +from conan_for_poetry.commands.config import ConanConfig + +class TestConfigCommand(unittest.TestCase): + + def test_Config(self): + self.assertRaises(NotImplementedError, ConanConfig) + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/tests/commands/test_env.py b/tests/commands/test_env.py new file mode 100644 index 0000000..80941f2 --- /dev/null +++ b/tests/commands/test_env.py @@ -0,0 +1,12 @@ +import unittest + +from conan_for_poetry.commands.env import ConanEnv + +class TestEnvCommand(unittest.TestCase): + + def test_Env(self): + self.assertRaises(NotImplementedError, ConanEnv) + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/tests/commands/test_export.py b/tests/commands/test_export.py new file mode 100644 index 0000000..956e744 --- /dev/null +++ b/tests/commands/test_export.py @@ -0,0 +1,12 @@ +import unittest + +from conan_for_poetry.commands.export import ConanExport + +class TestExportCommand(unittest.TestCase): + + def test_Export(self): + self.assertRaises(NotImplementedError, ConanExport) + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/tests/commands/test_init.py b/tests/commands/test_init.py new file mode 100644 index 0000000..3ad5d96 --- /dev/null +++ b/tests/commands/test_init.py @@ -0,0 +1,12 @@ +import unittest + +from conan_for_poetry.commands.init import ConanInit + +class TestInitCommand(unittest.TestCase): + + def test_Init(self): + self.assertRaises(NotImplementedError, ConanInit) + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/tests/commands/test_install.py b/tests/commands/test_install.py new file mode 100644 index 0000000..ebbaa58 --- /dev/null +++ b/tests/commands/test_install.py @@ -0,0 +1,12 @@ +import unittest + +from conan_for_poetry.commands.install import ConanInstall + +class TestInstallCommand(unittest.TestCase): + + def test_Install(self): + self.assertRaises(NotImplementedError, ConanInstall) + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/tests/commands/test_lock.py b/tests/commands/test_lock.py new file mode 100644 index 0000000..fec0596 --- /dev/null +++ b/tests/commands/test_lock.py @@ -0,0 +1,12 @@ +import unittest + +from conan_for_poetry.commands.lock import ConanLock + +class TestLockCommand(unittest.TestCase): + + def test_Lock(self): + self.assertRaises(NotImplementedError, ConanLock) + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/tests/commands/test_new.py b/tests/commands/test_new.py new file mode 100644 index 0000000..92b5304 --- /dev/null +++ b/tests/commands/test_new.py @@ -0,0 +1,12 @@ +import unittest + +from conan_for_poetry.commands.new import ConanNew + +class TestNewCommand(unittest.TestCase): + + def test_New(self): + self.assertRaises(NotImplementedError, ConanNew) + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/tests/commands/test_publish.py b/tests/commands/test_publish.py new file mode 100644 index 0000000..30ffe96 --- /dev/null +++ b/tests/commands/test_publish.py @@ -0,0 +1,12 @@ +import unittest + +from conan_for_poetry.commands.publish import ConanPublish + +class TestPublishCommand(unittest.TestCase): + + def test_Publish(self): + self.assertRaises(NotImplementedError, ConanPublish) + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/tests/commands/test_remove.py b/tests/commands/test_remove.py new file mode 100644 index 0000000..703320f --- /dev/null +++ b/tests/commands/test_remove.py @@ -0,0 +1,12 @@ +import unittest + +from conan_for_poetry.commands.remove import ConanRemove + +class TestRemoveCommand(unittest.TestCase): + + def test_Remove(self): + self.assertRaises(NotImplementedError, ConanRemove) + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/tests/commands/test_search.py b/tests/commands/test_search.py new file mode 100644 index 0000000..6a38d96 --- /dev/null +++ b/tests/commands/test_search.py @@ -0,0 +1,12 @@ +import unittest + +from conan_for_poetry.commands.search import ConanSearch + +class TestSearchCommand(unittest.TestCase): + + def test_Search(self): + self.assertRaises(NotImplementedError, ConanSearch) + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/tests/commands/test_show.py b/tests/commands/test_show.py new file mode 100644 index 0000000..07dcd40 --- /dev/null +++ b/tests/commands/test_show.py @@ -0,0 +1,12 @@ +import unittest + +from conan_for_poetry.commands.show import ConanShow + +class TestShowCommand(unittest.TestCase): + + def test_Show(self): + self.assertRaises(NotImplementedError, ConanShow) + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/tests/commands/test_update.py b/tests/commands/test_update.py new file mode 100644 index 0000000..c13d39c --- /dev/null +++ b/tests/commands/test_update.py @@ -0,0 +1,12 @@ +import unittest + +from conan_for_poetry.commands.update import ConanUpdate + +class TestUpdateCommand(unittest.TestCase): + + def test_Update(self): + self.assertRaises(NotImplementedError, ConanUpdate) + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/tests/commands/test_version.py b/tests/commands/test_version.py new file mode 100644 index 0000000..838b6ad --- /dev/null +++ b/tests/commands/test_version.py @@ -0,0 +1,12 @@ +import unittest + +from conan_for_poetry.commands.version import ConanVersion + +class TestVersionCommand(unittest.TestCase): + + def test_Version(self): + self.assertRaises(NotImplementedError, ConanVersion) + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/tests/test_plugin.py b/tests/test_plugin.py new file mode 100644 index 0000000..017cbe7 --- /dev/null +++ b/tests/test_plugin.py @@ -0,0 +1,97 @@ +import unittest + +from conan_for_poetry.plugin import ConanPlugin + +class TestRequirements(unittest.TestCase): + + def test_poetry(self): + pass + + def test_repository(self): + pass + + +class TestPlugin(unittest.TestCase): + + def test_PoetryNew(self): + plugin = ConanPlugin() + self.assertRaises(NotImplementedError, plugin.PoetryNew) + + + def test_PoetryInit(self): + plugin = ConanPlugin() + self.assertRaises(NotImplementedError, plugin.PoetryInit) + + + def test_PoetryInstall(self): + plugin = ConanPlugin() + self.assertRaises(NotImplementedError, plugin.PoetryInstall) + + + def test_PoetryUpdate(self): + plugin = ConanPlugin() + self.assertRaises(NotImplementedError, plugin.PoetryUpdate) + + + def test_PoetryAdd(self): + plugin = ConanPlugin() + self.assertRaises(NotImplementedError, plugin.PoetryAdd) + + + def test_PoetryRemove(self): + plugin = ConanPlugin() + self.assertRaises(NotImplementedError, plugin.PoetryRemove) + + + def test_PoetryShow(self): + plugin = ConanPlugin() + self.assertRaises(NotImplementedError, plugin.PoetryShow) + + + def test_PoetryBuild(self): + plugin = ConanPlugin() + self.assertRaises(NotImplementedError, plugin.PoetryBuild) + + + def test_PoetryPublish(self): + plugin = ConanPlugin() + self.assertRaises(NotImplementedError, plugin.PoetryPublish) + + + def test_PoetryConfig(self): + plugin = ConanPlugin() + self.assertRaises(NotImplementedError, plugin.PoetryConfig) + + + def test_PoetryCheck(self): + plugin = ConanPlugin() + self.assertRaises(NotImplementedError, plugin.PoetryCheck) + + + def test_PoetrySearch(self): + plugin = ConanPlugin() + self.assertRaises(NotImplementedError, plugin.PoetrySearch) + + + def test_PoetryLock(self): + plugin = ConanPlugin() + self.assertRaises(NotImplementedError, plugin.PoetryLock) + + + def test_PoetryVersion(self): + plugin = ConanPlugin() + self.assertRaises(NotImplementedError, plugin.PoetryVersion) + + + def test_PoetryExport(self): + plugin = ConanPlugin() + self.assertRaises(NotImplementedError, plugin.PoetryExport) + + + def test_PoetryEnv(self): + plugin = ConanPlugin() + self.assertRaises(NotImplementedError, plugin.PoetryEnv) + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file From 817e9f233aba978670564a5a92a5977924d9606a Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Thu, 19 Dec 2019 23:07:51 -0500 Subject: [PATCH 02/10] Simple Install + Update Tests are now compacted and indicitive of expected success. --- .gitignore | 1 + conan_for_poetry/cli.py | 90 +++ conan_for_poetry/commands/__init__.py | 1 - conan_for_poetry/commands/add.py | 7 - conan_for_poetry/commands/build.py | 8 - conan_for_poetry/commands/check.py | 7 - conan_for_poetry/commands/config.py | 7 - conan_for_poetry/commands/env.py | 7 - conan_for_poetry/commands/export.py | 7 - conan_for_poetry/commands/init.py | 7 - conan_for_poetry/commands/install.py | 18 - conan_for_poetry/commands/lock.py | 7 - conan_for_poetry/commands/new.py | 7 - conan_for_poetry/commands/publish.py | 9 - conan_for_poetry/commands/remove.py | 7 - conan_for_poetry/commands/search.py | 7 - conan_for_poetry/commands/show.py | 7 - conan_for_poetry/commands/update.py | 15 - conan_for_poetry/commands/version.py | 7 - conan_for_poetry/plugin.py | 183 ++++-- poetry.lock | 697 +++++++++++++++++---- pyproject.toml | 17 +- tests/commands/__init__.py | 1 - tests/commands/test_add.py | 12 - tests/commands/test_build.py | 13 - tests/commands/test_check.py | 12 - tests/commands/test_config.py | 12 - tests/commands/test_env.py | 12 - tests/commands/test_export.py | 12 - tests/commands/test_init.py | 12 - tests/commands/test_install.py | 12 - tests/commands/test_lock.py | 12 - tests/commands/test_new.py | 12 - tests/commands/test_publish.py | 12 - tests/commands/test_remove.py | 12 - tests/commands/test_search.py | 12 - tests/commands/test_show.py | 12 - tests/commands/test_update.py | 12 - tests/commands/test_version.py | 12 - tests/integration/test_plugin.py | 112 ++++ tests/template/test_project/md5.cpp | 15 + tests/template/test_project/pyproject.toml | 32 + tests/test_plugin.py | 97 --- 43 files changed, 979 insertions(+), 594 deletions(-) create mode 100644 conan_for_poetry/cli.py delete mode 100644 conan_for_poetry/commands/__init__.py delete mode 100644 conan_for_poetry/commands/add.py delete mode 100644 conan_for_poetry/commands/build.py delete mode 100644 conan_for_poetry/commands/check.py delete mode 100644 conan_for_poetry/commands/config.py delete mode 100644 conan_for_poetry/commands/env.py delete mode 100644 conan_for_poetry/commands/export.py delete mode 100644 conan_for_poetry/commands/init.py delete mode 100644 conan_for_poetry/commands/install.py delete mode 100644 conan_for_poetry/commands/lock.py delete mode 100644 conan_for_poetry/commands/new.py delete mode 100644 conan_for_poetry/commands/publish.py delete mode 100644 conan_for_poetry/commands/remove.py delete mode 100644 conan_for_poetry/commands/search.py delete mode 100644 conan_for_poetry/commands/show.py delete mode 100644 conan_for_poetry/commands/update.py delete mode 100644 conan_for_poetry/commands/version.py delete mode 100644 tests/commands/__init__.py delete mode 100644 tests/commands/test_add.py delete mode 100644 tests/commands/test_build.py delete mode 100644 tests/commands/test_check.py delete mode 100644 tests/commands/test_config.py delete mode 100644 tests/commands/test_env.py delete mode 100644 tests/commands/test_export.py delete mode 100644 tests/commands/test_init.py delete mode 100644 tests/commands/test_install.py delete mode 100644 tests/commands/test_lock.py delete mode 100644 tests/commands/test_new.py delete mode 100644 tests/commands/test_publish.py delete mode 100644 tests/commands/test_remove.py delete mode 100644 tests/commands/test_search.py delete mode 100644 tests/commands/test_show.py delete mode 100644 tests/commands/test_update.py delete mode 100644 tests/commands/test_version.py create mode 100644 tests/integration/test_plugin.py create mode 100644 tests/template/test_project/md5.cpp create mode 100644 tests/template/test_project/pyproject.toml delete mode 100644 tests/test_plugin.py diff --git a/.gitignore b/.gitignore index 2ab43b0..130147c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ #Project Build/ +TestResults/ #Visual Studio *.sln diff --git a/conan_for_poetry/cli.py b/conan_for_poetry/cli.py new file mode 100644 index 0000000..5e58397 --- /dev/null +++ b/conan_for_poetry/cli.py @@ -0,0 +1,90 @@ +#TODO: Remove CLI interface once poetry has plugin support + +import click + +from conan_for_poetry.plugin import ConanPlugin + + +@click.group() +def entrypoint(): + pass + + +@entrypoint.command() +def poetry_new(self): + ConanPlugin().poetry_new() + + +@entrypoint.command() +def Init(self): + ConanPlugin.poetry_init() + + +@entrypoint.command() +def Install(): + ConanPlugin().poetry_install() + + +@entrypoint.command() +def Update(): + ConanPlugin().poetry_update() + + +@entrypoint.command() +def poetry_add(self): + ConanPlugin().poetry_add() + + +@entrypoint.command() +def poetry_remove(self): + ConanPlugin().poetry_remove() + + +@entrypoint.command() +def poetry_show(self): + ConanPlugin().poetry_show() + + +@entrypoint.command() +def poetry_build(self): + ConanPlugin().poetry_build() + + +@entrypoint.command() +def poetry_publish(self): + ConanPlugin().poetry_publish() + + +@entrypoint.command() +def poetry_config(self): + ConanPlugin().poetry_config() + + +@entrypoint.command() +def poetry_check(self): + ConanPlugin().poetry_check() + + +@entrypoint.command() +def poetry_search(self): + ConanPlugin().poetry_search() + + +@entrypoint.command() +def poetry_lock(self): + ConanPlugin().poetry_lock() + + +@entrypoint.command() +def poetry_version(self): + ConanPlugin().poetry_version() + + +@entrypoint.command() +def poetry_export(self): + ConanPlugin().poetry_export() + + +@entrypoint.command() +def poetry_env(self): + ConanPlugin().poetry_env() diff --git a/conan_for_poetry/commands/__init__.py b/conan_for_poetry/commands/__init__.py deleted file mode 100644 index 5f28270..0000000 --- a/conan_for_poetry/commands/__init__.py +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/conan_for_poetry/commands/add.py b/conan_for_poetry/commands/add.py deleted file mode 100644 index c7095f5..0000000 --- a/conan_for_poetry/commands/add.py +++ /dev/null @@ -1,7 +0,0 @@ -from conans.client.conan_api import ConanAPIV1 - -def ConanAdd(): - - api = ConanAPIV1() - - raise NotImplementedError() \ No newline at end of file diff --git a/conan_for_poetry/commands/build.py b/conan_for_poetry/commands/build.py deleted file mode 100644 index dbd5b2b..0000000 --- a/conan_for_poetry/commands/build.py +++ /dev/null @@ -1,8 +0,0 @@ -from conans.client.conan_api import ConanAPIV1 - -def ConanBuild(): - - api = ConanAPIV1() - - # TODO: call build - raise NotImplementedError() \ No newline at end of file diff --git a/conan_for_poetry/commands/check.py b/conan_for_poetry/commands/check.py deleted file mode 100644 index f49a830..0000000 --- a/conan_for_poetry/commands/check.py +++ /dev/null @@ -1,7 +0,0 @@ -from conans.client.conan_api import ConanAPIV1 - -def ConanCheck(): - - api = ConanAPIV1() - - raise NotImplementedError() \ No newline at end of file diff --git a/conan_for_poetry/commands/config.py b/conan_for_poetry/commands/config.py deleted file mode 100644 index 10c498a..0000000 --- a/conan_for_poetry/commands/config.py +++ /dev/null @@ -1,7 +0,0 @@ -from conans.client.conan_api import ConanAPIV1 - -def ConanConfig(): - - api = ConanAPIV1() - - raise NotImplementedError() \ No newline at end of file diff --git a/conan_for_poetry/commands/env.py b/conan_for_poetry/commands/env.py deleted file mode 100644 index 11d8fbf..0000000 --- a/conan_for_poetry/commands/env.py +++ /dev/null @@ -1,7 +0,0 @@ -from conans.client.conan_api import ConanAPIV1 - -def ConanEnv(): - - api = ConanAPIV1() - - raise NotImplementedError() \ No newline at end of file diff --git a/conan_for_poetry/commands/export.py b/conan_for_poetry/commands/export.py deleted file mode 100644 index 52627bc..0000000 --- a/conan_for_poetry/commands/export.py +++ /dev/null @@ -1,7 +0,0 @@ -from conans.client.conan_api import ConanAPIV1 - -def ConanExport(): - - api = ConanAPIV1() - - raise NotImplementedError() \ No newline at end of file diff --git a/conan_for_poetry/commands/init.py b/conan_for_poetry/commands/init.py deleted file mode 100644 index 1bda841..0000000 --- a/conan_for_poetry/commands/init.py +++ /dev/null @@ -1,7 +0,0 @@ -from conans.client.conan_api import ConanAPIV1 - -def ConanInit(): - - api = ConanAPIV1() - - raise NotImplementedError() \ No newline at end of file diff --git a/conan_for_poetry/commands/install.py b/conan_for_poetry/commands/install.py deleted file mode 100644 index 69eaf55..0000000 --- a/conan_for_poetry/commands/install.py +++ /dev/null @@ -1,18 +0,0 @@ -from conans.client.conan_api import ConanAPIV1 - -def ConanInstall(): - - api = ConanAPIV1() - - # TODO: Set remotes list - remotes = [] - - for name, url in remotes: - api.remote_add(name, url, verify_ssl = True, force = True) - - - # TODO: grab installation settings - - # TODO: grab editable settings - - raise NotImplementedError() diff --git a/conan_for_poetry/commands/lock.py b/conan_for_poetry/commands/lock.py deleted file mode 100644 index a87f3c9..0000000 --- a/conan_for_poetry/commands/lock.py +++ /dev/null @@ -1,7 +0,0 @@ -from conans.client.conan_api import ConanAPIV1 - -def ConanLock(): - - api = ConanAPIV1() - - raise NotImplementedError() \ No newline at end of file diff --git a/conan_for_poetry/commands/new.py b/conan_for_poetry/commands/new.py deleted file mode 100644 index 1c5457e..0000000 --- a/conan_for_poetry/commands/new.py +++ /dev/null @@ -1,7 +0,0 @@ -from conans.client.conan_api import ConanAPIV1 - -def ConanNew(): - - api = ConanAPIV1() - - raise NotImplementedError() \ No newline at end of file diff --git a/conan_for_poetry/commands/publish.py b/conan_for_poetry/commands/publish.py deleted file mode 100644 index 55d7a5c..0000000 --- a/conan_for_poetry/commands/publish.py +++ /dev/null @@ -1,9 +0,0 @@ -from conans.client.conan_api import ConanAPIV1 - -def ConanPublish(): - - api = ConanAPIV1() - - # TODO: Implement upload - - raise NotImplementedError() \ No newline at end of file diff --git a/conan_for_poetry/commands/remove.py b/conan_for_poetry/commands/remove.py deleted file mode 100644 index e8c6007..0000000 --- a/conan_for_poetry/commands/remove.py +++ /dev/null @@ -1,7 +0,0 @@ -from conans.client.conan_api import ConanAPIV1 - -def ConanRemove(): - - api = ConanAPIV1() - - raise NotImplementedError() \ No newline at end of file diff --git a/conan_for_poetry/commands/search.py b/conan_for_poetry/commands/search.py deleted file mode 100644 index f08c959..0000000 --- a/conan_for_poetry/commands/search.py +++ /dev/null @@ -1,7 +0,0 @@ -from conans.client.conan_api import ConanAPIV1 - -def ConanSearch(): - - api = ConanAPIV1() - - raise NotImplementedError() \ No newline at end of file diff --git a/conan_for_poetry/commands/show.py b/conan_for_poetry/commands/show.py deleted file mode 100644 index 6c2036f..0000000 --- a/conan_for_poetry/commands/show.py +++ /dev/null @@ -1,7 +0,0 @@ -from conans.client.conan_api import ConanAPIV1 - -def ConanShow(): - - api = ConanAPIV1() - - raise NotImplementedError() \ No newline at end of file diff --git a/conan_for_poetry/commands/update.py b/conan_for_poetry/commands/update.py deleted file mode 100644 index c077d71..0000000 --- a/conan_for_poetry/commands/update.py +++ /dev/null @@ -1,15 +0,0 @@ -from conans.client.conan_api import ConanAPIV1 - -def ConanUpdate(): - - api = ConanAPIV1() - - # TODO: Set remotes list - remotes = [] - - for name, url in remotes: - api.remote_add(name, url, verify_ssl = True, force = True) - - # TODO: Implement install - - raise NotImplementedError() diff --git a/conan_for_poetry/commands/version.py b/conan_for_poetry/commands/version.py deleted file mode 100644 index 146c035..0000000 --- a/conan_for_poetry/commands/version.py +++ /dev/null @@ -1,7 +0,0 @@ -from conans.client.conan_api import ConanAPIV1 - -def ConanVersion(): - - api = ConanAPIV1() - - raise NotImplementedError() \ No newline at end of file diff --git a/conan_for_poetry/plugin.py b/conan_for_poetry/plugin.py index 170a1e3..9ed8bb5 100644 --- a/conan_for_poetry/plugin.py +++ b/conan_for_poetry/plugin.py @@ -1,80 +1,167 @@ +import toml + +from pathlib import Path as _Path +from conans.client.conan_api import ConanAPIV1 as _ConanAPI class ConanPlugin(): - def PoetryNew(self): - from .commands.new import ConanNew - ConanNew() + data = None + + def __init_data(self): + ''' + TODO: Remove hardcoded extraction once poetry has plugin support + ''' + + if not self.data: + pyProject = _Path("pyproject.toml") + self.data = toml.load(pyProject) + + poetryData = self.data["tool"]["poetry"] + conanData = self.data["tool"]["conan"] + + self.name = poetryData["name"] + self.version = poetryData["version"] + + self.installPath = _Path(conanData["install-path"]).absolute() + self.remotes = conanData["remotes"] + + # Dependencies require some post processing + self.dependencies = conanData["dependencies"] + + # Dependencies require some post processing + self.generators = conanData["generators"] + assert len(self.generators) > 0 + + # Generate the conanfile.txt + # TODO: remove once conan can depend on pyproject.toml + self.installPath.mkdir(parents=True, exist_ok=True) + with open(self.installPath / "conanfile.txt", "w+") as file: + file.write("[requires]") + for key, value in self.dependencies.items(): + file.write(key + "/" + value) + + file.write("\n[generators]") + for generator in self.generators: + file.write(generator) + + + def poetry_new(self): + + api = _ConanAPI() + + raise NotImplementedError() + + + def poetry_init(self): + + api = _ConanAPI() + + raise NotImplementedError() + + + def poetry_install(self): + + self.__init_data() + + _ConanAPI().install(path = self.installPath, name = self.name, version = self.version, user = None, + channel = None, settings = None, options = None, env = None, + remote_name = self.remotes, verify = None, manifests = None, + manifests_interactive = None, build = None, profile_names = None, + update = False, generators = None, no_imports = False, + install_folder = self.installPath, cwd = _Path().absolute(), lockfile = None) + + + def poetry_update(self): + + self.__init_data() + + _ConanAPI().install(path = self.installPath, name = self.name, version = self.version, user = None, + channel = None, settings = None, options = None, env = None, + remote_name = self.remotes, verify = None, manifests = None, + manifests_interactive = None, build = None, profile_names = None, + update = True, generators = None, no_imports = False, + install_folder = self.installPath, cwd = _Path().absolute(), lockfile = None) + + + def poetry_add(self): + + api = _ConanAPI() + + raise NotImplementedError() + + + def poetry_remove(self): + + api = _ConanAPI() + + raise NotImplementedError() + - def PoetryInit(self): - from .commands.init import ConanInit - ConanInit() + def poetry_show(self): + + api = _ConanAPI() + raise NotImplementedError() - def PoetryInstall(self): - from .commands.install import ConanInstall - ConanInstall() + def poetry_build(self): + + api = _ConanAPI() - def PoetryUpdate(self): - from .commands.update import ConanUpdate - ConanUpdate() + raise NotImplementedError() - def PoetryAdd(self): - from .commands.add import ConanAdd - ConanAdd() + def poetry_publish(self): + + api = _ConanAPI() + raise NotImplementedError() - def PoetryRemove(self): - from .commands.remove import ConanRemove - ConanRemove() + def poetry_config(self): + + api = _ConanAPI() - def PoetryShow(self): - from .commands.show import ConanShow - ConanShow() + raise NotImplementedError() - def PoetryBuild(self): - from .commands.build import ConanBuild - ConanBuild() + def poetry_check(self): + + api = _ConanAPI() + raise NotImplementedError() - def PoetryPublish(self): - from .commands.publish import ConanPublish - ConanPublish() + def poetry_search(self): + + api = _ConanAPI() - def PoetryConfig(self): - from .commands.config import ConanConfig - ConanConfig() + raise NotImplementedError() - def PoetryCheck(self): - from .commands.check import ConanCheck - ConanCheck() + def poetry_lock(self): + + api = _ConanAPI() + raise NotImplementedError() - def PoetrySearch(self): - from .commands.search import ConanSearch - ConanSearch() + def poetry_version(self): + + api = _ConanAPI() - def PoetryLock(self): - from .commands.lock import ConanLock - ConanLock() + raise NotImplementedError() - def PoetryVersion(self): - from .commands.version import ConanVersion - ConanVersion() + def poetry_export(self): + + api = _ConanAPI() + raise NotImplementedError() - def PoetryExport(self): - from .commands.export import ConanExport - ConanExport() + def poetry_env(self): + + api = _ConanAPI() - def PoetryEnv(self): - from .commands.env import ConanEnv - ConanEnv() \ No newline at end of file + raise NotImplementedError() \ No newline at end of file diff --git a/poetry.lock b/poetry.lock index cc44641..385fcda 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,16 +1,25 @@ [[package]] -category = "main" +category = "dev" description = "An abstract syntax tree for Python with inference support." name = "astroid" optional = false python-versions = ">=3.5.*" -version = "2.3.2" +version = "2.3.3" [package.dependencies] lazy-object-proxy = ">=1.4.0,<1.5.0" -six = "1.12" +six = ">=1.12,<2.0" wrapt = ">=1.11.0,<1.12.0" +[[package]] +category = "dev" +description = "Atomic file writes." +marker = "sys_platform == \"win32\"" +name = "atomicwrites" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "1.3.0" + [[package]] category = "main" description = "Classes Without Boilerplate" @@ -19,13 +28,19 @@ optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" version = "19.3.0" +[package.extras] +azure-pipelines = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "pytest-azurepipelines"] +dev = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "sphinx", "pre-commit"] +docs = ["sphinx", "zope.interface"] +tests = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] + [[package]] category = "main" description = "Fast and simple WSGI-framework for small web-applications." name = "bottle" optional = false python-versions = "*" -version = "0.12.17" +version = "0.12.18" [[package]] category = "main" @@ -36,10 +51,17 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" version = "0.12.5" [package.dependencies] -lockfile = ">=0.9" msgpack = "*" requests = "*" +[package.dependencies.lockfile] +optional = true +version = ">=0.9" + +[package.extras] +filecache = ["lockfile (>=0.9)"] +redis = ["redis (>=2.10.5)"] + [[package]] category = "main" description = "Cachy provides a simple yet effective caching library." @@ -48,13 +70,18 @@ optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" version = "0.2.0" +[package.extras] +memcached = ["python-memcached (>=1.59.0.0,<2.0.0.0)"] +msgpack = ["msgpack-python (>=0.5.0.0,<0.6.0.0)"] +redis = ["redis (>=2.10.0.0,<3.0.0.0)"] + [[package]] category = "main" description = "Python package for providing Mozilla's CA Bundle." name = "certifi" optional = false python-versions = "*" -version = "2019.9.11" +version = "2019.11.28" [[package]] category = "main" @@ -76,13 +103,21 @@ version = "0.6.8" pastel = ">=0.1.0,<0.2.0" pylev = ">=1.3,<2.0" +[[package]] +category = "main" +description = "Composable command line interface toolkit" +name = "click" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "7.0" + [[package]] category = "main" description = "Cross-platform colored terminal text." name = "colorama" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "0.4.1" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +version = "0.4.3" [[package]] category = "main" @@ -90,13 +125,12 @@ description = "Conan C/C++ package manager" name = "conan" optional = false python-versions = "*" -version = "1.19.2" +version = "1.21.0" [package.dependencies] Jinja2 = ">=2.3,<3" PyJWT = ">=1.4.0,<2.0.0" PyYAML = ">=3.11,<6.0" -astroid = ">=1.6.5" bottle = ">=0.12.8,<0.13" colorama = ">=0.3.3,<0.5.0" deprecation = ">=2.0,<2.1" @@ -104,23 +138,29 @@ distro = ">=1.0.2,<1.2.0" fasteners = ">=0.14.1" future = ">=0.16.0,<0.19.0" node-semver = "0.6.1" -patch = "1.16" +patch-ng = "1.17.2" pluginbase = ">=0.5,<1.0" pygments = ">=2.0,<3.0" -pylint = ">=1.9.3,<2.3.0 || >2.3.0" python-dateutil = ">=2.7.0,<3" requests = ">=2.8.1,<3.0.0" -six = ">=1.10.0" +six = ">=1.10.0,<1.13.0" tqdm = ">=4.28.1,<5" urllib3 = "<1.25.4 || >1.25.4,<1.25.5 || >1.25.5" +[package.extras] +dev = ["nose (>=1.3.7,<1.4.0)", "parameterized (>=0.6.3)", "mock (>=1.3.0,<1.4.0)", "WebTest (>=2.0.18,<2.1.0)", "coverage (4.2)", "codecov", "bottle"] +test = ["nose (>=1.3.7,<1.4.0)", "parameterized (>=0.6.3)", "mock (>=1.3.0,<1.4.0)", "WebTest (>=2.0.18,<2.1.0)", "coverage (4.2)", "codecov", "bottle"] + [[package]] category = "dev" description = "Code coverage measurement for Python" name = "coverage" optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, <4" -version = "4.5.4" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" +version = "5.0" + +[package.extras] +toml = ["toml"] [[package]] category = "main" @@ -141,6 +181,14 @@ optional = false python-versions = "*" version = "1.1.0" +[[package]] +category = "dev" +description = "Discover and load entry points from installed packages." +name = "entrypoints" +optional = false +python-versions = ">=2.7" +version = "0.3" + [[package]] category = "main" description = "A python package that provides useful locks." @@ -153,13 +201,27 @@ version = "0.15" monotonic = ">=0.1" six = "*" +[[package]] +category = "dev" +description = "the modular source code checker: pep8, pyflakes and co" +name = "flake8" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "3.7.9" + +[package.dependencies] +entrypoints = ">=0.3.0,<0.4.0" +mccabe = ">=0.6.0,<0.7.0" +pycodestyle = ">=2.5.0,<2.6.0" +pyflakes = ">=2.1.0,<2.2.0" + [[package]] category = "main" description = "Clean single-source support for Python 3 and 2" name = "future" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -version = "0.18.1" +version = "0.18.2" [[package]] category = "main" @@ -173,6 +235,13 @@ version = "1.0.1" six = ">=1.9" webencodings = "*" +[package.extras] +all = ["genshi", "chardet (>=2.2)", "datrie", "lxml"] +chardet = ["chardet (>=2.2)"] +datrie = ["datrie"] +genshi = ["genshi"] +lxml = ["lxml"] + [[package]] category = "main" description = "Internationalized Domain Names in Applications (IDNA)" @@ -182,24 +251,19 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" version = "2.8" [[package]] -category = "main" -description = "Read metadata from Python packages" -name = "importlib-metadata" -optional = false -python-versions = ">=2.7,!=3.0,!=3.1,!=3.2,!=3.3" -version = "0.23" - -[package.dependencies] -zipp = ">=0.5" - -[[package]] -category = "main" +category = "dev" description = "A Python utility / library to sort Python imports." name = "isort" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" version = "4.3.21" +[package.extras] +pipfile = ["pipreqs", "requirementslib"] +pyproject = ["toml"] +requirements = ["pipreqs", "pip-api"] +xdg_home = ["appdirs (>=1.4.0)"] + [[package]] category = "main" description = "A very fast and expressive template engine." @@ -211,33 +275,38 @@ version = "2.10.3" [package.dependencies] MarkupSafe = ">=0.23" +[package.extras] +i18n = ["Babel (>=0.8)"] + [[package]] category = "main" description = "An implementation of JSON Schema validation for Python" name = "jsonschema" optional = false python-versions = "*" -version = "3.1.1" +version = "3.2.0" [package.dependencies] attrs = ">=17.4.0" -importlib-metadata = "*" pyrsistent = ">=0.14.0" setuptools = "*" six = ">=1.11.0" +[package.extras] +format = ["idna", "jsonpointer (>1.13)", "rfc3987", "strict-rfc3339", "webcolors"] +format_nongpl = ["idna", "jsonpointer (>1.13)", "webcolors", "rfc3986-validator (>0.1.0)", "rfc3339-validator"] + [[package]] -category = "main" +category = "dev" description = "A fast and thorough lazy object proxy." name = "lazy-object-proxy" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "1.4.2" +version = "1.4.3" [[package]] category = "main" description = "Platform-independent file locking module" -marker = "extra == \"filecache\"" name = "lockfile" optional = false python-versions = "*" @@ -252,7 +321,7 @@ python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" version = "1.1.1" [[package]] -category = "main" +category = "dev" description = "McCabe checker, plugin for flake8" name = "mccabe" optional = false @@ -268,12 +337,12 @@ python-versions = "*" version = "1.5" [[package]] -category = "main" +category = "dev" description = "More routines for operating on iterables, beyond itertools" name = "more-itertools" optional = false -python-versions = ">=3.4" -version = "7.2.0" +python-versions = ">=3.5" +version = "8.0.2" [[package]] category = "main" @@ -291,6 +360,9 @@ optional = false python-versions = "*" version = "0.6.1" +[package.extras] +testing = ["pytest"] + [[package]] category = "main" description = "Core utilities for Python packages" @@ -313,11 +385,23 @@ version = "0.1.1" [[package]] category = "main" -description = "Library to parse and apply unified diffs" -name = "patch" +description = "Library to parse and apply unified diffs." +name = "patch-ng" optional = false python-versions = "*" -version = "1.16" +version = "1.17.2" + +[[package]] +category = "dev" +description = "A module wrapper for os.path" +name = "path" +optional = false +python-versions = ">=3.5" +version = "13.1.0" + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] +testing = ["pytest (>=3.5,<3.7.3 || >3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-black-multipy", "pytest-cov", "appdirs", "packaging", "pygments"] [[package]] category = "main" @@ -327,6 +411,20 @@ optional = false python-versions = "*" version = "1.5.0.1" +[package.extras] +testing = ["nose", "coverage"] + +[[package]] +category = "dev" +description = "plugin and hook calling mechanisms for python" +name = "pluggy" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "0.13.1" + +[package.extras] +dev = ["pre-commit", "tox"] + [[package]] category = "main" description = "PluginBase is a module for Python that enables the development of flexible plugin systems in Python." @@ -344,7 +442,6 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" version = "0.12.17" [package.dependencies] -cachecontrol = ">=0.12.4,<0.13.0" cachy = ">=0.2,<0.3" cleo = ">=0.6.7,<0.7.0" html5lib = ">=1.0,<2.0" @@ -357,13 +454,41 @@ requests-toolbelt = ">=0.8.0,<0.9.0" shellingham = ">=1.1,<2.0" tomlkit = ">=0.5.1,<0.6.0" +[package.dependencies.cachecontrol] +extras = ["filecache"] +version = ">=0.12.4,<0.13.0" + +[[package]] +category = "dev" +description = "library with cross-python path, ini-parsing, io, code, log facilities" +name = "py" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "1.8.0" + +[[package]] +category = "dev" +description = "Python style guide checker" +name = "pycodestyle" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "2.5.0" + +[[package]] +category = "dev" +description = "passive checker of Python programs" +name = "pyflakes" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "2.1.1" + [[package]] category = "main" description = "Pygments is a syntax highlighting package written in Python." name = "pygments" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -version = "2.4.2" +version = "2.5.2" [[package]] category = "main" @@ -373,6 +498,11 @@ optional = false python-versions = "*" version = "1.7.1" +[package.extras] +crypto = ["cryptography (>=1.4)"] +flake8 = ["flake8", "flake8-import-order", "pep8-naming"] +test = ["pytest (>=4.0.1,<5.0.0)", "pytest-cov (>=2.6.0,<3.0.0)", "pytest-runner (>=4.2,<5.0.0)"] + [[package]] category = "main" description = "A pure Python Levenshtein implementation that's not freaking GPL'd." @@ -382,12 +512,12 @@ python-versions = "*" version = "1.3.0" [[package]] -category = "main" +category = "dev" description = "python code static checker" name = "pylint" optional = false python-versions = ">=3.5.*" -version = "2.4.3" +version = "2.4.4" [package.dependencies] astroid = ">=2.3.0,<2.4" @@ -401,7 +531,7 @@ description = "Python parsing module" name = "pyparsing" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -version = "2.4.2" +version = "2.4.5" [[package]] category = "main" @@ -414,13 +544,34 @@ version = "0.14.11" [package.dependencies] six = "*" +[[package]] +category = "dev" +description = "pytest: simple powerful testing with Python" +name = "pytest" +optional = false +python-versions = ">=3.5" +version = "5.3.2" + +[package.dependencies] +atomicwrites = ">=1.0" +attrs = ">=17.4.0" +colorama = "*" +more-itertools = ">=4.0.0" +packaging = "*" +pluggy = ">=0.12,<1.0" +py = ">=1.5.0" +wcwidth = "*" + +[package.extras] +testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] + [[package]] category = "main" description = "Extensions to the standard Python datetime module" name = "python-dateutil" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" -version = "2.8.0" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +version = "2.8.1" [package.dependencies] six = ">=1.5" @@ -431,7 +582,7 @@ description = "YAML parser and emitter for Python" name = "pyyaml" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "5.1.2" +version = "5.2" [[package]] category = "main" @@ -447,6 +598,10 @@ chardet = ">=3.0.2,<3.1.0" idna = ">=2.5,<2.9" urllib3 = ">=1.21.1,<1.25.0 || >1.25.0,<1.25.1 || >1.25.1,<1.26" +[package.extras] +security = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)"] +socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7)", "win-inet-pton"] + [[package]] category = "main" description = "A utility belt for advanced users of python-requests" @@ -474,6 +629,14 @@ optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*" version = "1.12.0" +[[package]] +category = "main" +description = "Python Library for Tom's Obvious, Minimal Language" +name = "toml" +optional = false +python-versions = "*" +version = "0.10.0" + [[package]] category = "main" description = "Style preserving TOML library" @@ -488,7 +651,10 @@ description = "Fast, Extensible Progress Meter" name = "tqdm" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*" -version = "4.36.1" +version = "4.40.2" + +[package.extras] +dev = ["py-make (>=0.1.0)", "twine", "argopt", "pydoc-markdown"] [[package]] category = "main" @@ -496,7 +662,20 @@ description = "HTTP library with thread-safe connection pooling, file post, and name = "urllib3" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4" -version = "1.25.6" +version = "1.25.7" + +[package.extras] +brotli = ["brotlipy (>=0.6.0)"] +secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] +socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7,<2.0)"] + +[[package]] +category = "dev" +description = "Measures number of Terminal column cells of wide-character codes" +name = "wcwidth" +optional = false +python-versions = "*" +version = "0.1.7" [[package]] category = "main" @@ -507,79 +686,363 @@ python-versions = "*" version = "0.5.1" [[package]] -category = "main" +category = "dev" description = "Module for decorators, wrappers and monkey patching." name = "wrapt" optional = false python-versions = "*" version = "1.11.2" -[[package]] -category = "main" -description = "Backport of pathlib-compatible object wrapper for zip files" -name = "zipp" -optional = false -python-versions = ">=2.7" -version = "0.6.0" - -[package.dependencies] -more-itertools = "*" - [metadata] -content-hash = "9e7f8338078d2a6bad17f904438de7c4d59a24886cdcba66580ba7cd86511855" +content-hash = "e527ff1825667cefa1ba69f91417e3dc234193461d76b8865ebdb04a86326d08" python-versions = "^3.8" -[metadata.hashes] -astroid = ["09a3fba616519311f1af8a461f804b68f0370e100c9264a035aa7846d7852e33", "5a79c9b4bd6c4be777424593f957c996e20beb5f74e0bc332f47713c6f675efe"] -attrs = ["08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c", "f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72"] -bottle = ["1896a33b2c7c5be07491e6789e341f2e9593a0ff024cc0374615118587c81647", "e9eaa412a60cc3d42ceb42f58d15864d9ed1b92e9d630b8130c871c5bb16107c"] -cachecontrol = ["cef77effdf51b43178f6a2d3b787e3734f98ade253fa3187f3bb7315aaa42ff7"] -cachy = ["b71513e5a38ce90c1280c02b7d8d6bb3fdf64666c9cc0584f2479afea097d56c", "b71e8e7ddb5b386e23e81befdfac8a93885406139b8681bedc17b3444fcb8fca"] -certifi = ["e4f3620cfea4f83eedc95b24abd9cd56f3c4b146dd0177e83a21b4eb49e21e50", "fd7c7c74727ddcf00e9acd26bba8da604ffec95bf1c2144e67aff7a8b50e6cef"] -chardet = ["84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae", "fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"] -cleo = ["85a63076b72ca376fb06668be1fc7758dc16740b394783d5cc65200c4b32f71b", "9b7f79f1aa470a025c0d28c76aa225ee9e65028d32f80032e871aa3500df61b8"] -colorama = ["05eed71e2e327246ad6b38c540c4a3117230b19679b875190486ddd2d721422d", "f8ac84de7840f5b9c4e3347b3c1eaa50f7e49c2b07596221daec5edaabbd7c48"] -conan = ["1a0761289074b1e1e4d6660e0f9412765a19de13bfbebb429d12df06439f9c26"] -coverage = ["08907593569fe59baca0bf152c43f3863201efb6113ecb38ce7e97ce339805a6", "0be0f1ed45fc0c185cfd4ecc19a1d6532d72f86a2bac9de7e24541febad72650", "141f08ed3c4b1847015e2cd62ec06d35e67a3ac185c26f7635f4406b90afa9c5", "19e4df788a0581238e9390c85a7a09af39c7b539b29f25c89209e6c3e371270d", "23cc09ed395b03424d1ae30dcc292615c1372bfba7141eb85e11e50efaa6b351", "245388cda02af78276b479f299bbf3783ef0a6a6273037d7c60dc73b8d8d7755", "331cb5115673a20fb131dadd22f5bcaf7677ef758741312bee4937d71a14b2ef", "386e2e4090f0bc5df274e720105c342263423e77ee8826002dcffe0c9533dbca", "3a794ce50daee01c74a494919d5ebdc23d58873747fa0e288318728533a3e1ca", "60851187677b24c6085248f0a0b9b98d49cba7ecc7ec60ba6b9d2e5574ac1ee9", "63a9a5fc43b58735f65ed63d2cf43508f462dc49857da70b8980ad78d41d52fc", "6b62544bb68106e3f00b21c8930e83e584fdca005d4fffd29bb39fb3ffa03cb5", "6ba744056423ef8d450cf627289166da65903885272055fb4b5e113137cfa14f", "7494b0b0274c5072bddbfd5b4a6c6f18fbbe1ab1d22a41e99cd2d00c8f96ecfe", "826f32b9547c8091679ff292a82aca9c7b9650f9fda3e2ca6bf2ac905b7ce888", "93715dffbcd0678057f947f496484e906bf9509f5c1c38fc9ba3922893cda5f5", "9a334d6c83dfeadae576b4d633a71620d40d1c379129d587faa42ee3e2a85cce", "af7ed8a8aa6957aac47b4268631fa1df984643f07ef00acd374e456364b373f5", "bf0a7aed7f5521c7ca67febd57db473af4762b9622254291fbcbb8cd0ba5e33e", "bf1ef9eb901113a9805287e090452c05547578eaab1b62e4ad456fcc049a9b7e", "c0afd27bc0e307a1ffc04ca5ec010a290e49e3afbe841c5cafc5c5a80ecd81c9", "dd579709a87092c6dbee09d1b7cfa81831040705ffa12a1b248935274aee0437", "df6712284b2e44a065097846488f66840445eb987eb81b3cc6e4149e7b6982e1", "e07d9f1a23e9e93ab5c62902833bf3e4b1f65502927379148b6622686223125c", "e2ede7c1d45e65e209d6093b762e98e8318ddeff95317d07a27a2140b80cfd24", "e4ef9c164eb55123c62411f5936b5c2e521b12356037b6e1c2617cef45523d47", "eca2b7343524e7ba246cab8ff00cab47a2d6d54ada3b02772e908a45675722e2", "eee64c616adeff7db37cc37da4180a3a5b6177f5c46b187894e633f088fb5b28", "ef824cad1f980d27f26166f86856efe11eff9912c4fed97d3804820d43fa550c", "efc89291bd5a08855829a3c522df16d856455297cf35ae827a37edac45f466a7", "fa964bae817babece5aa2e8c1af841bebb6d0b9add8e637548809d040443fee0", "ff37757e068ae606659c28c3bd0d923f9d29a85de79bf25b2b34b148473b5025"] -deprecation = ["c0392f676a6146f0238db5744d73e786a43510d54033f80994ef2f4c9df192ed", "dc9b4f252b7aca8165ce2764a71da92a653b5ffbf7a389461d7a640f6536ecb2"] -distro = ["722054925f339a39ca411a8c7079f390a41d42c422697bedf228f1a9c46ac1ee", "f0e43d555fd45eda71eb474c2927c17b75e0673bf13f90f70bdce5b1a90cf0c5"] -fasteners = ["007e4d2b2d4a10093f67e932e5166722d2eab83b77724156e92ad013c6226574", "3a176da6b70df9bb88498e1a18a9e4a8579ed5b9141207762368a1017bf8f5ef"] -future = ["858e38522e8fd0d3ce8f0c1feaf0603358e366d5403209674c7b617fa0c24093"] -html5lib = ["20b159aa3badc9d5ee8f5c647e5efd02ed2a66ab8d354930bd9ff139fc1dc0a3", "66cb0dcfdbbc4f9c3ba1a63fdb511ffdbd4f513b2b6d81b80cd26ce6b3fb3736"] -idna = ["c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407", "ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c"] -importlib-metadata = ["aa18d7378b00b40847790e7c27e11673d7fed219354109d0e7b9e5b25dc3ad26", "d5f18a79777f3aa179c145737780282e27b508fc8fd688cb17c7a813e8bd39af"] -isort = ["54da7e92468955c4fceacd0c86bd0ec997b0e1ee80d97f67c35a78b719dccab1", "6e811fcb295968434526407adb8796944f1988c5b65e8139058f2014cbe100fd"] -jinja2 = ["74320bb91f31270f9551d46522e33af46a80c3d619f4a4bf42b3164d30b5911f", "9fe95f19286cfefaa917656583d020be14e7859c6b0252588391e47db34527de"] -jsonschema = ["2fa0684276b6333ff3c0b1b27081f4b2305f0a36cf702a23db50edb141893c3f", "94c0a13b4a0616458b42529091624e66700a17f847453e52279e35509a5b7631"] -lazy-object-proxy = ["02b260c8deb80db09325b99edf62ae344ce9bc64d68b7a634410b8e9a568edbf", "18f9c401083a4ba6e162355873f906315332ea7035803d0fd8166051e3d402e3", "1f2c6209a8917c525c1e2b55a716135ca4658a3042b5122d4e3413a4030c26ce", "2f06d97f0ca0f414f6b707c974aaf8829c2292c1c497642f63824119d770226f", "616c94f8176808f4018b39f9638080ed86f96b55370b5a9463b2ee5c926f6c5f", "63b91e30ef47ef68a30f0c3c278fbfe9822319c15f34b7538a829515b84ca2a0", "77b454f03860b844f758c5d5c6e5f18d27de899a3db367f4af06bec2e6013a8e", "83fe27ba321e4cfac466178606147d3c0aa18e8087507caec78ed5a966a64905", "84742532d39f72df959d237912344d8a1764c2d03fe58beba96a87bfa11a76d8", "874ebf3caaf55a020aeb08acead813baf5a305927a71ce88c9377970fe7ad3c2", "9f5caf2c7436d44f3cec97c2fa7791f8a675170badbfa86e1992ca1b84c37009", "a0c8758d01fcdfe7ae8e4b4017b13552efa7f1197dd7358dc9da0576f9d0328a", "a4def978d9d28cda2d960c279318d46b327632686d82b4917516c36d4c274512", "ad4f4be843dace866af5fc142509e9b9817ca0c59342fdb176ab6ad552c927f5", "ae33dd198f772f714420c5ab698ff05ff900150486c648d29951e9c70694338e", "b4a2b782b8a8c5522ad35c93e04d60e2ba7f7dcb9271ec8e8c3e08239be6c7b4", "c462eb33f6abca3b34cdedbe84d761f31a60b814e173b98ede3c81bb48967c4f", "fd135b8d35dfdcdb984828c84d695937e58cc5f49e1c854eb311c4d6aa03f4f1"] -lockfile = ["6aed02de03cba24efabcd600b30540140634fc06cfa603822d508d5361e9f799", "6c3cb24f344923d30b2785d5ad75182c8ea7ac1b6171b08657258ec7429d50fa"] -markupsafe = ["00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473", "09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161", "09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235", "1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5", "24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff", "29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b", "43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1", "46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e", "500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183", "535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66", "62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1", "6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1", "717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e", "79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b", "7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905", "88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735", "8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d", "98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e", "9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d", "9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c", "ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21", "b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2", "b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5", "b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b", "ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6", "c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f", "cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f", "e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7"] -mccabe = ["ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", "dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"] -monotonic = ["23953d55076df038541e648a53676fb24980f7a1be290cdda21300b3bc21dfb0", "552a91f381532e33cbd07c6a2655a21908088962bb8fa7239ecbcc6ad1140cc7"] -more-itertools = ["409cd48d4db7052af495b09dec721011634af3753ae1ef92d2b32f73a745f832", "92b8c4b06dac4f0611c0729b2f2ede52b2e1bac1ab48f089c7ddc12e26bb60c4"] -msgpack = ["0cc7ca04e575ba34fea7cfcd76039f55def570e6950e4155a4174368142c8e1b", "187794cd1eb73acccd528247e3565f6760bd842d7dc299241f830024a7dd5610", "1904b7cb65342d0998b75908304a03cb004c63ef31e16c8c43fee6b989d7f0d7", "229a0ccdc39e9b6c6d1033cd8aecd9c296823b6c87f0de3943c59b8bc7c64bee", "24149a75643aeaa81ece4259084d11b792308a6cf74e796cbb35def94c89a25a", "30b88c47e0cdb6062daed88ca283b0d84fa0d2ad6c273aa0788152a1c643e408", "32fea0ea3cd1ef820286863a6202dcfd62a539b8ec3edcbdff76068a8c2cc6ce", "355f7fd0f90134229eaeefaee3cf42e0afc8518e8f3cd4b25f541a7104dcb8f9", "4abdb88a9b67e64810fb54b0c24a1fd76b12297b4f7a1467d85a14dd8367191a", "757bd71a9b89e4f1db0622af4436d403e742506dbea978eba566815dc65ec895", "76df51492bc6fa6cc8b65d09efdb67cbba3cbfe55004c3afc81352af92b4a43c", "774f5edc3475917cd95fe593e625d23d8580f9b48b570d8853d06cac171cd170", "8a3ada8401736df2bf497f65589293a86c56e197a80ae7634ec2c3150a2f5082", "a06efd0482a1942aad209a6c18321b5e22d64eb531ea20af138b28172d8f35ba", "b24afc52e18dccc8c175de07c1d680bdf315844566f4952b5bedb908894bec79", "b8b4bd3dafc7b92608ae5462add1c8cc881851c2d4f5d8977fdea5b081d17f21", "c6e5024fc0cdf7f83b6624850309ddd7e06c48a75fa0d1c5173de4d93300eb19", "db7ff14abc73577b0bcbcf73ecff97d3580ecaa0fc8724babce21fdf3fe08ef6", "dedf54d72d9e7b6d043c244c8213fe2b8bbfe66874b9a65b39c4cc892dd99dd4", "ea3c2f859346fcd55fc46e96885301d9c2f7a36d453f5d8f2967840efa1e1830", "f0f47bafe9c9b8ed03e19a100a743662dd8c6d0135e684feea720a0d0046d116"] -node-semver = ["4016f7c1071b0493f18db69ea02d3763e98a633606d7c7beca811e53b5ac66b7", "d4bf83873894591a0cbb6591910d96917fbadc9731e8e39e782d3a2fbc2b841e"] -packaging = ["28b924174df7a2fa32c1953825ff29c61e2f5e082343165438812f00d3a7fc47", "d9551545c6d761f3def1677baf08ab2a3ca17c56879e70fecba2fc4dde4ed108"] -pastel = ["a904e1659512cc9880a028f66de77cc813a4c32f7ceb68725cbc8afad57ef7ef", "bf3b1901b2442ea0d8ab9a390594e5b0c9584709d543a3113506fe8b28cbace3"] -patch = ["c62073f356cff054c8ac24496f1a3d7cfa137835c31e9af39a9f5292fd75bd9f"] -pkginfo = ["7424f2c8511c186cd5424bbf31045b77435b37a8d604990b79d4e70d741148bb", "a6d9e40ca61ad3ebd0b72fbadd4fba16e4c0e4df0428c041e01e06eb6ee71f32"] -pluginbase = ["c0abe3218b86533cca287e7057a37481883c07acef7814b70583406938214cc8"] -poetry = ["0133cd4edc77e955de8cd91203b6728f8365e2849d7fa7da1bfbc14b6529ab43", "6e535de38df7e6ab46ff8d197f53632b071675287d1477efc7bf4a5c4c63bc3f"] -pygments = ["71e430bc85c88a430f000ac1d9b331d2407f681d6f6aec95e8bcfbc3df5b0127", "881c4c157e45f30af185c1ffe8d549d48ac9127433f2c380c24b84572ad66297"] -pyjwt = ["5c6eca3c2940464d106b99ba83b00c6add741c9becaec087fb7ccdefea71350e", "8d59a976fb773f3e6a39c85636357c4f0e242707394cadadd9814f5cbaa20e96"] -pylev = ["063910098161199b81e453025653ec53556c1be7165a9b7c50be2f4d57eae1c3", "1d29a87beb45ebe1e821e7a3b10da2b6b2f4c79b43f482c2df1a1f748a6e114e"] -pylint = ["7b76045426c650d2b0f02fc47c14d7934d17898779da95288a74c2a7ec440702", "856476331f3e26598017290fd65bebe81c960e806776f324093a46b76fb2d1c0"] -pyparsing = ["6f98a7b9397e206d78cc01df10131398f1c8b8510a2f4d97d9abd82e1aacdd80", "d9338df12903bbf5d65a0e4e87c2161968b10d2e489652bb47001d82a9b028b4"] -pyrsistent = ["3ca82748918eb65e2d89f222b702277099aca77e34843c5eb9d52451173970e2"] -python-dateutil = ["7e6584c74aeed623791615e26efd690f29817a27c73085b78e4bad02493df2fb", "c89805f6f4d64db21ed966fda138f8a5ed7a4fdbc1a8ee329ce1b74e3c74da9e"] -pyyaml = ["0113bc0ec2ad727182326b61326afa3d1d8280ae1122493553fd6f4397f33df9", "01adf0b6c6f61bd11af6e10ca52b7d4057dd0be0343eb9283c878cf3af56aee4", "5124373960b0b3f4aa7df1707e63e9f109b5263eca5976c66e08b1c552d4eaf8", "5ca4f10adbddae56d824b2c09668e91219bb178a1eee1faa56af6f99f11bf696", "7907be34ffa3c5a32b60b95f4d95ea25361c951383a894fec31be7252b2b6f34", "7ec9b2a4ed5cad025c2278a1e6a19c011c80a3caaac804fd2d329e9cc2c287c9", "87ae4c829bb25b9fe99cf71fbb2140c448f534e24c998cc60f39ae4f94396a73", "9de9919becc9cc2ff03637872a440195ac4241c80536632fffeb6a1e25a74299", "a5a85b10e450c66b49f98846937e8cfca1db3127a9d5d1e31ca45c3d0bef4c5b", "b0997827b4f6a7c286c01c5f60384d218dca4ed7d9efa945c3e1aa623d5709ae", "b631ef96d3222e62861443cc89d6563ba3eeb816eeb96b2629345ab795e53681", "bf47c0607522fdbca6c9e817a6e81b08491de50f3766a7a0e6a5be7905961b41", "f81025eddd0327c7d4cfe9b62cf33190e1e736cc6e97502b3ec425f574b3e7a8"] -requests = ["11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4", "9cf5292fcd0f598c671cfc1e0d7d1a7f13bb8085e9a590f48c010551dc6c4b31"] -requests-toolbelt = ["42c9c170abc2cacb78b8ab23ac957945c7716249206f90874651971a4acff237", "f6a531936c6fa4c6cfce1b9c10d5c4f498d16528d2a54a22ca00011205a187b5"] -shellingham = ["77d37a4fd287c1e663006f7ecf1b9deca9ad492d0082587bd813c44eb49e4e62", "985b23bbd1feae47ca6a6365eacd314d93d95a8a16f8f346945074c28fe6f3e0"] -six = ["3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c", "d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73"] -tomlkit = ["32c10cc16ded7e4101c79f269910658cc2a0be5913f1252121c3cd603051c269", "96e6369288571799a3052c1ef93b9de440e1ab751aa045f435b55e9d3bcd0690"] -tqdm = ["abc25d0ce2397d070ef07d8c7e706aede7920da163c64997585d42d3537ece3d", "dd3fcca8488bb1d416aa7469d2f277902f26260c45aa86b667b074cd44b3b115"] -urllib3 = ["3de946ffbed6e6746608990594d08faac602528ac7015ac28d33cee6a45b7398", "9a107b99a5393caf59c7aa3c1249c16e6879447533d0887f4336dde834c7be86"] -webencodings = ["a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", "b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"] -wrapt = ["565a021fd19419476b9362b05eeaa094178de64f8361e44468f9e9d7843901e1"] -zipp = ["3718b1cbcd963c7d4c5511a8240812904164b7f381b647143a89d3b98f9bcd8e", "f06903e9f1f43b12d371004b4ac7b06ab39a44adc747266928ae6debfa7b3335"] +[metadata.files] +astroid = [ + {file = "astroid-2.3.3-py3-none-any.whl", hash = "sha256:840947ebfa8b58f318d42301cf8c0a20fd794a33b61cc4638e28e9e61ba32f42"}, + {file = "astroid-2.3.3.tar.gz", hash = "sha256:71ea07f44df9568a75d0f354c49143a4575d90645e9fead6dfb52c26a85ed13a"}, +] +atomicwrites = [ + {file = "atomicwrites-1.3.0-py2.py3-none-any.whl", hash = "sha256:03472c30eb2c5d1ba9227e4c2ca66ab8287fbfbbda3888aa93dc2e28fc6811b4"}, + {file = "atomicwrites-1.3.0.tar.gz", hash = "sha256:75a9445bac02d8d058d5e1fe689654ba5a6556a1dfd8ce6ec55a0ed79866cfa6"}, +] +attrs = [ + {file = "attrs-19.3.0-py2.py3-none-any.whl", hash = "sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c"}, + {file = "attrs-19.3.0.tar.gz", hash = "sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72"}, +] +bottle = [ + {file = "bottle-0.12.18-py3-none-any.whl", hash = "sha256:43157254e88f32c6be16f8d9eb1f1d1472396a4e174ebd2bf62544854ecf37e7"}, + {file = "bottle-0.12.18.tar.gz", hash = "sha256:0819b74b145a7def225c0e83b16a4d5711fde751cd92bae467a69efce720f69e"}, +] +cachecontrol = [ + {file = "CacheControl-0.12.5.tar.gz", hash = "sha256:cef77effdf51b43178f6a2d3b787e3734f98ade253fa3187f3bb7315aaa42ff7"}, +] +cachy = [ + {file = "cachy-0.2.0-py2.py3-none-any.whl", hash = "sha256:b71e8e7ddb5b386e23e81befdfac8a93885406139b8681bedc17b3444fcb8fca"}, + {file = "cachy-0.2.0.tar.gz", hash = "sha256:b71513e5a38ce90c1280c02b7d8d6bb3fdf64666c9cc0584f2479afea097d56c"}, +] +certifi = [ + {file = "certifi-2019.11.28-py2.py3-none-any.whl", hash = "sha256:017c25db2a153ce562900032d5bc68e9f191e44e9a0f762f373977de9df1fbb3"}, + {file = "certifi-2019.11.28.tar.gz", hash = "sha256:25b64c7da4cd7479594d035c08c2d809eb4aab3a26e5a990ea98cc450c320f1f"}, +] +chardet = [ + {file = "chardet-3.0.4-py2.py3-none-any.whl", hash = "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"}, + {file = "chardet-3.0.4.tar.gz", hash = "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae"}, +] +cleo = [ + {file = "cleo-0.6.8-py2.py3-none-any.whl", hash = "sha256:9b7f79f1aa470a025c0d28c76aa225ee9e65028d32f80032e871aa3500df61b8"}, + {file = "cleo-0.6.8.tar.gz", hash = "sha256:85a63076b72ca376fb06668be1fc7758dc16740b394783d5cc65200c4b32f71b"}, +] +click = [ + {file = "Click-7.0-py2.py3-none-any.whl", hash = "sha256:2335065e6395b9e67ca716de5f7526736bfa6ceead690adf616d925bdc622b13"}, + {file = "Click-7.0.tar.gz", hash = "sha256:5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7"}, +] +colorama = [ + {file = "colorama-0.4.3-py2.py3-none-any.whl", hash = "sha256:7d73d2a99753107a36ac6b455ee49046802e59d9d076ef8e47b61499fa29afff"}, + {file = "colorama-0.4.3.tar.gz", hash = "sha256:e96da0d330793e2cb9485e9ddfd918d456036c7149416295932478192f4436a1"}, +] +conan = [ + {file = "conan-1.21.0.tar.gz", hash = "sha256:1a5168d4ba18eb990e3a3a982b2d6215af45810e0cd9d2085c985da10244b4c0"}, +] +coverage = [ + {file = "coverage-5.0-cp27-cp27m-macosx_10_12_x86_64.whl", hash = "sha256:9c871b006c878a890c6e44a5b2f3c6291335324b298c904dc0402ee92ee1f0be"}, + {file = "coverage-5.0-cp27-cp27m-macosx_10_13_intel.whl", hash = "sha256:e5a675f6829c53c87d79117a8eb656cc4a5f8918185a32fc93ba09778e90f6db"}, + {file = "coverage-5.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:81326f1095c53111f8afc95da281e1414185f4a538609a77ca50bdfa39a6c207"}, + {file = "coverage-5.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:8873dc0d8f42142ea9f20c27bbdc485190fff93823c6795be661703369e5877d"}, + {file = "coverage-5.0-cp27-cp27m-win32.whl", hash = "sha256:44b783b02db03c4777d8cf71bae19eadc171a6f2a96777d916b2c30a1eb3d070"}, + {file = "coverage-5.0-cp27-cp27m-win_amd64.whl", hash = "sha256:d52c1c2d7e856cecc05aa0526453cb14574f821b7f413cc279b9514750d795c1"}, + {file = "coverage-5.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:ba259f68250f16d2444cbbfaddaa0bb20e1560a4fdaad50bece25c199e6af864"}, + {file = "coverage-5.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:475bf7c4252af0a56e1abba9606f1e54127cdf122063095c75ab04f6f99cf45e"}, + {file = "coverage-5.0-cp35-cp35m-macosx_10_12_x86_64.whl", hash = "sha256:91f2491aeab9599956c45a77c5666d323efdec790bfe23fcceafcd91105d585a"}, + {file = "coverage-5.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:979daa8655ae5a51e8e7a24e7d34e250ae8309fd9719490df92cbb2fe2b0422b"}, + {file = "coverage-5.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:1a4b6b6a2a3a6612e6361130c2cc3dc4378d8c221752b96167ccbad94b47f3cd"}, + {file = "coverage-5.0-cp35-cp35m-win32.whl", hash = "sha256:56b13000acf891f700f5067512b804d1ec8c301d627486c678b903859d07f798"}, + {file = "coverage-5.0-cp35-cp35m-win_amd64.whl", hash = "sha256:81042a24f67b96e4287774014fa27220d8a4d91af1043389e4d73892efc89ac6"}, + {file = "coverage-5.0-cp36-cp36m-macosx_10_13_x86_64.whl", hash = "sha256:fec32646b98baf4a22fdceb08703965bd16dea09051fbeb31a04b5b6e72b846c"}, + {file = "coverage-5.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:7fe3e2fde2bf1d7ce25ebcd2d3de3650b8d60d9a73ce6dcef36e20191291613d"}, + {file = "coverage-5.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:be1d89614c6b6c36d7578496dc8625123bda2ff44f224cf8b1c45b810ee7383f"}, + {file = "coverage-5.0-cp36-cp36m-win32.whl", hash = "sha256:47c81ee687eafc2f1db7f03fbe99aab81330565ebc62fb3b61edfc2216a550c8"}, + {file = "coverage-5.0-cp36-cp36m-win_amd64.whl", hash = "sha256:3be5338a2eb4ef03c57f20917e1d12a1fd10e3853fed060b6d6b677cb3745898"}, + {file = "coverage-5.0-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:79388ae29c896299b3567965dbcd93255f175c17c6c7bca38614d12718c47466"}, + {file = "coverage-5.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:4a7f8e72b18f2aca288ff02255ce32cc830bc04d993efbc87abf6beddc9e56c0"}, + {file = "coverage-5.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:d609a6d564ad3d327e9509846c2c47f170456344521462b469e5cb39e48ba31c"}, + {file = "coverage-5.0-cp37-cp37m-win32.whl", hash = "sha256:50197163a22fd17f79086e087a787883b3ec9280a509807daf158dfc2a7ded02"}, + {file = "coverage-5.0-cp37-cp37m-win_amd64.whl", hash = "sha256:b5ed7837b923d1d71c4f587ae1539ccd96bfd6be9788f507dbe94dab5febbb5d"}, + {file = "coverage-5.0-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:c95bb147fab76f2ecde332d972d8f4138b8f2daee6c466af4ff3b4f29bd4c19e"}, + {file = "coverage-5.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:0cd13a6e98c37b510a2d34c8281d5e1a226aaf9b65b7d770ef03c63169965351"}, + {file = "coverage-5.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:88d2cbcb0a112f47eef71eb95460b6995da18e6f8ca50c264585abc2c473154b"}, + {file = "coverage-5.0-cp38-cp38m-win32.whl", hash = "sha256:2ee55e6dba516ddf6f484aa83ccabbb0adf45a18892204c23486938d12258cde"}, + {file = "coverage-5.0-cp38-cp38m-win_amd64.whl", hash = "sha256:a6d092545e5af53e960465f652e00efbf5357adad177b2630d63978d85e46a72"}, + {file = "coverage-5.0-cp39-cp39m-win32.whl", hash = "sha256:79fd5d3d62238c4f583b75d48d53cdae759fe04d4fb18fe8b371d88ad2b6f8be"}, + {file = "coverage-5.0-cp39-cp39m-win_amd64.whl", hash = "sha256:c1b030a79749aa8d1f1486885040114ee56933b15ccfc90049ba266e4aa2139f"}, + {file = "coverage-5.0.tar.gz", hash = "sha256:e1bad043c12fb58e8c7d92b3d7f2f49977dcb80a08a6d1e7a5114a11bf819fca"}, +] +deprecation = [ + {file = "deprecation-2.0.7-py2.py3-none-any.whl", hash = "sha256:dc9b4f252b7aca8165ce2764a71da92a653b5ffbf7a389461d7a640f6536ecb2"}, + {file = "deprecation-2.0.7.tar.gz", hash = "sha256:c0392f676a6146f0238db5744d73e786a43510d54033f80994ef2f4c9df192ed"}, +] +distro = [ + {file = "distro-1.1.0-py2.py3-none-any.whl", hash = "sha256:f0e43d555fd45eda71eb474c2927c17b75e0673bf13f90f70bdce5b1a90cf0c5"}, + {file = "distro-1.1.0.tar.gz", hash = "sha256:722054925f339a39ca411a8c7079f390a41d42c422697bedf228f1a9c46ac1ee"}, +] +entrypoints = [ + {file = "entrypoints-0.3-py2.py3-none-any.whl", hash = "sha256:589f874b313739ad35be6e0cd7efde2a4e9b6fea91edcc34e58ecbb8dbe56d19"}, + {file = "entrypoints-0.3.tar.gz", hash = "sha256:c70dd71abe5a8c85e55e12c19bd91ccfeec11a6e99044204511f9ed547d48451"}, +] +fasteners = [ + {file = "fasteners-0.15-py2.py3-none-any.whl", hash = "sha256:007e4d2b2d4a10093f67e932e5166722d2eab83b77724156e92ad013c6226574"}, + {file = "fasteners-0.15.tar.gz", hash = "sha256:3a176da6b70df9bb88498e1a18a9e4a8579ed5b9141207762368a1017bf8f5ef"}, +] +flake8 = [ + {file = "flake8-3.7.9-py2.py3-none-any.whl", hash = "sha256:49356e766643ad15072a789a20915d3c91dc89fd313ccd71802303fd67e4deca"}, + {file = "flake8-3.7.9.tar.gz", hash = "sha256:45681a117ecc81e870cbf1262835ae4af5e7a8b08e40b944a8a6e6b895914cfb"}, +] +future = [ + {file = "future-0.18.2.tar.gz", hash = "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"}, +] +html5lib = [ + {file = "html5lib-1.0.1-py2.py3-none-any.whl", hash = "sha256:20b159aa3badc9d5ee8f5c647e5efd02ed2a66ab8d354930bd9ff139fc1dc0a3"}, + {file = "html5lib-1.0.1.tar.gz", hash = "sha256:66cb0dcfdbbc4f9c3ba1a63fdb511ffdbd4f513b2b6d81b80cd26ce6b3fb3736"}, +] +idna = [ + {file = "idna-2.8-py2.py3-none-any.whl", hash = "sha256:ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c"}, + {file = "idna-2.8.tar.gz", hash = "sha256:c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407"}, +] +isort = [ + {file = "isort-4.3.21-py2.py3-none-any.whl", hash = "sha256:6e811fcb295968434526407adb8796944f1988c5b65e8139058f2014cbe100fd"}, + {file = "isort-4.3.21.tar.gz", hash = "sha256:54da7e92468955c4fceacd0c86bd0ec997b0e1ee80d97f67c35a78b719dccab1"}, +] +jinja2 = [ + {file = "Jinja2-2.10.3-py2.py3-none-any.whl", hash = "sha256:74320bb91f31270f9551d46522e33af46a80c3d619f4a4bf42b3164d30b5911f"}, + {file = "Jinja2-2.10.3.tar.gz", hash = "sha256:9fe95f19286cfefaa917656583d020be14e7859c6b0252588391e47db34527de"}, +] +jsonschema = [ + {file = "jsonschema-3.2.0-py2.py3-none-any.whl", hash = "sha256:4e5b3cf8216f577bee9ce139cbe72eca3ea4f292ec60928ff24758ce626cd163"}, + {file = "jsonschema-3.2.0.tar.gz", hash = "sha256:c8a85b28d377cc7737e46e2d9f2b4f44ee3c0e1deac6bf46ddefc7187d30797a"}, +] +lazy-object-proxy = [ + {file = "lazy-object-proxy-1.4.3.tar.gz", hash = "sha256:f3900e8a5de27447acbf900b4750b0ddfd7ec1ea7fbaf11dfa911141bc522af0"}, + {file = "lazy_object_proxy-1.4.3-cp27-cp27m-macosx_10_13_x86_64.whl", hash = "sha256:a2238e9d1bb71a56cd710611a1614d1194dc10a175c1e08d75e1a7bcc250d442"}, + {file = "lazy_object_proxy-1.4.3-cp27-cp27m-win32.whl", hash = "sha256:efa1909120ce98bbb3777e8b6f92237f5d5c8ea6758efea36a473e1d38f7d3e4"}, + {file = "lazy_object_proxy-1.4.3-cp27-cp27m-win_amd64.whl", hash = "sha256:4677f594e474c91da97f489fea5b7daa17b5517190899cf213697e48d3902f5a"}, + {file = "lazy_object_proxy-1.4.3-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:0c4b206227a8097f05c4dbdd323c50edf81f15db3b8dc064d08c62d37e1a504d"}, + {file = "lazy_object_proxy-1.4.3-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:d945239a5639b3ff35b70a88c5f2f491913eb94871780ebfabb2568bd58afc5a"}, + {file = "lazy_object_proxy-1.4.3-cp34-cp34m-win32.whl", hash = "sha256:9651375199045a358eb6741df3e02a651e0330be090b3bc79f6d0de31a80ec3e"}, + {file = "lazy_object_proxy-1.4.3-cp34-cp34m-win_amd64.whl", hash = "sha256:eba7011090323c1dadf18b3b689845fd96a61ba0a1dfbd7f24b921398affc357"}, + {file = "lazy_object_proxy-1.4.3-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:48dab84ebd4831077b150572aec802f303117c8cc5c871e182447281ebf3ac50"}, + {file = "lazy_object_proxy-1.4.3-cp35-cp35m-win32.whl", hash = "sha256:ca0a928a3ddbc5725be2dd1cf895ec0a254798915fb3a36af0964a0a4149e3db"}, + {file = "lazy_object_proxy-1.4.3-cp35-cp35m-win_amd64.whl", hash = "sha256:194d092e6f246b906e8f70884e620e459fc54db3259e60cf69a4d66c3fda3449"}, + {file = "lazy_object_proxy-1.4.3-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:97bb5884f6f1cdce0099f86b907aa41c970c3c672ac8b9c8352789e103cf3156"}, + {file = "lazy_object_proxy-1.4.3-cp36-cp36m-win32.whl", hash = "sha256:cb2c7c57005a6804ab66f106ceb8482da55f5314b7fcb06551db1edae4ad1531"}, + {file = "lazy_object_proxy-1.4.3-cp36-cp36m-win_amd64.whl", hash = "sha256:8d859b89baf8ef7f8bc6b00aa20316483d67f0b1cbf422f5b4dc56701c8f2ffb"}, + {file = "lazy_object_proxy-1.4.3-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:1be7e4c9f96948003609aa6c974ae59830a6baecc5376c25c92d7d697e684c08"}, + {file = "lazy_object_proxy-1.4.3-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:d74bb8693bf9cf75ac3b47a54d716bbb1a92648d5f781fc799347cfc95952383"}, + {file = "lazy_object_proxy-1.4.3-cp37-cp37m-win32.whl", hash = "sha256:9b15f3f4c0f35727d3a0fba4b770b3c4ebbb1fa907dbcc046a1d2799f3edd142"}, + {file = "lazy_object_proxy-1.4.3-cp37-cp37m-win_amd64.whl", hash = "sha256:9254f4358b9b541e3441b007a0ea0764b9d056afdeafc1a5569eee1cc6c1b9ea"}, + {file = "lazy_object_proxy-1.4.3-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:a6ae12d08c0bf9909ce12385803a543bfe99b95fe01e752536a60af2b7797c62"}, + {file = "lazy_object_proxy-1.4.3-cp38-cp38-win32.whl", hash = "sha256:5541cada25cd173702dbd99f8e22434105456314462326f06dba3e180f203dfd"}, + {file = "lazy_object_proxy-1.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:59f79fef100b09564bc2df42ea2d8d21a64fdcda64979c0fa3db7bdaabaf6239"}, +] +lockfile = [ + {file = "lockfile-0.12.2-py2.py3-none-any.whl", hash = "sha256:6c3cb24f344923d30b2785d5ad75182c8ea7ac1b6171b08657258ec7429d50fa"}, + {file = "lockfile-0.12.2.tar.gz", hash = "sha256:6aed02de03cba24efabcd600b30540140634fc06cfa603822d508d5361e9f799"}, +] +markupsafe = [ + {file = "MarkupSafe-1.1.1-cp27-cp27m-macosx_10_6_intel.whl", hash = "sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161"}, + {file = "MarkupSafe-1.1.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7"}, + {file = "MarkupSafe-1.1.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183"}, + {file = "MarkupSafe-1.1.1-cp27-cp27m-win32.whl", hash = "sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b"}, + {file = "MarkupSafe-1.1.1-cp27-cp27m-win_amd64.whl", hash = "sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e"}, + {file = "MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f"}, + {file = "MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1"}, + {file = "MarkupSafe-1.1.1-cp34-cp34m-macosx_10_6_intel.whl", hash = "sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5"}, + {file = "MarkupSafe-1.1.1-cp34-cp34m-manylinux1_i686.whl", hash = "sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1"}, + {file = "MarkupSafe-1.1.1-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735"}, + {file = "MarkupSafe-1.1.1-cp34-cp34m-win32.whl", hash = "sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21"}, + {file = "MarkupSafe-1.1.1-cp34-cp34m-win_amd64.whl", hash = "sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235"}, + {file = "MarkupSafe-1.1.1-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b"}, + {file = "MarkupSafe-1.1.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f"}, + {file = "MarkupSafe-1.1.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905"}, + {file = "MarkupSafe-1.1.1-cp35-cp35m-win32.whl", hash = "sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1"}, + {file = "MarkupSafe-1.1.1-cp35-cp35m-win_amd64.whl", hash = "sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-win32.whl", hash = "sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-macosx_10_6_intel.whl", hash = "sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-win32.whl", hash = "sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c"}, + {file = "MarkupSafe-1.1.1.tar.gz", hash = "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b"}, +] +mccabe = [ + {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, + {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, +] +monotonic = [ + {file = "monotonic-1.5-py2.py3-none-any.whl", hash = "sha256:552a91f381532e33cbd07c6a2655a21908088962bb8fa7239ecbcc6ad1140cc7"}, + {file = "monotonic-1.5.tar.gz", hash = "sha256:23953d55076df038541e648a53676fb24980f7a1be290cdda21300b3bc21dfb0"}, +] +more-itertools = [ + {file = "more-itertools-8.0.2.tar.gz", hash = "sha256:b84b238cce0d9adad5ed87e745778d20a3f8487d0f0cb8b8a586816c7496458d"}, + {file = "more_itertools-8.0.2-py3-none-any.whl", hash = "sha256:c833ef592a0324bcc6a60e48440da07645063c453880c9477ceb22490aec1564"}, +] +msgpack = [ + {file = "msgpack-0.6.2-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:774f5edc3475917cd95fe593e625d23d8580f9b48b570d8853d06cac171cd170"}, + {file = "msgpack-0.6.2-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:a06efd0482a1942aad209a6c18321b5e22d64eb531ea20af138b28172d8f35ba"}, + {file = "msgpack-0.6.2-cp27-cp27m-win32.whl", hash = "sha256:8a3ada8401736df2bf497f65589293a86c56e197a80ae7634ec2c3150a2f5082"}, + {file = "msgpack-0.6.2-cp27-cp27m-win_amd64.whl", hash = "sha256:b8b4bd3dafc7b92608ae5462add1c8cc881851c2d4f5d8977fdea5b081d17f21"}, + {file = "msgpack-0.6.2-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:24149a75643aeaa81ece4259084d11b792308a6cf74e796cbb35def94c89a25a"}, + {file = "msgpack-0.6.2-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:757bd71a9b89e4f1db0622af4436d403e742506dbea978eba566815dc65ec895"}, + {file = "msgpack-0.6.2-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:32fea0ea3cd1ef820286863a6202dcfd62a539b8ec3edcbdff76068a8c2cc6ce"}, + {file = "msgpack-0.6.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:db7ff14abc73577b0bcbcf73ecff97d3580ecaa0fc8724babce21fdf3fe08ef6"}, + {file = "msgpack-0.6.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:187794cd1eb73acccd528247e3565f6760bd842d7dc299241f830024a7dd5610"}, + {file = "msgpack-0.6.2-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:b24afc52e18dccc8c175de07c1d680bdf315844566f4952b5bedb908894bec79"}, + {file = "msgpack-0.6.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:355f7fd0f90134229eaeefaee3cf42e0afc8518e8f3cd4b25f541a7104dcb8f9"}, + {file = "msgpack-0.6.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:76df51492bc6fa6cc8b65d09efdb67cbba3cbfe55004c3afc81352af92b4a43c"}, + {file = "msgpack-0.6.2-cp36-cp36m-win32.whl", hash = "sha256:f0f47bafe9c9b8ed03e19a100a743662dd8c6d0135e684feea720a0d0046d116"}, + {file = "msgpack-0.6.2-cp36-cp36m-win_amd64.whl", hash = "sha256:c6e5024fc0cdf7f83b6624850309ddd7e06c48a75fa0d1c5173de4d93300eb19"}, + {file = "msgpack-0.6.2-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:30b88c47e0cdb6062daed88ca283b0d84fa0d2ad6c273aa0788152a1c643e408"}, + {file = "msgpack-0.6.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:229a0ccdc39e9b6c6d1033cd8aecd9c296823b6c87f0de3943c59b8bc7c64bee"}, + {file = "msgpack-0.6.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:4abdb88a9b67e64810fb54b0c24a1fd76b12297b4f7a1467d85a14dd8367191a"}, + {file = "msgpack-0.6.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:dedf54d72d9e7b6d043c244c8213fe2b8bbfe66874b9a65b39c4cc892dd99dd4"}, + {file = "msgpack-0.6.2-cp37-cp37m-win32.whl", hash = "sha256:0cc7ca04e575ba34fea7cfcd76039f55def570e6950e4155a4174368142c8e1b"}, + {file = "msgpack-0.6.2-cp37-cp37m-win_amd64.whl", hash = "sha256:1904b7cb65342d0998b75908304a03cb004c63ef31e16c8c43fee6b989d7f0d7"}, + {file = "msgpack-0.6.2.tar.gz", hash = "sha256:ea3c2f859346fcd55fc46e96885301d9c2f7a36d453f5d8f2967840efa1e1830"}, +] +node-semver = [ + {file = "node-semver-0.6.1.tar.gz", hash = "sha256:4016f7c1071b0493f18db69ea02d3763e98a633606d7c7beca811e53b5ac66b7"}, + {file = "node_semver-0.6.1-py3-none-any.whl", hash = "sha256:d4bf83873894591a0cbb6591910d96917fbadc9731e8e39e782d3a2fbc2b841e"}, +] +packaging = [ + {file = "packaging-19.2-py2.py3-none-any.whl", hash = "sha256:d9551545c6d761f3def1677baf08ab2a3ca17c56879e70fecba2fc4dde4ed108"}, + {file = "packaging-19.2.tar.gz", hash = "sha256:28b924174df7a2fa32c1953825ff29c61e2f5e082343165438812f00d3a7fc47"}, +] +pastel = [ + {file = "pastel-0.1.1-py2.py3-none-any.whl", hash = "sha256:a904e1659512cc9880a028f66de77cc813a4c32f7ceb68725cbc8afad57ef7ef"}, + {file = "pastel-0.1.1.tar.gz", hash = "sha256:bf3b1901b2442ea0d8ab9a390594e5b0c9584709d543a3113506fe8b28cbace3"}, +] +patch-ng = [ + {file = "patch-ng-1.17.2.tar.gz", hash = "sha256:5150c9e624e45be5d51f0288d20393cdfd8cfa44682b0c76a4a14c0dce6cca0a"}, +] +path = [ + {file = "path-13.1.0-py3-none-any.whl", hash = "sha256:41f0db0b6e32b3fc33c0bede630f6b58c7790af3a27c899e0c7ff69143d8696d"}, + {file = "path-13.1.0.tar.gz", hash = "sha256:97249b37e5e4017429a780920147200a2215e268c1a18fa549fec0b654ce99b7"}, +] +pkginfo = [ + {file = "pkginfo-1.5.0.1-py2.py3-none-any.whl", hash = "sha256:a6d9e40ca61ad3ebd0b72fbadd4fba16e4c0e4df0428c041e01e06eb6ee71f32"}, + {file = "pkginfo-1.5.0.1.tar.gz", hash = "sha256:7424f2c8511c186cd5424bbf31045b77435b37a8d604990b79d4e70d741148bb"}, +] +pluggy = [ + {file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"}, + {file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"}, +] +pluginbase = [ + {file = "pluginbase-0.7.tar.gz", hash = "sha256:c0abe3218b86533cca287e7057a37481883c07acef7814b70583406938214cc8"}, +] +poetry = [ + {file = "poetry-0.12.17-py2.py3-none-any.whl", hash = "sha256:0133cd4edc77e955de8cd91203b6728f8365e2849d7fa7da1bfbc14b6529ab43"}, + {file = "poetry-0.12.17.tar.gz", hash = "sha256:6e535de38df7e6ab46ff8d197f53632b071675287d1477efc7bf4a5c4c63bc3f"}, +] +py = [ + {file = "py-1.8.0-py2.py3-none-any.whl", hash = "sha256:64f65755aee5b381cea27766a3a147c3f15b9b6b9ac88676de66ba2ae36793fa"}, + {file = "py-1.8.0.tar.gz", hash = "sha256:dc639b046a6e2cff5bbe40194ad65936d6ba360b52b3c3fe1d08a82dd50b5e53"}, +] +pycodestyle = [ + {file = "pycodestyle-2.5.0-py2.py3-none-any.whl", hash = "sha256:95a2219d12372f05704562a14ec30bc76b05a5b297b21a5dfe3f6fac3491ae56"}, + {file = "pycodestyle-2.5.0.tar.gz", hash = "sha256:e40a936c9a450ad81df37f549d676d127b1b66000a6c500caa2b085bc0ca976c"}, +] +pyflakes = [ + {file = "pyflakes-2.1.1-py2.py3-none-any.whl", hash = "sha256:17dbeb2e3f4d772725c777fabc446d5634d1038f234e77343108ce445ea69ce0"}, + {file = "pyflakes-2.1.1.tar.gz", hash = "sha256:d976835886f8c5b31d47970ed689944a0262b5f3afa00a5a7b4dc81e5449f8a2"}, +] +pygments = [ + {file = "Pygments-2.5.2-py2.py3-none-any.whl", hash = "sha256:2a3fe295e54a20164a9df49c75fa58526d3be48e14aceba6d6b1e8ac0bfd6f1b"}, + {file = "Pygments-2.5.2.tar.gz", hash = "sha256:98c8aa5a9f778fcd1026a17361ddaf7330d1b7c62ae97c3bb0ae73e0b9b6b0fe"}, +] +pyjwt = [ + {file = "PyJWT-1.7.1-py2.py3-none-any.whl", hash = "sha256:5c6eca3c2940464d106b99ba83b00c6add741c9becaec087fb7ccdefea71350e"}, + {file = "PyJWT-1.7.1.tar.gz", hash = "sha256:8d59a976fb773f3e6a39c85636357c4f0e242707394cadadd9814f5cbaa20e96"}, +] +pylev = [ + {file = "pylev-1.3.0-py2.py3-none-any.whl", hash = "sha256:1d29a87beb45ebe1e821e7a3b10da2b6b2f4c79b43f482c2df1a1f748a6e114e"}, + {file = "pylev-1.3.0.tar.gz", hash = "sha256:063910098161199b81e453025653ec53556c1be7165a9b7c50be2f4d57eae1c3"}, +] +pylint = [ + {file = "pylint-2.4.4-py3-none-any.whl", hash = "sha256:886e6afc935ea2590b462664b161ca9a5e40168ea99e5300935f6591ad467df4"}, + {file = "pylint-2.4.4.tar.gz", hash = "sha256:3db5468ad013380e987410a8d6956226963aed94ecb5f9d3a28acca6d9ac36cd"}, +] +pyparsing = [ + {file = "pyparsing-2.4.5-py2.py3-none-any.whl", hash = "sha256:20f995ecd72f2a1f4bf6b072b63b22e2eb457836601e76d6e5dfcd75436acc1f"}, + {file = "pyparsing-2.4.5.tar.gz", hash = "sha256:4ca62001be367f01bd3e92ecbb79070272a9d4964dce6a48a82ff0b8bc7e683a"}, +] +pyrsistent = [ + {file = "pyrsistent-0.14.11.tar.gz", hash = "sha256:3ca82748918eb65e2d89f222b702277099aca77e34843c5eb9d52451173970e2"}, +] +pytest = [ + {file = "pytest-5.3.2-py3-none-any.whl", hash = "sha256:e41d489ff43948babd0fad7ad5e49b8735d5d55e26628a58673c39ff61d95de4"}, + {file = "pytest-5.3.2.tar.gz", hash = "sha256:6b571215b5a790f9b41f19f3531c53a45cf6bb8ef2988bc1ff9afb38270b25fa"}, +] +python-dateutil = [ + {file = "python-dateutil-2.8.1.tar.gz", hash = "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c"}, + {file = "python_dateutil-2.8.1-py2.py3-none-any.whl", hash = "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a"}, +] +pyyaml = [ + {file = "PyYAML-5.2-cp27-cp27m-win32.whl", hash = "sha256:35ace9b4147848cafac3db142795ee42deebe9d0dad885ce643928e88daebdcc"}, + {file = "PyYAML-5.2-cp27-cp27m-win_amd64.whl", hash = "sha256:ebc4ed52dcc93eeebeae5cf5deb2ae4347b3a81c3fa12b0b8c976544829396a4"}, + {file = "PyYAML-5.2-cp35-cp35m-win32.whl", hash = "sha256:38a4f0d114101c58c0f3a88aeaa44d63efd588845c5a2df5290b73db8f246d15"}, + {file = "PyYAML-5.2-cp35-cp35m-win_amd64.whl", hash = "sha256:483eb6a33b671408c8529106df3707270bfacb2447bf8ad856a4b4f57f6e3075"}, + {file = "PyYAML-5.2-cp36-cp36m-win32.whl", hash = "sha256:7f38e35c00e160db592091751d385cd7b3046d6d51f578b29943225178257b31"}, + {file = "PyYAML-5.2-cp36-cp36m-win_amd64.whl", hash = "sha256:0e7f69397d53155e55d10ff68fdfb2cf630a35e6daf65cf0bdeaf04f127c09dc"}, + {file = "PyYAML-5.2-cp37-cp37m-win32.whl", hash = "sha256:e4c015484ff0ff197564917b4b4246ca03f411b9bd7f16e02a2f586eb48b6d04"}, + {file = "PyYAML-5.2-cp37-cp37m-win_amd64.whl", hash = "sha256:4b6be5edb9f6bb73680f5bf4ee08ff25416d1400fbd4535fe0069b2994da07cd"}, + {file = "PyYAML-5.2-cp38-cp38-win32.whl", hash = "sha256:8100c896ecb361794d8bfdb9c11fce618c7cf83d624d73d5ab38aef3bc82d43f"}, + {file = "PyYAML-5.2-cp38-cp38-win_amd64.whl", hash = "sha256:2e9f0b7c5914367b0916c3c104a024bb68f269a486b9d04a2e8ac6f6597b7803"}, + {file = "PyYAML-5.2.tar.gz", hash = "sha256:c0ee8eca2c582d29c3c2ec6e2c4f703d1b7f1fb10bc72317355a746057e7346c"}, +] +requests = [ + {file = "requests-2.22.0-py2.py3-none-any.whl", hash = "sha256:9cf5292fcd0f598c671cfc1e0d7d1a7f13bb8085e9a590f48c010551dc6c4b31"}, + {file = "requests-2.22.0.tar.gz", hash = "sha256:11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4"}, +] +requests-toolbelt = [ + {file = "requests-toolbelt-0.8.0.tar.gz", hash = "sha256:f6a531936c6fa4c6cfce1b9c10d5c4f498d16528d2a54a22ca00011205a187b5"}, + {file = "requests_toolbelt-0.8.0-py2.py3-none-any.whl", hash = "sha256:42c9c170abc2cacb78b8ab23ac957945c7716249206f90874651971a4acff237"}, +] +shellingham = [ + {file = "shellingham-1.3.1-py2.py3-none-any.whl", hash = "sha256:77d37a4fd287c1e663006f7ecf1b9deca9ad492d0082587bd813c44eb49e4e62"}, + {file = "shellingham-1.3.1.tar.gz", hash = "sha256:985b23bbd1feae47ca6a6365eacd314d93d95a8a16f8f346945074c28fe6f3e0"}, +] +six = [ + {file = "six-1.12.0-py2.py3-none-any.whl", hash = "sha256:3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c"}, + {file = "six-1.12.0.tar.gz", hash = "sha256:d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73"}, +] +toml = [ + {file = "toml-0.10.0-py2.7.egg", hash = "sha256:f1db651f9657708513243e61e6cc67d101a39bad662eaa9b5546f789338e07a3"}, + {file = "toml-0.10.0-py2.py3-none-any.whl", hash = "sha256:235682dd292d5899d361a811df37e04a8828a5b1da3115886b73cf81ebc9100e"}, + {file = "toml-0.10.0.tar.gz", hash = "sha256:229f81c57791a41d65e399fc06bf0848bab550a9dfd5ed66df18ce5f05e73d5c"}, +] +tomlkit = [ + {file = "tomlkit-0.5.8-py2.py3-none-any.whl", hash = "sha256:96e6369288571799a3052c1ef93b9de440e1ab751aa045f435b55e9d3bcd0690"}, + {file = "tomlkit-0.5.8.tar.gz", hash = "sha256:32c10cc16ded7e4101c79f269910658cc2a0be5913f1252121c3cd603051c269"}, +] +tqdm = [ + {file = "tqdm-4.40.2-py2.py3-none-any.whl", hash = "sha256:7543892c59720e36e4212180274d8f58dde36803bc1f6370fd09afa20b8f5892"}, + {file = "tqdm-4.40.2.tar.gz", hash = "sha256:f0ab01cf3ae5673d18f918700c0165e5fad0f26b5ebe4b34f62ead92686b5340"}, +] +urllib3 = [ + {file = "urllib3-1.25.7-py2.py3-none-any.whl", hash = "sha256:a8a318824cc77d1fd4b2bec2ded92646630d7fe8619497b142c84a9e6f5a7293"}, + {file = "urllib3-1.25.7.tar.gz", hash = "sha256:f3c5fd51747d450d4dcf6f923c81f78f811aab8205fda64b0aba34a4e48b0745"}, +] +wcwidth = [ + {file = "wcwidth-0.1.7-py2.py3-none-any.whl", hash = "sha256:f4ebe71925af7b40a864553f761ed559b43544f8f71746c2d756c7fe788ade7c"}, + {file = "wcwidth-0.1.7.tar.gz", hash = "sha256:3df37372226d6e63e1b1e1eda15c594bca98a22d33a23832a90998faa96bc65e"}, +] +webencodings = [ + {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, + {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, +] +wrapt = [ + {file = "wrapt-1.11.2.tar.gz", hash = "sha256:565a021fd19419476b9362b05eeaa094178de64f8361e44468f9e9d7843901e1"}, +] diff --git a/pyproject.toml b/pyproject.toml index f3dfa0a..d2b5a59 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,13 +18,24 @@ homepage = "https://github.com/Synodic-Software/Conan-for-Poetry" [tool.poetry.dependencies] python = "^3.8" poetry = "^0.12" -conan = "^1.19" +conan = "^1.21" +click = "^7.0" +toml = "^0.10" [tool.poetry.dev-dependencies] pylint = "^2.4" -coverage = "^4.5" +flake8 = "^3.7.9" +pytest = "^5.3.2" +coverage = "^5.0" +path = "^13.1.0" + + +#TODO: Remove CLI interface once poetry has plugin support +[tool.poetry.scripts] +conan-poetry = "conan_for_poetry.cli:entrypoint" + [build-system] -requires = ["poetry>=0.12"] +requires = ["poetry>=1.0.0"] build-backend = "poetry.masonry.api" diff --git a/tests/commands/__init__.py b/tests/commands/__init__.py deleted file mode 100644 index 5f28270..0000000 --- a/tests/commands/__init__.py +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/tests/commands/test_add.py b/tests/commands/test_add.py deleted file mode 100644 index f0a19db..0000000 --- a/tests/commands/test_add.py +++ /dev/null @@ -1,12 +0,0 @@ -import unittest - -from conan_for_poetry.commands.add import ConanAdd - -class TestAddCommand(unittest.TestCase): - - def test_Add(self): - self.assertRaises(NotImplementedError, ConanAdd) - - -if __name__ == '__main__': - unittest.main() \ No newline at end of file diff --git a/tests/commands/test_build.py b/tests/commands/test_build.py deleted file mode 100644 index b462457..0000000 --- a/tests/commands/test_build.py +++ /dev/null @@ -1,13 +0,0 @@ -import unittest - -from conan_for_poetry.commands.build import ConanBuild - -class TestBuildCommand(unittest.TestCase): - - def test_Build(self): - self.assertRaises(NotImplementedError, ConanBuild) - - - -if __name__ == '__main__': - unittest.main() \ No newline at end of file diff --git a/tests/commands/test_check.py b/tests/commands/test_check.py deleted file mode 100644 index 9c5db72..0000000 --- a/tests/commands/test_check.py +++ /dev/null @@ -1,12 +0,0 @@ -import unittest - -from conan_for_poetry.commands.check import ConanCheck - -class TestCheckCommand(unittest.TestCase): - - def test_Check(self): - self.assertRaises(NotImplementedError, ConanCheck) - - -if __name__ == '__main__': - unittest.main() \ No newline at end of file diff --git a/tests/commands/test_config.py b/tests/commands/test_config.py deleted file mode 100644 index 17ff82c..0000000 --- a/tests/commands/test_config.py +++ /dev/null @@ -1,12 +0,0 @@ -import unittest - -from conan_for_poetry.commands.config import ConanConfig - -class TestConfigCommand(unittest.TestCase): - - def test_Config(self): - self.assertRaises(NotImplementedError, ConanConfig) - - -if __name__ == '__main__': - unittest.main() \ No newline at end of file diff --git a/tests/commands/test_env.py b/tests/commands/test_env.py deleted file mode 100644 index 80941f2..0000000 --- a/tests/commands/test_env.py +++ /dev/null @@ -1,12 +0,0 @@ -import unittest - -from conan_for_poetry.commands.env import ConanEnv - -class TestEnvCommand(unittest.TestCase): - - def test_Env(self): - self.assertRaises(NotImplementedError, ConanEnv) - - -if __name__ == '__main__': - unittest.main() \ No newline at end of file diff --git a/tests/commands/test_export.py b/tests/commands/test_export.py deleted file mode 100644 index 956e744..0000000 --- a/tests/commands/test_export.py +++ /dev/null @@ -1,12 +0,0 @@ -import unittest - -from conan_for_poetry.commands.export import ConanExport - -class TestExportCommand(unittest.TestCase): - - def test_Export(self): - self.assertRaises(NotImplementedError, ConanExport) - - -if __name__ == '__main__': - unittest.main() \ No newline at end of file diff --git a/tests/commands/test_init.py b/tests/commands/test_init.py deleted file mode 100644 index 3ad5d96..0000000 --- a/tests/commands/test_init.py +++ /dev/null @@ -1,12 +0,0 @@ -import unittest - -from conan_for_poetry.commands.init import ConanInit - -class TestInitCommand(unittest.TestCase): - - def test_Init(self): - self.assertRaises(NotImplementedError, ConanInit) - - -if __name__ == '__main__': - unittest.main() \ No newline at end of file diff --git a/tests/commands/test_install.py b/tests/commands/test_install.py deleted file mode 100644 index ebbaa58..0000000 --- a/tests/commands/test_install.py +++ /dev/null @@ -1,12 +0,0 @@ -import unittest - -from conan_for_poetry.commands.install import ConanInstall - -class TestInstallCommand(unittest.TestCase): - - def test_Install(self): - self.assertRaises(NotImplementedError, ConanInstall) - - -if __name__ == '__main__': - unittest.main() \ No newline at end of file diff --git a/tests/commands/test_lock.py b/tests/commands/test_lock.py deleted file mode 100644 index fec0596..0000000 --- a/tests/commands/test_lock.py +++ /dev/null @@ -1,12 +0,0 @@ -import unittest - -from conan_for_poetry.commands.lock import ConanLock - -class TestLockCommand(unittest.TestCase): - - def test_Lock(self): - self.assertRaises(NotImplementedError, ConanLock) - - -if __name__ == '__main__': - unittest.main() \ No newline at end of file diff --git a/tests/commands/test_new.py b/tests/commands/test_new.py deleted file mode 100644 index 92b5304..0000000 --- a/tests/commands/test_new.py +++ /dev/null @@ -1,12 +0,0 @@ -import unittest - -from conan_for_poetry.commands.new import ConanNew - -class TestNewCommand(unittest.TestCase): - - def test_New(self): - self.assertRaises(NotImplementedError, ConanNew) - - -if __name__ == '__main__': - unittest.main() \ No newline at end of file diff --git a/tests/commands/test_publish.py b/tests/commands/test_publish.py deleted file mode 100644 index 30ffe96..0000000 --- a/tests/commands/test_publish.py +++ /dev/null @@ -1,12 +0,0 @@ -import unittest - -from conan_for_poetry.commands.publish import ConanPublish - -class TestPublishCommand(unittest.TestCase): - - def test_Publish(self): - self.assertRaises(NotImplementedError, ConanPublish) - - -if __name__ == '__main__': - unittest.main() \ No newline at end of file diff --git a/tests/commands/test_remove.py b/tests/commands/test_remove.py deleted file mode 100644 index 703320f..0000000 --- a/tests/commands/test_remove.py +++ /dev/null @@ -1,12 +0,0 @@ -import unittest - -from conan_for_poetry.commands.remove import ConanRemove - -class TestRemoveCommand(unittest.TestCase): - - def test_Remove(self): - self.assertRaises(NotImplementedError, ConanRemove) - - -if __name__ == '__main__': - unittest.main() \ No newline at end of file diff --git a/tests/commands/test_search.py b/tests/commands/test_search.py deleted file mode 100644 index 6a38d96..0000000 --- a/tests/commands/test_search.py +++ /dev/null @@ -1,12 +0,0 @@ -import unittest - -from conan_for_poetry.commands.search import ConanSearch - -class TestSearchCommand(unittest.TestCase): - - def test_Search(self): - self.assertRaises(NotImplementedError, ConanSearch) - - -if __name__ == '__main__': - unittest.main() \ No newline at end of file diff --git a/tests/commands/test_show.py b/tests/commands/test_show.py deleted file mode 100644 index 07dcd40..0000000 --- a/tests/commands/test_show.py +++ /dev/null @@ -1,12 +0,0 @@ -import unittest - -from conan_for_poetry.commands.show import ConanShow - -class TestShowCommand(unittest.TestCase): - - def test_Show(self): - self.assertRaises(NotImplementedError, ConanShow) - - -if __name__ == '__main__': - unittest.main() \ No newline at end of file diff --git a/tests/commands/test_update.py b/tests/commands/test_update.py deleted file mode 100644 index c13d39c..0000000 --- a/tests/commands/test_update.py +++ /dev/null @@ -1,12 +0,0 @@ -import unittest - -from conan_for_poetry.commands.update import ConanUpdate - -class TestUpdateCommand(unittest.TestCase): - - def test_Update(self): - self.assertRaises(NotImplementedError, ConanUpdate) - - -if __name__ == '__main__': - unittest.main() \ No newline at end of file diff --git a/tests/commands/test_version.py b/tests/commands/test_version.py deleted file mode 100644 index 838b6ad..0000000 --- a/tests/commands/test_version.py +++ /dev/null @@ -1,12 +0,0 @@ -import unittest - -from conan_for_poetry.commands.version import ConanVersion - -class TestVersionCommand(unittest.TestCase): - - def test_Version(self): - self.assertRaises(NotImplementedError, ConanVersion) - - -if __name__ == '__main__': - unittest.main() \ No newline at end of file diff --git a/tests/integration/test_plugin.py b/tests/integration/test_plugin.py new file mode 100644 index 0000000..c3436e8 --- /dev/null +++ b/tests/integration/test_plugin.py @@ -0,0 +1,112 @@ +import contextlib +import os +import sys +import pytest + +from conan_for_poetry.plugin import ConanPlugin +from path import Path +from distutils.dir_util import copy_tree + +@pytest.fixture +def test_project(tmp_path): + + template_directory = Path("tests/template/test_project").abspath() + directory = Path(tmp_path).abspath() + copy_tree(template_directory, directory) + + with directory: + yield tmp_path + +class TestRequirements(): + + def test_poetry(self): + pass + + def test_repository(self): + pass + + +class TestPlugin(): + + def test_poetry_new(self): + + ConanPlugin().poetry_new() + + + def test_poetry_init(self): + + ConanPlugin().poetry_init() + + + def test_poetry_install(self, test_project): + + ConanPlugin().poetry_install() + + + def test_poetry_update(self, test_project): + + ConanPlugin().poetry_update() + + + def test_poetry_add(self): + + ConanPlugin().poetry_add() + + + def test_poetry_remove(self): + + ConanPlugin().poetry_remove() + + + def test_poetry_show(self): + + ConanPlugin().poetry_show() + + + def test_poetry_build(self): + + ConanPlugin().poetry_build() + + + def test_poetry_publish(self): + + ConanPlugin().poetry_publish() + + + def test_poetry_config(self): + + ConanPlugin().poetry_config() + + + def test_poetry_check(self): + + ConanPlugin().poetry_check() + + + def test_poetry_search(self): + + ConanPlugin().poetry_search() + + + def test_poetry_lock(self): + + ConanPlugin().poetry_lock() + + + def test_poetry_version(self): + + ConanPlugin().poetry_version() + + + def test_poetry_export(self): + + ConanPlugin().poetry_export() + + + def test_poetry_env(self): + + ConanPlugin().poetry_env() + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/tests/template/test_project/md5.cpp b/tests/template/test_project/md5.cpp new file mode 100644 index 0000000..e18cc26 --- /dev/null +++ b/tests/template/test_project/md5.cpp @@ -0,0 +1,15 @@ + #include "Poco/MD5Engine.h" + #include "Poco/DigestStream.h" + + #include + + + int main(int argc, char** argv) + { + Poco::MD5Engine md5; + Poco::DigestOutputStream ds(md5); + ds << "abcdefghijklmnopqrstuvwxyz"; + ds.close(); + std::cout << Poco::DigestEngine::digestToHex(md5.digest()) << std::endl; + return 0; + } \ No newline at end of file diff --git a/tests/template/test_project/pyproject.toml b/tests/template/test_project/pyproject.toml new file mode 100644 index 0000000..705ee7f --- /dev/null +++ b/tests/template/test_project/pyproject.toml @@ -0,0 +1,32 @@ +[tool.poetry] +name = "conan-for-poetry-test" +version = "0.0.0" +description = "A test package for Conan for Poetry." + +license = "MIT" + +authors = [ + "Synodic Software" +] + +readme = "README.md" + +repository = "https://github.com" +homepage = "https://github.com" + + +[tool.poetry.dependencies] +conan = "^1.21" + +[tool.conan] +install-path = "test_install" +generators = ["cmake_find_package", "cmake_paths"] + +[tool.conan.remotes] + +[tool.conan.dependencies] +Poco = "1.9.2" + +[build-system] +requires = ["poetry>=1.0.0"] +build-backend = "poetry.masonry.api" diff --git a/tests/test_plugin.py b/tests/test_plugin.py deleted file mode 100644 index 017cbe7..0000000 --- a/tests/test_plugin.py +++ /dev/null @@ -1,97 +0,0 @@ -import unittest - -from conan_for_poetry.plugin import ConanPlugin - -class TestRequirements(unittest.TestCase): - - def test_poetry(self): - pass - - def test_repository(self): - pass - - -class TestPlugin(unittest.TestCase): - - def test_PoetryNew(self): - plugin = ConanPlugin() - self.assertRaises(NotImplementedError, plugin.PoetryNew) - - - def test_PoetryInit(self): - plugin = ConanPlugin() - self.assertRaises(NotImplementedError, plugin.PoetryInit) - - - def test_PoetryInstall(self): - plugin = ConanPlugin() - self.assertRaises(NotImplementedError, plugin.PoetryInstall) - - - def test_PoetryUpdate(self): - plugin = ConanPlugin() - self.assertRaises(NotImplementedError, plugin.PoetryUpdate) - - - def test_PoetryAdd(self): - plugin = ConanPlugin() - self.assertRaises(NotImplementedError, plugin.PoetryAdd) - - - def test_PoetryRemove(self): - plugin = ConanPlugin() - self.assertRaises(NotImplementedError, plugin.PoetryRemove) - - - def test_PoetryShow(self): - plugin = ConanPlugin() - self.assertRaises(NotImplementedError, plugin.PoetryShow) - - - def test_PoetryBuild(self): - plugin = ConanPlugin() - self.assertRaises(NotImplementedError, plugin.PoetryBuild) - - - def test_PoetryPublish(self): - plugin = ConanPlugin() - self.assertRaises(NotImplementedError, plugin.PoetryPublish) - - - def test_PoetryConfig(self): - plugin = ConanPlugin() - self.assertRaises(NotImplementedError, plugin.PoetryConfig) - - - def test_PoetryCheck(self): - plugin = ConanPlugin() - self.assertRaises(NotImplementedError, plugin.PoetryCheck) - - - def test_PoetrySearch(self): - plugin = ConanPlugin() - self.assertRaises(NotImplementedError, plugin.PoetrySearch) - - - def test_PoetryLock(self): - plugin = ConanPlugin() - self.assertRaises(NotImplementedError, plugin.PoetryLock) - - - def test_PoetryVersion(self): - plugin = ConanPlugin() - self.assertRaises(NotImplementedError, plugin.PoetryVersion) - - - def test_PoetryExport(self): - plugin = ConanPlugin() - self.assertRaises(NotImplementedError, plugin.PoetryExport) - - - def test_PoetryEnv(self): - plugin = ConanPlugin() - self.assertRaises(NotImplementedError, plugin.PoetryEnv) - - -if __name__ == '__main__': - unittest.main() \ No newline at end of file From eca61024a61699660cb0557ebf41f9d6bb6f4d8a Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Sun, 29 Dec 2019 22:18:19 -0500 Subject: [PATCH 03/10] CLI forwarding Because the 'conan-poetry' shell script is temporary, i'm not investing in testing or solid construction. Instead, all arguments will be executed as a subprocess with conan-potry replaced with poetry proper. The conan plugin parts will execute after. --- .gitignore | 3 +- conan_for_poetry/cli.py | 44 +-- conan_for_poetry/plugin.py | 137 ++++---- poetry.lock | 518 ++++++++++++++++++++++--------- pyproject.toml | 4 +- tests/integration/test_cli.py | 10 + tests/integration/test_plugin.py | 33 +- 7 files changed, 478 insertions(+), 271 deletions(-) create mode 100644 tests/integration/test_cli.py diff --git a/.gitignore b/.gitignore index 130147c..de728c2 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,5 @@ TestResults/ *.egg-info *.pyc dist/ -.vs/ \ No newline at end of file +.vs/ +.vscode/ \ No newline at end of file diff --git a/conan_for_poetry/cli.py b/conan_for_poetry/cli.py index 5e58397..66cca38 100644 --- a/conan_for_poetry/cli.py +++ b/conan_for_poetry/cli.py @@ -1,90 +1,94 @@ -#TODO: Remove CLI interface once poetry has plugin support +# TODO: Remove CLI interface once poetry has plugin support import click +import sys +import subprocess from conan_for_poetry.plugin import ConanPlugin @click.group() def entrypoint(): - pass + command = ['poetry'] + command.extend(sys.argv[1:]) + subprocess.run(command) @entrypoint.command() -def poetry_new(self): +def new(): ConanPlugin().poetry_new() @entrypoint.command() -def Init(self): - ConanPlugin.poetry_init() +def init(): + ConanPlugin().poetry_init() @entrypoint.command() -def Install(): +def install(): ConanPlugin().poetry_install() @entrypoint.command() -def Update(): +def update(): ConanPlugin().poetry_update() @entrypoint.command() -def poetry_add(self): +def add(): ConanPlugin().poetry_add() @entrypoint.command() -def poetry_remove(self): +def remove(): ConanPlugin().poetry_remove() @entrypoint.command() -def poetry_show(self): +def show(): ConanPlugin().poetry_show() @entrypoint.command() -def poetry_build(self): +def build(): ConanPlugin().poetry_build() @entrypoint.command() -def poetry_publish(self): +def publish(): ConanPlugin().poetry_publish() @entrypoint.command() -def poetry_config(self): +def config(): ConanPlugin().poetry_config() @entrypoint.command() -def poetry_check(self): +def check(): ConanPlugin().poetry_check() @entrypoint.command() -def poetry_search(self): +def search(): ConanPlugin().poetry_search() - + @entrypoint.command() -def poetry_lock(self): +def lock(): ConanPlugin().poetry_lock() @entrypoint.command() -def poetry_version(self): +def version(): ConanPlugin().poetry_version() @entrypoint.command() -def poetry_export(self): +def export(): ConanPlugin().poetry_export() @entrypoint.command() -def poetry_env(self): +def env(): ConanPlugin().poetry_env() diff --git a/conan_for_poetry/plugin.py b/conan_for_poetry/plugin.py index 9ed8bb5..053db13 100644 --- a/conan_for_poetry/plugin.py +++ b/conan_for_poetry/plugin.py @@ -3,19 +3,20 @@ from pathlib import Path as _Path from conans.client.conan_api import ConanAPIV1 as _ConanAPI -class ConanPlugin(): + +class ConanPlugin: data = None def __init_data(self): - ''' + """ TODO: Remove hardcoded extraction once poetry has plugin support - ''' + """ if not self.data: pyProject = _Path("pyproject.toml") self.data = toml.load(pyProject) - + poetryData = self.data["tool"]["poetry"] conanData = self.data["tool"]["conan"] @@ -44,124 +45,112 @@ def __init_data(self): for generator in self.generators: file.write(generator) - def poetry_new(self): - api = _ConanAPI() - - raise NotImplementedError() - + pass def poetry_init(self): - api = _ConanAPI() - - raise NotImplementedError() - + pass def poetry_install(self): self.__init_data() - _ConanAPI().install(path = self.installPath, name = self.name, version = self.version, user = None, - channel = None, settings = None, options = None, env = None, - remote_name = self.remotes, verify = None, manifests = None, - manifests_interactive = None, build = None, profile_names = None, - update = False, generators = None, no_imports = False, - install_folder = self.installPath, cwd = _Path().absolute(), lockfile = None) - + _ConanAPI().install( + path=self.installPath, + name=self.name, + version=self.version, + user=None, + channel=None, + settings=None, + options=None, + env=None, + remote_name=self.remotes, + verify=None, + manifests=None, + manifests_interactive=None, + build=None, + profile_names=None, + update=False, + generators=None, + no_imports=False, + install_folder=self.installPath, + cwd=_Path().absolute(), + lockfile=None, + ) def poetry_update(self): self.__init_data() - _ConanAPI().install(path = self.installPath, name = self.name, version = self.version, user = None, - channel = None, settings = None, options = None, env = None, - remote_name = self.remotes, verify = None, manifests = None, - manifests_interactive = None, build = None, profile_names = None, - update = True, generators = None, no_imports = False, - install_folder = self.installPath, cwd = _Path().absolute(), lockfile = None) - + _ConanAPI().install( + path=self.installPath, + name=self.name, + version=self.version, + user=None, + channel=None, + settings=None, + options=None, + env=None, + remote_name=self.remotes, + verify=None, + manifests=None, + manifests_interactive=None, + build=None, + profile_names=None, + update=True, + generators=None, + no_imports=False, + install_folder=self.installPath, + cwd=_Path().absolute(), + lockfile=None, + ) def poetry_add(self): - - api = _ConanAPI() - - raise NotImplementedError() + pass def poetry_remove(self): - - api = _ConanAPI() - - raise NotImplementedError() + pass def poetry_show(self): - - api = _ConanAPI() - - raise NotImplementedError() + pass def poetry_build(self): - - api = _ConanAPI() - - raise NotImplementedError() + pass def poetry_publish(self): - - api = _ConanAPI() - - raise NotImplementedError() + pass def poetry_config(self): - - api = _ConanAPI() - - raise NotImplementedError() + pass def poetry_check(self): - - api = _ConanAPI() - - raise NotImplementedError() + pass def poetry_search(self): - - api = _ConanAPI() - - raise NotImplementedError() + pass def poetry_lock(self): - - api = _ConanAPI() - - raise NotImplementedError() + pass def poetry_version(self): - - api = _ConanAPI() - - raise NotImplementedError() + pass def poetry_export(self): - - api = _ConanAPI() - - raise NotImplementedError() + pass def poetry_env(self): - - api = _ConanAPI() - raise NotImplementedError() \ No newline at end of file + pass diff --git a/poetry.lock b/poetry.lock index 385fcda..78262ad 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,15 +1,10 @@ [[package]] category = "dev" -description = "An abstract syntax tree for Python with inference support." -name = "astroid" +description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +name = "appdirs" optional = false -python-versions = ">=3.5.*" -version = "2.3.3" - -[package.dependencies] -lazy-object-proxy = ">=1.4.0,<1.5.0" -six = ">=1.12,<2.0" -wrapt = ">=1.11.0,<1.12.0" +python-versions = "*" +version = "1.4.3" [[package]] category = "dev" @@ -34,6 +29,26 @@ dev = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.int docs = ["sphinx", "zope.interface"] tests = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] +[[package]] +category = "dev" +description = "The uncompromising code formatter." +name = "black" +optional = false +python-versions = ">=3.6" +version = "19.10b0" + +[package.dependencies] +appdirs = "*" +attrs = ">=18.1.0" +click = ">=6.5" +pathspec = ">=0.6,<1" +regex = "*" +toml = ">=0.9.4" +typed-ast = ">=1.4.0" + +[package.extras] +d = ["aiohttp (>=3.3.2)", "aiohttp-cors"] + [[package]] category = "main" description = "Fast and simple WSGI-framework for small web-applications." @@ -48,10 +63,10 @@ description = "httplib2 caching for requests" name = "cachecontrol" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "0.12.5" +version = "0.12.6" [package.dependencies] -msgpack = "*" +msgpack = ">=0.5.2" requests = "*" [package.dependencies.lockfile] @@ -68,12 +83,12 @@ description = "Cachy provides a simple yet effective caching library." name = "cachy" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "0.2.0" +version = "0.3.0" [package.extras] -memcached = ["python-memcached (>=1.59.0.0,<2.0.0.0)"] -msgpack = ["msgpack-python (>=0.5.0.0,<0.6.0.0)"] -redis = ["redis (>=2.10.0.0,<3.0.0.0)"] +memcached = ["python-memcached (>=1.59,<2.0)"] +msgpack = ["msgpack-python (>=0.5,<0.6)"] +redis = ["redis (>=3.3.6,<4.0.0)"] [[package]] category = "main" @@ -83,6 +98,18 @@ optional = false python-versions = "*" version = "2019.11.28" +[[package]] +category = "main" +description = "Foreign Function Interface for Python calling C code." +marker = "python_version >= \"3.5\" and python_version < \"4.0\" and sys_platform == \"linux\"" +name = "cffi" +optional = false +python-versions = "*" +version = "1.13.2" + +[package.dependencies] +pycparser = "*" + [[package]] category = "main" description = "Universal encoding detector for Python 2 and 3" @@ -97,11 +124,10 @@ description = "Cleo allows you to create beautiful and testable command-line int name = "cleo" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "0.6.8" +version = "0.7.6" [package.dependencies] -pastel = ">=0.1.0,<0.2.0" -pylev = ">=1.3,<2.0" +clikit = ">=0.4.0,<0.5.0" [[package]] category = "main" @@ -111,6 +137,18 @@ optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" version = "7.0" +[[package]] +category = "main" +description = "CliKit is a group of utilities to build beautiful and testable command line interfaces." +name = "clikit" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "0.4.1" + +[package.dependencies] +pastel = ">=0.1.0,<0.2.0" +pylev = ">=1.3,<2.0" + [[package]] category = "main" description = "Cross-platform colored terminal text." @@ -157,11 +195,31 @@ description = "Code coverage measurement for Python" name = "coverage" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" -version = "5.0" +version = "5.0.1" [package.extras] toml = ["toml"] +[[package]] +category = "main" +description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." +marker = "python_version >= \"3.5\" and python_version < \"4.0\" and sys_platform == \"linux\"" +name = "cryptography" +optional = false +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" +version = "2.8" + +[package.dependencies] +cffi = ">=1.8,<1.11.3 || >1.11.3" +six = ">=1.4.1" + +[package.extras] +docs = ["sphinx (>=1.6.5,<1.8.0 || >1.8.0)", "sphinx-rtd-theme"] +docstest = ["doc8", "pyenchant (>=1.6.11)", "twine (>=1.12.0)", "sphinxcontrib-spelling (>=4.0.1)"] +idna = ["idna (>=2.1)"] +pep8test = ["flake8", "flake8-import-order", "pep8-naming"] +test = ["pytest (>=3.6.0,<3.9.0 || >3.9.0,<3.9.1 || >3.9.1,<3.9.2 || >3.9.2)", "pretend", "iso8601", "pytz", "hypothesis (>=1.11.4,<3.79.2 || >3.79.2)"] + [[package]] category = "main" description = "A library to handle automated deprecations" @@ -251,18 +309,16 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" version = "2.8" [[package]] -category = "dev" -description = "A Python utility / library to sort Python imports." -name = "isort" +category = "main" +description = "Low-level, pure Python DBus protocol wrapper." +marker = "python_version >= \"3.5\" and python_version < \"4.0\" and sys_platform == \"linux\"" +name = "jeepney" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "4.3.21" +python-versions = ">=3.5" +version = "0.4.1" [package.extras] -pipfile = ["pipreqs", "requirementslib"] -pyproject = ["toml"] -requirements = ["pipreqs", "pip-api"] -xdg_home = ["appdirs (>=1.4.0)"] +dev = ["testpath"] [[package]] category = "main" @@ -297,12 +353,21 @@ format = ["idna", "jsonpointer (>1.13)", "rfc3987", "strict-rfc3339", "webcolors format_nongpl = ["idna", "jsonpointer (>1.13)", "webcolors", "rfc3986-validator (>0.1.0)", "rfc3339-validator"] [[package]] -category = "dev" -description = "A fast and thorough lazy object proxy." -name = "lazy-object-proxy" +category = "main" +description = "Store and access your passwords safely." +marker = "python_version >= \"3.5\" and python_version < \"4.0\"" +name = "keyring" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "1.4.3" +python-versions = ">=3.5" +version = "19.3.0" + +[package.dependencies] +pywin32-ctypes = "<0.1.0 || >0.1.0,<0.1.1 || >0.1.1" +secretstorage = "*" + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] +testing = ["pytest (>=3.5,<3.7.3 || >3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-black-multipy", "pytest-cov"] [[package]] category = "main" @@ -403,6 +468,25 @@ version = "13.1.0" docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] testing = ["pytest (>=3.5,<3.7.3 || >3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-black-multipy", "pytest-cov", "appdirs", "packaging", "pygments"] +[[package]] +category = "dev" +description = "Utility library for gitignore style pattern matching of file paths." +name = "pathspec" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +version = "0.7.0" + +[[package]] +category = "main" +description = "Pexpect allows easy control of interactive console applications." +name = "pexpect" +optional = false +python-versions = "*" +version = "4.7.0" + +[package.dependencies] +ptyprocess = ">=0.5" + [[package]] category = "main" description = "Query metadatdata from sdists / bdists / installed packages." @@ -439,32 +523,46 @@ description = "Python dependency management and packaging made easy." name = "poetry" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "0.12.17" +version = "1.0.0" [package.dependencies] -cachy = ">=0.2,<0.3" -cleo = ">=0.6.7,<0.7.0" +cachy = ">=0.3.0,<0.4.0" +cleo = ">=0.7.6,<0.8.0" +clikit = ">=0.4.1,<0.5.0" html5lib = ">=1.0,<2.0" -jsonschema = ">=3.0a3,<4.0" +jsonschema = ">=3.1,<4.0" +pexpect = ">=4.7.0,<5.0.0" pkginfo = ">=1.4,<2.0" pyparsing = ">=2.2,<3.0" pyrsistent = ">=0.14.2,<0.15.0" requests = ">=2.18,<3.0" requests-toolbelt = ">=0.8.0,<0.9.0" shellingham = ">=1.1,<2.0" -tomlkit = ">=0.5.1,<0.6.0" +tomlkit = ">=0.5.8,<0.6.0" [package.dependencies.cachecontrol] extras = ["filecache"] version = ">=0.12.4,<0.13.0" +[package.dependencies.keyring] +python = ">=3.5,<4.0" +version = ">=19.0,<20.0" + +[[package]] +category = "main" +description = "Run a subprocess in a pseudo terminal" +name = "ptyprocess" +optional = false +python-versions = "*" +version = "0.6.0" + [[package]] category = "dev" description = "library with cross-python path, ini-parsing, io, code, log facilities" name = "py" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "1.8.0" +version = "1.8.1" [[package]] category = "dev" @@ -474,6 +572,15 @@ optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" version = "2.5.0" +[[package]] +category = "main" +description = "C parser in Python" +marker = "python_version >= \"3.5\" and python_version < \"4.0\" and sys_platform == \"linux\"" +name = "pycparser" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "2.19" + [[package]] category = "dev" description = "passive checker of Python programs" @@ -511,27 +618,13 @@ optional = false python-versions = "*" version = "1.3.0" -[[package]] -category = "dev" -description = "python code static checker" -name = "pylint" -optional = false -python-versions = ">=3.5.*" -version = "2.4.4" - -[package.dependencies] -astroid = ">=2.3.0,<2.4" -colorama = "*" -isort = ">=4.2.5,<5" -mccabe = ">=0.6,<0.7" - [[package]] category = "main" description = "Python parsing module" name = "pyparsing" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -version = "2.4.5" +version = "2.4.6" [[package]] category = "main" @@ -576,6 +669,15 @@ version = "2.8.1" [package.dependencies] six = ">=1.5" +[[package]] +category = "main" +description = "" +marker = "python_version >= \"3.5\" and python_version < \"4.0\" and sys_platform == \"win32\"" +name = "pywin32-ctypes" +optional = false +python-versions = "*" +version = "0.2.0" + [[package]] category = "main" description = "YAML parser and emitter for Python" @@ -584,6 +686,14 @@ optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" version = "5.2" +[[package]] +category = "dev" +description = "Alternative regular expression module, to replace re." +name = "regex" +optional = false +python-versions = "*" +version = "2019.12.20" + [[package]] category = "main" description = "Python HTTP for Humans." @@ -613,6 +723,19 @@ version = "0.8.0" [package.dependencies] requests = ">=2.0.1,<3.0.0" +[[package]] +category = "main" +description = "Python bindings to FreeDesktop.org Secret Service API" +marker = "python_version >= \"3.5\" and python_version < \"4.0\" and sys_platform == \"linux\"" +name = "secretstorage" +optional = false +python-versions = ">=3.5" +version = "3.1.1" + +[package.dependencies] +cryptography = "*" +jeepney = "*" + [[package]] category = "main" description = "Tool to Detect Surrounding Shell" @@ -651,11 +774,19 @@ description = "Fast, Extensible Progress Meter" name = "tqdm" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*" -version = "4.40.2" +version = "4.41.0" [package.extras] dev = ["py-make (>=0.1.0)", "twine", "argopt", "pydoc-markdown"] +[[package]] +category = "dev" +description = "a fork of Python 2 and 3 ast modules with type comment support" +name = "typed-ast" +optional = false +python-versions = "*" +version = "1.4.0" + [[package]] category = "main" description = "HTTP library with thread-safe connection pooling, file post, and more." @@ -685,22 +816,14 @@ optional = false python-versions = "*" version = "0.5.1" -[[package]] -category = "dev" -description = "Module for decorators, wrappers and monkey patching." -name = "wrapt" -optional = false -python-versions = "*" -version = "1.11.2" - [metadata] -content-hash = "e527ff1825667cefa1ba69f91417e3dc234193461d76b8865ebdb04a86326d08" +content-hash = "627b48d699a5ec5365a1dbddab165abb4c05dccd23da785aca9a618f7d65a720" python-versions = "^3.8" [metadata.files] -astroid = [ - {file = "astroid-2.3.3-py3-none-any.whl", hash = "sha256:840947ebfa8b58f318d42301cf8c0a20fd794a33b61cc4638e28e9e61ba32f42"}, - {file = "astroid-2.3.3.tar.gz", hash = "sha256:71ea07f44df9568a75d0f354c49143a4575d90645e9fead6dfb52c26a85ed13a"}, +appdirs = [ + {file = "appdirs-1.4.3-py2.py3-none-any.whl", hash = "sha256:d8b24664561d0d34ddfaec54636d502d7cea6e29c3eaf68f3df6180863e2166e"}, + {file = "appdirs-1.4.3.tar.gz", hash = "sha256:9e5896d1372858f8dd3344faf4e5014d21849c756c8d5701f78f8a103b372d92"}, ] atomicwrites = [ {file = "atomicwrites-1.3.0-py2.py3-none-any.whl", hash = "sha256:03472c30eb2c5d1ba9227e4c2ca66ab8287fbfbbda3888aa93dc2e28fc6811b4"}, @@ -710,33 +833,77 @@ attrs = [ {file = "attrs-19.3.0-py2.py3-none-any.whl", hash = "sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c"}, {file = "attrs-19.3.0.tar.gz", hash = "sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72"}, ] +black = [ + {file = "black-19.10b0-py36-none-any.whl", hash = "sha256:1b30e59be925fafc1ee4565e5e08abef6b03fe455102883820fe5ee2e4734e0b"}, + {file = "black-19.10b0.tar.gz", hash = "sha256:c2edb73a08e9e0e6f65a0e6af18b059b8b1cdd5bef997d7a0b181df93dc81539"}, +] bottle = [ {file = "bottle-0.12.18-py3-none-any.whl", hash = "sha256:43157254e88f32c6be16f8d9eb1f1d1472396a4e174ebd2bf62544854ecf37e7"}, {file = "bottle-0.12.18.tar.gz", hash = "sha256:0819b74b145a7def225c0e83b16a4d5711fde751cd92bae467a69efce720f69e"}, ] cachecontrol = [ - {file = "CacheControl-0.12.5.tar.gz", hash = "sha256:cef77effdf51b43178f6a2d3b787e3734f98ade253fa3187f3bb7315aaa42ff7"}, + {file = "CacheControl-0.12.6-py2.py3-none-any.whl", hash = "sha256:10d056fa27f8563a271b345207402a6dcce8efab7e5b377e270329c62471b10d"}, + {file = "CacheControl-0.12.6.tar.gz", hash = "sha256:be9aa45477a134aee56c8fac518627e1154df063e85f67d4f83ce0ccc23688e8"}, ] cachy = [ - {file = "cachy-0.2.0-py2.py3-none-any.whl", hash = "sha256:b71e8e7ddb5b386e23e81befdfac8a93885406139b8681bedc17b3444fcb8fca"}, - {file = "cachy-0.2.0.tar.gz", hash = "sha256:b71513e5a38ce90c1280c02b7d8d6bb3fdf64666c9cc0584f2479afea097d56c"}, + {file = "cachy-0.3.0-py2.py3-none-any.whl", hash = "sha256:338ca09c8860e76b275aff52374330efedc4d5a5e45dc1c5b539c1ead0786fe7"}, + {file = "cachy-0.3.0.tar.gz", hash = "sha256:186581f4ceb42a0bbe040c407da73c14092379b1e4c0e327fdb72ae4a9b269b1"}, ] certifi = [ {file = "certifi-2019.11.28-py2.py3-none-any.whl", hash = "sha256:017c25db2a153ce562900032d5bc68e9f191e44e9a0f762f373977de9df1fbb3"}, {file = "certifi-2019.11.28.tar.gz", hash = "sha256:25b64c7da4cd7479594d035c08c2d809eb4aab3a26e5a990ea98cc450c320f1f"}, ] +cffi = [ + {file = "cffi-1.13.2-cp27-cp27m-macosx_10_6_intel.whl", hash = "sha256:3c9fff570f13480b201e9ab69453108f6d98244a7f495e91b6c654a47486ba43"}, + {file = "cffi-1.13.2-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:2c5e309ec482556397cb21ede0350c5e82f0eb2621de04b2633588d118da4396"}, + {file = "cffi-1.13.2-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:19db0cdd6e516f13329cba4903368bff9bb5a9331d3410b1b448daaadc495e54"}, + {file = "cffi-1.13.2-cp27-cp27m-win32.whl", hash = "sha256:5c4fae4e9cdd18c82ba3a134be256e98dc0596af1e7285a3d2602c97dcfa5159"}, + {file = "cffi-1.13.2-cp27-cp27m-win_amd64.whl", hash = "sha256:32a262e2b90ffcfdd97c7a5e24a6012a43c61f1f5a57789ad80af1d26c6acd97"}, + {file = "cffi-1.13.2-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:4a43c91840bda5f55249413037b7a9b79c90b1184ed504883b72c4df70778579"}, + {file = "cffi-1.13.2-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:8169cf44dd8f9071b2b9248c35fc35e8677451c52f795daa2bb4643f32a540bc"}, + {file = "cffi-1.13.2-cp34-cp34m-macosx_10_6_intel.whl", hash = "sha256:71a608532ab3bd26223c8d841dde43f3516aa5d2bf37b50ac410bb5e99053e8f"}, + {file = "cffi-1.13.2-cp34-cp34m-manylinux1_i686.whl", hash = "sha256:7f627141a26b551bdebbc4855c1157feeef18241b4b8366ed22a5c7d672ef858"}, + {file = "cffi-1.13.2-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:0b49274afc941c626b605fb59b59c3485c17dc776dc3cc7cc14aca74cc19cc42"}, + {file = "cffi-1.13.2-cp34-cp34m-win32.whl", hash = "sha256:4424e42199e86b21fc4db83bd76909a6fc2a2aefb352cb5414833c030f6ed71b"}, + {file = "cffi-1.13.2-cp34-cp34m-win_amd64.whl", hash = "sha256:7d4751da932caaec419d514eaa4215eaf14b612cff66398dd51129ac22680b20"}, + {file = "cffi-1.13.2-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:ccb032fda0873254380aa2bfad2582aedc2959186cce61e3a17abc1a55ff89c3"}, + {file = "cffi-1.13.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:dcd65317dd15bc0451f3e01c80da2216a31916bdcffd6221ca1202d96584aa25"}, + {file = "cffi-1.13.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:135f69aecbf4517d5b3d6429207b2dff49c876be724ac0c8bf8e1ea99df3d7e5"}, + {file = "cffi-1.13.2-cp35-cp35m-win32.whl", hash = "sha256:7b93a885bb13073afb0aa73ad82059a4c41f4b7d8eb8368980448b52d4c7dc2c"}, + {file = "cffi-1.13.2-cp35-cp35m-win_amd64.whl", hash = "sha256:e570d3ab32e2c2861c4ebe6ffcad6a8abf9347432a37608fe1fbd157b3f0036b"}, + {file = "cffi-1.13.2-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:0e3ea92942cb1168e38c05c1d56b0527ce31f1a370f6117f1d490b8dcd6b3a04"}, + {file = "cffi-1.13.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:5ecfa867dea6fabe2a58f03ac9186ea64da1386af2159196da51c4904e11d652"}, + {file = "cffi-1.13.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:291f7c42e21d72144bb1c1b2e825ec60f46d0a7468f5346841860454c7aa8f57"}, + {file = "cffi-1.13.2-cp36-cp36m-win32.whl", hash = "sha256:62f2578358d3a92e4ab2d830cd1c2049c9c0d0e6d3c58322993cc341bdeac22e"}, + {file = "cffi-1.13.2-cp36-cp36m-win_amd64.whl", hash = "sha256:fd43a88e045cf992ed09fa724b5315b790525f2676883a6ea64e3263bae6549d"}, + {file = "cffi-1.13.2-cp37-cp37m-macosx_10_6_intel.whl", hash = "sha256:d75c461e20e29afc0aee7172a0950157c704ff0dd51613506bd7d82b718e7410"}, + {file = "cffi-1.13.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:aa00d66c0fab27373ae44ae26a66a9e43ff2a678bf63a9c7c1a9a4d61172827a"}, + {file = "cffi-1.13.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:2e9c80a8c3344a92cb04661115898a9129c074f7ab82011ef4b612f645939f12"}, + {file = "cffi-1.13.2-cp37-cp37m-win32.whl", hash = "sha256:d754f39e0d1603b5b24a7f8484b22d2904fa551fe865fd0d4c3332f078d20d4e"}, + {file = "cffi-1.13.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6471a82d5abea994e38d2c2abc77164b4f7fbaaf80261cb98394d5793f11b12a"}, + {file = "cffi-1.13.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:74a1d8c85fb6ff0b30fbfa8ad0ac23cd601a138f7509dc617ebc65ef305bb98d"}, + {file = "cffi-1.13.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:42194f54c11abc8583417a7cf4eaff544ce0de8187abaf5d29029c91b1725ad3"}, + {file = "cffi-1.13.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:415bdc7ca8c1c634a6d7163d43fb0ea885a07e9618a64bda407e04b04333b7db"}, + {file = "cffi-1.13.2-cp38-cp38-win32.whl", hash = "sha256:6d4f18483d040e18546108eb13b1dfa1000a089bcf8529e30346116ea6240506"}, + {file = "cffi-1.13.2-cp38-cp38-win_amd64.whl", hash = "sha256:2781e9ad0e9d47173c0093321bb5435a9dfae0ed6a762aabafa13108f5f7b2ba"}, + {file = "cffi-1.13.2.tar.gz", hash = "sha256:599a1e8ff057ac530c9ad1778293c665cb81a791421f46922d80a86473c13346"}, +] chardet = [ {file = "chardet-3.0.4-py2.py3-none-any.whl", hash = "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"}, {file = "chardet-3.0.4.tar.gz", hash = "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae"}, ] cleo = [ - {file = "cleo-0.6.8-py2.py3-none-any.whl", hash = "sha256:9b7f79f1aa470a025c0d28c76aa225ee9e65028d32f80032e871aa3500df61b8"}, - {file = "cleo-0.6.8.tar.gz", hash = "sha256:85a63076b72ca376fb06668be1fc7758dc16740b394783d5cc65200c4b32f71b"}, + {file = "cleo-0.7.6-py2.py3-none-any.whl", hash = "sha256:9443d67e5b2da79b32d820ae41758dd6a25618345cb10b9a022a695e26b291b9"}, + {file = "cleo-0.7.6.tar.gz", hash = "sha256:99cf342406f3499cec43270fcfaf93c126c5164092eca201dfef0f623360b409"}, ] click = [ {file = "Click-7.0-py2.py3-none-any.whl", hash = "sha256:2335065e6395b9e67ca716de5f7526736bfa6ceead690adf616d925bdc622b13"}, {file = "Click-7.0.tar.gz", hash = "sha256:5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7"}, ] +clikit = [ + {file = "clikit-0.4.1-py2.py3-none-any.whl", hash = "sha256:80b0bfee42310a715773dded69590c4c33fa9fc9a351fa7c262cb67f21d0758f"}, + {file = "clikit-0.4.1.tar.gz", hash = "sha256:8ae4766b974d7b1983e39d501da9a0aadf118a907a0c9b50714d027c8b59ea81"}, +] colorama = [ {file = "colorama-0.4.3-py2.py3-none-any.whl", hash = "sha256:7d73d2a99753107a36ac6b455ee49046802e59d9d076ef8e47b61499fa29afff"}, {file = "colorama-0.4.3.tar.gz", hash = "sha256:e96da0d330793e2cb9485e9ddfd918d456036c7149416295932478192f4436a1"}, @@ -745,37 +912,60 @@ conan = [ {file = "conan-1.21.0.tar.gz", hash = "sha256:1a5168d4ba18eb990e3a3a982b2d6215af45810e0cd9d2085c985da10244b4c0"}, ] coverage = [ - {file = "coverage-5.0-cp27-cp27m-macosx_10_12_x86_64.whl", hash = "sha256:9c871b006c878a890c6e44a5b2f3c6291335324b298c904dc0402ee92ee1f0be"}, - {file = "coverage-5.0-cp27-cp27m-macosx_10_13_intel.whl", hash = "sha256:e5a675f6829c53c87d79117a8eb656cc4a5f8918185a32fc93ba09778e90f6db"}, - {file = "coverage-5.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:81326f1095c53111f8afc95da281e1414185f4a538609a77ca50bdfa39a6c207"}, - {file = "coverage-5.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:8873dc0d8f42142ea9f20c27bbdc485190fff93823c6795be661703369e5877d"}, - {file = "coverage-5.0-cp27-cp27m-win32.whl", hash = "sha256:44b783b02db03c4777d8cf71bae19eadc171a6f2a96777d916b2c30a1eb3d070"}, - {file = "coverage-5.0-cp27-cp27m-win_amd64.whl", hash = "sha256:d52c1c2d7e856cecc05aa0526453cb14574f821b7f413cc279b9514750d795c1"}, - {file = "coverage-5.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:ba259f68250f16d2444cbbfaddaa0bb20e1560a4fdaad50bece25c199e6af864"}, - {file = "coverage-5.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:475bf7c4252af0a56e1abba9606f1e54127cdf122063095c75ab04f6f99cf45e"}, - {file = "coverage-5.0-cp35-cp35m-macosx_10_12_x86_64.whl", hash = "sha256:91f2491aeab9599956c45a77c5666d323efdec790bfe23fcceafcd91105d585a"}, - {file = "coverage-5.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:979daa8655ae5a51e8e7a24e7d34e250ae8309fd9719490df92cbb2fe2b0422b"}, - {file = "coverage-5.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:1a4b6b6a2a3a6612e6361130c2cc3dc4378d8c221752b96167ccbad94b47f3cd"}, - {file = "coverage-5.0-cp35-cp35m-win32.whl", hash = "sha256:56b13000acf891f700f5067512b804d1ec8c301d627486c678b903859d07f798"}, - {file = "coverage-5.0-cp35-cp35m-win_amd64.whl", hash = "sha256:81042a24f67b96e4287774014fa27220d8a4d91af1043389e4d73892efc89ac6"}, - {file = "coverage-5.0-cp36-cp36m-macosx_10_13_x86_64.whl", hash = "sha256:fec32646b98baf4a22fdceb08703965bd16dea09051fbeb31a04b5b6e72b846c"}, - {file = "coverage-5.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:7fe3e2fde2bf1d7ce25ebcd2d3de3650b8d60d9a73ce6dcef36e20191291613d"}, - {file = "coverage-5.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:be1d89614c6b6c36d7578496dc8625123bda2ff44f224cf8b1c45b810ee7383f"}, - {file = "coverage-5.0-cp36-cp36m-win32.whl", hash = "sha256:47c81ee687eafc2f1db7f03fbe99aab81330565ebc62fb3b61edfc2216a550c8"}, - {file = "coverage-5.0-cp36-cp36m-win_amd64.whl", hash = "sha256:3be5338a2eb4ef03c57f20917e1d12a1fd10e3853fed060b6d6b677cb3745898"}, - {file = "coverage-5.0-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:79388ae29c896299b3567965dbcd93255f175c17c6c7bca38614d12718c47466"}, - {file = "coverage-5.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:4a7f8e72b18f2aca288ff02255ce32cc830bc04d993efbc87abf6beddc9e56c0"}, - {file = "coverage-5.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:d609a6d564ad3d327e9509846c2c47f170456344521462b469e5cb39e48ba31c"}, - {file = "coverage-5.0-cp37-cp37m-win32.whl", hash = "sha256:50197163a22fd17f79086e087a787883b3ec9280a509807daf158dfc2a7ded02"}, - {file = "coverage-5.0-cp37-cp37m-win_amd64.whl", hash = "sha256:b5ed7837b923d1d71c4f587ae1539ccd96bfd6be9788f507dbe94dab5febbb5d"}, - {file = "coverage-5.0-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:c95bb147fab76f2ecde332d972d8f4138b8f2daee6c466af4ff3b4f29bd4c19e"}, - {file = "coverage-5.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:0cd13a6e98c37b510a2d34c8281d5e1a226aaf9b65b7d770ef03c63169965351"}, - {file = "coverage-5.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:88d2cbcb0a112f47eef71eb95460b6995da18e6f8ca50c264585abc2c473154b"}, - {file = "coverage-5.0-cp38-cp38m-win32.whl", hash = "sha256:2ee55e6dba516ddf6f484aa83ccabbb0adf45a18892204c23486938d12258cde"}, - {file = "coverage-5.0-cp38-cp38m-win_amd64.whl", hash = "sha256:a6d092545e5af53e960465f652e00efbf5357adad177b2630d63978d85e46a72"}, - {file = "coverage-5.0-cp39-cp39m-win32.whl", hash = "sha256:79fd5d3d62238c4f583b75d48d53cdae759fe04d4fb18fe8b371d88ad2b6f8be"}, - {file = "coverage-5.0-cp39-cp39m-win_amd64.whl", hash = "sha256:c1b030a79749aa8d1f1486885040114ee56933b15ccfc90049ba266e4aa2139f"}, - {file = "coverage-5.0.tar.gz", hash = "sha256:e1bad043c12fb58e8c7d92b3d7f2f49977dcb80a08a6d1e7a5114a11bf819fca"}, + {file = "coverage-5.0.1-cp27-cp27m-macosx_10_12_x86_64.whl", hash = "sha256:c90bda74e16bcd03861b09b1d37c0a4158feda5d5a036bb2d6e58de6ff65793e"}, + {file = "coverage-5.0.1-cp27-cp27m-macosx_10_13_intel.whl", hash = "sha256:bb3d29df5d07d5399d58a394d0ef50adf303ab4fbf66dfd25b9ef258effcb692"}, + {file = "coverage-5.0.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:1ca43dbd739c0fc30b0a3637a003a0d2c7edc1dd618359d58cc1e211742f8bd1"}, + {file = "coverage-5.0.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:591506e088901bdc25620c37aec885e82cc896528f28c57e113751e3471fc314"}, + {file = "coverage-5.0.1-cp27-cp27m-win32.whl", hash = "sha256:a50b0888d8a021a3342d36a6086501e30de7d840ab68fca44913e97d14487dc1"}, + {file = "coverage-5.0.1-cp27-cp27m-win_amd64.whl", hash = "sha256:c792d3707a86c01c02607ae74364854220fb3e82735f631cd0a345dea6b4cee5"}, + {file = "coverage-5.0.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:f425f50a6dd807cb9043d15a4fcfba3b5874a54d9587ccbb748899f70dc18c47"}, + {file = "coverage-5.0.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:25b8f60b5c7da71e64c18888f3067d5b6f1334b9681876b2fb41eea26de881ae"}, + {file = "coverage-5.0.1-cp35-cp35m-macosx_10_12_x86_64.whl", hash = "sha256:7362a7f829feda10c7265b553455de596b83d1623b3d436b6d3c51c688c57bf6"}, + {file = "coverage-5.0.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:fcd4459fe35a400b8f416bc57906862693c9f88b66dc925e7f2a933e77f6b18b"}, + {file = "coverage-5.0.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:40fbfd6b044c9db13aeec1daf5887d322c710d811f944011757526ef6e323fd9"}, + {file = "coverage-5.0.1-cp35-cp35m-win32.whl", hash = "sha256:7f2675750c50151f806070ec11258edf4c328340916c53bac0adbc465abd6b1e"}, + {file = "coverage-5.0.1-cp35-cp35m-win_amd64.whl", hash = "sha256:24bcfa86fd9ce86b73a8368383c39d919c497a06eebb888b6f0c12f13e920b1a"}, + {file = "coverage-5.0.1-cp36-cp36m-macosx_10_13_x86_64.whl", hash = "sha256:eeafb646f374988c22c8e6da5ab9fb81367ecfe81c70c292623373d2a021b1a1"}, + {file = "coverage-5.0.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:2ca2cd5264e84b2cafc73f0045437f70c6378c0d7dbcddc9ee3fe192c1e29e5d"}, + {file = "coverage-5.0.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:2cc707fc9aad2592fc686d63ef72dc0031fc98b6fb921d2f5395d9ab84fbc3ef"}, + {file = "coverage-5.0.1-cp36-cp36m-win32.whl", hash = "sha256:04b961862334687549eb91cd5178a6fbe977ad365bddc7c60f2227f2f9880cf4"}, + {file = "coverage-5.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:232f0b52a5b978288f0bbc282a6c03fe48cd19a04202df44309919c142b3bb9c"}, + {file = "coverage-5.0.1-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:cfce79ce41cc1a1dc7fc85bb41eeeb32d34a4cf39a645c717c0550287e30ff06"}, + {file = "coverage-5.0.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:46c9c6a1d1190c0b75ec7c0f339088309952b82ae8d67a79ff1319eb4e749b96"}, + {file = "coverage-5.0.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:1cbb88b34187bdb841f2599770b7e6ff8e259dc3bb64fc7893acf44998acf5f8"}, + {file = "coverage-5.0.1-cp37-cp37m-win32.whl", hash = "sha256:ff3936dd5feaefb4f91c8c1f50a06c588b5dc69fba4f7d9c79a6617ad80bb7df"}, + {file = "coverage-5.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:65bead1ac8c8930cf92a1ccaedcce19a57298547d5d1db5c9d4d068a0675c38b"}, + {file = "coverage-5.0.1-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:348630edea485f4228233c2f310a598abf8afa5f8c716c02a9698089687b6085"}, + {file = "coverage-5.0.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:960d7f42277391e8b1c0b0ae427a214e1b31a1278de6b73f8807b20c2e913bba"}, + {file = "coverage-5.0.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:0101888bd1592a20ccadae081ba10e8b204d20235d18d05c6f7d5e904a38fc10"}, + {file = "coverage-5.0.1-cp38-cp38m-win32.whl", hash = "sha256:c0fff2733f7c2950f58a4fd09b5db257b00c6fec57bf3f68c5bae004d804b407"}, + {file = "coverage-5.0.1-cp38-cp38m-win_amd64.whl", hash = "sha256:5f622f19abda4e934938e24f1d67599249abc201844933a6f01aaa8663094489"}, + {file = "coverage-5.0.1-cp39-cp39m-win32.whl", hash = "sha256:2714160a63da18aed9340c70ed514973971ee7e665e6b336917ff4cca81a25b1"}, + {file = "coverage-5.0.1-cp39-cp39m-win_amd64.whl", hash = "sha256:b7dbc5e8c39ea3ad3db22715f1b5401cd698a621218680c6daf42c2f9d36e205"}, + {file = "coverage-5.0.1.tar.gz", hash = "sha256:5ac71bba1e07eab403b082c4428f868c1c9e26a21041436b4905c4c3d4e49b08"}, +] +cryptography = [ + {file = "cryptography-2.8-cp27-cp27m-macosx_10_6_intel.whl", hash = "sha256:fb81c17e0ebe3358486cd8cc3ad78adbae58af12fc2bf2bc0bb84e8090fa5ce8"}, + {file = "cryptography-2.8-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:44ff04138935882fef7c686878e1c8fd80a723161ad6a98da31e14b7553170c2"}, + {file = "cryptography-2.8-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:369d2346db5934345787451504853ad9d342d7f721ae82d098083e1f49a582ad"}, + {file = "cryptography-2.8-cp27-cp27m-win32.whl", hash = "sha256:df6b4dca2e11865e6cfbfb708e800efb18370f5a46fd601d3755bc7f85b3a8a2"}, + {file = "cryptography-2.8-cp27-cp27m-win_amd64.whl", hash = "sha256:7f09806ed4fbea8f51585231ba742b58cbcfbfe823ea197d8c89a5e433c7e912"}, + {file = "cryptography-2.8-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:58363dbd966afb4f89b3b11dfb8ff200058fbc3b947507675c19ceb46104b48d"}, + {file = "cryptography-2.8-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:6ec280fb24d27e3d97aa731e16207d58bd8ae94ef6eab97249a2afe4ba643d42"}, + {file = "cryptography-2.8-cp34-abi3-macosx_10_6_intel.whl", hash = "sha256:b43f53f29816ba1db8525f006fa6f49292e9b029554b3eb56a189a70f2a40879"}, + {file = "cryptography-2.8-cp34-abi3-manylinux1_x86_64.whl", hash = "sha256:7270a6c29199adc1297776937a05b59720e8a782531f1f122f2eb8467f9aab4d"}, + {file = "cryptography-2.8-cp34-abi3-manylinux2010_x86_64.whl", hash = "sha256:de96157ec73458a7f14e3d26f17f8128c959084931e8997b9e655a39c8fde9f9"}, + {file = "cryptography-2.8-cp34-cp34m-win32.whl", hash = "sha256:02079a6addc7b5140ba0825f542c0869ff4df9a69c360e339ecead5baefa843c"}, + {file = "cryptography-2.8-cp34-cp34m-win_amd64.whl", hash = "sha256:b0de590a8b0979649ebeef8bb9f54394d3a41f66c5584fff4220901739b6b2f0"}, + {file = "cryptography-2.8-cp35-cp35m-win32.whl", hash = "sha256:ecadccc7ba52193963c0475ac9f6fa28ac01e01349a2ca48509667ef41ffd2cf"}, + {file = "cryptography-2.8-cp35-cp35m-win_amd64.whl", hash = "sha256:90df0cc93e1f8d2fba8365fb59a858f51a11a394d64dbf3ef844f783844cc793"}, + {file = "cryptography-2.8-cp36-cp36m-win32.whl", hash = "sha256:1df22371fbf2004c6f64e927668734070a8953362cd8370ddd336774d6743595"}, + {file = "cryptography-2.8-cp36-cp36m-win_amd64.whl", hash = "sha256:a518c153a2b5ed6b8cc03f7ae79d5ffad7315ad4569b2d5333a13c38d64bd8d7"}, + {file = "cryptography-2.8-cp37-cp37m-win32.whl", hash = "sha256:4b1030728872c59687badcca1e225a9103440e467c17d6d1730ab3d2d64bfeff"}, + {file = "cryptography-2.8-cp37-cp37m-win_amd64.whl", hash = "sha256:d31402aad60ed889c7e57934a03477b572a03af7794fa8fb1780f21ea8f6551f"}, + {file = "cryptography-2.8-cp38-cp38-win32.whl", hash = "sha256:73fd30c57fa2d0a1d7a49c561c40c2f79c7d6c374cc7750e9ac7c99176f6428e"}, + {file = "cryptography-2.8-cp38-cp38-win_amd64.whl", hash = "sha256:971221ed40f058f5662a604bd1ae6e4521d84e6cad0b7b170564cc34169c8f13"}, + {file = "cryptography-2.8.tar.gz", hash = "sha256:3cda1f0ed8747339bbdf71b9f38ca74c7b592f24f65cdb3ab3765e4b02871651"}, ] deprecation = [ {file = "deprecation-2.0.7-py2.py3-none-any.whl", hash = "sha256:dc9b4f252b7aca8165ce2764a71da92a653b5ffbf7a389461d7a640f6536ecb2"}, @@ -808,9 +998,9 @@ idna = [ {file = "idna-2.8-py2.py3-none-any.whl", hash = "sha256:ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c"}, {file = "idna-2.8.tar.gz", hash = "sha256:c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407"}, ] -isort = [ - {file = "isort-4.3.21-py2.py3-none-any.whl", hash = "sha256:6e811fcb295968434526407adb8796944f1988c5b65e8139058f2014cbe100fd"}, - {file = "isort-4.3.21.tar.gz", hash = "sha256:54da7e92468955c4fceacd0c86bd0ec997b0e1ee80d97f67c35a78b719dccab1"}, +jeepney = [ + {file = "jeepney-0.4.1-py3-none-any.whl", hash = "sha256:f6a3f93464a0cf052f4e87da3c8b3ed1e27696758fb9739c63d3a74d9a1b6774"}, + {file = "jeepney-0.4.1.tar.gz", hash = "sha256:13806f91a96e9b2623fd2a81b950d763ee471454aafd9eb6d75dbe7afce428fb"}, ] jinja2 = [ {file = "Jinja2-2.10.3-py2.py3-none-any.whl", hash = "sha256:74320bb91f31270f9551d46522e33af46a80c3d619f4a4bf42b3164d30b5911f"}, @@ -820,28 +1010,9 @@ jsonschema = [ {file = "jsonschema-3.2.0-py2.py3-none-any.whl", hash = "sha256:4e5b3cf8216f577bee9ce139cbe72eca3ea4f292ec60928ff24758ce626cd163"}, {file = "jsonschema-3.2.0.tar.gz", hash = "sha256:c8a85b28d377cc7737e46e2d9f2b4f44ee3c0e1deac6bf46ddefc7187d30797a"}, ] -lazy-object-proxy = [ - {file = "lazy-object-proxy-1.4.3.tar.gz", hash = "sha256:f3900e8a5de27447acbf900b4750b0ddfd7ec1ea7fbaf11dfa911141bc522af0"}, - {file = "lazy_object_proxy-1.4.3-cp27-cp27m-macosx_10_13_x86_64.whl", hash = "sha256:a2238e9d1bb71a56cd710611a1614d1194dc10a175c1e08d75e1a7bcc250d442"}, - {file = "lazy_object_proxy-1.4.3-cp27-cp27m-win32.whl", hash = "sha256:efa1909120ce98bbb3777e8b6f92237f5d5c8ea6758efea36a473e1d38f7d3e4"}, - {file = "lazy_object_proxy-1.4.3-cp27-cp27m-win_amd64.whl", hash = "sha256:4677f594e474c91da97f489fea5b7daa17b5517190899cf213697e48d3902f5a"}, - {file = "lazy_object_proxy-1.4.3-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:0c4b206227a8097f05c4dbdd323c50edf81f15db3b8dc064d08c62d37e1a504d"}, - {file = "lazy_object_proxy-1.4.3-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:d945239a5639b3ff35b70a88c5f2f491913eb94871780ebfabb2568bd58afc5a"}, - {file = "lazy_object_proxy-1.4.3-cp34-cp34m-win32.whl", hash = "sha256:9651375199045a358eb6741df3e02a651e0330be090b3bc79f6d0de31a80ec3e"}, - {file = "lazy_object_proxy-1.4.3-cp34-cp34m-win_amd64.whl", hash = "sha256:eba7011090323c1dadf18b3b689845fd96a61ba0a1dfbd7f24b921398affc357"}, - {file = "lazy_object_proxy-1.4.3-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:48dab84ebd4831077b150572aec802f303117c8cc5c871e182447281ebf3ac50"}, - {file = "lazy_object_proxy-1.4.3-cp35-cp35m-win32.whl", hash = "sha256:ca0a928a3ddbc5725be2dd1cf895ec0a254798915fb3a36af0964a0a4149e3db"}, - {file = "lazy_object_proxy-1.4.3-cp35-cp35m-win_amd64.whl", hash = "sha256:194d092e6f246b906e8f70884e620e459fc54db3259e60cf69a4d66c3fda3449"}, - {file = "lazy_object_proxy-1.4.3-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:97bb5884f6f1cdce0099f86b907aa41c970c3c672ac8b9c8352789e103cf3156"}, - {file = "lazy_object_proxy-1.4.3-cp36-cp36m-win32.whl", hash = "sha256:cb2c7c57005a6804ab66f106ceb8482da55f5314b7fcb06551db1edae4ad1531"}, - {file = "lazy_object_proxy-1.4.3-cp36-cp36m-win_amd64.whl", hash = "sha256:8d859b89baf8ef7f8bc6b00aa20316483d67f0b1cbf422f5b4dc56701c8f2ffb"}, - {file = "lazy_object_proxy-1.4.3-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:1be7e4c9f96948003609aa6c974ae59830a6baecc5376c25c92d7d697e684c08"}, - {file = "lazy_object_proxy-1.4.3-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:d74bb8693bf9cf75ac3b47a54d716bbb1a92648d5f781fc799347cfc95952383"}, - {file = "lazy_object_proxy-1.4.3-cp37-cp37m-win32.whl", hash = "sha256:9b15f3f4c0f35727d3a0fba4b770b3c4ebbb1fa907dbcc046a1d2799f3edd142"}, - {file = "lazy_object_proxy-1.4.3-cp37-cp37m-win_amd64.whl", hash = "sha256:9254f4358b9b541e3441b007a0ea0764b9d056afdeafc1a5569eee1cc6c1b9ea"}, - {file = "lazy_object_proxy-1.4.3-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:a6ae12d08c0bf9909ce12385803a543bfe99b95fe01e752536a60af2b7797c62"}, - {file = "lazy_object_proxy-1.4.3-cp38-cp38-win32.whl", hash = "sha256:5541cada25cd173702dbd99f8e22434105456314462326f06dba3e180f203dfd"}, - {file = "lazy_object_proxy-1.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:59f79fef100b09564bc2df42ea2d8d21a64fdcda64979c0fa3db7bdaabaf6239"}, +keyring = [ + {file = "keyring-19.3.0-py2.py3-none-any.whl", hash = "sha256:9b80469783d3f6106bce1d389c6b8b20c8d4d739943b1b8cd0ddc2a45d065f9d"}, + {file = "keyring-19.3.0.tar.gz", hash = "sha256:ee3d35b7f1ac3cb69e9a1e4323534649d3ab2fea402738a77e4250c152970fed"}, ] lockfile = [ {file = "lockfile-0.12.2-py2.py3-none-any.whl", hash = "sha256:6c3cb24f344923d30b2785d5ad75182c8ea7ac1b6171b08657258ec7429d50fa"}, @@ -931,6 +1102,14 @@ path = [ {file = "path-13.1.0-py3-none-any.whl", hash = "sha256:41f0db0b6e32b3fc33c0bede630f6b58c7790af3a27c899e0c7ff69143d8696d"}, {file = "path-13.1.0.tar.gz", hash = "sha256:97249b37e5e4017429a780920147200a2215e268c1a18fa549fec0b654ce99b7"}, ] +pathspec = [ + {file = "pathspec-0.7.0-py2.py3-none-any.whl", hash = "sha256:163b0632d4e31cef212976cf57b43d9fd6b0bac6e67c26015d611a647d5e7424"}, + {file = "pathspec-0.7.0.tar.gz", hash = "sha256:562aa70af2e0d434367d9790ad37aed893de47f1693e4201fd1d3dca15d19b96"}, +] +pexpect = [ + {file = "pexpect-4.7.0-py2.py3-none-any.whl", hash = "sha256:2094eefdfcf37a1fdbfb9aa090862c1a4878e5c7e0e7e7088bdb511c558e5cd1"}, + {file = "pexpect-4.7.0.tar.gz", hash = "sha256:9e2c1fd0e6ee3a49b28f95d4b33bc389c89b20af6a1255906e90ff1262ce62eb"}, +] pkginfo = [ {file = "pkginfo-1.5.0.1-py2.py3-none-any.whl", hash = "sha256:a6d9e40ca61ad3ebd0b72fbadd4fba16e4c0e4df0428c041e01e06eb6ee71f32"}, {file = "pkginfo-1.5.0.1.tar.gz", hash = "sha256:7424f2c8511c186cd5424bbf31045b77435b37a8d604990b79d4e70d741148bb"}, @@ -943,17 +1122,24 @@ pluginbase = [ {file = "pluginbase-0.7.tar.gz", hash = "sha256:c0abe3218b86533cca287e7057a37481883c07acef7814b70583406938214cc8"}, ] poetry = [ - {file = "poetry-0.12.17-py2.py3-none-any.whl", hash = "sha256:0133cd4edc77e955de8cd91203b6728f8365e2849d7fa7da1bfbc14b6529ab43"}, - {file = "poetry-0.12.17.tar.gz", hash = "sha256:6e535de38df7e6ab46ff8d197f53632b071675287d1477efc7bf4a5c4c63bc3f"}, + {file = "poetry-1.0.0-py2.py3-none-any.whl", hash = "sha256:f82583eade72b105b24b00238cb29a4b6e185dad814f4540dbbafe566ebc5672"}, + {file = "poetry-1.0.0.tar.gz", hash = "sha256:f52930910371a748aa2ae62bc7dbe503e50f17532fb037486644db8a2c75f13f"}, +] +ptyprocess = [ + {file = "ptyprocess-0.6.0-py2.py3-none-any.whl", hash = "sha256:d7cc528d76e76342423ca640335bd3633420dc1366f258cb31d05e865ef5ca1f"}, + {file = "ptyprocess-0.6.0.tar.gz", hash = "sha256:923f299cc5ad920c68f2bc0bc98b75b9f838b93b599941a6b63ddbc2476394c0"}, ] py = [ - {file = "py-1.8.0-py2.py3-none-any.whl", hash = "sha256:64f65755aee5b381cea27766a3a147c3f15b9b6b9ac88676de66ba2ae36793fa"}, - {file = "py-1.8.0.tar.gz", hash = "sha256:dc639b046a6e2cff5bbe40194ad65936d6ba360b52b3c3fe1d08a82dd50b5e53"}, + {file = "py-1.8.1-py2.py3-none-any.whl", hash = "sha256:c20fdd83a5dbc0af9efd622bee9a5564e278f6380fffcacc43ba6f43db2813b0"}, + {file = "py-1.8.1.tar.gz", hash = "sha256:5e27081401262157467ad6e7f851b7aa402c5852dbcb3dae06768434de5752aa"}, ] pycodestyle = [ {file = "pycodestyle-2.5.0-py2.py3-none-any.whl", hash = "sha256:95a2219d12372f05704562a14ec30bc76b05a5b297b21a5dfe3f6fac3491ae56"}, {file = "pycodestyle-2.5.0.tar.gz", hash = "sha256:e40a936c9a450ad81df37f549d676d127b1b66000a6c500caa2b085bc0ca976c"}, ] +pycparser = [ + {file = "pycparser-2.19.tar.gz", hash = "sha256:a988718abfad80b6b157acce7bf130a30876d27603738ac39f140993246b25b3"}, +] pyflakes = [ {file = "pyflakes-2.1.1-py2.py3-none-any.whl", hash = "sha256:17dbeb2e3f4d772725c777fabc446d5634d1038f234e77343108ce445ea69ce0"}, {file = "pyflakes-2.1.1.tar.gz", hash = "sha256:d976835886f8c5b31d47970ed689944a0262b5f3afa00a5a7b4dc81e5449f8a2"}, @@ -970,13 +1156,9 @@ pylev = [ {file = "pylev-1.3.0-py2.py3-none-any.whl", hash = "sha256:1d29a87beb45ebe1e821e7a3b10da2b6b2f4c79b43f482c2df1a1f748a6e114e"}, {file = "pylev-1.3.0.tar.gz", hash = "sha256:063910098161199b81e453025653ec53556c1be7165a9b7c50be2f4d57eae1c3"}, ] -pylint = [ - {file = "pylint-2.4.4-py3-none-any.whl", hash = "sha256:886e6afc935ea2590b462664b161ca9a5e40168ea99e5300935f6591ad467df4"}, - {file = "pylint-2.4.4.tar.gz", hash = "sha256:3db5468ad013380e987410a8d6956226963aed94ecb5f9d3a28acca6d9ac36cd"}, -] pyparsing = [ - {file = "pyparsing-2.4.5-py2.py3-none-any.whl", hash = "sha256:20f995ecd72f2a1f4bf6b072b63b22e2eb457836601e76d6e5dfcd75436acc1f"}, - {file = "pyparsing-2.4.5.tar.gz", hash = "sha256:4ca62001be367f01bd3e92ecbb79070272a9d4964dce6a48a82ff0b8bc7e683a"}, + {file = "pyparsing-2.4.6-py2.py3-none-any.whl", hash = "sha256:c342dccb5250c08d45fd6f8b4a559613ca603b57498511740e65cd11a2e7dcec"}, + {file = "pyparsing-2.4.6.tar.gz", hash = "sha256:4c830582a84fb022400b85429791bc551f1f4871c33f23e44f353119e92f969f"}, ] pyrsistent = [ {file = "pyrsistent-0.14.11.tar.gz", hash = "sha256:3ca82748918eb65e2d89f222b702277099aca77e34843c5eb9d52451173970e2"}, @@ -989,6 +1171,10 @@ python-dateutil = [ {file = "python-dateutil-2.8.1.tar.gz", hash = "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c"}, {file = "python_dateutil-2.8.1-py2.py3-none-any.whl", hash = "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a"}, ] +pywin32-ctypes = [ + {file = "pywin32-ctypes-0.2.0.tar.gz", hash = "sha256:24ffc3b341d457d48e8922352130cf2644024a4ff09762a2261fd34c36ee5942"}, + {file = "pywin32_ctypes-0.2.0-py2.py3-none-any.whl", hash = "sha256:9dc2d991b3479cc2df15930958b674a48a227d5361d413827a4cfd0b5876fc98"}, +] pyyaml = [ {file = "PyYAML-5.2-cp27-cp27m-win32.whl", hash = "sha256:35ace9b4147848cafac3db142795ee42deebe9d0dad885ce643928e88daebdcc"}, {file = "PyYAML-5.2-cp27-cp27m-win_amd64.whl", hash = "sha256:ebc4ed52dcc93eeebeae5cf5deb2ae4347b3a81c3fa12b0b8c976544829396a4"}, @@ -1002,6 +1188,29 @@ pyyaml = [ {file = "PyYAML-5.2-cp38-cp38-win_amd64.whl", hash = "sha256:2e9f0b7c5914367b0916c3c104a024bb68f269a486b9d04a2e8ac6f6597b7803"}, {file = "PyYAML-5.2.tar.gz", hash = "sha256:c0ee8eca2c582d29c3c2ec6e2c4f703d1b7f1fb10bc72317355a746057e7346c"}, ] +regex = [ + {file = "regex-2019.12.20-cp27-cp27m-win32.whl", hash = "sha256:7bbbdbada3078dc360d4692a9b28479f569db7fc7f304b668787afc9feb38ec8"}, + {file = "regex-2019.12.20-cp27-cp27m-win_amd64.whl", hash = "sha256:a83049eb717ae828ced9cf607845929efcb086a001fc8af93ff15c50012a5716"}, + {file = "regex-2019.12.20-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:27d1bd20d334f50b7ef078eba0f0756a640fd25f5f1708d3b5bed18a5d6bced9"}, + {file = "regex-2019.12.20-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:1768cf42a78a11dae63152685e7a1d90af7a8d71d2d4f6d2387edea53a9e0588"}, + {file = "regex-2019.12.20-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:4850c78b53acf664a6578bba0e9ebeaf2807bb476c14ec7e0f936f2015133cae"}, + {file = "regex-2019.12.20-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:78b3712ec529b2a71731fbb10b907b54d9c53a17ca589b42a578bc1e9a2c82ea"}, + {file = "regex-2019.12.20-cp36-cp36m-win32.whl", hash = "sha256:8d9ef7f6c403e35e73b7fc3cde9f6decdc43b1cb2ff8d058c53b9084bfcb553e"}, + {file = "regex-2019.12.20-cp36-cp36m-win_amd64.whl", hash = "sha256:faad39fdbe2c2ccda9846cd21581063086330efafa47d87afea4073a08128656"}, + {file = "regex-2019.12.20-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:adc35d38952e688535980ae2109cad3a109520033642e759f987cf47fe278aa1"}, + {file = "regex-2019.12.20-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:ef0b828a7e22e58e06a1cceddba7b4665c6af8afeb22a0d8083001330572c147"}, + {file = "regex-2019.12.20-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:0e6cf1e747f383f52a0964452658c04300a9a01e8a89c55ea22813931b580aa8"}, + {file = "regex-2019.12.20-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:032fdcc03406e1a6485ec09b826eac78732943840c4b29e503b789716f051d8d"}, + {file = "regex-2019.12.20-cp37-cp37m-win32.whl", hash = "sha256:77ae8d926f38700432807ba293d768ba9e7652df0cbe76df2843b12f80f68885"}, + {file = "regex-2019.12.20-cp37-cp37m-win_amd64.whl", hash = "sha256:c29a77ad4463f71a506515d9ec3a899ed026b4b015bf43245c919ff36275444b"}, + {file = "regex-2019.12.20-cp38-cp38-manylinux1_i686.whl", hash = "sha256:57eacd38a5ec40ed7b19a968a9d01c0d977bda55664210be713e750dd7b33540"}, + {file = "regex-2019.12.20-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:724eb24b92fc5fdc1501a1b4df44a68b9c1dda171c8ef8736799e903fb100f63"}, + {file = "regex-2019.12.20-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:d508875793efdf6bab3d47850df8f40d4040ae9928d9d80864c1768d6aeaf8e3"}, + {file = "regex-2019.12.20-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:cfd31b3300fefa5eecb2fe596c6dee1b91b3a05ece9d5cfd2631afebf6c6fadd"}, + {file = "regex-2019.12.20-cp38-cp38-win32.whl", hash = "sha256:29b20f66f2e044aafba86ecf10a84e611b4667643c42baa004247f5dfef4f90b"}, + {file = "regex-2019.12.20-cp38-cp38-win_amd64.whl", hash = "sha256:d3ee0b035816e0520fac928de31b6572106f0d75597f6fa3206969a02baba06f"}, + {file = "regex-2019.12.20.tar.gz", hash = "sha256:106e25a841921d8259dcef2a42786caae35bc750fb996f830065b3dfaa67b77e"}, +] requests = [ {file = "requests-2.22.0-py2.py3-none-any.whl", hash = "sha256:9cf5292fcd0f598c671cfc1e0d7d1a7f13bb8085e9a590f48c010551dc6c4b31"}, {file = "requests-2.22.0.tar.gz", hash = "sha256:11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4"}, @@ -1010,6 +1219,10 @@ requests-toolbelt = [ {file = "requests-toolbelt-0.8.0.tar.gz", hash = "sha256:f6a531936c6fa4c6cfce1b9c10d5c4f498d16528d2a54a22ca00011205a187b5"}, {file = "requests_toolbelt-0.8.0-py2.py3-none-any.whl", hash = "sha256:42c9c170abc2cacb78b8ab23ac957945c7716249206f90874651971a4acff237"}, ] +secretstorage = [ + {file = "SecretStorage-3.1.1-py3-none-any.whl", hash = "sha256:7a119fb52a88e398dbb22a4b3eb39b779bfbace7e4153b7bc6e5954d86282a8a"}, + {file = "SecretStorage-3.1.1.tar.gz", hash = "sha256:20c797ae48a4419f66f8d28fc221623f11fc45b6828f96bdb1ad9990acb59f92"}, +] shellingham = [ {file = "shellingham-1.3.1-py2.py3-none-any.whl", hash = "sha256:77d37a4fd287c1e663006f7ecf1b9deca9ad492d0082587bd813c44eb49e4e62"}, {file = "shellingham-1.3.1.tar.gz", hash = "sha256:985b23bbd1feae47ca6a6365eacd314d93d95a8a16f8f346945074c28fe6f3e0"}, @@ -1028,8 +1241,30 @@ tomlkit = [ {file = "tomlkit-0.5.8.tar.gz", hash = "sha256:32c10cc16ded7e4101c79f269910658cc2a0be5913f1252121c3cd603051c269"}, ] tqdm = [ - {file = "tqdm-4.40.2-py2.py3-none-any.whl", hash = "sha256:7543892c59720e36e4212180274d8f58dde36803bc1f6370fd09afa20b8f5892"}, - {file = "tqdm-4.40.2.tar.gz", hash = "sha256:f0ab01cf3ae5673d18f918700c0165e5fad0f26b5ebe4b34f62ead92686b5340"}, + {file = "tqdm-4.41.0-py2.py3-none-any.whl", hash = "sha256:9036904496bd2afacf836a6f206c5a766ce11d3e9319d54a4e794c0f34b111dc"}, + {file = "tqdm-4.41.0.tar.gz", hash = "sha256:166a82cdea964ae45528e0cc89436255ff2be73dc848bdf239f13c501cae5dc7"}, +] +typed-ast = [ + {file = "typed_ast-1.4.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:262c247a82d005e43b5b7f69aff746370538e176131c32dda9cb0f324d27141e"}, + {file = "typed_ast-1.4.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:71211d26ffd12d63a83e079ff258ac9d56a1376a25bc80b1cdcdf601b855b90b"}, + {file = "typed_ast-1.4.0-cp35-cp35m-win32.whl", hash = "sha256:630968c5cdee51a11c05a30453f8cd65e0cc1d2ad0d9192819df9978984529f4"}, + {file = "typed_ast-1.4.0-cp35-cp35m-win_amd64.whl", hash = "sha256:ffde2fbfad571af120fcbfbbc61c72469e72f550d676c3342492a9dfdefb8f12"}, + {file = "typed_ast-1.4.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:4e0b70c6fc4d010f8107726af5fd37921b666f5b31d9331f0bd24ad9a088e631"}, + {file = "typed_ast-1.4.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:bc6c7d3fa1325a0c6613512a093bc2a2a15aeec350451cbdf9e1d4bffe3e3233"}, + {file = "typed_ast-1.4.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:cc34a6f5b426748a507dd5d1de4c1978f2eb5626d51326e43280941206c209e1"}, + {file = "typed_ast-1.4.0-cp36-cp36m-win32.whl", hash = "sha256:d896919306dd0aa22d0132f62a1b78d11aaf4c9fc5b3410d3c666b818191630a"}, + {file = "typed_ast-1.4.0-cp36-cp36m-win_amd64.whl", hash = "sha256:354c16e5babd09f5cb0ee000d54cfa38401d8b8891eefa878ac772f827181a3c"}, + {file = "typed_ast-1.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95bd11af7eafc16e829af2d3df510cecfd4387f6453355188342c3e79a2ec87a"}, + {file = "typed_ast-1.4.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:18511a0b3e7922276346bcb47e2ef9f38fb90fd31cb9223eed42c85d1312344e"}, + {file = "typed_ast-1.4.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:d7c45933b1bdfaf9f36c579671fec15d25b06c8398f113dab64c18ed1adda01d"}, + {file = "typed_ast-1.4.0-cp37-cp37m-win32.whl", hash = "sha256:d755f03c1e4a51e9b24d899561fec4ccaf51f210d52abdf8c07ee2849b212a36"}, + {file = "typed_ast-1.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:2b907eb046d049bcd9892e3076c7a6456c93a25bebfe554e931620c90e6a25b0"}, + {file = "typed_ast-1.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:fdc1c9bbf79510b76408840e009ed65958feba92a88833cdceecff93ae8fff66"}, + {file = "typed_ast-1.4.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:7954560051331d003b4e2b3eb822d9dd2e376fa4f6d98fee32f452f52dd6ebb2"}, + {file = "typed_ast-1.4.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:48e5b1e71f25cfdef98b013263a88d7145879fbb2d5185f2a0c79fa7ebbeae47"}, + {file = "typed_ast-1.4.0-cp38-cp38-win32.whl", hash = "sha256:1170afa46a3799e18b4c977777ce137bb53c7485379d9706af8a59f2ea1aa161"}, + {file = "typed_ast-1.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:838997f4310012cf2e1ad3803bce2f3402e9ffb71ded61b5ee22617b3a7f6b6e"}, + {file = "typed_ast-1.4.0.tar.gz", hash = "sha256:66480f95b8167c9c5c5c87f32cf437d585937970f3fc24386f313a4c97b44e34"}, ] urllib3 = [ {file = "urllib3-1.25.7-py2.py3-none-any.whl", hash = "sha256:a8a318824cc77d1fd4b2bec2ded92646630d7fe8619497b142c84a9e6f5a7293"}, @@ -1043,6 +1278,3 @@ webencodings = [ {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, ] -wrapt = [ - {file = "wrapt-1.11.2.tar.gz", hash = "sha256:565a021fd19419476b9362b05eeaa094178de64f8361e44468f9e9d7843901e1"}, -] diff --git a/pyproject.toml b/pyproject.toml index d2b5a59..71f5d51 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,14 +17,13 @@ homepage = "https://github.com/Synodic-Software/Conan-for-Poetry" [tool.poetry.dependencies] python = "^3.8" -poetry = "^0.12" +poetry = "^1.0" conan = "^1.21" click = "^7.0" toml = "^0.10" [tool.poetry.dev-dependencies] -pylint = "^2.4" flake8 = "^3.7.9" pytest = "^5.3.2" coverage = "^5.0" @@ -32,6 +31,7 @@ path = "^13.1.0" #TODO: Remove CLI interface once poetry has plugin support +black = {version = "^19.10b0", allow-prereleases = true} [tool.poetry.scripts] conan-poetry = "conan_for_poetry.cli:entrypoint" diff --git a/tests/integration/test_cli.py b/tests/integration/test_cli.py new file mode 100644 index 0000000..d64d64f --- /dev/null +++ b/tests/integration/test_cli.py @@ -0,0 +1,10 @@ +from conan_for_poetry.cli import entrypoint +from click.testing import CliRunner + + +class TestCLI(): + + def test_cli_check(self): + runner = CliRunner() + result = runner.invoke(entrypoint, ['check']) + assert result.exit_code == 0 diff --git a/tests/integration/test_plugin.py b/tests/integration/test_plugin.py index c3436e8..a6a0dbf 100644 --- a/tests/integration/test_plugin.py +++ b/tests/integration/test_plugin.py @@ -1,12 +1,10 @@ -import contextlib -import os -import sys -import pytest +import pytest from conan_for_poetry.plugin import ConanPlugin from path import Path from distutils.dir_util import copy_tree + @pytest.fixture def test_project(tmp_path): @@ -17,14 +15,6 @@ def test_project(tmp_path): with directory: yield tmp_path -class TestRequirements(): - - def test_poetry(self): - pass - - def test_repository(self): - pass - class TestPlugin(): @@ -32,81 +22,62 @@ def test_poetry_new(self): ConanPlugin().poetry_new() - def test_poetry_init(self): ConanPlugin().poetry_init() - def test_poetry_install(self, test_project): ConanPlugin().poetry_install() - def test_poetry_update(self, test_project): ConanPlugin().poetry_update() - def test_poetry_add(self): ConanPlugin().poetry_add() - def test_poetry_remove(self): ConanPlugin().poetry_remove() - def test_poetry_show(self): ConanPlugin().poetry_show() - def test_poetry_build(self): ConanPlugin().poetry_build() - def test_poetry_publish(self): ConanPlugin().poetry_publish() - def test_poetry_config(self): ConanPlugin().poetry_config() - def test_poetry_check(self): ConanPlugin().poetry_check() - def test_poetry_search(self): ConanPlugin().poetry_search() - def test_poetry_lock(self): ConanPlugin().poetry_lock() - def test_poetry_version(self): ConanPlugin().poetry_version() - def test_poetry_export(self): ConanPlugin().poetry_export() - def test_poetry_env(self): ConanPlugin().poetry_env() - - -if __name__ == '__main__': - unittest.main() \ No newline at end of file From f776f4e2420e29ad72d97e19c4ce51176e961396 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Mon, 30 Dec 2019 02:06:21 -0500 Subject: [PATCH 04/10] Update Actions --- .github/pr-labeler.yml | 8 ++- .github/release-drafter.yml | 21 ++++++ .github/workflows/pr-labeler.yml | 13 ---- .github/workflows/pr-opened.yml | 60 ++++++++++++++++ .github/workflows/publish.yml | 34 ++++++++++ .github/workflows/push-development.yml | 43 ++++++++++++ ...elease-management.yml => push-release.yml} | 9 +-- .github/workflows/python-checks.yml | 68 ------------------- .github/workflows/python-deploy.yml | 63 ----------------- pyproject.toml | 4 +- 10 files changed, 171 insertions(+), 152 deletions(-) create mode 100644 .github/release-drafter.yml delete mode 100644 .github/workflows/pr-labeler.yml create mode 100644 .github/workflows/pr-opened.yml create mode 100644 .github/workflows/publish.yml create mode 100644 .github/workflows/push-development.yml rename .github/workflows/{release-management.yml => push-release.yml} (56%) delete mode 100644 .github/workflows/python-checks.yml delete mode 100644 .github/workflows/python-deploy.yml diff --git a/.github/pr-labeler.yml b/.github/pr-labeler.yml index 4bba0fe..15fa842 100644 --- a/.github/pr-labeler.yml +++ b/.github/pr-labeler.yml @@ -1,2 +1,6 @@ -feature: 'feature/*' -fix: fix/* +Feature: ['feature/*', 'feat/*'] +Bug: bug/* +Chore: chore/* +Optimization: ['optimization/*', 'opt/*'] +Cleanup: cleanup/* +Documentation: ['documentation/*', 'doc/*'] \ No newline at end of file diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml new file mode 100644 index 0000000..b590ec1 --- /dev/null +++ b/.github/release-drafter.yml @@ -0,0 +1,21 @@ +name-template: 'v$NEXT_PATCH_VERSION' +tag-template: 'v$NEXT_PATCH_VERSION' +categories: + - title: 'Features' + labels: + - 'Feature' + - title: 'Optimizations' + labels: + - 'Optimization' + - title: 'Bug Fixes' + labels: + - 'Bug' + - title: 'Maintenance' + labels: + - 'Chore' + - 'Cleanup' + - 'Documentation' +template: | + ## Changes + + $CHANGES \ No newline at end of file diff --git a/.github/workflows/pr-labeler.yml b/.github/workflows/pr-labeler.yml deleted file mode 100644 index 164027a..0000000 --- a/.github/workflows/pr-labeler.yml +++ /dev/null @@ -1,13 +0,0 @@ -name: PR Labeler -on: - pull_request: - types: - - opened - -jobs: - pr-labeler: - runs-on: ubuntu-latest - steps: - - uses: TimonVS/pr-labeler-action@v2 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/pr-opened.yml b/.github/workflows/pr-opened.yml new file mode 100644 index 0000000..c25821c --- /dev/null +++ b/.github/workflows/pr-opened.yml @@ -0,0 +1,60 @@ +name: Pull Request Chores +on: + pull_request: + types: + - [opened, edited] + +jobs: + + Label Pull Request: + + runs-on: ubuntu-latest + steps: + - uses: TimonVS/pr-labeler-action@v3.1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + Install: + + runs-on: ubuntu-latest + strategy: + matrix: + python-version: [3.8] + + steps: + + - uses: actions/checkout@v2 + + - name: Install Poetry + uses: dschep/install-poetry-action@v1.2 + + - name: Install Dependencies + run: poetry install + + Test: + + runs-on: ubuntu-latest + needs: Install + strategy: + matrix: + python-version: [3.8] + + steps: + + - name: Test + run: pytest tests/ + + Format: + + runs-on: ubuntu-latest + needs: Install + strategy: + matrix: + python-version: [3.8] + + steps: + + - name: Format + run: flake8 + + diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..a3783a0 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,34 @@ +name: Publishing Chores + +on: + release: + types: [published] + +jobs: + + PyPI Release Deployment: + + runs-on: ubuntu-latest + strategy: + matrix: + python-version: [3.8] + + steps: + + - uses: actions/checkout@v2 + + - name: Install Poetry + uses: dschep/install-poetry-action@v1.2 + + - name: Install Dependencies + run: poetry install + + - name: Build + run: poetry build + + - name: Publish + uses: pypa/gh-action-pypi-publish@v1.0.0a0 + with: + user: __token__ + password: ${{ secrets.PyPIToken }} + repository_url: https://pypi.org \ No newline at end of file diff --git a/.github/workflows/push-development.yml b/.github/workflows/push-development.yml new file mode 100644 index 0000000..67ce22c --- /dev/null +++ b/.github/workflows/push-development.yml @@ -0,0 +1,43 @@ +name: Development Push Chores + +on: + push: + branches: + - development + +jobs: + + Update Draft Release: + + runs-on: ubuntu-latest + steps: + - uses: release-drafter/release-drafter@v5.4 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + PyPI Test Deployment: + + runs-on: ubuntu-latest + strategy: + matrix: + python-version: [3.8] + + steps: + + - uses: actions/checkout@v2 + + - name: Install Poetry + uses: dschep/install-poetry-action@v1.2 + + - name: Install Dependencies + run: poetry install + + - name: Build + run: poetry build + + - name: Publish + uses: pypa/gh-action-pypi-publish@v1.0.0a0 + with: + user: __token__ + password: ${{ secrets.TestPyPIToken }} + repository_url: https://test.pypi.org/ \ No newline at end of file diff --git a/.github/workflows/release-management.yml b/.github/workflows/push-release.yml similarity index 56% rename from .github/workflows/release-management.yml rename to .github/workflows/push-release.yml index f65d71f..666858d 100644 --- a/.github/workflows/release-management.yml +++ b/.github/workflows/push-release.yml @@ -1,15 +1,16 @@ -name: Release Management +name: Release Push Chores on: push: branches: - - development - release-* jobs: - update_draft_release: + + Update Draft Release: + runs-on: ubuntu-latest steps: - - uses: toolmantim/release-drafter@v5.2.0 + - uses: release-drafter/release-drafter@v5.4 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/python-checks.yml b/.github/workflows/python-checks.yml deleted file mode 100644 index c8525dd..0000000 --- a/.github/workflows/python-checks.yml +++ /dev/null @@ -1,68 +0,0 @@ -name: Deploy Project - -on: - push - - -jobs: - - PyPI Master Deployment: - - runs-on: ubuntu-latest - strategy: - max-parallel: 4 - matrix: - python-version: [3.7] - - # Only deploy on release branches - if: github.ref != master && github.ref != development && startsWith(github.event.ref, 'refs/tags') - - steps: - - - uses: actions/checkout@v1 - - - name: Install Poetry - uses: dschep/install-poetry-action@v1.2 - - - name: Install Dependencies - run: poetry install - - - name: Build - run: poetry build - - - name: Publish - uses: pypa/gh-action-pypi-publish@master - with: - user: __token__ - password: ${{ secrets.PyPIToken }} - repository_url: https://pypi.org - - PyPI Development Deployment: - - runs-on: ubuntu-latest - strategy: - max-parallel: 4 - matrix: - python-version: [3.7] - - if: github.ref != development - - steps: - - - uses: actions/checkout@v1 - - - name: Install Poetry - uses: dschep/install-poetry-action@v1.2 - - - name: Install Dependencies - run: poetry install - - - name: Build - run: poetry build - - - name: Publish - uses: pypa/gh-action-pypi-publish@master - with: - user: __token__ - password: ${{ secrets.TestPyPIToken }} - repository_url: https://test.pypi.org/ diff --git a/.github/workflows/python-deploy.yml b/.github/workflows/python-deploy.yml deleted file mode 100644 index de3a0c5..0000000 --- a/.github/workflows/python-deploy.yml +++ /dev/null @@ -1,63 +0,0 @@ -name: Deploy Project - -on: - release: - types: [published] - -jobs: - - PyPI Master Deployment: - - runs-on: ubuntu-latest - strategy: - max-parallel: 4 - matrix: - python-version: [3.8] - - steps: - - - uses: actions/checkout@v1 - - - name: Install Poetry - uses: dschep/install-poetry-action@v1.2 - - - name: Install Dependencies - run: poetry install - - - name: Build - run: poetry build - - - name: Publish - uses: pypa/gh-action-pypi-publish@master - with: - user: __token__ - password: ${{ secrets.PyPIToken }} - repository_url: https://pypi.org - - PyPI Development Deployment: - - runs-on: ubuntu-latest - strategy: - max-parallel: 4 - matrix: - python-version: [3.8] - - steps: - - - uses: actions/checkout@v1 - - - name: Install Poetry - uses: dschep/install-poetry-action@v1.2 - - - name: Install Dependencies - run: poetry install - - - name: Build - run: poetry build - - - name: Publish - uses: pypa/gh-action-pypi-publish@master - with: - user: __token__ - password: ${{ secrets.TestPyPIToken }} - repository_url: https://test.pypi.org/ diff --git a/pyproject.toml b/pyproject.toml index 71f5d51..5b551a2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "conan-for-poetry" -version = "0.0.0" +version = "0.1.0" description = " A Poetry plugin integrating Conan support." license = "MIT" @@ -28,10 +28,10 @@ flake8 = "^3.7.9" pytest = "^5.3.2" coverage = "^5.0" path = "^13.1.0" +black = {version = "^19.10b0", allow-prereleases = true} #TODO: Remove CLI interface once poetry has plugin support -black = {version = "^19.10b0", allow-prereleases = true} [tool.poetry.scripts] conan-poetry = "conan_for_poetry.cli:entrypoint" From 4c5dbb65363a18b82cd11cffcd27a3d8a61fbb4f Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Mon, 30 Dec 2019 02:15:27 -0500 Subject: [PATCH 05/10] Update Job Names --- .github/workflows/pr-opened.yml | 8 ++++---- .github/workflows/publish.yml | 4 ++-- .github/workflows/push-development.yml | 4 ++-- .github/workflows/push-release.yml | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/pr-opened.yml b/.github/workflows/pr-opened.yml index c25821c..1dde311 100644 --- a/.github/workflows/pr-opened.yml +++ b/.github/workflows/pr-opened.yml @@ -6,7 +6,7 @@ on: jobs: - Label Pull Request: + label_pull_request: runs-on: ubuntu-latest steps: @@ -14,7 +14,7 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - Install: + install: runs-on: ubuntu-latest strategy: @@ -31,7 +31,7 @@ jobs: - name: Install Dependencies run: poetry install - Test: + test: runs-on: ubuntu-latest needs: Install @@ -44,7 +44,7 @@ jobs: - name: Test run: pytest tests/ - Format: + format: runs-on: ubuntu-latest needs: Install diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index a3783a0..f040ab0 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -1,4 +1,4 @@ -name: Publishing Chores +name: Publish Chores on: release: @@ -6,7 +6,7 @@ on: jobs: - PyPI Release Deployment: + pypi_release_deployment: runs-on: ubuntu-latest strategy: diff --git a/.github/workflows/push-development.yml b/.github/workflows/push-development.yml index 67ce22c..b65563a 100644 --- a/.github/workflows/push-development.yml +++ b/.github/workflows/push-development.yml @@ -7,7 +7,7 @@ on: jobs: - Update Draft Release: + update_draft_release: runs-on: ubuntu-latest steps: @@ -15,7 +15,7 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - PyPI Test Deployment: + pypi_test_deployment: runs-on: ubuntu-latest strategy: diff --git a/.github/workflows/push-release.yml b/.github/workflows/push-release.yml index 666858d..317213a 100644 --- a/.github/workflows/push-release.yml +++ b/.github/workflows/push-release.yml @@ -7,7 +7,7 @@ on: jobs: - Update Draft Release: + update_draft_release: runs-on: ubuntu-latest steps: From c071dd9a19bbeca38203eaf573345b6fc1621660 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Mon, 30 Dec 2019 02:36:51 -0500 Subject: [PATCH 06/10] Workflow Bugfix - Fixed PR types. - Renamed PR file - Use major version for Release Drafter --- .github/workflows/{pr-opened.yml => pr-check.yml} | 4 ++-- .github/workflows/push-development.yml | 2 +- .github/workflows/push-release.yml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) rename .github/workflows/{pr-opened.yml => pr-check.yml} (95%) diff --git a/.github/workflows/pr-opened.yml b/.github/workflows/pr-check.yml similarity index 95% rename from .github/workflows/pr-opened.yml rename to .github/workflows/pr-check.yml index 1dde311..88a1f4d 100644 --- a/.github/workflows/pr-opened.yml +++ b/.github/workflows/pr-check.yml @@ -1,8 +1,8 @@ name: Pull Request Chores + on: pull_request: - types: - - [opened, edited] + types: [opened, edited] jobs: diff --git a/.github/workflows/push-development.yml b/.github/workflows/push-development.yml index b65563a..8e039fa 100644 --- a/.github/workflows/push-development.yml +++ b/.github/workflows/push-development.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: release-drafter/release-drafter@v5.4 + - uses: release-drafter/release-drafter@v5 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/push-release.yml b/.github/workflows/push-release.yml index 317213a..e2b65ec 100644 --- a/.github/workflows/push-release.yml +++ b/.github/workflows/push-release.yml @@ -11,6 +11,6 @@ jobs: runs-on: ubuntu-latest steps: - - uses: release-drafter/release-drafter@v5.4 + - uses: release-drafter/release-drafter@v5 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file From 7b0cc0941d07229d144c9905f4addcae94cd8d8f Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Mon, 30 Dec 2019 02:38:38 -0500 Subject: [PATCH 07/10] RM --- .github/workflows/pr-opened.yml | 60 --------------------------------- 1 file changed, 60 deletions(-) delete mode 100644 .github/workflows/pr-opened.yml diff --git a/.github/workflows/pr-opened.yml b/.github/workflows/pr-opened.yml deleted file mode 100644 index 1dde311..0000000 --- a/.github/workflows/pr-opened.yml +++ /dev/null @@ -1,60 +0,0 @@ -name: Pull Request Chores -on: - pull_request: - types: - - [opened, edited] - -jobs: - - label_pull_request: - - runs-on: ubuntu-latest - steps: - - uses: TimonVS/pr-labeler-action@v3.1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - install: - - runs-on: ubuntu-latest - strategy: - matrix: - python-version: [3.8] - - steps: - - - uses: actions/checkout@v2 - - - name: Install Poetry - uses: dschep/install-poetry-action@v1.2 - - - name: Install Dependencies - run: poetry install - - test: - - runs-on: ubuntu-latest - needs: Install - strategy: - matrix: - python-version: [3.8] - - steps: - - - name: Test - run: pytest tests/ - - format: - - runs-on: ubuntu-latest - needs: Install - strategy: - matrix: - python-version: [3.8] - - steps: - - - name: Format - run: flake8 - - From 0a0bed0d35afc93744573fff3a2620e4d1468326 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Mon, 30 Dec 2019 05:41:41 -0500 Subject: [PATCH 08/10] Rename + Remove Temp CLI --- .github/workflows/pr-check.yml | 4 +- conan_for_poetry/cli.py | 94 ------------------- poetry.lock | 4 +- pyproject.toml | 14 +-- .../__init__.py | 0 .../plugin.py | 2 +- tests/integration/test_cli.py | 10 -- tests/integration/test_plugin.py | 34 +++---- 8 files changed, 26 insertions(+), 136 deletions(-) delete mode 100644 conan_for_poetry/cli.py rename {conan_for_poetry => synodic_poetry}/__init__.py (100%) rename {conan_for_poetry => synodic_poetry}/plugin.py (99%) delete mode 100644 tests/integration/test_cli.py diff --git a/.github/workflows/pr-check.yml b/.github/workflows/pr-check.yml index 88a1f4d..44dec8d 100644 --- a/.github/workflows/pr-check.yml +++ b/.github/workflows/pr-check.yml @@ -34,7 +34,7 @@ jobs: test: runs-on: ubuntu-latest - needs: Install + needs: install strategy: matrix: python-version: [3.8] @@ -47,7 +47,7 @@ jobs: format: runs-on: ubuntu-latest - needs: Install + needs: install strategy: matrix: python-version: [3.8] diff --git a/conan_for_poetry/cli.py b/conan_for_poetry/cli.py deleted file mode 100644 index 66cca38..0000000 --- a/conan_for_poetry/cli.py +++ /dev/null @@ -1,94 +0,0 @@ -# TODO: Remove CLI interface once poetry has plugin support - -import click -import sys -import subprocess - -from conan_for_poetry.plugin import ConanPlugin - - -@click.group() -def entrypoint(): - command = ['poetry'] - command.extend(sys.argv[1:]) - subprocess.run(command) - - -@entrypoint.command() -def new(): - ConanPlugin().poetry_new() - - -@entrypoint.command() -def init(): - ConanPlugin().poetry_init() - - -@entrypoint.command() -def install(): - ConanPlugin().poetry_install() - - -@entrypoint.command() -def update(): - ConanPlugin().poetry_update() - - -@entrypoint.command() -def add(): - ConanPlugin().poetry_add() - - -@entrypoint.command() -def remove(): - ConanPlugin().poetry_remove() - - -@entrypoint.command() -def show(): - ConanPlugin().poetry_show() - - -@entrypoint.command() -def build(): - ConanPlugin().poetry_build() - - -@entrypoint.command() -def publish(): - ConanPlugin().poetry_publish() - - -@entrypoint.command() -def config(): - ConanPlugin().poetry_config() - - -@entrypoint.command() -def check(): - ConanPlugin().poetry_check() - - -@entrypoint.command() -def search(): - ConanPlugin().poetry_search() - - -@entrypoint.command() -def lock(): - ConanPlugin().poetry_lock() - - -@entrypoint.command() -def version(): - ConanPlugin().poetry_version() - - -@entrypoint.command() -def export(): - ConanPlugin().poetry_export() - - -@entrypoint.command() -def env(): - ConanPlugin().poetry_env() diff --git a/poetry.lock b/poetry.lock index 78262ad..afd606c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -130,7 +130,7 @@ version = "0.7.6" clikit = ">=0.4.0,<0.5.0" [[package]] -category = "main" +category = "dev" description = "Composable command line interface toolkit" name = "click" optional = false @@ -817,7 +817,7 @@ python-versions = "*" version = "0.5.1" [metadata] -content-hash = "627b48d699a5ec5365a1dbddab165abb4c05dccd23da785aca9a618f7d65a720" +content-hash = "98b14d016538f09da5cc433f051542f736b5b71112cb67fc8e0e9ab7e4ae4538" python-versions = "^3.8" [metadata.files] diff --git a/pyproject.toml b/pyproject.toml index 5b551a2..1c621ec 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [tool.poetry] -name = "conan-for-poetry" +name = "synodic-poetry" version = "0.1.0" -description = " A Poetry plugin integrating Conan support." +description = " A Poetry plugin integrating a transparent Conan and CMake workflow." license = "MIT" @@ -11,15 +11,14 @@ authors = [ readme = "README.md" -repository = "https://github.com/Synodic-Software/Conan-for-Poetry" -homepage = "https://github.com/Synodic-Software/Conan-for-Poetry" +repository = "https://github.com/Synodic-Software/Synodic-Poetry" +homepage = "https://github.com/Synodic-Software/Synodic-Poetry" [tool.poetry.dependencies] python = "^3.8" poetry = "^1.0" conan = "^1.21" -click = "^7.0" toml = "^0.10" @@ -31,11 +30,6 @@ path = "^13.1.0" black = {version = "^19.10b0", allow-prereleases = true} -#TODO: Remove CLI interface once poetry has plugin support -[tool.poetry.scripts] -conan-poetry = "conan_for_poetry.cli:entrypoint" - - [build-system] requires = ["poetry>=1.0.0"] build-backend = "poetry.masonry.api" diff --git a/conan_for_poetry/__init__.py b/synodic_poetry/__init__.py similarity index 100% rename from conan_for_poetry/__init__.py rename to synodic_poetry/__init__.py diff --git a/conan_for_poetry/plugin.py b/synodic_poetry/plugin.py similarity index 99% rename from conan_for_poetry/plugin.py rename to synodic_poetry/plugin.py index 053db13..1dab24b 100644 --- a/conan_for_poetry/plugin.py +++ b/synodic_poetry/plugin.py @@ -4,7 +4,7 @@ from conans.client.conan_api import ConanAPIV1 as _ConanAPI -class ConanPlugin: +class SynodicPlugin: data = None diff --git a/tests/integration/test_cli.py b/tests/integration/test_cli.py deleted file mode 100644 index d64d64f..0000000 --- a/tests/integration/test_cli.py +++ /dev/null @@ -1,10 +0,0 @@ -from conan_for_poetry.cli import entrypoint -from click.testing import CliRunner - - -class TestCLI(): - - def test_cli_check(self): - runner = CliRunner() - result = runner.invoke(entrypoint, ['check']) - assert result.exit_code == 0 diff --git a/tests/integration/test_plugin.py b/tests/integration/test_plugin.py index a6a0dbf..2306caf 100644 --- a/tests/integration/test_plugin.py +++ b/tests/integration/test_plugin.py @@ -1,6 +1,6 @@ import pytest -from conan_for_poetry.plugin import ConanPlugin +from conan_for_poetry.plugin import SynodicPlugin from path import Path from distutils.dir_util import copy_tree @@ -20,64 +20,64 @@ class TestPlugin(): def test_poetry_new(self): - ConanPlugin().poetry_new() + SynodicPlugin().poetry_new() def test_poetry_init(self): - ConanPlugin().poetry_init() + SynodicPlugin().poetry_init() def test_poetry_install(self, test_project): - ConanPlugin().poetry_install() + SynodicPlugin().poetry_install() def test_poetry_update(self, test_project): - ConanPlugin().poetry_update() + SynodicPlugin().poetry_update() def test_poetry_add(self): - ConanPlugin().poetry_add() + SynodicPlugin().poetry_add() def test_poetry_remove(self): - ConanPlugin().poetry_remove() + SynodicPlugin().poetry_remove() def test_poetry_show(self): - ConanPlugin().poetry_show() + SynodicPlugin().poetry_show() def test_poetry_build(self): - ConanPlugin().poetry_build() + SynodicPlugin().poetry_build() def test_poetry_publish(self): - ConanPlugin().poetry_publish() + SynodicPlugin().poetry_publish() def test_poetry_config(self): - ConanPlugin().poetry_config() + SynodicPlugin().poetry_config() def test_poetry_check(self): - ConanPlugin().poetry_check() + SynodicPlugin().poetry_check() def test_poetry_search(self): - ConanPlugin().poetry_search() + SynodicPlugin().poetry_search() def test_poetry_lock(self): - ConanPlugin().poetry_lock() + SynodicPlugin().poetry_lock() def test_poetry_version(self): - ConanPlugin().poetry_version() + SynodicPlugin().poetry_version() def test_poetry_export(self): - ConanPlugin().poetry_export() + SynodicPlugin().poetry_export() def test_poetry_env(self): - ConanPlugin().poetry_env() + SynodicPlugin().poetry_env() From 000c15273e00d2f9bc2fb4fbeb8de8b20330bbc3 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Mon, 30 Dec 2019 05:43:24 -0500 Subject: [PATCH 09/10] Update README --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8dde1f1..3547b8c 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ -# Conan-for-Poetry -A plugin for Poetry that enables integrated Conan support. +# Synodic-Poetry +A Plugin for Poetry that enables a transparent Conan and CMake workflow. From 5049cb17020f3a31cb591f4daaaa5d592c956f37 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Mon, 30 Dec 2019 05:46:11 -0500 Subject: [PATCH 10/10] Update --- tests/integration/test_plugin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integration/test_plugin.py b/tests/integration/test_plugin.py index 2306caf..2221b71 100644 --- a/tests/integration/test_plugin.py +++ b/tests/integration/test_plugin.py @@ -1,6 +1,6 @@ import pytest -from conan_for_poetry.plugin import SynodicPlugin +from synodic_poetry.plugin import SynodicPlugin from path import Path from distutils.dir_util import copy_tree