Commit d2fd581c by Arun Babu Neelicattu Committed by GitHub

Misc. clean up: Development dependencies, doc build action, tox for doc builds,…

Misc. clean up: Development dependencies, doc build action, tox for doc builds, pre-commit hook updates (#2814)

* docs: move build dependencies to tox environment

* provider: mark wheel as unsafe package

* Fix tox default configuration

* pre-commit: update hooks

* actions: add workflow for doc sanity build

* isort: update configuration to v5

* flake8: fix issues
parent 5de62034
name: Documentation
on:
push:
paths:
- 'docs/**'
- '.github/workflows/docs.yml'
branches:
- master
pull_request:
paths:
- 'docs/**'
- '.github/workflows/docs.yml'
branches:
- '**'
jobs:
docs:
name: Documentation Build
runs-on: Ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install tox
run: pip install tox
- name: Build documentation
run: tox -e doc
repos: repos:
- repo: https://github.com/psf/black - repo: https://github.com/psf/black
rev: stable rev: 19.10b0
hooks: hooks:
- id: black - id: black
- repo: https://gitlab.com/pycqa/flake8 - repo: https://gitlab.com/pycqa/flake8
rev: 3.7.8 rev: 3.8.3
hooks: hooks:
- id: flake8 - id: flake8
- repo: https://github.com/timothycrosley/isort - repo: https://github.com/timothycrosley/isort
rev: 4.3.21-2 rev: 5.4.2
hooks: hooks:
- id: isort - id: isort
additional_dependencies: [toml] additional_dependencies: [toml]
exclude: ^.*/?setup\.py$ exclude: ^.*/?setup\.py$
- repo: https://github.com/pre-commit/pre-commit-hooks - repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.3.0 rev: v3.2.0
hooks: hooks:
- id: trailing-whitespace - id: trailing-whitespace
exclude: ^tests/.*/fixtures/.* exclude: ^tests/.*/fixtures/.*
......
...@@ -63,9 +63,10 @@ class AddCommand(InstallerCommand, InitCommand): ...@@ -63,9 +63,10 @@ class AddCommand(InstallerCommand, InitCommand):
loggers = ["poetry.repositories.pypi_repository", "poetry.inspection.info"] loggers = ["poetry.repositories.pypi_repository", "poetry.inspection.info"]
def handle(self): def handle(self):
from poetry.core.semver import parse_constraint
from tomlkit import inline_table from tomlkit import inline_table
from poetry.core.semver import parse_constraint
packages = self.argument("name") packages = self.argument("name")
is_dev = self.option("dev") is_dev = self.option("dev")
......
...@@ -16,6 +16,7 @@ class CacheClearCommand(Command): ...@@ -16,6 +16,7 @@ class CacheClearCommand(Command):
def handle(self): def handle(self):
from cachy import CacheManager from cachy import CacheManager
from poetry.locations import REPOSITORY_CACHE_DIR from poetry.locations import REPOSITORY_CACHE_DIR
cache = self.argument("cache") cache = self.argument("cache")
......
...@@ -62,10 +62,10 @@ The <c1>init</c1> command creates a basic <comment>pyproject.toml</> file in the ...@@ -62,10 +62,10 @@ The <c1>init</c1> command creates a basic <comment>pyproject.toml</> file in the
self._pool = None self._pool = None
def handle(self): def handle(self):
from poetry.core.vcs.git import GitConfig
from poetry.layouts import layout from poetry.layouts import layout
from poetry.utils._compat import Path from poetry.utils._compat import Path
from poetry.utils.env import SystemEnv from poetry.utils.env import SystemEnv
from poetry.core.vcs.git import GitConfig
if (Path.cwd() / "pyproject.toml").exists(): if (Path.cwd() / "pyproject.toml").exists():
self.line("<error>A pyproject.toml file already exists.</error>") self.line("<error>A pyproject.toml file already exists.</error>")
......
...@@ -48,8 +48,8 @@ dependencies and not including the current project, run the command with the ...@@ -48,8 +48,8 @@ dependencies and not including the current project, run the command with the
_loggers = ["poetry.repositories.pypi_repository", "poetry.inspection.info"] _loggers = ["poetry.repositories.pypi_repository", "poetry.inspection.info"]
def handle(self): def handle(self):
from poetry.masonry.builders import EditableBuilder
from poetry.core.masonry.utils.module import ModuleOrPackageNotFound from poetry.core.masonry.utils.module import ModuleOrPackageNotFound
from poetry.masonry.builders import EditableBuilder
self._installer.use_executor( self._installer.use_executor(
self.poetry.config.get("experimental.new-installer", False) self.poetry.config.get("experimental.new-installer", False)
......
...@@ -20,11 +20,11 @@ class NewCommand(Command): ...@@ -20,11 +20,11 @@ class NewCommand(Command):
] ]
def handle(self): def handle(self):
from poetry.layouts import layout
from poetry.core.semver import parse_constraint from poetry.core.semver import parse_constraint
from poetry.core.vcs.git import GitConfig
from poetry.layouts import layout
from poetry.utils._compat import Path from poetry.utils._compat import Path
from poetry.utils.env import SystemEnv from poetry.utils.env import SystemEnv
from poetry.core.vcs.git import GitConfig
if self.option("src"): if self.option("src"):
layout_ = layout("src") layout_ = layout("src")
......
...@@ -78,8 +78,8 @@ class SelfUpdateCommand(Command): ...@@ -78,8 +78,8 @@ class SelfUpdateCommand(Command):
def handle(self): def handle(self):
from poetry.__version__ import __version__ from poetry.__version__ import __version__
from poetry.repositories.pypi_repository import PyPiRepository
from poetry.core.semver import Version from poetry.core.semver import Version
from poetry.repositories.pypi_repository import PyPiRepository
self._check_recommended_installation() self._check_recommended_installation()
......
...@@ -34,8 +34,9 @@ lists all packages available.""" ...@@ -34,8 +34,9 @@ lists all packages available."""
def handle(self): def handle(self):
from clikit.utils.terminal import Terminal from clikit.utils.terminal import Terminal
from poetry.repositories.installed_repository import InstalledRepository
from poetry.core.semver import Version from poetry.core.semver import Version
from poetry.repositories.installed_repository import InstalledRepository
package = self.argument("package") package = self.argument("package")
...@@ -321,6 +322,7 @@ lists all packages available.""" ...@@ -321,6 +322,7 @@ lists all packages available."""
def find_latest_package(self, package, include_dev): def find_latest_package(self, package, include_dev):
from clikit.io import NullIO from clikit.io import NullIO
from poetry.puzzle.provider import Provider from poetry.puzzle.provider import Provider
from poetry.version.version_selector import VersionSelector from poetry.version.version_selector import VersionSelector
......
...@@ -126,7 +126,8 @@ class Factory(BaseFactory): ...@@ -126,7 +126,8 @@ class Factory(BaseFactory):
): # type: (Dict[str, str], Config) -> LegacyRepository ): # type: (Dict[str, str], Config) -> LegacyRepository
from .repositories.auth import Auth from .repositories.auth import Auth
from .repositories.legacy_repository import LegacyRepository from .repositories.legacy_repository import LegacyRepository
from .utils.helpers import get_client_cert, get_cert from .utils.helpers import get_cert
from .utils.helpers import get_client_cert
from .utils.password_manager import PasswordManager from .utils.password_manager import PasswordManager
if "url" in source: if "url" in source:
......
...@@ -4,6 +4,7 @@ from typing import List ...@@ -4,6 +4,7 @@ from typing import List
from typing import Tuple from typing import Tuple
from packaging.tags import Tag from packaging.tags import Tag
from poetry.core.packages.package import Package from poetry.core.packages.package import Package
from poetry.core.packages.utils.link import Link from poetry.core.packages.utils.link import Link
from poetry.repositories.pool import Pool from poetry.repositories.pool import Pool
......
...@@ -3,8 +3,8 @@ from crashtest.contracts.solution import Solution ...@@ -3,8 +3,8 @@ from crashtest.contracts.solution import Solution
class PythonRequirementSolution(Solution): class PythonRequirementSolution(Solution):
def __init__(self, exception): def __init__(self, exception):
from poetry.mixology.incompatibility_cause import PythonCause
from poetry.core.semver import parse_constraint from poetry.core.semver import parse_constraint
from poetry.mixology.incompatibility_cause import PythonCause
self._title = "Check your dependencies Python requirement." self._title = "Check your dependencies Python requirement."
......
...@@ -52,7 +52,7 @@ class Indicator(ProgressIndicator): ...@@ -52,7 +52,7 @@ class Indicator(ProgressIndicator):
class Provider: class Provider:
UNSAFE_PACKAGES = {"setuptools", "distribute", "pip"} UNSAFE_PACKAGES = {"setuptools", "distribute", "pip", "wheel"}
def __init__( def __init__(
self, package, pool, io, env=None self, package, pool, io, env=None
......
from typing import TYPE_CHECKING
from typing import Dict from typing import Dict
from typing import List from typing import List
from typing import Optional from typing import Optional
...@@ -7,6 +8,10 @@ from .exceptions import PackageNotFound ...@@ -7,6 +8,10 @@ from .exceptions import PackageNotFound
from .repository import Repository from .repository import Repository
if TYPE_CHECKING:
from poetry.core.packages import Package
class Pool(BaseRepository): class Pool(BaseRepository):
def __init__( def __init__(
self, repositories=None, ignore_repository_names=False self, repositories=None, ignore_repository_names=False
...@@ -108,7 +113,7 @@ class Pool(BaseRepository): ...@@ -108,7 +113,7 @@ class Pool(BaseRepository):
def package( def package(
self, name, version, extras=None, repository=None self, name, version, extras=None, repository=None
): # type: (str, str, List[str], str) -> "Package" ): # type: (str, str, List[str], str) -> Package
if repository is not None: if repository is not None:
repository = repository.lower() repository = repository.lower()
......
...@@ -12,8 +12,9 @@ except ImportError: ...@@ -12,8 +12,9 @@ except ImportError:
from glob import glob from glob import glob
try: try:
from importlib import metadata
import zipfile as zipp import zipfile as zipp
from importlib import metadata
except ImportError: except ImportError:
import importlib_metadata as metadata import importlib_metadata as metadata
import zipp import zipp
...@@ -76,9 +77,11 @@ else: ...@@ -76,9 +77,11 @@ else:
if PY35: if PY35:
import subprocess as subprocess import subprocess as subprocess
from subprocess import CalledProcessError from subprocess import CalledProcessError
else: else:
import subprocess32 as subprocess import subprocess32 as subprocess
from subprocess32 import CalledProcessError from subprocess32 import CalledProcessError
......
...@@ -17,17 +17,16 @@ from typing import Optional ...@@ -17,17 +17,16 @@ from typing import Optional
from typing import Tuple from typing import Tuple
from typing import Union from typing import Union
import tomlkit
from clikit.api.io import IO
import packaging.tags import packaging.tags
import tomlkit
import virtualenv import virtualenv
from clikit.api.io import IO
from packaging.tags import Tag from packaging.tags import Tag
from packaging.tags import interpreter_name from packaging.tags import interpreter_name
from packaging.tags import interpreter_version from packaging.tags import interpreter_version
from packaging.tags import sys_tags from packaging.tags import sys_tags
from poetry.core.semver import parse_constraint from poetry.core.semver import parse_constraint
from poetry.core.semver.version import Version from poetry.core.semver.version import Version
from poetry.core.version.markers import BaseMarker from poetry.core.version.markers import BaseMarker
...@@ -1017,8 +1016,8 @@ class SystemEnv(Env): ...@@ -1017,8 +1016,8 @@ class SystemEnv(Env):
# on some distributions it does not return the proper paths # on some distributions it does not return the proper paths
# (those used by pip for instance). We go through distutils # (those used by pip for instance). We go through distutils
# to get the proper ones. # to get the proper ones.
from distutils.core import Distribution
from distutils.command.install import SCHEME_KEYS # noqa from distutils.command.install import SCHEME_KEYS # noqa
from distutils.core import Distribution
d = Distribution() d = Distribution()
d.parse_config_files() d.parse_config_files()
......
...@@ -66,17 +66,11 @@ pytest = [ ...@@ -66,17 +66,11 @@ pytest = [
{version = "^5.4.3", python = ">=3.5"} {version = "^5.4.3", python = ">=3.5"}
] ]
pytest-cov = "^2.5" pytest-cov = "^2.5"
mkdocs = { version = "^1.0", python = "~2.7.9 || ^3.4" }
pymdown-extensions = "^6.0"
pygments = "^2.2"
pytest-mock = "^1.9" pytest-mock = "^1.9"
pygments-github-lexers = "^0.0.5" pre-commit = { version = "^2.6", python = "^3.6.1" }
black = { version = "^19.10b0", python = "^3.6" }
pre-commit = { version = "^2.5.1", python = "^3.6.1" }
tox = "^3.0" tox = "^3.0"
pytest-sugar = "^0.9.2" pytest-sugar = "^0.9.2"
httpretty = "^0.9.6" httpretty = "^0.9.6"
markdown-include = "^0.5.1"
[tool.poetry.scripts] [tool.poetry.scripts]
poetry = "poetry.console:main" poetry = "poetry.console:main"
...@@ -88,38 +82,17 @@ build-backend = "poetry.core.masonry.api" ...@@ -88,38 +82,17 @@ build-backend = "poetry.core.masonry.api"
[tool.isort] [tool.isort]
line_length = 88 profile = "black"
force_single_line = true force_single_line = true
atomic = true atomic = true
include_trailing_comma = true include_trailing_comma = true
lines_after_imports = 2 lines_after_imports = 2
lines_between_types = 1 lines_between_types = 1
multi_line_output = 3
use_parentheses = true use_parentheses = true
not_skip = "__init__.py" src_paths = ["poetry", "tests"]
skip_glob = ["*/setup.py"] skip_glob = ["*/setup.py"]
filter_files = true filter_files = true
known_first_party = "poetry" known_first_party = "poetry"
known_third_party = [
"cachecontrol",
"cachy",
"cleo",
"clikit",
"html5lib",
"httpretty",
"jsonschema",
"keyring",
"pexpect",
"pkginfo",
"poetry_core",
"pyparsing",
"pytest",
"requests",
"requests_toolbelt",
"shellingham",
"tomlkit",
]
[tool.black] [tool.black]
......
...@@ -56,6 +56,7 @@ def auth_config_source(): ...@@ -56,6 +56,7 @@ def auth_config_source():
@pytest.fixture @pytest.fixture
def config(config_source, auth_config_source, mocker): def config(config_source, auth_config_source, mocker):
import keyring import keyring
from keyring.backends.fail import Keyring from keyring.backends.fail import Keyring
keyring.set_keyring(Keyring()) keyring.set_keyring(Keyring())
......
...@@ -8,6 +8,7 @@ from cleo.testers import CommandTester ...@@ -8,6 +8,7 @@ from cleo.testers import CommandTester
@pytest.fixture @pytest.fixture
def repository_cache_dir(monkeypatch, tmpdir): def repository_cache_dir(monkeypatch, tmpdir):
import poetry.locations import poetry.locations
from poetry.utils._compat import Path from poetry.utils._compat import Path
path = Path(str(tmpdir)) path = Path(str(tmpdir))
......
...@@ -714,7 +714,7 @@ cachy 0.1.0 0.2.0 ...@@ -714,7 +714,7 @@ cachy 0.1.0 0.2.0
my-package 0.1.1 ../project_with_setup 0.1.2 ../project_with_setup my-package 0.1.1 ../project_with_setup 0.1.2 ../project_with_setup
""" """
assert expected.rstrip() == "\n".join( assert expected.rstrip() == "\n".join(
l.rstrip() for l in tester.io.fetch_output().splitlines() line.rstrip() for line in tester.io.fetch_output().splitlines()
) )
......
from packaging.tags import Tag from packaging.tags import Tag
from poetry.core.packages.utils.link import Link from poetry.core.packages.utils.link import Link
from poetry.installation.chef import Chef from poetry.installation.chef import Chef
from poetry.utils._compat import Path from poetry.utils._compat import Path
......
...@@ -3,6 +3,7 @@ import re ...@@ -3,6 +3,7 @@ import re
import pytest import pytest
from packaging.tags import Tag from packaging.tags import Tag
from poetry.core.packages.package import Package from poetry.core.packages.package import Package
from poetry.installation.chooser import Chooser from poetry.installation.chooser import Chooser
from poetry.repositories.legacy_repository import LegacyRepository from poetry.repositories.legacy_repository import LegacyRepository
......
...@@ -2,6 +2,8 @@ from typing import Optional ...@@ -2,6 +2,8 @@ from typing import Optional
import pytest import pytest
from pytest_mock.plugin import MockFixture
from poetry.core.packages import Package from poetry.core.packages import Package
from poetry.repositories.installed_repository import InstalledRepository from poetry.repositories.installed_repository import InstalledRepository
from poetry.utils._compat import PY36 from poetry.utils._compat import PY36
...@@ -9,7 +11,6 @@ from poetry.utils._compat import Path ...@@ -9,7 +11,6 @@ from poetry.utils._compat import Path
from poetry.utils._compat import metadata from poetry.utils._compat import metadata
from poetry.utils._compat import zipp from poetry.utils._compat import zipp
from poetry.utils.env import MockEnv as BaseMockEnv from poetry.utils.env import MockEnv as BaseMockEnv
from pytest_mock.plugin import MockFixture
FIXTURES_DIR = Path(__file__).parent / "fixtures" FIXTURES_DIR = Path(__file__).parent / "fixtures"
......
...@@ -43,6 +43,7 @@ def mock_available_backend(backend): ...@@ -43,6 +43,7 @@ def mock_available_backend(backend):
@pytest.fixture() @pytest.fixture()
def mock_unavailable_backend(): def mock_unavailable_backend():
import keyring import keyring
from keyring.backends.fail import Keyring from keyring.backends.fail import Keyring
keyring.set_keyring(Keyring()) keyring.set_keyring(Keyring())
...@@ -54,6 +55,7 @@ def mock_chainer_backend(mocker): ...@@ -54,6 +55,7 @@ def mock_chainer_backend(mocker):
mocker.patch("keyring.backend.get_all_keyring", [Keyring()]) mocker.patch("keyring.backend.get_all_keyring", [Keyring()])
import keyring import keyring
from keyring.backends.chainer import ChainerBackend from keyring.backends.chainer import ChainerBackend
keyring.set_keyring(ChainerBackend()) keyring.set_keyring(ChainerBackend())
......
[tox] [tox]
minversion = 3.3.0 minversion = 3.3.0
isolated_build = True isolated_build = True
envlist = py27, py35, py36, py37, py38 envlist = py27, py35, py36, py37, py38, doc
[testenv] [testenv]
whitelist_externals = poetry whitelist_externals = poetry
skip_install = true
commands = commands =
poetry install -vv poetry install -vv --no-root
poetry run pytest {posargs} tests/ poetry run pytest {posargs} tests/
[testenv:doc]
whitelist_externals =
skip_install = true
deps =
markdown-include
mkdocs
pygments
pygments-github-lexers
pymdown-extensions
commands =
mkdocs build -f docs/mkdocs.yml
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment