phasorpy 0.1__tar.gz → 0.2__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.
Files changed (111) hide show
  1. phasorpy-0.2/.codecov.yml +11 -0
  2. phasorpy-0.2/.github/ISSUE_TEMPLATE/bug_report.md +36 -0
  3. phasorpy-0.2/.github/dependabot.yml +11 -0
  4. phasorpy-0.2/.github/pull_request_template.md +15 -0
  5. phasorpy-0.2/.github/workflows/build_sdist.yml +77 -0
  6. phasorpy-0.2/.github/workflows/build_wheels.yml +43 -0
  7. phasorpy-0.2/.github/workflows/coverage.yml +40 -0
  8. phasorpy-0.2/.github/workflows/deploy-docs.yml +54 -0
  9. phasorpy-0.2/.github/workflows/run-tests.yml +162 -0
  10. phasorpy-0.2/.gitignore +203 -0
  11. phasorpy-0.2/.pre-commit-config.yaml +103 -0
  12. phasorpy-0.2/CHANGELOG.md +1 -0
  13. phasorpy-0.2/CODE_OF_CONDUCT.md +1 -0
  14. phasorpy-0.2/CONTRIBUTING.md +1 -0
  15. {phasorpy-0.1 → phasorpy-0.2}/LICENSE.txt +21 -21
  16. {phasorpy-0.1 → phasorpy-0.2}/MANIFEST.in +18 -18
  17. {phasorpy-0.1/src/phasorpy.egg-info → phasorpy-0.2}/PKG-INFO +78 -78
  18. {phasorpy-0.1 → phasorpy-0.2}/README.md +23 -23
  19. phasorpy-0.2/docs/Makefile +20 -0
  20. {phasorpy-0.1 → phasorpy-0.2}/docs/_static/custom-icons.js +16 -16
  21. phasorpy-0.2/docs/_static/switcher.json +13 -0
  22. {phasorpy-0.1 → phasorpy-0.2}/docs/acknowledgments.rst +35 -35
  23. {phasorpy-0.1 → phasorpy-0.2}/docs/api/_phasorpy.rst +12 -12
  24. {phasorpy-0.1 → phasorpy-0.2}/docs/api/_utils.rst +9 -9
  25. {phasorpy-0.1 → phasorpy-0.2}/docs/api/cli.rst +6 -6
  26. {phasorpy-0.1 → phasorpy-0.2}/docs/api/color.rst +20 -20
  27. {phasorpy-0.1 → phasorpy-0.2}/docs/api/components.rst +5 -5
  28. {phasorpy-0.1 → phasorpy-0.2}/docs/api/cursors.rst +5 -5
  29. {phasorpy-0.1 → phasorpy-0.2}/docs/api/datasets.rst +9 -9
  30. {phasorpy-0.1 → phasorpy-0.2}/docs/api/index.rst +26 -26
  31. {phasorpy-0.1 → phasorpy-0.2}/docs/api/io.rst +5 -5
  32. {phasorpy-0.1 → phasorpy-0.2}/docs/api/phasor.rst +5 -5
  33. {phasorpy-0.1 → phasorpy-0.2}/docs/api/phasorpy.rst +6 -6
  34. {phasorpy-0.1 → phasorpy-0.2}/docs/api/plot.rst +5 -5
  35. {phasorpy-0.1 → phasorpy-0.2}/docs/api/utils.rst +5 -5
  36. {phasorpy-0.1 → phasorpy-0.2}/docs/code_of_conduct.rst +143 -143
  37. {phasorpy-0.1 → phasorpy-0.2}/docs/conf.py +146 -123
  38. {phasorpy-0.1 → phasorpy-0.2}/docs/contributing.rst +292 -292
  39. {phasorpy-0.1 → phasorpy-0.2}/docs/index.rst +78 -74
  40. {phasorpy-0.1 → phasorpy-0.2}/docs/license.rst +22 -22
  41. phasorpy-0.2/docs/make.bat +39 -0
  42. {phasorpy-0.1 → phasorpy-0.2}/docs/phasor_approach.rst +303 -287
  43. {phasorpy-0.1 → phasorpy-0.2}/docs/release.rst +176 -142
  44. phasorpy-0.2/docs/sg_execution_times.rst +67 -0
  45. {phasorpy-0.1 → phasorpy-0.2}/pyproject.toml +191 -191
  46. phasorpy-0.2/requirements_dev.txt +64 -0
  47. phasorpy-0.2/requirements_min.txt +13 -0
  48. {phasorpy-0.1 → phasorpy-0.2}/setup.cfg +4 -4
  49. {phasorpy-0.1 → phasorpy-0.2}/setup.py +53 -53
  50. {phasorpy-0.1 → phasorpy-0.2}/src/phasorpy/__init__.py +10 -10
  51. {phasorpy-0.1 → phasorpy-0.2}/src/phasorpy/__main__.py +7 -7
  52. {phasorpy-0.1 → phasorpy-0.2}/src/phasorpy/_phasorpy.pyx +2143 -1811
  53. {phasorpy-0.1 → phasorpy-0.2}/src/phasorpy/_typing.py +77 -77
  54. {phasorpy-0.1 → phasorpy-0.2}/src/phasorpy/_utils.py +454 -441
  55. {phasorpy-0.1 → phasorpy-0.2}/src/phasorpy/cli.py +87 -87
  56. {phasorpy-0.1 → phasorpy-0.2}/src/phasorpy/color.py +581 -581
  57. {phasorpy-0.1 → phasorpy-0.2}/src/phasorpy/components.py +313 -313
  58. {phasorpy-0.1 → phasorpy-0.2}/src/phasorpy/conftest.py +36 -36
  59. {phasorpy-0.1 → phasorpy-0.2}/src/phasorpy/cursors.py +502 -502
  60. {phasorpy-0.1 → phasorpy-0.2}/src/phasorpy/datasets.py +453 -433
  61. {phasorpy-0.1 → phasorpy-0.2}/src/phasorpy/io.py +1669 -1671
  62. {phasorpy-0.1 → phasorpy-0.2}/src/phasorpy/phasor.py +3311 -3135
  63. {phasorpy-0.1 → phasorpy-0.2}/src/phasorpy/plot.py +2074 -2074
  64. phasorpy-0.2/src/phasorpy/utils.py +368 -0
  65. {phasorpy-0.1 → phasorpy-0.2}/src/phasorpy/version.py +71 -71
  66. {phasorpy-0.1 → phasorpy-0.2/src/phasorpy.egg-info}/PKG-INFO +78 -78
  67. {phasorpy-0.1 → phasorpy-0.2}/src/phasorpy.egg-info/SOURCES.txt +25 -0
  68. {phasorpy-0.1 → phasorpy-0.2}/src/phasorpy.egg-info/not-zip-safe +1 -1
  69. {phasorpy-0.1 → phasorpy-0.2}/src/phasorpy.egg-info/requires.txt +1 -1
  70. {phasorpy-0.1 → phasorpy-0.2}/tests/conftest.py +24 -24
  71. {phasorpy-0.1 → phasorpy-0.2}/tests/test__phasorpy.py +423 -423
  72. {phasorpy-0.1 → phasorpy-0.2}/tests/test__typing.py +10 -10
  73. {phasorpy-0.1 → phasorpy-0.2}/tests/test__utils.py +244 -239
  74. {phasorpy-0.1 → phasorpy-0.2}/tests/test_cli.py +41 -41
  75. {phasorpy-0.1 → phasorpy-0.2}/tests/test_color.py +39 -39
  76. {phasorpy-0.1 → phasorpy-0.2}/tests/test_components.py +261 -261
  77. {phasorpy-0.1 → phasorpy-0.2}/tests/test_cursors.py +478 -478
  78. {phasorpy-0.1 → phasorpy-0.2}/tests/test_datasets.py +84 -84
  79. {phasorpy-0.1 → phasorpy-0.2}/tests/test_io.py +762 -762
  80. {phasorpy-0.1 → phasorpy-0.2}/tests/test_nan.py +387 -376
  81. {phasorpy-0.1 → phasorpy-0.2}/tests/test_phasor.py +2772 -2408
  82. {phasorpy-0.1 → phasorpy-0.2}/tests/test_phasorpy.py +18 -18
  83. {phasorpy-0.1 → phasorpy-0.2}/tests/test_plot.py +527 -527
  84. phasorpy-0.2/tests/test_utils.py +140 -0
  85. phasorpy-0.2/tools/build_manylinux2014.cmd +13 -0
  86. phasorpy-0.2/tools/build_manylinux2014.sh +10 -0
  87. phasorpy-0.2/tools/sha256.py +36 -0
  88. {phasorpy-0.1 → phasorpy-0.2}/tutorials/README.rst +9 -9
  89. {phasorpy-0.1 → phasorpy-0.2}/tutorials/api/README.rst +4 -4
  90. {phasorpy-0.1 → phasorpy-0.2}/tutorials/api/phasorpy_components.py +261 -261
  91. {phasorpy-0.1 → phasorpy-0.2}/tutorials/api/phasorpy_cursors.py +172 -172
  92. {phasorpy-0.1 → phasorpy-0.2}/tutorials/api/phasorpy_fret.py +234 -234
  93. {phasorpy-0.1 → phasorpy-0.2}/tutorials/api/phasorpy_lifetime_to_signal.py +195 -195
  94. phasorpy-0.2/tutorials/api/phasorpy_multi-harmonic.py +209 -0
  95. {phasorpy-0.1 → phasorpy-0.2}/tutorials/api/phasorpy_pca.py +150 -150
  96. {phasorpy-0.1 → phasorpy-0.2}/tutorials/api/phasorpy_phasor_from_lifetime.py +202 -202
  97. {phasorpy-0.1 → phasorpy-0.2}/tutorials/api/phasorpy_phasorplot.py +226 -226
  98. {phasorpy-0.1 → phasorpy-0.2}/tutorials/applications/README.rst +4 -4
  99. {phasorpy-0.1 → phasorpy-0.2}/tutorials/benchmarks/README.rst +4 -4
  100. {phasorpy-0.1 → phasorpy-0.2}/tutorials/benchmarks/phasorpy_phasor_from_signal.py +161 -161
  101. {phasorpy-0.1 → phasorpy-0.2}/tutorials/phasorpy_introduction.py +463 -425
  102. {phasorpy-0.1 → phasorpy-0.2}/tutorials/phasorpy_lfd_workshop.py +576 -576
  103. phasorpy-0.1/src/phasorpy/utils.py +0 -68
  104. phasorpy-0.1/tests/test_utils.py +0 -29
  105. {phasorpy-0.1 → phasorpy-0.2}/docs/_static/categorical.png +0 -0
  106. {phasorpy-0.1 → phasorpy-0.2}/docs/_static/logo.png +0 -0
  107. {phasorpy-0.1 → phasorpy-0.2}/docs/_static/srgb_spectrum.png +0 -0
  108. {phasorpy-0.1 → phasorpy-0.2}/src/phasorpy/py.typed +0 -0
  109. {phasorpy-0.1 → phasorpy-0.2}/src/phasorpy.egg-info/dependency_links.txt +0 -0
  110. {phasorpy-0.1 → phasorpy-0.2}/src/phasorpy.egg-info/entry_points.txt +0 -0
  111. {phasorpy-0.1 → phasorpy-0.2}/src/phasorpy.egg-info/top_level.txt +0 -0
@@ -0,0 +1,11 @@
1
+ codecov:
2
+ notify:
3
+ require_ci_to_pass: false
4
+ after_n_builds: 1
5
+ coverage:
6
+ status:
7
+ project:
8
+ default:
9
+ threshold: 0.1%
10
+ informational: true
11
+ comment: off
@@ -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,11 @@
1
+ version: 2
2
+
3
+ updates:
4
+ - package-ecosystem: "github-actions"
5
+ directory: "/"
6
+ schedule:
7
+ interval: "monthly"
8
+ groups:
9
+ github-actions:
10
+ patterns:
11
+ - "*"
@@ -0,0 +1,15 @@
1
+ ## Description
2
+
3
+ ...
4
+
5
+ ## Checklist
6
+
7
+ - [ ] The pull request title and description are concise.
8
+ - [ ] Related issues are linked in the description.
9
+ - [ ] New dependencies are explained.
10
+ - [ ] The source code and documentation can be distributed under the [MIT license](https://www.phasorpy.org/docs/stable/license/).
11
+ - [ ] The source code adheres to [code standards](https://www.phasorpy.org/docs/stable/contributing/#code-standards).
12
+ - [ ] New classes, functions, and features are thoroughly [tested](https://www.phasorpy.org/docs/stable/contributing/#tests).
13
+ - [ ] New, user-facing classes, functions, and features are [documented](https://www.phasorpy.org/docs/stable/contributing/#documentation).
14
+ - [ ] New features are covered in tutorials.
15
+ - [ ] No files other than source code, documentation, and project settings are added to the repository.
@@ -0,0 +1,77 @@
1
+ name: Build sdist
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
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 -U build
32
+ - name: Build sdist
33
+ run: |
34
+ python -m build --sdist .
35
+ - uses: actions/upload-artifact@v4
36
+ with:
37
+ name: sdist
38
+ path: dist
39
+
40
+ test_artifacts:
41
+ name: Test sdist
42
+ needs: [build_artifacts]
43
+ runs-on: ubuntu-latest
44
+ steps:
45
+ - uses: actions/download-artifact@v4
46
+ with:
47
+ name: sdist
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 setuptools build wheel numpy Cython
56
+ python -m twine check dist/*
57
+ python -m pip install --upgrade --no-build-isolation --no-cache-dir --no-deps --pre --no-index --find-links=dist phasorpy
58
+ python -c"from phasorpy import __version__;print(__version__)"
59
+
60
+ # Upload sdist and wheels manually for now
61
+ #
62
+ # upload_artifacts:
63
+ # name: Upload release to PyPI
64
+ # needs: [test_artifacts]
65
+ # runs-on: ubuntu-latest
66
+ # environment:
67
+ # name: pypi
68
+ # url: https://pypi.org/p/phasorpy
69
+ # permissions:
70
+ # id-token: write
71
+ # if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/v')
72
+ # steps:
73
+ # - uses: actions/download-artifact@v4
74
+ # with:
75
+ # name: releases
76
+ # path: dist
77
+ # - uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,43 @@
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
+ MPLBACKEND: agg
16
+
17
+ jobs:
18
+ build:
19
+ name: Build wheels on ${{ matrix.os }}
20
+ runs-on: ${{ matrix.os }}
21
+ strategy:
22
+ matrix:
23
+ os: [ubuntu-22.04, macos-13, windows-2019]
24
+ steps:
25
+ - uses: actions/checkout@v4
26
+ # - name: Set up QEMU
27
+ # if: runner.os == 'Linux'
28
+ # uses: docker/setup-qemu-action@v3
29
+ # with:
30
+ # platforms: all
31
+ - uses: pypa/cibuildwheel@v2.21.3
32
+ env:
33
+ # Building and testing manylinux2014_aarch64 too is slow.
34
+ # See https://github.com/phasorpy/phasorpy/pull/135
35
+ # CIBW_ARCHS_LINUX: x86_64 aarch64
36
+ CIBW_ARCHS_LINUX: auto
37
+ CIBW_ARCHS_MACOS: x86_64 arm64
38
+ CIBW_ARCHS_WINDOWS: AMD64 ARM64
39
+ CIBW_BUILD_VERBOSITY: 2
40
+ - uses: actions/upload-artifact@v4
41
+ with:
42
+ path: ./wheelhouse/*.whl
43
+ 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,162 @@
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-13"]
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-13"]
88
+ steps:
89
+ - uses: actions/checkout@v4
90
+ - uses: pypa/cibuildwheel@v2.21.3
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
+ # Building and testing manylinux2014_aarch64 too is slow.
102
+ # See https://github.com/phasorpy/phasorpy/pull/135
103
+ #
104
+ # build_wheels_arm64:
105
+ # name: Test Linux on AArch64
106
+ # runs-on: ${{ matrix.os }}
107
+ # strategy:
108
+ # fail-fast: false
109
+ # matrix:
110
+ # os: ["ubuntu-latest"]
111
+ # steps:
112
+ # - uses: actions/checkout@v4
113
+ # - name: Set up QEMU
114
+ # if: runner.os == 'Linux'
115
+ # uses: docker/setup-qemu-action@v3
116
+ # with:
117
+ # platforms: all
118
+ # - uses: pypa/cibuildwheel@v2.21.3
119
+ # env:
120
+ # CIBW_ARCHS_LINUX: aarch64
121
+ # CIBW_BUILD_VERBOSITY: 2
122
+ # CIBW_BUILD: "cp311*"
123
+ # CIBW_SKIP: "*musllinux*"
124
+ # - uses: actions/upload-artifact@v4
125
+ # with:
126
+ # path: ./wheelhouse/*.whl
127
+ # name: wheels-aarch64
128
+
129
+ static_analysis:
130
+ name: Static code analysis
131
+ runs-on: "ubuntu-latest"
132
+ strategy:
133
+ fail-fast: false
134
+ matrix:
135
+ python-version: ["3.12"]
136
+ steps:
137
+ - uses: actions/checkout@v4
138
+ - name: Set up Python ${{ matrix.python-version }}
139
+ uses: actions/setup-python@v5
140
+ with:
141
+ python-version: ${{ matrix.python-version }}
142
+ - name: Editable install
143
+ run: |
144
+ python -m pip install --upgrade pip
145
+ python -m pip install --editable .
146
+ python -m pip install -r requirements_dev.txt
147
+ python -m pip install -r requirements_min.txt
148
+ - name: Test with black
149
+ run: |
150
+ python -m black --check src/phasorpy tutorials docs
151
+ - name: Test with blackdoc
152
+ run: |
153
+ python -m blackdoc --check src/phasorpy
154
+ - name: Test with mypy
155
+ run: |
156
+ python -m mypy
157
+ - name: Test with isort
158
+ run: |
159
+ python -m isort --check src/phasorpy tutorials
160
+ - name: Check spelling
161
+ run: |
162
+ 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