phasorpy 0.1.dev0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- phasorpy-0.1.dev0/.codecov.yml +11 -0
- phasorpy-0.1.dev0/.github/ISSUE_TEMPLATE/bug_report.md +36 -0
- phasorpy-0.1.dev0/.github/dependabot.yml +11 -0
- phasorpy-0.1.dev0/.github/pull_request_template.md +24 -0
- phasorpy-0.1.dev0/.github/workflows/build_wheels.yml +37 -0
- phasorpy-0.1.dev0/.github/workflows/coverage.yml +40 -0
- phasorpy-0.1.dev0/.github/workflows/deploy-docs.yml +54 -0
- phasorpy-0.1.dev0/.github/workflows/release-pypi.yml +75 -0
- phasorpy-0.1.dev0/.github/workflows/run-tests.yml +134 -0
- phasorpy-0.1.dev0/.gitignore +203 -0
- phasorpy-0.1.dev0/.pre-commit-config.yaml +103 -0
- phasorpy-0.1.dev0/CHANGELOG.md +1 -0
- phasorpy-0.1.dev0/CODE_OF_CONDUCT.md +1 -0
- phasorpy-0.1.dev0/CONTRIBUTING.md +1 -0
- phasorpy-0.1.dev0/LICENSE.txt +21 -0
- phasorpy-0.1.dev0/MANIFEST.in +18 -0
- phasorpy-0.1.dev0/PKG-INFO +78 -0
- phasorpy-0.1.dev0/README.md +23 -0
- phasorpy-0.1.dev0/docs/Makefile +20 -0
- phasorpy-0.1.dev0/docs/_static/categorical.png +0 -0
- phasorpy-0.1.dev0/docs/_static/logo.png +0 -0
- phasorpy-0.1.dev0/docs/_static/srgb_spectrum.png +0 -0
- phasorpy-0.1.dev0/docs/acknowledgments.rst +32 -0
- phasorpy-0.1.dev0/docs/api/_phasorpy.rst +12 -0
- phasorpy-0.1.dev0/docs/api/_utils.rst +9 -0
- phasorpy-0.1.dev0/docs/api/cli.rst +6 -0
- phasorpy-0.1.dev0/docs/api/color.rst +20 -0
- phasorpy-0.1.dev0/docs/api/components.rst +5 -0
- phasorpy-0.1.dev0/docs/api/cursors.rst +5 -0
- phasorpy-0.1.dev0/docs/api/datasets.rst +9 -0
- phasorpy-0.1.dev0/docs/api/index.rst +26 -0
- phasorpy-0.1.dev0/docs/api/io.rst +5 -0
- phasorpy-0.1.dev0/docs/api/phasor.rst +5 -0
- phasorpy-0.1.dev0/docs/api/phasorpy.rst +6 -0
- phasorpy-0.1.dev0/docs/api/plot.rst +5 -0
- phasorpy-0.1.dev0/docs/api/utils.rst +5 -0
- phasorpy-0.1.dev0/docs/code_of_conduct.rst +143 -0
- phasorpy-0.1.dev0/docs/conf.py +121 -0
- phasorpy-0.1.dev0/docs/contributing.rst +292 -0
- phasorpy-0.1.dev0/docs/index.rst +77 -0
- phasorpy-0.1.dev0/docs/license.rst +22 -0
- phasorpy-0.1.dev0/docs/make.bat +39 -0
- phasorpy-0.1.dev0/docs/phasor_approach.rst +287 -0
- phasorpy-0.1.dev0/docs/release.rst +11 -0
- phasorpy-0.1.dev0/docs/sg_execution_times.rst +67 -0
- phasorpy-0.1.dev0/pyproject.toml +191 -0
- phasorpy-0.1.dev0/requirements_dev.txt +63 -0
- phasorpy-0.1.dev0/requirements_min.txt +13 -0
- phasorpy-0.1.dev0/setup.cfg +4 -0
- phasorpy-0.1.dev0/setup.py +53 -0
- phasorpy-0.1.dev0/src/phasorpy/__init__.py +10 -0
- phasorpy-0.1.dev0/src/phasorpy/__main__.py +7 -0
- phasorpy-0.1.dev0/src/phasorpy/_phasorpy.pyx +1811 -0
- phasorpy-0.1.dev0/src/phasorpy/_typing.py +77 -0
- phasorpy-0.1.dev0/src/phasorpy/_utils.py +441 -0
- phasorpy-0.1.dev0/src/phasorpy/cli.py +87 -0
- phasorpy-0.1.dev0/src/phasorpy/color.py +581 -0
- phasorpy-0.1.dev0/src/phasorpy/components.py +313 -0
- phasorpy-0.1.dev0/src/phasorpy/conftest.py +36 -0
- phasorpy-0.1.dev0/src/phasorpy/cursors.py +502 -0
- phasorpy-0.1.dev0/src/phasorpy/datasets.py +433 -0
- phasorpy-0.1.dev0/src/phasorpy/io.py +1671 -0
- phasorpy-0.1.dev0/src/phasorpy/phasor.py +3135 -0
- phasorpy-0.1.dev0/src/phasorpy/plot.py +2074 -0
- phasorpy-0.1.dev0/src/phasorpy/py.typed +0 -0
- phasorpy-0.1.dev0/src/phasorpy/utils.py +68 -0
- phasorpy-0.1.dev0/src/phasorpy/version.py +71 -0
- phasorpy-0.1.dev0/src/phasorpy.egg-info/PKG-INFO +78 -0
- phasorpy-0.1.dev0/src/phasorpy.egg-info/SOURCES.txt +104 -0
- phasorpy-0.1.dev0/src/phasorpy.egg-info/dependency_links.txt +1 -0
- phasorpy-0.1.dev0/src/phasorpy.egg-info/entry_points.txt +2 -0
- phasorpy-0.1.dev0/src/phasorpy.egg-info/not-zip-safe +1 -0
- phasorpy-0.1.dev0/src/phasorpy.egg-info/requires.txt +29 -0
- phasorpy-0.1.dev0/src/phasorpy.egg-info/top_level.txt +1 -0
- phasorpy-0.1.dev0/tests/conftest.py +24 -0
- phasorpy-0.1.dev0/tests/test__phasorpy.py +423 -0
- phasorpy-0.1.dev0/tests/test__typing.py +10 -0
- phasorpy-0.1.dev0/tests/test__utils.py +239 -0
- phasorpy-0.1.dev0/tests/test_cli.py +41 -0
- phasorpy-0.1.dev0/tests/test_color.py +39 -0
- phasorpy-0.1.dev0/tests/test_components.py +261 -0
- phasorpy-0.1.dev0/tests/test_cursors.py +478 -0
- phasorpy-0.1.dev0/tests/test_datasets.py +84 -0
- phasorpy-0.1.dev0/tests/test_io.py +762 -0
- phasorpy-0.1.dev0/tests/test_nan.py +376 -0
- phasorpy-0.1.dev0/tests/test_phasor.py +2408 -0
- phasorpy-0.1.dev0/tests/test_phasorpy.py +18 -0
- phasorpy-0.1.dev0/tests/test_plot.py +527 -0
- phasorpy-0.1.dev0/tests/test_utils.py +29 -0
- phasorpy-0.1.dev0/tutorials/README.rst +9 -0
- phasorpy-0.1.dev0/tutorials/api/README.rst +4 -0
- phasorpy-0.1.dev0/tutorials/api/phasorpy_components.py +261 -0
- phasorpy-0.1.dev0/tutorials/api/phasorpy_cursors.py +172 -0
- phasorpy-0.1.dev0/tutorials/api/phasorpy_fret.py +234 -0
- phasorpy-0.1.dev0/tutorials/api/phasorpy_lifetime_to_signal.py +195 -0
- phasorpy-0.1.dev0/tutorials/api/phasorpy_pca.py +150 -0
- phasorpy-0.1.dev0/tutorials/api/phasorpy_phasor_from_lifetime.py +202 -0
- phasorpy-0.1.dev0/tutorials/api/phasorpy_phasorplot.py +226 -0
- phasorpy-0.1.dev0/tutorials/applications/README.rst +4 -0
- phasorpy-0.1.dev0/tutorials/benchmarks/README.rst +4 -0
- phasorpy-0.1.dev0/tutorials/benchmarks/phasorpy_phasor_from_signal.py +161 -0
- phasorpy-0.1.dev0/tutorials/misc/README.rst +2 -0
- phasorpy-0.1.dev0/tutorials/misc/phasorpy_logo.py +23 -0
- phasorpy-0.1.dev0/tutorials/phasorpy_introduction.py +429 -0
- phasorpy-0.1.dev0/tutorials/phasorpy_lfd_workshop.py +576 -0
@@ -0,0 +1,36 @@
|
|
1
|
+
---
|
2
|
+
name: Bug report
|
3
|
+
about: Create a report to help improve PhasorPy
|
4
|
+
title: ""
|
5
|
+
labels: ""
|
6
|
+
assignees: ""
|
7
|
+
---
|
8
|
+
|
9
|
+
**Describe the bug**
|
10
|
+
|
11
|
+
A clear and concise description of what the bug is and what was expected to happen.
|
12
|
+
|
13
|
+
**To Reproduce**
|
14
|
+
|
15
|
+
A minimal, self-contained Python code reproducing the problem. Format the code using markdown, for example:
|
16
|
+
|
17
|
+
```Python
|
18
|
+
import phasorpy
|
19
|
+
phasorpy.do_something('my.file')
|
20
|
+
```
|
21
|
+
|
22
|
+
A Python traceback if available, for example:
|
23
|
+
|
24
|
+
```Python traceback
|
25
|
+
Traceback (most recent call last):
|
26
|
+
File "<stdin>", line 1, in <module>
|
27
|
+
AttributeError: module 'phasorpy' has no attribute 'do_something'
|
28
|
+
```
|
29
|
+
|
30
|
+
Any data files necessary to run the code can be attached to the issue or shared via cloud storage, preferably on [Zenodo.org](https://zenodo.org/communities/phasorpy/).
|
31
|
+
|
32
|
+
Information how PhasorPy was installed (pip, conda, or other) and the console output of:
|
33
|
+
|
34
|
+
```
|
35
|
+
$ python -m phasorpy versions
|
36
|
+
```
|
@@ -0,0 +1,24 @@
|
|
1
|
+
## Description
|
2
|
+
|
3
|
+
...
|
4
|
+
|
5
|
+
## Release note
|
6
|
+
|
7
|
+
Summarize the changes in the code block below to be included in the
|
8
|
+
[release notes](https://www.phasorpy.org/docs/stable/release.html):
|
9
|
+
|
10
|
+
```release-note
|
11
|
+
...
|
12
|
+
```
|
13
|
+
|
14
|
+
## Checklist
|
15
|
+
|
16
|
+
- [ ] The pull request title, summary, and description are concise.
|
17
|
+
- [ ] Related issues are linked in the description.
|
18
|
+
- [ ] New dependencies are explained.
|
19
|
+
- [ ] The source code and documentation can be distributed under the [MIT license](https://www.phasorpy.org/docs/stable/license.html).
|
20
|
+
- [ ] The source code adheres to [code standards](https://www.phasorpy.org/docs/stable/contributing.html#code-standards).
|
21
|
+
- [ ] New classes, functions, and features are thoroughly [tested](https://www.phasorpy.org/docs/stable/contributing.html#tests).
|
22
|
+
- [ ] New, user-facing classes, functions, and features are [documented](https://www.phasorpy.org/docs/stable/contributing.html#documentation).
|
23
|
+
- [ ] New features are covered in tutorials.
|
24
|
+
- [ ] No files other than source code, documentation, and project settings are added to the repository.
|
@@ -0,0 +1,37 @@
|
|
1
|
+
name: Build wheels
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
tags:
|
6
|
+
- "*"
|
7
|
+
branches:
|
8
|
+
- main
|
9
|
+
# pull_request:
|
10
|
+
# branches:
|
11
|
+
# - main
|
12
|
+
workflow_dispatch:
|
13
|
+
|
14
|
+
env:
|
15
|
+
CIBW_TEST_SKIP: "cp313*"
|
16
|
+
MPLBACKEND: agg
|
17
|
+
|
18
|
+
jobs:
|
19
|
+
build:
|
20
|
+
name: Build wheels on ${{ matrix.os }}
|
21
|
+
runs-on: ${{ matrix.os }}
|
22
|
+
strategy:
|
23
|
+
matrix:
|
24
|
+
os: [ubuntu-22.04, macos-12, windows-2019]
|
25
|
+
steps:
|
26
|
+
- uses: actions/checkout@v4
|
27
|
+
- uses: pypa/cibuildwheel@v2.20.0
|
28
|
+
env:
|
29
|
+
# CIBW_ENVIRONMENT: "PIP_PRE=1"
|
30
|
+
CIBW_BUILD_VERBOSITY: 2
|
31
|
+
CIBW_ARCHS_LINUX: auto
|
32
|
+
CIBW_ARCHS_MACOS: x86_64 arm64
|
33
|
+
CIBW_ARCHS_WINDOWS: AMD64 ARM64
|
34
|
+
- uses: actions/upload-artifact@v4
|
35
|
+
with:
|
36
|
+
path: ./wheelhouse/*.whl
|
37
|
+
name: wheels-${{ matrix.os }}
|
@@ -0,0 +1,40 @@
|
|
1
|
+
name: Code coverage
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches:
|
6
|
+
- main
|
7
|
+
pull_request:
|
8
|
+
branches:
|
9
|
+
- main
|
10
|
+
workflow_dispatch:
|
11
|
+
|
12
|
+
jobs:
|
13
|
+
code_coverage:
|
14
|
+
name: Code coverage
|
15
|
+
runs-on: "ubuntu-latest"
|
16
|
+
strategy:
|
17
|
+
fail-fast: false
|
18
|
+
matrix:
|
19
|
+
python-version: ["3.12"]
|
20
|
+
steps:
|
21
|
+
- uses: actions/checkout@v4
|
22
|
+
- name: Set up Python ${{ matrix.python-version }}
|
23
|
+
uses: actions/setup-python@v5
|
24
|
+
with:
|
25
|
+
python-version: ${{ matrix.python-version }}
|
26
|
+
- name: Editable install
|
27
|
+
run: |
|
28
|
+
python -m pip install --upgrade pip
|
29
|
+
python -m pip install --editable .
|
30
|
+
python -m pip install -r requirements_dev.txt
|
31
|
+
- name: Generate coverage report
|
32
|
+
run: |
|
33
|
+
pytest --cov=phasorpy --cov-report=xml tests
|
34
|
+
- name: Upload coverage to Codecov
|
35
|
+
uses: codecov/codecov-action@v4
|
36
|
+
with:
|
37
|
+
env_vars: OS,PYTHON
|
38
|
+
fail_ci_if_error: false
|
39
|
+
token: ${{ secrets.PHASORPY_CODECOV_TOKEN }}
|
40
|
+
verbose: true
|
@@ -0,0 +1,54 @@
|
|
1
|
+
name: Deploy documentation
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
tags:
|
6
|
+
- "*"
|
7
|
+
branches:
|
8
|
+
- main
|
9
|
+
pull_request:
|
10
|
+
branches:
|
11
|
+
- main
|
12
|
+
workflow_dispatch:
|
13
|
+
|
14
|
+
env:
|
15
|
+
MPLBACKEND: agg
|
16
|
+
|
17
|
+
jobs:
|
18
|
+
build:
|
19
|
+
runs-on: ubuntu-latest
|
20
|
+
strategy:
|
21
|
+
fail-fast: false
|
22
|
+
matrix:
|
23
|
+
python-version: ["3.12"]
|
24
|
+
|
25
|
+
steps:
|
26
|
+
- uses: actions/checkout@v4
|
27
|
+
- name: Set up Python ${{ matrix.python-version }}
|
28
|
+
uses: actions/setup-python@v5
|
29
|
+
with:
|
30
|
+
python-version: ${{ matrix.python-version }}
|
31
|
+
- name: Install package and dependencies
|
32
|
+
run: |
|
33
|
+
python -m pip install --upgrade pip
|
34
|
+
python -m pip install -r requirements_dev.txt
|
35
|
+
python -m pip install --no-build-isolation --no-deps --verbose --editable .
|
36
|
+
- name: Build docs
|
37
|
+
run: |
|
38
|
+
cd docs
|
39
|
+
make dirhtml
|
40
|
+
- name: Upload artifacts
|
41
|
+
uses: actions/upload-artifact@v4
|
42
|
+
with:
|
43
|
+
name: docs
|
44
|
+
path: docs/_build/dirhtml
|
45
|
+
- name: Deploy docs
|
46
|
+
if: github.event_name == 'push'
|
47
|
+
uses: peaceiris/actions-gh-pages@v4
|
48
|
+
with:
|
49
|
+
personal_token: ${{ secrets.PHASORPY_DOC_DEPLOY_KEY }}
|
50
|
+
external_repository: phasorpy/phasorpy.github.io
|
51
|
+
publish_dir: docs/_build/dirhtml
|
52
|
+
publish_branch: main
|
53
|
+
destination_dir: docs/${{github.ref_name}}
|
54
|
+
# cname: phasorpy.org
|
@@ -0,0 +1,75 @@
|
|
1
|
+
name: Publish to PyPI
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
tags:
|
6
|
+
- "*"
|
7
|
+
branches:
|
8
|
+
- main
|
9
|
+
pull_request:
|
10
|
+
branches:
|
11
|
+
- main
|
12
|
+
workflow_dispatch:
|
13
|
+
|
14
|
+
jobs:
|
15
|
+
build_artifacts:
|
16
|
+
name: Build sdist and wheel
|
17
|
+
runs-on: ubuntu-latest
|
18
|
+
strategy:
|
19
|
+
fail-fast: false
|
20
|
+
|
21
|
+
steps:
|
22
|
+
- uses: actions/checkout@v4
|
23
|
+
with:
|
24
|
+
submodules: true
|
25
|
+
fetch-depth: 0
|
26
|
+
- uses: actions/setup-python@v5
|
27
|
+
with:
|
28
|
+
python-version: "3.12"
|
29
|
+
- name: Install PyBuild
|
30
|
+
run: |
|
31
|
+
python -m pip install build
|
32
|
+
- name: Build wheel and sdist
|
33
|
+
run: |
|
34
|
+
python -m build .
|
35
|
+
- uses: actions/upload-artifact@v4
|
36
|
+
with:
|
37
|
+
name: releases
|
38
|
+
path: dist
|
39
|
+
|
40
|
+
test_artifacts:
|
41
|
+
name: Test sdist and wheel
|
42
|
+
needs: [build_artifacts]
|
43
|
+
runs-on: ubuntu-latest
|
44
|
+
steps:
|
45
|
+
- uses: actions/download-artifact@v4
|
46
|
+
with:
|
47
|
+
name: releases
|
48
|
+
path: dist
|
49
|
+
- uses: actions/setup-python@v5
|
50
|
+
with:
|
51
|
+
python-version: "3.12"
|
52
|
+
- run: |
|
53
|
+
ls
|
54
|
+
ls dist
|
55
|
+
python -m pip install -U twine
|
56
|
+
python -m twine check dist/*
|
57
|
+
python -m pip install --upgrade --no-cache-dir --no-deps --pre --no-index --find-links=dist phasorpy
|
58
|
+
python -c"from phasorpy import __version__;print(__version__)"
|
59
|
+
|
60
|
+
upload_artifacts:
|
61
|
+
name: Upload release to PyPI
|
62
|
+
needs: [build_artifacts]
|
63
|
+
runs-on: ubuntu-latest
|
64
|
+
environment:
|
65
|
+
name: pypi
|
66
|
+
url: https://pypi.org/p/phasorpy
|
67
|
+
permissions:
|
68
|
+
id-token: write
|
69
|
+
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/v')
|
70
|
+
steps:
|
71
|
+
- uses: actions/download-artifact@v4
|
72
|
+
with:
|
73
|
+
name: releases
|
74
|
+
path: dist
|
75
|
+
- uses: pypa/gh-action-pypi-publish@release/v1
|
@@ -0,0 +1,134 @@
|
|
1
|
+
name: Run tests
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches:
|
6
|
+
- main
|
7
|
+
pull_request:
|
8
|
+
branches:
|
9
|
+
- main
|
10
|
+
workflow_dispatch:
|
11
|
+
|
12
|
+
concurrency:
|
13
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
14
|
+
cancel-in-progress: true
|
15
|
+
|
16
|
+
env:
|
17
|
+
MPLBACKEND: agg
|
18
|
+
|
19
|
+
jobs:
|
20
|
+
test:
|
21
|
+
name: Test library and docs
|
22
|
+
runs-on: ${{ matrix.os }}
|
23
|
+
strategy:
|
24
|
+
fail-fast: false
|
25
|
+
matrix:
|
26
|
+
os: ["ubuntu-20.04"]
|
27
|
+
python-version: ["3.10", "3.12"]
|
28
|
+
# 3.11 tested with cibuildwheel
|
29
|
+
steps:
|
30
|
+
- uses: actions/checkout@v4
|
31
|
+
- name: Set up Python ${{ matrix.python-version }}
|
32
|
+
uses: actions/setup-python@v5
|
33
|
+
with:
|
34
|
+
python-version: ${{ matrix.python-version }}
|
35
|
+
- name: Editable install
|
36
|
+
run: |
|
37
|
+
python -m pip install --upgrade pip
|
38
|
+
python -m pip install --editable .
|
39
|
+
python -m pip install -r requirements_dev.txt
|
40
|
+
python -m pip install -r requirements_min.txt
|
41
|
+
- name: Print dependency versions
|
42
|
+
run: |
|
43
|
+
phasorpy versions
|
44
|
+
- name: Test with pytest
|
45
|
+
run: |
|
46
|
+
python -X dev -m pytest
|
47
|
+
- name: Build docs
|
48
|
+
run: |
|
49
|
+
cd docs
|
50
|
+
make dirhtml
|
51
|
+
|
52
|
+
test_win_mac:
|
53
|
+
name: Test Windows and macOS
|
54
|
+
runs-on: ${{ matrix.os }}
|
55
|
+
strategy:
|
56
|
+
fail-fast: false
|
57
|
+
matrix:
|
58
|
+
os: ["windows-2019", "macos-12"]
|
59
|
+
python-version: ["3.10"]
|
60
|
+
# 3.12 tested with cibuildwheel
|
61
|
+
steps:
|
62
|
+
- uses: actions/checkout@v4
|
63
|
+
- name: Set up Python ${{ matrix.python-version }}
|
64
|
+
uses: actions/setup-python@v5
|
65
|
+
with:
|
66
|
+
python-version: ${{ matrix.python-version }}
|
67
|
+
- name: Editable install
|
68
|
+
run: |
|
69
|
+
python -m pip install --upgrade pip
|
70
|
+
python -m pip install --editable .
|
71
|
+
python -m pip install -r requirements_dev.txt
|
72
|
+
python -m pip install -r requirements_min.txt
|
73
|
+
- name: Test with pytest
|
74
|
+
run: |
|
75
|
+
python -X dev -m pytest
|
76
|
+
- name: Build docs
|
77
|
+
run: |
|
78
|
+
cd docs
|
79
|
+
make dirhtml
|
80
|
+
|
81
|
+
build_wheels:
|
82
|
+
name: Test cibuildwheel
|
83
|
+
runs-on: ${{ matrix.os }}
|
84
|
+
strategy:
|
85
|
+
fail-fast: false
|
86
|
+
matrix:
|
87
|
+
os: ["ubuntu-22.04", "windows-2019", "macos-12"]
|
88
|
+
steps:
|
89
|
+
- uses: actions/checkout@v4
|
90
|
+
- uses: pypa/cibuildwheel@v2.20.0
|
91
|
+
env:
|
92
|
+
# CIBW_ENVIRONMENT: "PIP_PRE=1"
|
93
|
+
CIBW_BUILD_VERBOSITY: 3
|
94
|
+
CIBW_BUILD: "cp311-manylinux_x86_64 cp312-win_amd64 cp312-macosx_x86_64"
|
95
|
+
CIBW_SKIP:
|
96
|
+
- uses: actions/upload-artifact@v4
|
97
|
+
with:
|
98
|
+
path: ./wheelhouse/*.whl
|
99
|
+
name: wheels-${{ matrix.os }}
|
100
|
+
|
101
|
+
static_analysis:
|
102
|
+
name: Static code analysis
|
103
|
+
runs-on: "ubuntu-latest"
|
104
|
+
strategy:
|
105
|
+
fail-fast: false
|
106
|
+
matrix:
|
107
|
+
python-version: ["3.12"]
|
108
|
+
steps:
|
109
|
+
- uses: actions/checkout@v4
|
110
|
+
- name: Set up Python ${{ matrix.python-version }}
|
111
|
+
uses: actions/setup-python@v5
|
112
|
+
with:
|
113
|
+
python-version: ${{ matrix.python-version }}
|
114
|
+
- name: Editable install
|
115
|
+
run: |
|
116
|
+
python -m pip install --upgrade pip
|
117
|
+
python -m pip install --editable .
|
118
|
+
python -m pip install -r requirements_dev.txt
|
119
|
+
python -m pip install -r requirements_min.txt
|
120
|
+
- name: Test with black
|
121
|
+
run: |
|
122
|
+
python -m black --check src/phasorpy tutorials docs
|
123
|
+
- name: Test with blackdoc
|
124
|
+
run: |
|
125
|
+
python -m blackdoc --check src/phasorpy
|
126
|
+
- name: Test with mypy
|
127
|
+
run: |
|
128
|
+
python -m mypy
|
129
|
+
- name: Test with isort
|
130
|
+
run: |
|
131
|
+
python -m isort --check src/phasorpy tutorials
|
132
|
+
- name: Check spelling
|
133
|
+
run: |
|
134
|
+
python -m codespell_lib
|
@@ -0,0 +1,203 @@
|
|
1
|
+
_/*
|
2
|
+
data/*
|
3
|
+
testdata/*
|
4
|
+
test_data/*
|
5
|
+
tests/data/*
|
6
|
+
tutorials/data/*
|
7
|
+
*.tif
|
8
|
+
*.tiff
|
9
|
+
*.lsm
|
10
|
+
*.ome.tif
|
11
|
+
*.sdt
|
12
|
+
*.b64
|
13
|
+
*.r64
|
14
|
+
*.ref
|
15
|
+
*.npy
|
16
|
+
*.flif
|
17
|
+
*.lif
|
18
|
+
*.czi
|
19
|
+
*.ptu
|
20
|
+
*.lnk
|
21
|
+
.DS_Store
|
22
|
+
|
23
|
+
# Byte-compiled / optimized / DLL files
|
24
|
+
__pycache__/
|
25
|
+
*.py[cod]
|
26
|
+
*$py.class
|
27
|
+
|
28
|
+
# C extensions
|
29
|
+
*.so
|
30
|
+
*.pdb
|
31
|
+
|
32
|
+
# generated by Cython
|
33
|
+
_*.c
|
34
|
+
|
35
|
+
# Distribution / packaging
|
36
|
+
setup.cfg
|
37
|
+
.Python
|
38
|
+
build/
|
39
|
+
develop-eggs/
|
40
|
+
dist/
|
41
|
+
downloads/
|
42
|
+
eggs/
|
43
|
+
.eggs/
|
44
|
+
lib/
|
45
|
+
lib64/
|
46
|
+
parts/
|
47
|
+
sdist/
|
48
|
+
var/
|
49
|
+
wheels/
|
50
|
+
share/python-wheels/
|
51
|
+
*.egg-info/
|
52
|
+
.installed.cfg
|
53
|
+
*.egg
|
54
|
+
*.whl
|
55
|
+
MANIFEST
|
56
|
+
|
57
|
+
# PyInstaller
|
58
|
+
# Usually these files are written by a python script from a template
|
59
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
60
|
+
*.manifest
|
61
|
+
*.spec
|
62
|
+
|
63
|
+
# Installer logs
|
64
|
+
pip-log.txt
|
65
|
+
pip-delete-this-directory.txt
|
66
|
+
|
67
|
+
# Unit test / coverage reports
|
68
|
+
_htmlcov/
|
69
|
+
htmlcov/
|
70
|
+
.tox/
|
71
|
+
.nox/
|
72
|
+
.coverage
|
73
|
+
.coverage.*
|
74
|
+
.cache
|
75
|
+
nosetests.xml
|
76
|
+
coverage.xml
|
77
|
+
*.cover
|
78
|
+
*.py,cover
|
79
|
+
.hypothesis/
|
80
|
+
.pytest_cache/
|
81
|
+
.ruff_cache/
|
82
|
+
cover/
|
83
|
+
|
84
|
+
# Translations
|
85
|
+
*.mo
|
86
|
+
*.pot
|
87
|
+
|
88
|
+
# Django stuff:
|
89
|
+
*.log
|
90
|
+
local_settings.py
|
91
|
+
db.sqlite3
|
92
|
+
db.sqlite3-journal
|
93
|
+
|
94
|
+
# Flask stuff:
|
95
|
+
instance/
|
96
|
+
.webassets-cache
|
97
|
+
|
98
|
+
# Scrapy stuff:
|
99
|
+
.scrapy
|
100
|
+
|
101
|
+
# Sphinx documentation
|
102
|
+
_build/
|
103
|
+
docs/build/
|
104
|
+
docs/_build/
|
105
|
+
docs/examples/
|
106
|
+
docs/tutorials/
|
107
|
+
docs/sg_execution_times.rst
|
108
|
+
|
109
|
+
# PyBuilder
|
110
|
+
.pybuilder/
|
111
|
+
target/
|
112
|
+
|
113
|
+
# Jupyter Notebook
|
114
|
+
.ipynb_checkpoints
|
115
|
+
|
116
|
+
# IPython
|
117
|
+
profile_default/
|
118
|
+
ipython_config.py
|
119
|
+
|
120
|
+
# pyenv
|
121
|
+
# For a library or package, you might want to ignore these files since the code is
|
122
|
+
# intended to run in multiple environments; otherwise, check them in:
|
123
|
+
.python-version
|
124
|
+
|
125
|
+
# pipenv
|
126
|
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
127
|
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
128
|
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
129
|
+
# install all needed dependencies.
|
130
|
+
Pipfile.lock
|
131
|
+
|
132
|
+
# poetry
|
133
|
+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
134
|
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
135
|
+
# commonly ignored for libraries.
|
136
|
+
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
137
|
+
poetry.lock
|
138
|
+
|
139
|
+
# pdm
|
140
|
+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
141
|
+
pdm.lock
|
142
|
+
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
|
143
|
+
# in version control.
|
144
|
+
# https://pdm.fming.dev/#use-with-ide
|
145
|
+
.pdm.toml
|
146
|
+
|
147
|
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
148
|
+
__pypackages__/
|
149
|
+
|
150
|
+
# Celery stuff
|
151
|
+
celerybeat-schedule
|
152
|
+
celerybeat.pid
|
153
|
+
|
154
|
+
# SageMath parsed files
|
155
|
+
*.sage.py
|
156
|
+
|
157
|
+
# Environments
|
158
|
+
.env
|
159
|
+
.venv
|
160
|
+
env/
|
161
|
+
venv/
|
162
|
+
ENV/
|
163
|
+
env.bak/
|
164
|
+
venv.bak/
|
165
|
+
phasorpy_dev
|
166
|
+
phasorpy-dev
|
167
|
+
|
168
|
+
# Spyder project settings
|
169
|
+
.spyderproject
|
170
|
+
.spyproject
|
171
|
+
|
172
|
+
# Rope project settings
|
173
|
+
.ropeproject
|
174
|
+
|
175
|
+
# mkdocs documentation
|
176
|
+
/site
|
177
|
+
|
178
|
+
# mypy
|
179
|
+
.mypy_cache/
|
180
|
+
.dmypy.json
|
181
|
+
dmypy.json
|
182
|
+
|
183
|
+
# Pyre type checker
|
184
|
+
.pyre/
|
185
|
+
|
186
|
+
# pytype static type analyzer
|
187
|
+
.pytype/
|
188
|
+
|
189
|
+
# Cython debug symbols
|
190
|
+
cython_debug/
|
191
|
+
|
192
|
+
.vs
|
193
|
+
.vscode
|
194
|
+
*.code-workspace
|
195
|
+
|
196
|
+
# PyCharm
|
197
|
+
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
198
|
+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
199
|
+
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
200
|
+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
201
|
+
.idea/
|
202
|
+
|
203
|
+
.benchmarks
|