Skip to content

Commit

Permalink
Revert packaging tools to setuptools, build, tox and twine
Browse files Browse the repository at this point in the history
  • Loading branch information
dyve committed Dec 21, 2023
1 parent ab3c71e commit cf3c7d1
Show file tree
Hide file tree
Showing 11 changed files with 164 additions and 146 deletions.
104 changes: 64 additions & 40 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,65 +6,89 @@ concurrency:
group: test-${{ github.head_ref }}
cancel-in-progress: true

env:
PYTHONUNBUFFERED: "1"
FORCE_COLOR: "1"

jobs:

static_tests:
name: Static Tests
ruff:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install latest pip and Hatch
run: pip install --upgrade pip hatch
- name: Lint
run: hatch run lint:all
- name: Docs
run: hatch run docs:build
- name: Build
run: hatch build
- uses: chartboost/ruff-action@v1

tests_matrix:
name: Python ${{ matrix.python-version }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11"]
python-version: [3.8, 3.9, "3.10", 3.11, 3.12]
django-version: [3.2, 4.1, 4.2, 5.0, "main"]
exclude:
# Django 3.2
- python-version: "3.10"
django-version: 3.2
- python-version: 3.11
django-version: 3.2
- python-version: 3.12
django-version: 3.2

steps:
- uses: actions/checkout@v4
# Django 4.1
- python-version: 3.12
django-version: 4.1

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
# Django 4.2
- python-version: 3.12
django-version: 4.2

- name: Install latest pip, Hatch and coveralls
run: pip install --upgrade pip hatch coveralls
# Django 5.0
- python-version: 3.8
django-version: 5.0
- python-version: 3.9
django-version: 5.0

- name: Run tests
run: hatch run test-cov
# Django main
- python-version: 3.8
django-version: "main"
- python-version: 3.9
django-version: "main"

- name: Coverage combine
run: coverage combine
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
cache-dependency-path: requirements-test.txt
- run: python -m pip install -r requirements-test.txt
- run: python -m pip install -U Django==${{ matrix.django-version }}
if: matrix.django-version != 'main'
- run: python -m pip install -U https://github.com/django/django/archive/master.tar.gz
if: matrix.django-version == 'main'
- run: python -m pip install -e .
- run: coverage run manage.py test
- run: python -m pip install -U coveralls
- name: Upload coveralls (parallel)
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
COVERALLS_PARALLEL: true
run: coveralls --service=github

- name: Upload coveralls (parallel)
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
COVERALLS_PARALLEL: true
run: coveralls --service=github
docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: 'pip'
cache-dependency-path: docs/requirements.txt
- name: Install and build
run: |
python -m pip install -r docs/requirements.txt
python -m pip install -e .
make docs
tests:
if: always()
runs-on: ubuntu-latest
needs: [static_tests, tests_matrix]
needs: [ tests_matrix, ruff, docs ]
steps:
- name: Check tests matrix status
if: needs.tests_matrix.result != 'success'
Expand Down
6 changes: 4 additions & 2 deletions .readthedocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ build:
tools:
python: "3.11"
commands:
- pip install -U pip hatch
- hatch run docs:build
- pip install -U pip
- pip install -U -r docs/requirements.txt
- pip install -e .
- make docs
- mv docs/_build $READTHEDOCS_OUTPUT
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

- Use ruff instead of black for formatting (#392).
- Remove support for Python 3.7 (EOL) (#388).
- Revert packaging tools to setuptools, build, tox and twine ().

## 23.5 (2023-06-02)

Expand Down
4 changes: 1 addition & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,6 @@ Ready to contribute? Here\'s how to set up `django-marina` for local development

You will need some knowledge of git, github, and Python/Django development. Using a Python virtual environment is advised.

This project uses [Hatch](https://github.com/pypa/hatch) for environments and builds.

### Local installation

This section assumes you know about local Python versions and virtual environments.
Expand All @@ -56,7 +54,7 @@ To clone the repository and install the requirements for local development:
```console
git clone git://github.com/zostera/django-marina.git
cd django-marina
pip install -U pip hatch
pip install -U pip -r requirements-dev.txt
pip install -e .
```

Expand Down
38 changes: 26 additions & 12 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,31 +1,37 @@
VERSION := $(shell hatch version)
VERSION := $(shell python -c "import django_marina;print(django_marina.__version__)")

.PHONY: test
test:
hatch run test
coverage run manage.py test
coverage report

.PHONY: tests
tests:
hatch run all:test
nox

.PHONY: reformat
reformat:
hatch run lint:fmt
ruff --fix .
ruff format .

.PHONY: lint
lint:
hatch run lint:style
ruff .

.PHONY: docs
docs:
hatch run docs:build
docs: clean
cd docs && sphinx-build -b html -d _build/doctrees . _build/html

.PHONY: example
example:
cd example && python manage.py runserver

.PHONY: porcelain
porcelain:
ifeq ($(shell git status --porcelain),)
@echo "Working directory is clean."
else
@echo "Error - working directory is dirty. Commit those changes!";
@echo "Error - working directory is dirty. Commit your changes.";
@exit 1;
endif

Expand All @@ -34,17 +40,25 @@ branch:
ifeq ($(shell git rev-parse --abbrev-ref HEAD),main)
@echo "On branch main."
else
@echo "Error - Not on branch main!"
@echo "Error - Not on branch main."
@exit 1;
endif

.PHONY: build
build: docs
rm -rf build dist src/*.egg-info
hatch build
python -m build

.PHONY: publish
publish: porcelain branch build
hatch publish
twine check dist/*
twine upload dist/*
git tag -a v${VERSION} -m "Release ${VERSION}"
git push origin --tags

.PHONY: clean
clean: docs
rm -rf build dist src/*.egg-info .coverage*

.PHONY: version
version:
@echo ${VERSION}
9 changes: 4 additions & 5 deletions docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,17 @@

import tomllib

module = importlib.import_module("django_marina")

with open("../pyproject.toml", "rb") as f:
pyproject = tomllib.load(f)

project = pyproject["project"]["name"]
project_with_underscores = project.replace("-", "_")
module = importlib.import_module(f"{project_with_underscores}")

authors = ", ".join(author["name"] for author in pyproject["project"]["authors"])
release = module.__version__
version = ".".join(release.split(".")[:2])
author = ", ".join(author["name"] for author in pyproject["project"]["authors"])
year = datetime.now().year
copyright = f"{year} {authors}"
copyright = f"{year}, {author}"

extensions = [
"sphinx.ext.autodoc",
Expand Down
3 changes: 3 additions & 0 deletions docs/requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
sphinx>=7.2.6
sphinx-mdinclude>=0.5.3
furo>=2023.05.20
90 changes: 6 additions & 84 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[build-system]
build-backend = "hatchling.build"
requires = ["hatchling"]
build-backend = "setuptools.build_meta"
requires = ["setuptools"]

[project]
authors = [
Expand All @@ -21,6 +21,7 @@ classifiers = [
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Software Development :: Libraries",
"Topic :: Utilities",
]
Expand All @@ -29,13 +30,11 @@ dependencies = [
"beautifulsoup4>=4.8.0",
]
description = "Django extensions by Zostera"
dynamic = [
"version",
]
license = "BSD-3-Clause"
license = {file = "LICENSE"}
name = "django-marina"
readme = "README.md"
requires-python = ">=3.8"
version = "23.5.dev1"

[project.urls]
Changelog = "https://github.com/zostera/django-marina/blob/main/CHANGELOG.md"
Expand All @@ -44,82 +43,6 @@ Homepage = "https://github.com/zostera/django-marina"
Issues = "https://github.com/zostera/django-marina/issues"
Source = "https://github.com/zostera/django-marina"

[tool.hatch.version]
path = "src/django_marina/__about__.py"

[tool.hatch.envs.default]
dependencies = [
"coverage[toml]>=7.2.6",
]
matrix-name-format = "dj{value}"

[tool.hatch.envs.default.scripts]
cov = [
"test-cov",
"cov-report",
]
cov-report = [
"- coverage combine",
"coverage report",
]
test = "python manage.py test {args:tests}"
test-cov = "coverage run manage.py test {args:tests}"

[[tool.hatch.envs.all.matrix]]
django = ["3.2", "4.1", "4.2"]
python = ["3.8", "3.9"]

[[tool.hatch.envs.all.matrix]]
django = ["3.2", "4.1", "4.2", "main"]
python = ["3.10"]

[[tool.hatch.envs.all.matrix]]
django = ["4.1", "4.2", "main"]
python = ["3.11"]

[tool.hatch.envs.all.overrides]
matrix.django.dependencies = [
{value = "django~=3.2.0", if = ["3.2"]},
{value = "django~=4.1.0", if = ["4.1"]},
{value = "django~=4.2.0", if = ["4.2"]},
{value = "django @ git+https://github.com/django/django.git", if = ["main"]},
]

[tool.hatch.envs.docs]
dependencies = [
"sphinx>=7.0.1",
"sphinx-mdinclude>=0.5.3",
"furo>=2023.05.20",
]
python = "3.11"
template = "docs"

[tool.hatch.envs.docs.scripts]
build = [
"clean",
"cd docs && sphinx-build -b html -d _build/doctrees . _build/html",
]
clean = "rm -rf docs/_build"

[tool.hatch.envs.lint]
dependencies = [
"ruff>0.1",
]
detached = true

[tool.hatch.envs.lint.scripts]
all = [
"style",
]
fmt = [
"ruff --fix {args:.}",
"ruff format {args:.}",
"style",
]
style = [
"ruff {args:.}",
]

[tool.ruff]
fix = false
fixable = [
Expand Down Expand Up @@ -154,8 +77,7 @@ known-third-party = ["django"]

[tool.coverage.run]
branch = true
parallel = true
source = ["src"]
source = ["src", "tests"]

[tool.coverage.paths]
package = ["src/django_marina", "*/django_marina/src/django_marina"]
Expand Down
2 changes: 2 additions & 0 deletions requirements-dev.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
-r requirements-test.txt
-r docs/requirements.txt
Loading

0 comments on commit cf3c7d1

Please sign in to comment.