Skip to content

Commit a640b57

Browse files
authored
Initial commit
0 parents  commit a640b57

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+6845
-0
lines changed

.gitattributes

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Ignore all Git auto CR/LF line endings conversions
2+
* -text
3+
pyproject.toml export-subst

.github/workflows/docs-ci.yml

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
name: CI Documentation
2+
3+
on: [push, pull_request]
4+
5+
jobs:
6+
build:
7+
runs-on: ubuntu-22.04
8+
9+
strategy:
10+
max-parallel: 4
11+
matrix:
12+
python-version: [3.9]
13+
14+
steps:
15+
- name: Checkout code
16+
uses: actions/checkout@v3
17+
18+
- name: Set up Python ${{ matrix.python-version }}
19+
uses: actions/setup-python@v4
20+
with:
21+
python-version: ${{ matrix.python-version }}
22+
23+
- name: Install Dependencies
24+
run: pip install -e .[docs]
25+
26+
- name: Check Sphinx Documentation build minimally
27+
working-directory: ./docs
28+
run: sphinx-build -E -W source build
29+
30+
- name: Check for documentation style errors
31+
working-directory: ./docs
32+
run: ./scripts/doc8_style_check.sh
33+
34+

.github/workflows/pypi-release.yml

+83
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
name: Create library release archives, create a GH release and publish PyPI wheel and sdist on tag in main branch
2+
3+
4+
# This is executed automatically on a tag in the main branch
5+
6+
# Summary of the steps:
7+
# - build wheels and sdist
8+
# - upload wheels and sdist to PyPI
9+
# - create gh-release and upload wheels and dists there
10+
# TODO: smoke test wheels and sdist
11+
# TODO: add changelog to release text body
12+
13+
# WARNING: this is designed only for packages building as pure Python wheels
14+
15+
on:
16+
workflow_dispatch:
17+
push:
18+
tags:
19+
- "v*.*.*"
20+
21+
jobs:
22+
build-pypi-distribs:
23+
name: Build and publish library to PyPI
24+
runs-on: ubuntu-22.04
25+
26+
steps:
27+
- uses: actions/checkout@v4
28+
- name: Set up Python
29+
uses: actions/setup-python@v4
30+
with:
31+
python-version: 3.9
32+
33+
- name: Install pypa/build
34+
run: python -m pip install build --user
35+
36+
- name: Build a binary wheel and a source tarball
37+
run: python -m build --sdist --wheel --outdir dist/
38+
39+
- name: Upload built archives
40+
uses: actions/upload-artifact@v3
41+
with:
42+
name: pypi_archives
43+
path: dist/*
44+
45+
46+
create-gh-release:
47+
name: Create GH release
48+
needs:
49+
- build-pypi-distribs
50+
runs-on: ubuntu-22.04
51+
52+
steps:
53+
- name: Download built archives
54+
uses: actions/download-artifact@v3
55+
with:
56+
name: pypi_archives
57+
path: dist
58+
59+
- name: Create GH release
60+
uses: softprops/action-gh-release@v1
61+
with:
62+
draft: true
63+
files: dist/*
64+
65+
66+
create-pypi-release:
67+
name: Create PyPI release
68+
needs:
69+
- create-gh-release
70+
runs-on: ubuntu-22.04
71+
72+
steps:
73+
- name: Download built archives
74+
uses: actions/download-artifact@v3
75+
with:
76+
name: pypi_archives
77+
path: dist
78+
79+
- name: Publish to PyPI
80+
if: startsWith(github.ref, 'refs/tags')
81+
uses: pypa/gh-action-pypi-publish@release/v1
82+
with:
83+
password: ${{ secrets.PYPI_API_TOKEN }}

.gitignore

+74
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
# Python compiled files
2+
*.py[cod]
3+
4+
# virtualenv and other misc bits
5+
/src/*.egg-info
6+
*.egg-info
7+
/dist
8+
/build
9+
/bin
10+
/lib
11+
/scripts
12+
/Scripts
13+
/Lib
14+
/pip-selfcheck.json
15+
/tmp
16+
/venv
17+
.Python
18+
/include
19+
/Include
20+
/local
21+
*/local/*
22+
/local/
23+
/share/
24+
/tcl/
25+
/.eggs/
26+
27+
# Installer logs
28+
pip-log.txt
29+
30+
# Unit test / coverage reports
31+
.cache
32+
.coverage
33+
.coverage.*
34+
nosetests.xml
35+
htmlcov
36+
37+
# Translations
38+
*.mo
39+
40+
# IDEs
41+
.project
42+
.pydevproject
43+
.idea
44+
org.eclipse.core.resources.prefs
45+
.vscode
46+
.vs
47+
48+
# Sphinx
49+
docs/_build
50+
docs/bin
51+
docs/build
52+
docs/include
53+
docs/Lib
54+
doc/pyvenv.cfg
55+
pyvenv.cfg
56+
57+
# Various junk and temp files
58+
.DS_Store
59+
*~
60+
.*.sw[po]
61+
.build
62+
.ve
63+
*.bak
64+
/.cache/
65+
66+
# pyenv
67+
/.python-version
68+
/man/
69+
/.pytest_cache/
70+
lib64
71+
tcl
72+
73+
# Ignore Jupyter Notebook related temp files
74+
.ipynb_checkpoints/

.readthedocs.yml

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# .readthedocs.yml
2+
# Read the Docs configuration file
3+
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
4+
5+
# Required
6+
version: 2
7+
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+
19+
# Where the Sphinx conf.py file is located
20+
sphinx:
21+
configuration: docs/source/conf.py
22+
23+
# Setting the python version and doc build requirements
24+
python:
25+
install:
26+
- method: pip
27+
path: .
28+
extra_requirements:
29+
- docs

AUTHORS.rst

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
The following organizations or individuals have contributed to this repo:
2+
3+
-

CHANGELOG.rst

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
Changelog
2+
=========
3+
4+
5+
v0.0.0
6+
------
7+
8+
*xxxx-xx-xx* -- Initial release.

CODE_OF_CONDUCT.rst

+86
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
Contributor Covenant Code of Conduct
2+
====================================
3+
4+
Our Pledge
5+
----------
6+
7+
In the interest of fostering an open and welcoming environment, we as
8+
contributors and maintainers pledge to making participation in our
9+
project and our community a harassment-free experience for everyone,
10+
regardless of age, body size, disability, ethnicity, gender identity and
11+
expression, level of experience, education, socio-economic status,
12+
nationality, personal appearance, race, religion, or sexual identity and
13+
orientation.
14+
15+
Our Standards
16+
-------------
17+
18+
Examples of behavior that contributes to creating a positive environment
19+
include:
20+
21+
- Using welcoming and inclusive language
22+
- Being respectful of differing viewpoints and experiences
23+
- Gracefully accepting constructive criticism
24+
- Focusing on what is best for the community
25+
- Showing empathy towards other community members
26+
27+
Examples of unacceptable behavior by participants include:
28+
29+
- The use of sexualized language or imagery and unwelcome sexual
30+
attention or advances
31+
- Trolling, insulting/derogatory comments, and personal or political
32+
attacks
33+
- Public or private harassment
34+
- Publishing others’ private information, such as a physical or
35+
electronic address, without explicit permission
36+
- Other conduct which could reasonably be considered inappropriate in a
37+
professional setting
38+
39+
Our Responsibilities
40+
--------------------
41+
42+
Project maintainers are responsible for clarifying the standards of
43+
acceptable behavior and are expected to take appropriate and fair
44+
corrective action in response to any instances of unacceptable behavior.
45+
46+
Project maintainers have the right and responsibility to remove, edit,
47+
or reject comments, commits, code, wiki edits, issues, and other
48+
contributions that are not aligned to this Code of Conduct, or to ban
49+
temporarily or permanently any contributor for other behaviors that they
50+
deem inappropriate, threatening, offensive, or harmful.
51+
52+
Scope
53+
-----
54+
55+
This Code of Conduct applies both within project spaces and in public
56+
spaces when an individual is representing the project or its community.
57+
Examples of representing a project or community include using an
58+
official project e-mail address, posting via an official social media
59+
account, or acting as an appointed representative at an online or
60+
offline event. Representation of a project may be further defined and
61+
clarified by project maintainers.
62+
63+
Enforcement
64+
-----------
65+
66+
Instances of abusive, harassing, or otherwise unacceptable behavior may
67+
be reported by contacting the project team at [email protected]
68+
or on the Gitter chat channel at https://gitter.im/aboutcode-org/discuss .
69+
All complaints will be reviewed and investigated and will result in a
70+
response that is deemed necessary and appropriate to the circumstances.
71+
The project team is obligated to maintain confidentiality with regard to
72+
the reporter of an incident. Further details of specific enforcement
73+
policies may be posted separately.
74+
75+
Project maintainers who do not follow or enforce the Code of Conduct in
76+
good faith may face temporary or permanent repercussions as determined
77+
by other members of the project’s leadership.
78+
79+
Attribution
80+
-----------
81+
82+
This Code of Conduct is adapted from the `Contributor Covenant`_ ,
83+
version 1.4, available at
84+
https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
85+
86+
.. _Contributor Covenant: https://www.contributor-covenant.org

MANIFEST.in

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
graft src
2+
3+
include *.LICENSE
4+
include NOTICE
5+
include *.ABOUT
6+
include *.toml
7+
include *.yml
8+
include *.rst
9+
include setup.*
10+
include configure*
11+
include requirements*
12+
include .git*
13+
14+
global-exclude *.py[co] __pycache__ *.*~
15+

Makefile

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# SPDX-License-Identifier: Apache-2.0
2+
#
3+
# Copyright (c) nexB Inc. and others. All rights reserved.
4+
# ScanCode is a trademark of nexB Inc.
5+
# SPDX-License-Identifier: Apache-2.0
6+
# See http://www.apache.org/licenses/LICENSE-2.0 for the license text.
7+
# See https://github.com/aboutcode-org/skeleton for support or download.
8+
# See https://aboutcode.org for more information about nexB OSS projects.
9+
#
10+
11+
# Python version can be specified with `$ PYTHON_EXE=python3.x make conf`
12+
PYTHON_EXE?=python3
13+
VENV=venv
14+
ACTIVATE?=. ${VENV}/bin/activate;
15+
16+
dev:
17+
@echo "-> Configure the development envt."
18+
./configure --dev
19+
20+
isort:
21+
@echo "-> Apply isort changes to ensure proper imports ordering"
22+
${VENV}/bin/isort --sl -l 100 src tests setup.py
23+
24+
black:
25+
@echo "-> Apply black code formatter"
26+
${VENV}/bin/black -l 100 src tests setup.py
27+
28+
doc8:
29+
@echo "-> Run doc8 validation"
30+
@${ACTIVATE} doc8 --max-line-length 100 --ignore-path docs/_build/ --quiet docs/
31+
32+
valid: isort black
33+
34+
check:
35+
@echo "-> Run pycodestyle (PEP8) validation"
36+
@${ACTIVATE} pycodestyle --max-line-length=100 --exclude=.eggs,venv,lib,thirdparty,docs,migrations,settings.py,.cache .
37+
@echo "-> Run isort imports ordering validation"
38+
@${ACTIVATE} isort --sl --check-only -l 100 setup.py src tests .
39+
@echo "-> Run black validation"
40+
@${ACTIVATE} black --check --check -l 100 src tests setup.py
41+
42+
clean:
43+
@echo "-> Clean the Python env"
44+
./configure --clean
45+
46+
test:
47+
@echo "-> Run the test suite"
48+
${VENV}/bin/pytest -vvs
49+
50+
docs:
51+
rm -rf docs/_build/
52+
@${ACTIVATE} sphinx-build docs/ docs/_build/
53+
54+
.PHONY: conf dev check valid black isort clean test docs

0 commit comments

Comments
 (0)