Skip to content

Commit 02f200c

Browse files
committed
Initial commit
0 parents  commit 02f200c

21 files changed

Lines changed: 1064 additions & 0 deletions

.bumpversion.cfg

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
[bumpversion]
2+
current_version = 0.2.3
3+
commit = True
4+
tag = False
5+
6+
[bumpversion:file:rust_template/__init__.py]
7+
search = __version__ = "{current_version}"
8+
replace = __version__ = "{new_version}"
9+
10+
[bumpversion:file:pyproject.toml]
11+
search = version = "{current_version}"
12+
replace = version = "{new_version}"
13+
14+
[bumpversion:file:rust/Cargo.toml]
15+
search = version = "{current_version}"
16+
replace = version = "{new_version}"
17+
18+
[bumpversion:file:Cargo.toml]
19+
search = version = "{current_version}"
20+
replace = version = "{new_version}"

.gitattributes

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
examples/* linguist-documentation
2+
docs/* linguist-documentation
3+
*.ipynb linguist-documentation
4+
Makefile linguist-documentation
5+
6+
* text=auto eol=lf

.github/CODE_OF_CONDUCT.md

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
# Contributor Covenant Code of Conduct
2+
3+
## Our Pledge
4+
5+
In the interest of fostering an open and welcoming environment, we as
6+
contributors and maintainers pledge to making participation in our project and
7+
our community a harassment-free experience for everyone, regardless of age, body
8+
size, disability, ethnicity, sex characteristics, gender identity and expression,
9+
level of experience, education, socio-economic status, nationality, personal
10+
appearance, race, religion, or sexual identity and orientation.
11+
12+
## Our Standards
13+
14+
Examples of behavior that contributes to creating a positive environment
15+
include:
16+
17+
* Using welcoming and inclusive language
18+
* Being respectful of differing viewpoints and experiences
19+
* Gracefully accepting constructive criticism
20+
* Focusing on what is best for the community
21+
* Showing empathy towards other community members
22+
23+
Examples of unacceptable behavior by participants include:
24+
25+
* The use of sexualized language or imagery and unwelcome sexual attention or
26+
advances
27+
* Trolling, insulting/derogatory comments, and personal or political attacks
28+
* Public or private harassment
29+
* Publishing others' private information, such as a physical or electronic
30+
address, without explicit permission
31+
* Other conduct which could reasonably be considered inappropriate in a
32+
professional setting
33+
34+
## Our Responsibilities
35+
36+
Project maintainers are responsible for clarifying the standards of acceptable
37+
behavior and are expected to take appropriate and fair corrective action in
38+
response to any instances of unacceptable behavior.
39+
40+
Project maintainers have the right and responsibility to remove, edit, or
41+
reject comments, commits, code, wiki edits, issues, and other contributions
42+
that are not aligned to this Code of Conduct, or to ban temporarily or
43+
permanently any contributor for other behaviors that they deem inappropriate,
44+
threatening, offensive, or harmful.
45+
46+
## Scope
47+
48+
This Code of Conduct applies both within project spaces and in public spaces
49+
when an individual is representing the project or its community. Examples of
50+
representing a project or community include using an official project e-mail
51+
address, posting via an official social media account, or acting as an appointed
52+
representative at an online or offline event. Representation of a project may be
53+
further defined and clarified by project maintainers.
54+
55+
## Enforcement
56+
57+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
58+
reported by contacting the project team at t.paine154@gmail.com. All
59+
complaints will be reviewed and investigated and will result in a response that
60+
is deemed necessary and appropriate to the circumstances. The project team is
61+
obligated to maintain confidentiality with regard to the reporter of an incident.
62+
Further details of specific enforcement policies may be posted separately.
63+
64+
Project maintainers who do not follow or enforce the Code of Conduct in good
65+
faith may face temporary or permanent repercussions as determined by other
66+
members of the project's leadership.
67+
68+
## Attribution
69+
70+
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71+
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
72+
73+
[homepage]: https://www.contributor-covenant.org
74+
75+
For answers to common questions about this code of conduct, see
76+
https://www.contributor-covenant.org/faq
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
---
2+
name: Bug report
3+
about: Create a report to help us improve
4+
title: ''
5+
labels: ''
6+
assignees: ''
7+
8+
---
9+
10+
**Describe the bug**
11+
A clear and concise description of what the bug is.
12+
13+
**To Reproduce**
14+
Steps to reproduce the behavior:
15+
1. Go to '...'
16+
2. Click on '....'
17+
3. Scroll down to '....'
18+
4. See error
19+
20+
**Expected behavior**
21+
A clear and concise description of what you expected to happen.
22+
23+
**Screenshots**
24+
If applicable, add screenshots to help explain your problem.
25+
26+
**Desktop (please complete the following information):**
27+
- OS: [e.g. iOS]
28+
- Browser [e.g. chrome, safari]
29+
- Version [e.g. 22]
30+
31+
**Smartphone (please complete the following information):**
32+
- Device: [e.g. iPhone6]
33+
- OS: [e.g. iOS8.1]
34+
- Browser [e.g. stock browser, safari]
35+
- Version [e.g. 22]
36+
37+
**Additional context**
38+
Add any other context about the problem here.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
name: Feature request
3+
about: Suggest an idea for this project
4+
title: ''
5+
labels: ''
6+
assignees: ''
7+
8+
---
9+
10+
**Is your feature request related to a problem? Please describe.**
11+
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12+
13+
**Describe the solution you'd like**
14+
A clear and concise description of what you want to happen.
15+
16+
**Describe alternatives you've considered**
17+
A clear and concise description of any alternative solutions or features you've considered.
18+
19+
**Additional context**
20+
Add any other context or screenshots about the feature request here.

.github/dependabot.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: "github-actions"
4+
directory: "/"
5+
schedule:
6+
interval: "weekly"
7+
- package-ecosystem: "pip"
8+
directory: "/"
9+
schedule:
10+
interval: "monthly"

.github/workflows/build.yml

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
name: Build Status
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
tags:
8+
- v*
9+
paths-ignore:
10+
- CONTRIBUTING.md
11+
- LICENSE
12+
- README.md
13+
pull_request:
14+
workflow_dispatch:
15+
16+
concurrency:
17+
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
18+
cancel-in-progress: true
19+
20+
permissions:
21+
contents: read
22+
checks: write
23+
pull-requests: write
24+
25+
jobs:
26+
build:
27+
runs-on: ${{ matrix.os }}
28+
29+
strategy:
30+
matrix:
31+
os: [ubuntu-latest, macos-latest, windows-latest]
32+
python-version: [3.9]
33+
34+
steps:
35+
- uses: actions/checkout@v3
36+
37+
- name: Set up Rust
38+
uses: actions-rs/toolchain@v1
39+
with:
40+
profile: minimal
41+
toolchain: stable
42+
components: clippy
43+
override: true
44+
45+
- name: Set up Python ${{ matrix.python-version }}
46+
uses: actions/setup-python@v4
47+
with:
48+
python-version: ${{ matrix.python-version }}
49+
cache: "pip"
50+
cache-dependency-path: pyproject.toml
51+
52+
- name: Install dependencies
53+
run: make develop
54+
55+
- name: Build
56+
run: make build
57+
58+
- name: Lint
59+
run: make lint
60+
61+
- name: Test
62+
run: make tests-ci
63+
if: ${{ matrix.os == 'ubuntu-latest' }}
64+
65+
- name: Upload test results
66+
uses: EnricoMi/publish-unit-test-result-action@v2
67+
with:
68+
check_name: Test Results
69+
github_token: ${{ secrets.GITHUB_TOKEN }}
70+
files: |
71+
rust/junit.xml
72+
junit.xml
73+
if: ${{ matrix.os == 'ubuntu-latest' }}
74+
75+
- name: Upload coverage
76+
uses: codecov/codecov-action@v3
77+
if: ${{ matrix.os == 'ubuntu-latest' }}

.github/workflows/publish.yml

Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
name: Publish
2+
3+
on:
4+
push:
5+
tags:
6+
- v*
7+
workflow_dispatch:
8+
9+
env:
10+
CARGO_TERM_COLOR: always
11+
12+
jobs:
13+
build:
14+
name: >
15+
Build ${{ matrix.python-version }} on ${{ matrix.platform || matrix.os }}
16+
(${{ matrix.alt_arch_name || matrix.arch }})
17+
strategy:
18+
fail-fast: false
19+
matrix:
20+
os: [ubuntu-latest, macos-latest, windows-latest]
21+
python-version: ['cp310']
22+
arch: [main, alt]
23+
include:
24+
- os: ubuntu-latest
25+
platform: linux
26+
- os: windows-latest
27+
ls: dir
28+
- os: macos-latest
29+
arch: alt
30+
alt_arch_name: 'arm64 universal2'
31+
exclude:
32+
- os: windows-latest
33+
arch: alt
34+
- os: ubuntu-latest
35+
arch: alt
36+
37+
runs-on: ${{ matrix.os }}
38+
steps:
39+
- uses: actions/checkout@v3
40+
41+
- name: Setup python
42+
uses: actions/setup-python@v4
43+
with:
44+
python-version: '3.9'
45+
cache: 'pip'
46+
cache-dependency-path: 'pyproject.toml'
47+
48+
- name: Setup Rust
49+
uses: actions-rs/toolchain@v1
50+
with:
51+
profile: minimal
52+
toolchain: stable
53+
components: clippy
54+
override: true
55+
56+
- name: Setup Rust cache
57+
uses: Swatinem/rust-cache@v2
58+
with:
59+
key: ${{ matrix.alt_arch_name }}
60+
61+
- run: rustup target add aarch64-apple-darwin
62+
if: matrix.os == 'macos-latest'
63+
64+
- run: rustup toolchain install stable-i686-pc-windows-msvc
65+
if: matrix.os == 'windows-latest'
66+
67+
- run: rustup target add i686-pc-windows-msvc
68+
if: matrix.os == 'windows-latest'
69+
70+
- name: Get pip cache dir
71+
id: pip-cache
72+
if: matrix.os != 'windows-latest'
73+
run: |
74+
echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT
75+
76+
- name: Get pip cache dir
77+
id: pip-cache-win
78+
if: matrix.os == 'windows-latest'
79+
run: |
80+
"dir=$(pip cache dir)" >> $env:GITHUB_OUTPUT
81+
82+
- name: Cache python dependencies
83+
uses: actions/cache@v3
84+
with:
85+
path: ${{ steps.pip-cache.outputs.dir || steps.pip-cache-win.outputs.dir }}
86+
key: ${{ runner.os }}-pip-${{ matrix.python-version }}
87+
88+
- name: Install python dependencies
89+
run: pip install -U build setuptools wheel twine cibuildwheel platformdirs
90+
91+
- name: Display cibuildwheel cache dir
92+
id: cibuildwheel-cache
93+
run: |
94+
from platformdirs import user_cache_path
95+
import os
96+
97+
with open(os.getenv('GITHUB_OUTPUT'), 'w') as f:
98+
f.write(f"dir={str(user_cache_path(appname='cibuildwheel', appauthor='pypa'))}")
99+
shell: python
100+
101+
- name: Cache cibuildwheel tools
102+
uses: actions/cache@v3
103+
with:
104+
path: ${{ steps.cibuildwheel-cache.outputs.dir }}
105+
key: ${{ runner.os }}-cibuildwheel-${{ matrix.python-version }}
106+
107+
- name: Build sdist
108+
if: matrix.os == 'ubuntu-latest' && matrix.python-version == 'cp310'
109+
run: |
110+
python -m build --sdist -o wheelhouse
111+
112+
- name: Build ${{ matrix.platform || matrix.os }} binaries
113+
run: cibuildwheel --output-dir wheelhouse
114+
env:
115+
CIBW_BUILD: '${{ matrix.python-version }}-*'
116+
# rust doesn't seem to be available for musl linux on i686
117+
CIBW_SKIP: '*-musllinux_i686'
118+
# we build for "alt_arch_name" if it exists, else 'auto'
119+
CIBW_ARCHS: ${{ matrix.alt_arch_name || 'auto' }}
120+
CIBW_ENVIRONMENT: 'PATH="$HOME/.cargo/bin:$PATH" CARGO_TERM_COLOR="always"'
121+
CIBW_ENVIRONMENT_WINDOWS: 'PATH="$UserProfile\.cargo\bin;$PATH"'
122+
CIBW_BEFORE_BUILD: rustup show
123+
CIBW_BEFORE_BUILD_LINUX: >
124+
curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain=stable --profile=minimal -y &&
125+
rustup show
126+
CIBW_TEST_COMMAND: 'pytest {project}/rust_template/tests'
127+
CIBW_TEST_REQUIRES: pytest pytest-cov
128+
CIBW_TEST_SKIP: '*-macosx_arm64 *-macosx_universal2:arm64'
129+
CIBW_BUILD_VERBOSITY: 1
130+
131+
- run: ${{ matrix.ls || 'ls -lh' }} wheelhouse/
132+
133+
- run: twine check wheelhouse/*
134+
135+
- uses: actions/upload-artifact@v3
136+
with:
137+
name: wheels
138+
path: wheelhouse
139+

0 commit comments

Comments
 (0)