Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Revert packaging tools to setuptools, build, tox and twine #394

Merged
merged 2 commits into from
Dec 21, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 (#394).

## 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