Skip to content

Commit 38983ff

Browse files
committed
Update skeleton
Signed-off-by: Tushar Goel <[email protected]>
2 parents 5b05806 + 8b1757b commit 38983ff

15 files changed

+137
-63
lines changed

.github/workflows/docs-ci.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ jobs:
1313

1414
steps:
1515
- name: Checkout code
16-
uses: actions/checkout@v2
16+
uses: actions/checkout@v3
1717

1818
- name: Set up Python ${{ matrix.python-version }}
19-
uses: actions/setup-python@v2
19+
uses: actions/setup-python@v4
2020
with:
2121
python-version: ${{ matrix.python-version }}
2222

.github/workflows/pypi-release.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ jobs:
2424
runs-on: ubuntu-20.04
2525

2626
steps:
27-
- uses: actions/checkout@master
27+
- uses: actions/checkout@v3
2828
- name: Set up Python
29-
uses: actions/setup-python@v1
29+
uses: actions/setup-python@v4
3030
with:
3131
python-version: 3.9
3232

@@ -78,6 +78,6 @@ jobs:
7878

7979
- name: Publish to PyPI
8080
if: startsWith(github.ref, 'refs/tags')
81-
uses: pypa/gh-action-pypi-publish@master
81+
uses: pypa/gh-action-pypi-publish@release/v1
8282
with:
8383
password: ${{ secrets.PYPI_API_TOKEN }}

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
*.py[cod]
33

44
# virtualenv and other misc bits
5+
/src/*.egg-info
56
*.egg-info
67
/dist
78
/build

.readthedocs.yml

+11
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,17 @@
55
# Required
66
version: 2
77

8+
# Build in latest ubuntu/python
9+
build:
10+
os: ubuntu-22.04
11+
tools:
12+
python: "3.11"
13+
14+
# Build PDF & ePub
15+
formats:
16+
- epub
17+
- pdf
18+
819
# Where the Sphinx conf.py file is located
920
sphinx:
1021
configuration: docs/source/conf.py

Makefile

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,12 @@
99
#
1010

1111
# Python version can be specified with `$ PYTHON_EXE=python3.x make conf`
12+
PYTHON_EXE?=python3
1213
VENV=venv
1314
ACTIVATE?=. ${VENV}/bin/activate;
1415

1516
dev:
16-
@echo "-> Configure the dev envt."
17+
@echo "-> Configure the development envt."
1718
./configure --dev
1819

1920
isort:

azure-pipelines.yml

+16-8
Original file line numberDiff line numberDiff line change
@@ -9,32 +9,40 @@ jobs:
99

1010
- template: etc/ci/azure-posix.yml
1111
parameters:
12-
job_name: ubuntu18_cpython
13-
image_name: ubuntu-18.04
12+
job_name: ubuntu20_cpython
13+
image_name: ubuntu-20.04
1414
python_versions: ['3.7', '3.8', '3.9', '3.10', '3.11']
1515
test_suites:
1616
all: venv/bin/pytest -n 2 -vvs --reruns 2
1717

1818
- template: etc/ci/azure-posix.yml
1919
parameters:
20-
job_name: ubuntu20_cpython
21-
image_name: ubuntu-20.04
20+
job_name: ubuntu22_cpython
21+
image_name: ubuntu-22.04
2222
python_versions: ['3.7', '3.8', '3.9', '3.10', '3.11']
2323
test_suites:
2424
all: venv/bin/pytest -n 2 -vvs --reruns 2
2525

2626
- template: etc/ci/azure-posix.yml
2727
parameters:
28-
job_name: ubuntu22_cpython
29-
image_name: ubuntu-22.04
28+
job_name: macos11_cpython
29+
image_name: macOS-11
3030
python_versions: ['3.7', '3.8', '3.9', '3.10', '3.11']
3131
test_suites:
3232
all: venv/bin/pytest -n 2 -vvs --reruns 2
3333

3434
- template: etc/ci/azure-posix.yml
3535
parameters:
36-
job_name: macos11_cpython
37-
image_name: macos-11
36+
job_name: macos12_cpython
37+
image_name: macOS-12
38+
python_versions: ['3.7', '3.8', '3.9', '3.10', '3.11']
39+
test_suites:
40+
all: venv/bin/pytest -n 2 -vvs
41+
42+
- template: etc/ci/azure-posix.yml
43+
parameters:
44+
job_name: macos13_cpython
45+
image_name: macOS-13
3846
python_versions: ['3.7', '3.8', '3.9', '3.10', '3.11']
3947
test_suites:
4048
all: venv/bin/pytest -n 2 -vvs --reruns 2

docs/source/conf.py

+12
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,14 @@
2929
# ones.
3030
extensions = [
3131
"sphinx.ext.intersphinx",
32+
"sphinx_reredirects",
3233
]
3334

35+
36+
# Redirects for olds pages
37+
# See https://documatt.gitlab.io/sphinx-reredirects/usage.html
38+
redirects = {}
39+
3440
# This points to aboutcode.readthedocs.io
3541
# In case of "undefined label" ERRORS check docs on intersphinx to troubleshoot
3642
# Link was created at commit - https://github.com/nexB/aboutcode/commit/faea9fcf3248f8f198844fe34d43833224ac4a83
@@ -95,3 +101,9 @@
95101
.. role:: img-title-para
96102
97103
"""
104+
105+
# -- Options for LaTeX output -------------------------------------------------
106+
107+
latex_elements = {
108+
'classoptions': ',openany,oneside'
109+
}

etc/scripts/README.rst

+4-4
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ Pre-requisites
2121
virtualenv or in the the main configured development virtualenv.
2222
These requireements need to be installed::
2323

24-
pip install --requirement etc/release/requirements.txt
24+
pip install --requirement etc/scripts/requirements.txt
2525

2626
TODO: we need to pin the versions of these tools
2727

@@ -34,7 +34,7 @@ Scripts
3434
~~~~~~~
3535

3636
**gen_requirements.py**: create/update requirements files from currently
37-
installed requirements.
37+
installed requirements.
3838

3939
**gen_requirements_dev.py** does the same but can subtract the main requirements
4040
to get extra requirements used in only development.
@@ -50,7 +50,7 @@ The sequence of commands to run are:
5050

5151
./configure --clean
5252
./configure
53-
python etc/release/gen_requirements.py --site-packages-dir <path to site-packages dir>
53+
python etc/scripts/gen_requirements.py --site-packages-dir <path to site-packages dir>
5454

5555
* You can optionally install or update extra main requirements after the
5656
./configure step such that these are included in the generated main requirements.
@@ -59,7 +59,7 @@ The sequence of commands to run are:
5959

6060
./configure --clean
6161
./configure --dev
62-
python etc/release/gen_requirements_dev.py --site-packages-dir <path to site-packages dir>
62+
python etc/scripts/gen_requirements_dev.py --site-packages-dir <path to site-packages dir>
6363

6464
* You can optionally install or update extra dev requirements after the
6565
./configure step such that these are included in the generated dev

etc/scripts/fetch_thirdparty.py

+64-23
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import itertools
1313
import os
1414
import sys
15+
from collections import defaultdict
1516

1617
import click
1718

@@ -110,6 +111,39 @@
110111
is_flag=True,
111112
help="Use on disk cached PyPI indexes list of packages and versions and do not refetch if present.",
112113
)
114+
@click.option(
115+
"--sdist-only",
116+
"sdist_only",
117+
type=str,
118+
metavar="SDIST",
119+
default=tuple(),
120+
show_default=False,
121+
multiple=True,
122+
help="Package name(s) that come only in sdist format (no wheels). "
123+
"The command will not fail and exit if no wheel exists for these names",
124+
)
125+
@click.option(
126+
"--wheel-only",
127+
"wheel_only",
128+
type=str,
129+
metavar="WHEEL",
130+
default=tuple(),
131+
show_default=False,
132+
multiple=True,
133+
help="Package name(s) that come only in wheel format (no sdist). "
134+
"The command will not fail and exit if no sdist exists for these names",
135+
)
136+
@click.option(
137+
"--no-dist",
138+
"no_dist",
139+
type=str,
140+
metavar="DIST",
141+
default=tuple(),
142+
show_default=False,
143+
multiple=True,
144+
help="Package name(s) that do not come either in wheel or sdist format. "
145+
"The command will not fail and exit if no distribution exists for these names",
146+
)
113147
@click.help_option("-h", "--help")
114148
def fetch_thirdparty(
115149
requirements_files,
@@ -122,6 +156,9 @@ def fetch_thirdparty(
122156
sdists,
123157
index_urls,
124158
use_cached_index,
159+
sdist_only,
160+
wheel_only,
161+
no_dist,
125162
):
126163
"""
127164
Download to --dest THIRDPARTY_DIR the PyPI wheels, source distributions,
@@ -204,58 +241,62 @@ def fetch_thirdparty(
204241
)
205242
repos.append(repo)
206243

207-
wheels_fetched = []
208-
wheels_not_found = []
209-
210-
sdists_fetched = []
211-
sdists_not_found = []
244+
wheels_or_sdist_not_found = defaultdict(list)
212245

213246
for name, version in sorted(required_name_versions):
214247
nv = name, version
215248
print(f"Processing: {name} @ {version}")
216249
if wheels:
217250
for environment in environments:
251+
218252
if TRACE:
219253
print(f" ==> Fetching wheel for envt: {environment}")
220-
fwfns = utils_thirdparty.download_wheel(
254+
255+
fetched = utils_thirdparty.download_wheel(
221256
name=name,
222257
version=version,
223258
environment=environment,
224259
dest_dir=dest_dir,
225260
repos=repos,
226261
)
227-
if fwfns:
228-
wheels_fetched.extend(fwfns)
229-
else:
230-
wheels_not_found.append(f"{name}=={version} for: {environment}")
262+
if not fetched:
263+
wheels_or_sdist_not_found[f"{name}=={version}"].append(environment)
231264
if TRACE:
232265
print(f" NOT FOUND")
233266

234-
if sdists:
267+
if (sdists or
268+
(f"{name}=={version}" in wheels_or_sdist_not_found and name in sdist_only)
269+
):
235270
if TRACE:
236271
print(f" ==> Fetching sdist: {name}=={version}")
272+
237273
fetched = utils_thirdparty.download_sdist(
238274
name=name,
239275
version=version,
240276
dest_dir=dest_dir,
241277
repos=repos,
242278
)
243-
if fetched:
244-
sdists_fetched.append(fetched)
245-
else:
246-
sdists_not_found.append(f"{name}=={version}")
279+
if not fetched:
280+
wheels_or_sdist_not_found[f"{name}=={version}"].append("sdist")
247281
if TRACE:
248282
print(f" NOT FOUND")
249283

250-
if wheels and wheels_not_found:
251-
print(f"==> MISSING WHEELS")
252-
for wh in wheels_not_found:
253-
print(f" {wh}")
284+
mia = []
285+
for nv, dists in wheels_or_sdist_not_found.items():
286+
name, _, version = nv.partition("==")
287+
if name in no_dist:
288+
continue
289+
sdist_missing = sdists and "sdist" in dists and not name in wheel_only
290+
if sdist_missing:
291+
mia.append(f"SDist missing: {nv} {dists}")
292+
wheels_missing = wheels and any(d for d in dists if d != "sdist") and not name in sdist_only
293+
if wheels_missing:
294+
mia.append(f"Wheels missing: {nv} {dists}")
254295

255-
if sdists and sdists_not_found:
256-
print(f"==> MISSING SDISTS")
257-
for sd in sdists_not_found:
258-
print(f" {sd}")
296+
if mia:
297+
for m in mia:
298+
print(m)
299+
raise Exception(mia)
259300

260301
print(f"==> FETCHING OR CREATING ABOUT AND LICENSE FILES")
261302
utils_thirdparty.fetch_abouts_and_licenses(dest_dir=dest_dir, use_cached_index=use_cached_index)

etc/scripts/gen_pypi_simple.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ def build_per_package_index(pkg_name, packages, base_url):
118118
<body>"""
119119
document.append(header)
120120

121-
for package in packages:
121+
for package in sorted(packages, key=lambda p: p.archive_file):
122122
document.append(package.simple_index_entry(base_url))
123123

124124
footer = """ </body>
@@ -141,8 +141,8 @@ def build_links_package_index(packages_by_package_name, base_url):
141141
<body>"""
142142
document.append(header)
143143

144-
for _name, packages in packages_by_package_name.items():
145-
for package in packages:
144+
for _name, packages in sorted(packages_by_package_name.items(), key=lambda i: i[0]):
145+
for package in sorted(packages, key=lambda p: p.archive_file):
146146
document.append(package.simple_index_entry(base_url))
147147

148148
footer = """ </body>

etc/scripts/requirements.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@ pip
88
setuptools
99
twine
1010
wheel
11-
build
11+
build
12+
packvers

etc/scripts/utils_dejacode.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import requests
1616
import saneyaml
1717

18-
from packaging import version as packaging_version
18+
from packvers import version as packaging_version
1919

2020
"""
2121
Utility to create and retrieve package and ABOUT file data from DejaCode.

etc/scripts/utils_pip_compatibility_tags.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727

2828
import re
2929

30-
from packaging.tags import (
30+
from packvers.tags import (
3131
compatible_tags,
3232
cpython_tags,
3333
generic_tags,

0 commit comments

Comments
 (0)