diff --git a/.cruft.json b/.cruft.json index 6f6c280..549f565 100644 --- a/.cruft.json +++ b/.cruft.json @@ -1,6 +1,6 @@ { "template": "https://github.com/iterative/cookiecutter-dvc-plugin", - "commit": "5e07217326c0c136274315e550e3932668a407a7", + "commit": "254d2976fe65d918e86f7612c8d6540771e9ef81", "checkout": null, "context": { "cookiecutter": { diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 60eff31..5d5457c 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -1,23 +1,30 @@ name: Release + on: release: types: [published] + +permissions: + contents: read + jobs: pip: - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v3 with: fetch-depth: 0 - - name: Set up Python 3.8 - uses: actions/setup-python@v3 + - uses: actions/setup-python@v3 with: python-version: 3.8 - - name: Build packages + - name: Install run: | - pip install -U pip - pip install -U build setuptools>=58.2 - python -m build --sdist --wheel --outdir dist/ + pip install --upgrade pip wheel + pip install build twine + - name: Build + run: | + python -m build + twine check dist/* - name: Publish packages to PyPI uses: pypa/gh-action-pypi-publish@release/v1 with: diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index d1cd0b4..9c6e88a 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -1,42 +1,21 @@ name: Tests on: - pull_request: {} - push: {} + push: + branches: [main] + pull_request: schedule: - cron: '5 1 * * *' # every day at 01:05 - workflow_dispatch: -env: - DVC_TEST: "true" - HOMEBREW_NO_AUTO_UPDATE: 1 - SHELL: /bin/bash +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +permissions: + contents: read jobs: - lint: - timeout-minutes: 10 - runs-on: ubuntu-latest - steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@0.9.1 - with: - access_token: ${{ github.token }} - - uses: actions/checkout@v2.4.0 - with: - fetch-depth: 0 - - name: Set up Python 3.8 - uses: actions/setup-python@v2.2.2 - with: - python-version: 3.8 - - name: Install requirements - run: | - pip install wheel - pip install -e '.[tests]' - pip install git+https://github.com/iterative/dvc pre-commit - - name: Check README - run: python setup.py checkdocs - - uses: pre-commit/action@v2.0.3 tests: timeout-minutes: 45 runs-on: ${{ matrix.os }} @@ -44,44 +23,34 @@ jobs: fail-fast: false matrix: os: [ubuntu-20.04, windows-latest, macos-latest] - pyv: ["3.8", "3.9", "3.10"] - exclude: - # no wheels for pygit2 yet - - os: windows-latest - pyv: "3.10" + pyv: ["3.8", "3.9", "3.10", "3.11"] + steps: - - uses: actions/checkout@v2.4.0 + - uses: actions/checkout@v3 with: fetch-depth: 0 + - name: Set up Python - uses: actions/setup-python@v2.2.2 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.pyv }} - - name: get pip cache dir - id: pip-cache-dir - run: | - echo "::set-output name=dir::$(pip cache dir)" - - name: set pip cache - id: pip-cache - uses: actions/cache@v2.1.6 - with: - path: ${{ steps.pip-cache-dir.outputs.dir }} - key: ${{ runner.os }}-pip-${{ hashFiles('setup.cfg') }} - restore-keys: | - ${{ runner.os }}-pip- + cache: 'pip' + cache-dependency-path: setup.cfg + - name: install - if: steps.cache.pip-cache-dir.cache-hit != 'true' run: | - pip install --upgrade pip setuptools wheel + pip install --upgrade pip wheel pip install -e ".[tests]" - pip install "dvc[testing]@git+https://github.com/iterative/dvc" - - name: setup git - run: | - git config --global user.email "dvctester@example.com" - git config --global user.name "DVC Tester" + pip install "dvc[testing] @ git+https://github.com/iterative/dvc" + + - name: lint + timeout-minutes: 10 + uses: pre-commit/action@v3.0.0 + - name: run tests - timeout-minutes: 40 + timeout-minutes: 15 run: pytest -v -n=auto --cov-report=xml --cov-report=term + - name: upload coverage report uses: codecov/codecov-action@v2.1.0 with: diff --git a/.github/workflows/update-template.yaml b/.github/workflows/update-template.yaml index 3aa58b1..d4963aa 100644 --- a/.github/workflows/update-template.yaml +++ b/.github/workflows/update-template.yaml @@ -3,14 +3,13 @@ name: Update template on: schedule: - cron: '5 1 * * *' # every day at 01:05 - workflow_dispatch: jobs: update: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Install deps run: pip install cruft - name: Update template @@ -25,4 +24,3 @@ jobs: commit-message: update template title: update template token: ${{ secrets.WORKFLOW_TOKEN }} - diff --git a/dvc_http/tests/cloud.py b/dvc_http/tests/cloud.py index e52d26e..1391831 100644 --- a/dvc_http/tests/cloud.py +++ b/dvc_http/tests/cloud.py @@ -17,7 +17,7 @@ def mkdir(self, mode=0o777, parents=False, exist_ok=False): def write_bytes(self, contents): assert isinstance(contents, bytes) - response = requests.post(self.url, data=contents) + response = requests.post(self.url, data=contents, timeout=300) assert response.status_code == 200 @property diff --git a/dvc_http/tests/fixtures.py b/dvc_http/tests/fixtures.py index b70cb48..f4c9089 100644 --- a/dvc_http/tests/fixtures.py +++ b/dvc_http/tests/fixtures.py @@ -1,3 +1,4 @@ +# pylint: disable=redefined-outer-name import os import pytest diff --git a/pyproject.toml b/pyproject.toml index 6f05fd1..9d0f031 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -54,15 +54,13 @@ files = ["dvc_http"] [tool.pylint.master] extension-pkg-whitelist = ["pygit2"] init-hook = "import sys; sys.path.append(str('tests'))" -load-plugins = ["pylint_pytest"] [tool.pylint.message_control] disable = [ - "format", "refactoring", "spelling", "design", "no-self-use", - "invalid-name", "misplaced-comparison-constant", "duplicate-code", "fixme", - "unused-wildcard-import", "cyclic-import", "wrong-import-order", - "wrong-import-position", "ungrouped-imports", "multiple-imports", - "logging-format-interpolation", "logging-fstring-interpolation", + "format", "refactoring", "spelling", "design", "invalid-name", + "duplicate-code", "fixme", "unused-wildcard-import", "cyclic-import", + "wrong-import-order", "wrong-import-position", "ungrouped-imports", + "multiple-imports", "logging-format-interpolation", "logging-fstring-interpolation", "missing-function-docstring", "missing-module-docstring", "missing-class-docstring", "raise-missing-from", "import-outside-toplevel", ] diff --git a/setup.cfg b/setup.cfg index 45d2f18..74a1e07 100644 --- a/setup.cfg +++ b/setup.cfg @@ -17,6 +17,7 @@ classifiers = Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 Programming Language :: Python :: 3.10 + Programming Language :: Python :: 3.11 [options] setup_requires = @@ -33,41 +34,17 @@ install_requires = [options.extras_require] tests = - wheel==0.37.0 dvc[testing] # Test requirements pytest==6.2.5 pytest-cov==3.0.0 pytest-xdist==2.4.0 pytest-mock==3.6.1 - pytest-lazy-fixture==0.6.3 - pytest-docker==0.10.3 flaky==3.7.0 - mock==4.0.3 rangehttpserver==1.2.0 - wget==3.2 - filelock==3.3.2 - wsgidav==3.1.1 - crc32c==2.2.post0 - xmltodict==0.12.0 - # required by collective.checkdocs - Pygments==2.10.0 - collective.checkdocs==0.2 - pydocstyle==6.1.1 - # pylint requirements - pylint==2.11.1 - # we use this to suppress pytest-related false positives in our tests. - pylint-pytest==1.1.2 - # we use this to suppress some messages in tests, eg: foo/bar naming, - # and, protected method calls in our tests - pylint-plugin-utils==0.6 - # type-checking + pylint==2.15.9 mypy==0.910 types-requests==2.25.11 - types-tabulate==0.8.3 - types-toml==0.10.1 - # optional dependencies - pywin32>=225; sys_platform == 'win32' [flake8] ignore=