Skip to content

Commit 0402a46

Browse files
committed
tox -> nox
1 parent 9d9ad8e commit 0402a46

File tree

6 files changed

+128
-165
lines changed

6 files changed

+128
-165
lines changed

.github/workflows/ci.yml

+21-74
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ on:
66
release:
77
types: [published]
88
schedule:
9-
# Daily at 3:21
10-
- cron: "21 3 * * *"
9+
# Daily at 3:11
10+
- cron: "11 3 * * *"
1111

1212
jobs:
1313
pre-commit:
@@ -25,78 +25,25 @@ jobs:
2525
fail-fast: false
2626
matrix:
2727
os: [macos-latest, ubuntu-latest]
28-
python-version:
29-
- name: pypy-3.9
30-
toxenv: pypy3-build
31-
- name: pypy-3.9
32-
toxenv: pypy3-safety
33-
- name: pypy-3.9
34-
toxenv: pypy3-tests
35-
- name: 3.7
36-
toxenv: py37-build
37-
- name: 3.7
38-
toxenv: py37-safety
39-
- name: 3.7
40-
toxenv: py37-tests
41-
- name: 3.8
42-
toxenv: py38-build
43-
- name: 3.8
44-
toxenv: py38-safety
45-
- name: 3.8
46-
toxenv: py38-tests
47-
- name: 3.9
48-
toxenv: py39-build
49-
- name: 3.9
50-
toxenv: py39-safety
51-
- name: 3.9
52-
toxenv: py39-tests
53-
- name: "3.10"
54-
toxenv: py310-build
55-
- name: "3.10"
56-
toxenv: py310-safety
57-
- name: "3.10"
58-
toxenv: py310-tests
59-
- name: "3.11"
60-
toxenv: py311-build
61-
- name: "3.11"
62-
toxenv: py311-safety
63-
- name: "3.11"
64-
toxenv: py311-tests
65-
- name: "3.11"
66-
toxenv: docs-dirhtml
67-
- name: "3.11"
68-
toxenv: docs-doctest
69-
- name: "3.11"
70-
toxenv: docs-linkcheck
71-
- name: "3.11"
72-
toxenv: docs-spelling
73-
- name: "3.11"
74-
toxenv: docs-style
75-
- name: "3.11"
76-
toxenv: readme
77-
- name: "3.11"
78-
toxenv: secrets
79-
- name: "3.11"
80-
toxenv: style
8128

8229
steps:
8330
- uses: actions/checkout@v3
84-
- name: Set up Python
85-
uses: actions/setup-python@v4
86-
with:
87-
python-version: ${{ matrix.python-version.name }}
8831
- name: Install dependencies
8932
run: >
9033
sudo apt-get update &&
9134
sudo apt-get install -y libenchant-2-dev libxml2-dev libxslt-dev
92-
if: runner.os == 'Linux' && startsWith(matrix.python-version.toxenv, 'docs-')
35+
if: runner.os == 'Linux'
9336
- name: Install dependencies
9437
run: brew install enchant
95-
if: runner.os == 'macOS' && startsWith(matrix.python-version.toxenv, 'docs-')
96-
- name: Install tox
97-
run: python -m pip install tox
98-
- name: Run tox
99-
run: python -m tox -e "${{ matrix.python-version.toxenv }}"
38+
if: runner.os == 'macOS'
39+
- name: Set up Python
40+
uses: actions/setup-python@v4
41+
with:
42+
python-version: "3.11"
43+
- name: Set up nox
44+
uses: wntrblm/[email protected]
45+
- name: Run nox
46+
run: nox
10047

10148
packaging:
10249
needs: ci
@@ -112,23 +59,23 @@ jobs:
11259
run: python -m pip install build
11360
- name: Create packages
11461
run: python -m build .
62+
- name: Set up nox
63+
uses: wntrblm/[email protected]
11564
- uses: actions/upload-artifact@v3
11665
with:
11766
name: dist
11867
path: dist
119-
- name: Publish package
68+
- name: Publish to PyPI
12069
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags')
12170
uses: pypa/gh-action-pypi-publish@release/v1
12271
with:
12372
user: __token__
12473
password: ${{ secrets.pypi_password }}
125-
- name: Create Release Notes
74+
- name: Create a Release
12675
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags')
127-
uses: actions/github-script@v6
76+
uses: softprops/action-gh-release@v1
12877
with:
129-
github-token: ${{ secrets.GITHUB_TOKEN }}
130-
script: |
131-
await github.request(`POST /repos/${{ github.repository }}/releases`, {
132-
tag_name: "${{ github.ref }}",
133-
generate_release_notes: true
134-
});
78+
files: |
79+
shiv/bowtie
80+
dist/*
81+
generate_release_notes: true

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -158,3 +158,5 @@ cython_debug/
158158
# and can be added to the global gitignore or merged into this file. For a more nuclear
159159
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
160160
#.idea/
161+
162+
_cache/

noxfile.py

+101
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
from pathlib import Path
2+
3+
import nox
4+
5+
ROOT = Path(__file__).parent
6+
DOCS = ROOT / "docs"
7+
PACKAGE = ROOT / "sphinx_json_schema_spec"
8+
9+
10+
nox.options.sessions = []
11+
12+
13+
def session(default=True, **kwargs):
14+
def _session(fn):
15+
if default:
16+
nox.options.sessions.append(kwargs.get("name", fn.__name__))
17+
return nox.session(**kwargs)(fn)
18+
19+
return _session
20+
21+
22+
@session(python=["3.7", "3.8", "3.9", "3.10", "3.11", "pypy3"])
23+
def tests(session):
24+
session.install("-r", str(ROOT / "test-requirements.txt"))
25+
session.run("pytest", "--verbosity=3")
26+
27+
28+
@session(tags=["build"])
29+
def build(session):
30+
session.install("build")
31+
tmpdir = session.create_tmp()
32+
session.run("python", "-m", "build", str(ROOT), "--outdir", tmpdir)
33+
34+
35+
@session(tags=["style"])
36+
def readme(session):
37+
session.install("build", "twine")
38+
tmpdir = session.create_tmp()
39+
session.run("python", "-m", "build", str(ROOT), "--outdir", tmpdir)
40+
session.run("python", "-m", "twine", "check", tmpdir + "/*")
41+
42+
43+
@session(tags=["style"])
44+
def style(session):
45+
session.install(
46+
"flake8",
47+
"flake8-broken-line",
48+
"flake8-bugbear",
49+
"flake8-commas",
50+
"flake8-quotes",
51+
"flake8-tidy-imports",
52+
)
53+
session.run("python", "-m", "flake8", str(PACKAGE), __file__)
54+
55+
56+
@session()
57+
def typing(session):
58+
session.install("mypy", "types-docutils", "types-lxml", str(ROOT))
59+
session.run("python", "-m", "mypy", str(PACKAGE))
60+
61+
62+
@session(tags=["docs"])
63+
@nox.parametrize(
64+
"builder",
65+
[
66+
nox.param(name, id=name)
67+
for name in [
68+
"dirhtml",
69+
"doctest",
70+
"linkcheck",
71+
"man",
72+
"spelling",
73+
]
74+
],
75+
)
76+
def docs(session, builder):
77+
session.install("-r", str(DOCS / "requirements.txt"))
78+
tmpdir = Path(session.create_tmp())
79+
argv = ["-n", "-T", "-W"]
80+
if builder != "spelling":
81+
argv += ["-q"]
82+
session.run(
83+
"python",
84+
"-m",
85+
"sphinx",
86+
"-b",
87+
builder,
88+
str(DOCS),
89+
str(tmpdir / builder),
90+
*argv,
91+
)
92+
93+
94+
@session(tags=["docs", "style"], name="docs(style)")
95+
def docs_style(session):
96+
session.install(
97+
"doc8",
98+
"pygments",
99+
"pygments-github-lexers",
100+
)
101+
session.run("python", "-m", "doc8", "--max-line-length", "1000", str(DOCS))

pyproject.toml

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ source = "vcs"
77

88
[project]
99
name = "sphinx_json_schema_spec"
10-
description = ""
10+
description = "Sphinx support for the JSON Schema specifications"
1111
readme = "README.rst"
1212
requires-python = ">=3.7"
1313
license = {text = "MIT"}
@@ -22,11 +22,11 @@ classifiers = [
2222
"License :: OSI Approved :: MIT License",
2323
"Operating System :: OS Independent",
2424
"Programming Language :: Python :: 3",
25-
"Programming Language :: Python :: 3.10",
26-
"Programming Language :: Python :: 3.11",
2725
"Programming Language :: Python :: 3.7",
2826
"Programming Language :: Python :: 3.8",
2927
"Programming Language :: Python :: 3.9",
28+
"Programming Language :: Python :: 3.10",
29+
"Programming Language :: Python :: 3.11",
3030
"Programming Language :: Python :: Implementation :: CPython",
3131
"Programming Language :: Python :: Implementation :: PyPy",
3232
"Programming Language :: Python",

sphinx_json_schema_spec/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
try:
99
from importlib import metadata
1010
except ImportError:
11-
import importlib_metadata as metadata
11+
import importlib_metadata as metadata # type: ignore
1212

1313
from docutils import nodes
1414
from lxml import html

tox.ini

-87
This file was deleted.

0 commit comments

Comments
 (0)