Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge development branch into the master branch #42

Merged
merged 66 commits into from
Oct 26, 2023
Merged
Show file tree
Hide file tree
Changes from 65 commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
4c88e05
Initialize repo packaging based on sci py cookie
lsetiawan Jul 19, 2023
1cfd34d
Update min python and remove pre-commit dep for now
lsetiawan Jul 19, 2023
b456f6d
Remove copier answers
lsetiawan Jul 19, 2023
14c685e
Remove 3.12 for now
lsetiawan Jul 19, 2023
1a85147
Remove pypy3.9
lsetiawan Jul 19, 2023
b44660b
Allow formatting to always pass for now
lsetiawan Jul 19, 2023
8ab00b4
Ignore pre-commit for now
lsetiawan Jul 19, 2023
f0244aa
Merge pull request #1 from uw-ssec/update_repo
uwcdc Jul 26, 2023
5901084
fix: bring back missing .so file and remove from gitignore
lsetiawan Aug 2, 2023
9052608
Merge pull request #2 from uw-ssec/missing
lsetiawan Aug 2, 2023
e8a1f52
chore: Merge branch 'master' into development
lsetiawan Sep 14, 2023
c3187b9
chore: remove old setup.py
lsetiawan Sep 15, 2023
ff5c3e3
ci: update branch to development
lsetiawan Sep 15, 2023
c3ade4f
ci: Add built dist test step for cd
lsetiawan Sep 15, 2023
751ae3b
ci: publish need both steps to finish
lsetiawan Sep 15, 2023
da8dba8
ci: fix python version
lsetiawan Sep 15, 2023
bebbf21
ci: fix artifact name and action version
lsetiawan Sep 15, 2023
9996480
ci: Remove cd for pull requests
lsetiawan Sep 15, 2023
d5e04c9
ci: fix auto versioning for pypi
lsetiawan Sep 15, 2023
f75856e
chore(deps): Add all optional deps
lsetiawan Sep 15, 2023
a8c66ba
Update README.md
uwcdc Sep 18, 2023
33a3bba
Update README.md
uwcdc Sep 21, 2023
d418cb0
Update docs and devcontainer
uwcdc Sep 22, 2023
3836ace
Update .gitignore
uwcdc Sep 22, 2023
d7e1c18
Update .gitignore
uwcdc Sep 22, 2023
1dfdfc1
Add build/html files
uwcdc Sep 22, 2023
93c0faf
chore(deps): Update smart_open to use braingeneers version
lsetiawan Oct 7, 2023
b8100cb
chore(deps): Pin neuraltoolkit to v0.3.1
lsetiawan Oct 9, 2023
05b1ce6
refactor: Merge branch 'master' into development
lsetiawan Oct 9, 2023
9eb8519
Update README.md
uwcdc Oct 11, 2023
42c734c
Update .devcontainer/post_create.sh
uwcdc Oct 11, 2023
6e1a2c1
Update post_create.sh
uwcdc Oct 11, 2023
2da1542
Update post_create.sh
uwcdc Oct 11, 2023
5a2f692
Update post_create.sh
uwcdc Oct 11, 2023
d253c63
Update LICENSE
uwcdc Oct 11, 2023
039b8bf
Update pyproject.toml
uwcdc Oct 11, 2023
8ecad73
Update README.md
uwcdc Oct 11, 2023
de417ba
Update README.md
uwcdc Oct 11, 2023
0b23f24
Update README.md
uwcdc Oct 11, 2023
e3d522d
ci: Rename .readthedocs.yml to .readthedocs.yaml
lsetiawan Oct 11, 2023
e1ff7ec
Remove /docs/build files
uwcdc Oct 11, 2023
07ae001
Update README.md
uwcdc Oct 11, 2023
f49f70c
Update README.md
uwcdc Oct 11, 2023
07cc73b
Update .readthedocs.yaml
uwcdc Oct 12, 2023
6bcfab5
Update src/braingeneers/_compat/typing.py
uwcdc Oct 23, 2023
4ea84a6
Update pyproject.toml
uwcdc Oct 23, 2023
84fc58a
Update README.md
uwcdc Oct 23, 2023
560f45c
Update README.md
uwcdc Oct 23, 2023
a389fa6
Update README.md
uwcdc Oct 23, 2023
042358c
Update ci.yml
uwcdc Oct 25, 2023
8357f84
Delete .extgitignore
uwcdc Oct 25, 2023
6460efa
Delete src/braingeneers/_compat directory
uwcdc Oct 25, 2023
e01c432
Update test_package.py
uwcdc Oct 25, 2023
d37388f
Update test_package.py
uwcdc Oct 25, 2023
7bba971
Update ci.yml
uwcdc Oct 25, 2023
14dd99e
Update ci.yml
uwcdc Oct 25, 2023
31153a6
Update ci.yml
uwcdc Oct 25, 2023
48f014d
Update ci.yml
uwcdc Oct 25, 2023
62fc1c8
Update ci.yml
uwcdc Oct 25, 2023
04151fc
Update LICENSE
uwcdc Oct 26, 2023
5ccdec3
Update README.md
uwcdc Oct 26, 2023
8fccf00
Merge branch 'master' into development
uwcdc Oct 26, 2023
33e9f0c
Update ci.yml
uwcdc Oct 26, 2023
16af868
Update ci.yml
uwcdc Oct 26, 2023
6184004
Update ci.yml
uwcdc Oct 26, 2023
9947c56
Update ci.yml
uwcdc Oct 26, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
{
"image":"ghcr.io/braingeneers/research:latest",

"customizations": {
"vscode": {
"extensions": [
"ms-toolsai.jupyter",
"ms-python.python",
"ms-vsliveshare.vsliveshare"
]
}
},
"postCreateCommand": "sh .devcontainer/post_create.sh"
}
7 changes: 7 additions & 0 deletions .devcontainer/post_create.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# For writing commands that will be executed after the container is created

# Uninstalls the braingeneerspy package (pre-installed in the research Docker image) from the environment
python3 -m pip uninstall braingeneerspy

# Installs a Python package located in the current directory in editable mode and includes all optional extras specified in the [all] section of braingeneers.
python3 -m pip install -e ".[all]"
4 changes: 4 additions & 0 deletions .git_archival.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
node: $Format:%H$
node-date: $Format:%cI$
describe-name: $Format:%(describe:tags=true,match=*[0-9]*)$
ref-names: $Format:%D$
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.git_archival.txt export-subst
101 changes: 101 additions & 0 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
See the [Scientific Python Developer Guide][spc-dev-intro] for a detailed
description of best practices for developing scientific packages.

[spc-dev-intro]: https://scientific-python-cookie.readthedocs.io/guide/intro

# Quick development

The fastest way to start with development is to use nox. If you don't have nox,
you can use `pipx run nox` to run it without installing, or `pipx install nox`.
If you don't have pipx (pip for applications), then you can install with with
`pip install pipx` (the only case were installing an application with regular
pip is reasonable). If you use macOS, then pipx and nox are both in brew, use
`brew install pipx nox`.

To use, run `nox`. This will lint and test using every installed version of
Python on your system, skipping ones that are not installed. You can also run
specific jobs:

```console
$ nox -s lint # Lint only
$ nox -s tests # Python tests
$ nox -s docs -- serve # Build and serve the docs
$ nox -s build # Make an SDist and wheel
```

Nox handles everything for you, including setting up an temporary virtual
environment for each run.

# Setting up a development environment manually

You can set up a development environment by running:

```bash
python3 -m venv .venv
source ./.venv/bin/activate
pip install -v -e .[dev]
```

If you have the
[Python Launcher for Unix](https://github.com/brettcannon/python-launcher), you
can instead do:

```bash
py -m venv .venv
py -m install -v -e .[dev]
```

# Post setup

You should prepare pre-commit, which will help you by checking that commits pass
required checks:

```bash
pip install pre-commit # or brew install pre-commit on macOS
pre-commit install # Will install a pre-commit hook into the git repo
```

You can also/alternatively run `pre-commit run` (changes only) or
`pre-commit run --all-files` to check even without installing the hook.

# Testing

Use pytest to run the unit checks:

```bash
pytest
```

# Coverage

Use pytest-cov to generate coverage reports:

```bash
pytest --cov=braingeneers
```

# Building docs

You can build the docs using:

```bash
nox -s docs
```

You can see a preview with:

```bash
nox -s docs -- serve
```

# Pre-commit

This project uses pre-commit for all style checking. While you can run it with
nox, this is such an important tool that it deserves to be installed on its own.
Install pre-commit and run:

```bash
pre-commit run -a
```

to check all files.
7 changes: 7 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
version: 2
updates:
# Maintain dependencies for GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
32 changes: 32 additions & 0 deletions .github/matchers/pylint.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
"problemMatcher": [
{
"severity": "warning",
"pattern": [
{
"regexp": "^([^:]+):(\\d+):(\\d+): ([A-DF-Z]\\d+): \\033\\[[\\d;]+m([^\\033]+).*$",
"file": 1,
"line": 2,
"column": 3,
"code": 4,
"message": 5
}
],
"owner": "pylint-warning"
},
{
"severity": "error",
"pattern": [
{
"regexp": "^([^:]+):(\\d+):(\\d+): (E\\d+): \\033\\[[\\d;]+m([^\\033]+).*$",
"file": 1,
"line": 2,
"column": 3,
"code": 4,
"message": 5
}
],
"owner": "pylint-error"
}
]
}
101 changes: 101 additions & 0 deletions .github/workflows/cd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
name: CD

on:
workflow_dispatch:
push:
branches:
- master
- main
- development
release:
types:
- published

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

env:
FORCE_COLOR: 3

jobs:
dist:
name: Distribution build
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0

- name: Build sdist and wheel
run: pipx run build

- uses: actions/upload-artifact@v3
with:
path: dist

- name: Check products
run: pipx run twine check dist/*

test-built-dist:
needs: [dist]
name: Test built distribution
runs-on: ubuntu-latest
permissions:
id-token: write
steps:
- uses: actions/[email protected]
name: Install Python
with:
python-version: '3.10'
- uses: actions/download-artifact@v3
with:
name: artifact
path: dist
- name: List contents of built dist
run: |
ls -ltrh
ls -ltrh dist
- name: Publish to Test PyPI
uses: pypa/[email protected]
with:
repository-url: https://test.pypi.org/legacy/
verbose: true
skip-existing: true
- name: Check pypi packages
run: |
sleep 3
python -m pip install --upgrade pip

echo "=== Testing wheel file ==="
# Install wheel to get dependencies and check import
python -m pip install --extra-index-url https://test.pypi.org/simple --upgrade --pre braingeneers
python -c "import braingeneers; print(braingeneers.__version__)"
echo "=== Done testing wheel file ==="

echo "=== Testing source tar file ==="
# Install tar gz and check import
python -m pip uninstall --yes braingeneers
python -m pip install --extra-index-url https://test.pypi.org/simple --upgrade --pre --no-binary=:all: braingeneers
python -c "import braingeneers; print(braingeneers.__version__)"
echo "=== Done testing source tar file ==="


publish:
needs: [dist, test-built-dist]
name: Publish to PyPI
environment: pypi
permissions:
id-token: write
runs-on: ubuntu-latest
if: github.event_name == 'release' && github.event.action == 'published'

steps:
- uses: actions/download-artifact@v3
with:
name: artifact
path: dist

- uses: pypa/[email protected]
if: startsWith(github.ref, 'refs/tags')
64 changes: 64 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
name: CI

on:
workflow_dispatch:
pull_request:
push:
branches:
- master
- main
- development

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

env:
FORCE_COLOR: 3

jobs:
# pre-commit:
# name: Format
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v3
# with:
# fetch-depth: 0
# - uses: actions/setup-python@v4
# with:
# python-version: "3.x"
# - uses: pre-commit/[email protected]
# with:
# extra_args: --hook-stage manual --all-files
lsetiawan marked this conversation as resolved.
Show resolved Hide resolved

checks:
name: Check Python ${{ matrix.python-version }} on ${{ matrix.runs-on }}
runs-on: ${{ matrix.runs-on }}
continue-on-error: ${{ matrix.experimental }}
strategy:
fail-fast: false
matrix:
python-version: ["3.10", "3.11", "3.12"]
runs-on: [ubuntu-latest, macos-latest, windows-latest]
experimental: [false, false, true]

steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0

- uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true

- name: Install package
run: python -m pip install .[test]

- name: Test package
run: >-
python -m pytest -ra --cov --cov-report=xml --cov-report=term
--durations=20

- name: Upload coverage report
uses: codecov/[email protected]
Loading
Loading