Skip to content

Commit a39a24c

Browse files
committed
Assembled functions into a package
0 parents  commit a39a24c

31 files changed

+1906
-0
lines changed

.git_archival.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
node: $Format:%H$
2+
node-date: $Format:%cI$
3+
describe-name: $Format:%(describe:tags=true,match=*[0-9]*)$
4+
ref-names: $Format:%D$

.gitattributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
.git_archival.txt export-subst

.github/CONTRIBUTING.md

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
See the [Scikit-HEP Developer introduction][skhep-dev-intro] for a detailed
2+
description of best practices for developing Scikit-HEP packages.
3+
4+
[skhep-dev-intro]: https://scikit-hep.org/developer/intro
5+
6+
# Quick development
7+
8+
The fastest way to start with development is to use nox. If you don't have nox,
9+
you can use `pipx run nox` to run it without installing, or `pipx install nox`.
10+
If you don't have pipx (pip for applications), then you can install with with
11+
`pip install pipx` (the only case were installing an application with regular
12+
pip is reasonable). If you use macOS, then pipx and nox are both in brew, use
13+
`brew install pipx nox`.
14+
15+
To use, run `nox`. This will lint and test using every installed version of
16+
Python on your system, skipping ones that are not installed. You can also run
17+
specific jobs:
18+
19+
```console
20+
$ nox -s lint # Lint only
21+
$ nox -s tests # Python tests
22+
$ nox -s docs -- serve # Build and serve the docs
23+
$ nox -s build # Make an SDist and wheel
24+
```
25+
26+
Nox handles everything for you, including setting up an temporary virtual
27+
environment for each run.
28+
29+
# Setting up a development environment manually
30+
31+
You can set up a development environment by running:
32+
33+
```bash
34+
python3 -m venv .venv
35+
source ./.venv/bin/activate
36+
pip install -v -e .[dev]
37+
```
38+
39+
If you have the
40+
[Python Launcher for Unix](https://github.com/brettcannon/python-launcher), you
41+
can instead do:
42+
43+
```bash
44+
py -m venv .venv
45+
py -m install -v -e .[dev]
46+
```
47+
48+
# Post setup
49+
50+
You should prepare pre-commit, which will help you by checking that commits pass
51+
required checks:
52+
53+
```bash
54+
pip install pre-commit # or brew install pre-commit on macOS
55+
pre-commit install # Will install a pre-commit hook into the git repo
56+
```
57+
58+
You can also/alternatively run `pre-commit run` (changes only) or
59+
`pre-commit run --all-files` to check even without installing the hook.
60+
61+
# Testing
62+
63+
Use pytest to run the unit checks:
64+
65+
```bash
66+
pytest
67+
```
68+
69+
# Coverage
70+
71+
Use pytest-cov to generate coverage reports:
72+
73+
```bash
74+
pytest --cov=generic-util
75+
```
76+
77+
# Building docs
78+
79+
You can build the docs using:
80+
81+
```bash
82+
nox -s docs
83+
```
84+
85+
You can see a preview with:
86+
87+
```bash
88+
nox -s docs -- serve
89+
```
90+
91+
# Pre-commit
92+
93+
This project uses pre-commit for all style checking. While you can run it with
94+
nox, this is such an important tool that it deserves to be installed on its own.
95+
Install pre-commit and run:
96+
97+
```bash
98+
pre-commit run -a
99+
```
100+
101+
to check all files.

.github/dependabot.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
version: 2
2+
updates:
3+
# Maintain dependencies for GitHub Actions
4+
- package-ecosystem: "github-actions"
5+
directory: "/"
6+
schedule:
7+
interval: "weekly"

.github/matchers/pylint.json

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
{
2+
"problemMatcher": [
3+
{
4+
"severity": "warning",
5+
"pattern": [
6+
{
7+
"regexp": "^([^:]+):(\\d+):(\\d+): ([A-DF-Z]\\d+): \\033\\[[\\d;]+m([^\\033]+).*$",
8+
"file": 1,
9+
"line": 2,
10+
"column": 3,
11+
"code": 4,
12+
"message": 5
13+
}
14+
],
15+
"owner": "pylint-warning"
16+
},
17+
{
18+
"severity": "error",
19+
"pattern": [
20+
{
21+
"regexp": "^([^:]+):(\\d+):(\\d+): (E\\d+): \\033\\[[\\d;]+m([^\\033]+).*$",
22+
"file": 1,
23+
"line": 2,
24+
"column": 3,
25+
"code": 4,
26+
"message": 5
27+
}
28+
],
29+
"owner": "pylint-error"
30+
}
31+
]
32+
}

.github/workflows/ci.yml

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
name: CI
2+
3+
on:
4+
workflow_dispatch:
5+
pull_request:
6+
push:
7+
branches:
8+
- master
9+
release:
10+
types:
11+
- published
12+
13+
concurrency:
14+
group: ${{ github.workflow }}-${{ github.ref }}
15+
cancel-in-progress: true
16+
17+
env:
18+
FORCE_COLOR: 3
19+
20+
jobs:
21+
pre-commit:
22+
name: Format
23+
runs-on: ubuntu-latest
24+
steps:
25+
- uses: actions/checkout@v3
26+
with:
27+
fetch-depth: 0
28+
- uses: actions/setup-python@v4
29+
with:
30+
python-version: "3.10"
31+
- uses: pre-commit/[email protected]
32+
with:
33+
extra_args: --hook-stage manual --all-files
34+
# - name: Run PyLint
35+
# run: |
36+
# echo "::add-matcher::$GITHUB_WORKSPACE/.github/matchers/pylint.json"
37+
# pipx run nox -s pylint
38+
39+
checks:
40+
name: Check Python ${{ matrix.python-version }} on ${{ matrix.runs-on }}
41+
runs-on: ${{ matrix.runs-on }}
42+
needs: [pre-commit]
43+
strategy:
44+
fail-fast: false
45+
matrix:
46+
python-version: ["3.10", "3.11"]
47+
runs-on: [ubuntu-latest, macos-latest, windows-latest]
48+
49+
# include:
50+
# - python-version: pypy-3.8
51+
# runs-on: ubuntu-latest
52+
53+
steps:
54+
- uses: actions/checkout@v3
55+
with:
56+
fetch-depth: 0
57+
58+
- uses: actions/setup-python@v4
59+
with:
60+
python-version: ${{ matrix.python-version }}
61+
62+
- name: Install package
63+
run: python -m pip install .[test]
64+
65+
- name: Test package
66+
run: >-
67+
python -m pytest -ra --cov --cov-report=xml --cov-report=term
68+
--durations=20
69+
70+
# - name: Upload coverage report
71+
# uses: codecov/[email protected]
72+
73+
dist:
74+
name: Distribution build
75+
runs-on: ubuntu-latest
76+
needs: [pre-commit]
77+
78+
steps:
79+
- uses: actions/checkout@v3
80+
with:
81+
fetch-depth: 0
82+
83+
- name: Build sdist and wheel
84+
run: pipx run build
85+
86+
- uses: actions/upload-artifact@v3
87+
with:
88+
path: dist
89+
90+
- name: Check products
91+
run: pipx run twine check dist/*
92+
93+
- uses: pypa/[email protected]
94+
if: github.event_name == 'release' && github.event.action == 'published'
95+
with:
96+
password: ${{ secrets.PYPI_TOKEN }}
97+
98+

0 commit comments

Comments
 (0)