eye-patch 1.0.0__tar.gz → 1.1.0__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 (58) hide show
  1. {eye_patch-1.0.0 → eye_patch-1.1.0}/.github/workflows/cd.yml +2 -2
  2. {eye_patch-1.0.0 → eye_patch-1.1.0}/.github/workflows/ci.yml +9 -7
  3. {eye_patch-1.0.0 → eye_patch-1.1.0}/.pre-commit-config.yaml +5 -4
  4. {eye_patch-1.0.0 → eye_patch-1.1.0}/PKG-INFO +73 -7
  5. eye_patch-1.1.0/README.md +93 -0
  6. eye_patch-1.1.0/docs/Makefile +20 -0
  7. eye_patch-1.1.0/docs/_static/adaptive_mac_dark.png +0 -0
  8. eye_patch-1.1.0/docs/_static/adaptive_mac_light.png +0 -0
  9. eye_patch-1.1.0/docs/_static/multi_scale_erode.jpg +0 -0
  10. eye_patch-1.1.0/docs/_static/open_filter.mp4 +0 -0
  11. eye_patch-1.1.0/docs/conf.py +73 -0
  12. {eye_patch-1.0.0 → eye_patch-1.1.0}/docs/index.md +8 -7
  13. eye_patch-1.1.0/docs/masking.md +387 -0
  14. eye_patch-1.1.0/docs/scripts/adaptive_mac_figure.py +304 -0
  15. eye_patch-1.1.0/eye_patch/__main__.py +8 -0
  16. {eye_patch-1.0.0 → eye_patch-1.1.0}/eye_patch/_version.py +2 -2
  17. eye_patch-1.1.0/eye_patch/cli.py +49 -0
  18. eye_patch-1.1.0/eye_patch/convolve.py +219 -0
  19. eye_patch-1.1.0/eye_patch/erosion.py +325 -0
  20. eye_patch-1.1.0/eye_patch/extract.py +185 -0
  21. eye_patch-1.1.0/eye_patch/flood_fill.py +198 -0
  22. eye_patch-1.1.0/eye_patch/logging.py +48 -0
  23. eye_patch-1.1.0/eye_patch/mac.py +213 -0
  24. eye_patch-1.1.0/eye_patch/masking.py +313 -0
  25. {eye_patch-1.0.0 → eye_patch-1.1.0}/eye_patch/naming.py +7 -5
  26. eye_patch-1.1.0/eye_patch/options.py +49 -0
  27. {eye_patch-1.0.0 → eye_patch-1.1.0}/eye_patch/pixel_utils.py +15 -5
  28. eye_patch-1.1.0/eye_patch/snr.py +116 -0
  29. {eye_patch-1.0.0 → eye_patch-1.1.0}/pyproject.toml +10 -5
  30. eye_patch-1.1.0/tests/conftest.py +42 -0
  31. eye_patch-1.1.0/tests/test_cli.py +122 -0
  32. eye_patch-1.1.0/tests/test_convolve.py +118 -0
  33. eye_patch-1.1.0/tests/test_erosion.py +337 -0
  34. eye_patch-1.1.0/tests/test_extract.py +180 -0
  35. eye_patch-1.1.0/tests/test_flood_fill.py +68 -0
  36. eye_patch-1.1.0/tests/test_logging.py +45 -0
  37. eye_patch-1.1.0/tests/test_mac.py +97 -0
  38. eye_patch-1.1.0/tests/test_masking.py +410 -0
  39. eye_patch-1.1.0/tests/test_snr.py +41 -0
  40. eye_patch-1.1.0/uv.lock +2366 -0
  41. eye_patch-1.0.0/README.md +0 -26
  42. eye_patch-1.0.0/docs/conf.py +0 -64
  43. eye_patch-1.0.0/eye_patch/masking.py +0 -1174
  44. eye_patch-1.0.0/tests/test_masking.py +0 -514
  45. eye_patch-1.0.0/uv.lock +0 -2074
  46. {eye_patch-1.0.0 → eye_patch-1.1.0}/.copier-answers.yml +0 -0
  47. {eye_patch-1.0.0 → eye_patch-1.1.0}/.git_archival.txt +0 -0
  48. {eye_patch-1.0.0 → eye_patch-1.1.0}/.gitattributes +0 -0
  49. {eye_patch-1.0.0 → eye_patch-1.1.0}/.github/CONTRIBUTING.md +0 -0
  50. {eye_patch-1.0.0 → eye_patch-1.1.0}/.github/dependabot.yml +0 -0
  51. {eye_patch-1.0.0 → eye_patch-1.1.0}/.github/release.yml +0 -0
  52. {eye_patch-1.0.0 → eye_patch-1.1.0}/.gitignore +0 -0
  53. {eye_patch-1.0.0 → eye_patch-1.1.0}/.readthedocs.yaml +0 -0
  54. {eye_patch-1.0.0 → eye_patch-1.1.0}/LICENSE +0 -0
  55. {eye_patch-1.0.0 → eye_patch-1.1.0}/eye_patch/__init__.py +0 -0
  56. {eye_patch-1.0.0 → eye_patch-1.1.0}/eye_patch/_version.pyi +0 -0
  57. {eye_patch-1.0.0 → eye_patch-1.1.0}/eye_patch/py.typed +0 -0
  58. {eye_patch-1.0.0 → eye_patch-1.1.0}/tests/test_package.py +0 -0
@@ -25,11 +25,11 @@ jobs:
25
25
  runs-on: ubuntu-latest
26
26
 
27
27
  steps:
28
- - uses: actions/checkout@v6
28
+ - uses: actions/checkout@v7
29
29
  with:
30
30
  fetch-depth: 0
31
31
 
32
- - uses: hynek/build-and-inspect-python-package@v2
32
+ - uses: hynek/build-and-inspect-python-package@v3.0.1
33
33
 
34
34
  publish:
35
35
  needs: [dist]
@@ -22,12 +22,14 @@ jobs:
22
22
  name: Format
23
23
  runs-on: ubuntu-latest
24
24
  steps:
25
- - uses: actions/checkout@v6
25
+ - uses: actions/checkout@v7
26
26
  with:
27
27
  fetch-depth: 0
28
- - uses: actions/setup-python@v6
28
+ - uses: actions/setup-python@v7
29
29
  with:
30
- python-version: "3.x"
30
+ python-version: |
31
+ 3.11
32
+ 3.x
31
33
 
32
34
  - uses: astral-sh/setup-uv@v7
33
35
 
@@ -42,15 +44,15 @@ jobs:
42
44
  strategy:
43
45
  fail-fast: false
44
46
  matrix:
45
- python-version: ["3.10", "3.12", "3.13", "3.14"]
47
+ python-version: ["3.11", "3.12", "3.13", "3.14"]
46
48
  runs-on: [ubuntu-latest]
47
49
 
48
50
  steps:
49
- - uses: actions/checkout@v6
51
+ - uses: actions/checkout@v7
50
52
  with:
51
53
  fetch-depth: 0
52
54
 
53
- - uses: actions/setup-python@v6
55
+ - uses: actions/setup-python@v7
54
56
  with:
55
57
  python-version: ${{ matrix.python-version }}
56
58
  allow-prereleases: true
@@ -66,6 +68,6 @@ jobs:
66
68
  --durations=20
67
69
 
68
70
  - name: Upload coverage report
69
- uses: codecov/codecov-action@v6
71
+ uses: codecov/codecov-action@v7
70
72
  with:
71
73
  token: ${{ secrets.CODECOV_TOKEN }}
@@ -36,25 +36,26 @@ repos:
36
36
  - id: rst-inline-touching-normal
37
37
 
38
38
  - repo: https://github.com/rbubley/mirrors-prettier
39
- rev: "v3.8.3"
39
+ rev: "v3.9.4"
40
40
  hooks:
41
41
  - id: prettier
42
42
  types_or: [yaml, markdown, html, css, scss, javascript, json]
43
43
  args: [--prose-wrap=always]
44
44
 
45
45
  - repo: https://github.com/astral-sh/ruff-pre-commit
46
- rev: "v0.15.12"
46
+ rev: "v0.15.20"
47
47
  hooks:
48
48
  - id: ruff-check
49
49
  args: ["--fix", "--show-fixes"]
50
50
  - id: ruff-format
51
51
 
52
52
  - repo: https://github.com/pre-commit/mirrors-mypy
53
- rev: "v2.0.0"
53
+ rev: "v2.1.0"
54
54
  hooks:
55
55
  - id: mypy
56
56
  files: eye_patch|tests
57
57
  args: ["--ignore-missing-imports"]
58
+ language_version: python3.11
58
59
  additional_dependencies:
59
60
  - numpy
60
61
  - capn-crunch
@@ -87,7 +88,7 @@ repos:
87
88
  additional_dependencies: ["validate-pyproject-schema-store[all]"]
88
89
 
89
90
  - repo: https://github.com/python-jsonschema/check-jsonschema
90
- rev: "0.37.2"
91
+ rev: "0.37.4"
91
92
  hooks:
92
93
  - id: check-dependabot
93
94
  - id: check-github-workflows
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: eye-patch
3
- Version: 1.0.0
3
+ Version: 1.1.0
4
4
  Summary: The pirate mask.
5
5
  Project-URL: Homepage, https://github.com/flint-crew/eye-patch
6
6
  Project-URL: Bug Tracker, https://github.com/flint-crew/eye-patch/issues
@@ -16,7 +16,6 @@ Classifier: Operating System :: OS Independent
16
16
  Classifier: Programming Language :: Python
17
17
  Classifier: Programming Language :: Python :: 3
18
18
  Classifier: Programming Language :: Python :: 3 :: Only
19
- Classifier: Programming Language :: Python :: 3.10
20
19
  Classifier: Programming Language :: Python :: 3.11
21
20
  Classifier: Programming Language :: Python :: 3.12
22
21
  Classifier: Programming Language :: Python :: 3.13
@@ -34,10 +33,6 @@ Description-Content-Type: text/markdown
34
33
 
35
34
  # Eye Patch
36
35
 
37
- The pirate mask!
38
-
39
- <img width="256" height="256" alt="image" src="https://github.com/user-attachments/assets/2a8e442c-036b-4d78-8370-180c02588c95" />
40
-
41
36
  [![Actions Status][actions-badge]][actions-link]
42
37
  [![Documentation Status][rtd-badge]][rtd-link]
43
38
  [![PyPI version][pypi-version]][pypi-link]
@@ -58,3 +53,74 @@ The pirate mask!
58
53
  [coverage-link]: https://codecov.io/github/flint-crew/eye-patch
59
54
 
60
55
  <!-- prettier-ignore-end -->
56
+
57
+ The pirate mask!
58
+
59
+ A Python library and CLI tools for creating masks to assist deconvolution of
60
+ interferometric data.
61
+
62
+ This library was originally the masking module of the
63
+ [Flint](https://github.com/flint-crew/flint) pipeline, but has now been
64
+ separated out for flexible use.
65
+
66
+ <img width="256" height="256" alt="image" src="https://github.com/user-attachments/assets/2a8e442c-036b-4d78-8370-180c02588c95" />
67
+
68
+ ## Documentation
69
+
70
+ Full documentation is provided on
71
+ [Read the Docs](https://eye-patch.readthedocs.io/).
72
+
73
+ ## Installation
74
+
75
+ We publish releases on PyPI:
76
+
77
+ ```bash
78
+ # PyPI release
79
+ pip install eye-patch
80
+ ```
81
+
82
+ You can also install directly from the git repository:
83
+
84
+ ```bash
85
+ # Direct git install (latest push)
86
+ pip install git+https://github.com/flint-crew/eye-patch.git
87
+ ```
88
+
89
+ Or, from a local clone:
90
+
91
+ ```bash
92
+ git clone https://github.com/flint-crew/eye-patch.git
93
+ cd eye-patch
94
+ pip install -e .
95
+ ```
96
+
97
+ We highly recommend using [uv](https://docs.astral.sh/uv/) for speedy
98
+ installations. Reproducible builds can be created using `uv sync`:
99
+
100
+ ```bash
101
+ git clone https://github.com/flint-crew/eye-patch.git
102
+ cd eye-patch
103
+ uv venv
104
+ uv sync
105
+ ```
106
+
107
+ ## Contributions
108
+
109
+ Contributions are welcome! Please do submit a pull request or issue if you spot
110
+ something you would like to address.
111
+
112
+ The full set of dev tooling can be installed via:
113
+
114
+ ```bash
115
+ git clone https://github.com/flint-crew/eye-patch.git
116
+ cd eye-patch
117
+ pip install -e . --group dev # --group needs pip 25.1 or newer
118
+ ```
119
+
120
+ Or, using `uv`:
121
+
122
+ ```bash
123
+ git clone https://github.com/flint-crew/eye-patch.git
124
+ cd eye-patch
125
+ uv sync --group dev
126
+ ```
@@ -0,0 +1,93 @@
1
+ # Eye Patch
2
+
3
+ [![Actions Status][actions-badge]][actions-link]
4
+ [![Documentation Status][rtd-badge]][rtd-link]
5
+ [![PyPI version][pypi-version]][pypi-link]
6
+ [![PyPI platforms][pypi-platforms]][pypi-link]
7
+ [![Coverage][coverage-badge]][coverage-link]
8
+
9
+ <!-- SPHINX-START -->
10
+
11
+ <!-- prettier-ignore-start -->
12
+ [actions-badge]: https://github.com/flint-crew/eye-patch/workflows/CI/badge.svg
13
+ [actions-link]: https://github.com/flint-crew/eye-patch/actions
14
+ [pypi-link]: https://pypi.org/project/eye-patch/
15
+ [pypi-platforms]: https://img.shields.io/pypi/pyversions/eye-patch
16
+ [pypi-version]: https://img.shields.io/pypi/v/eye-patch
17
+ [rtd-badge]: https://readthedocs.org/projects/eye-patch/badge/?version=latest
18
+ [rtd-link]: https://eye-patch.readthedocs.io/en/latest/?badge=latest
19
+ [coverage-badge]: https://codecov.io/github/flint-crew/eye-patch/branch/main/graph/badge.svg
20
+ [coverage-link]: https://codecov.io/github/flint-crew/eye-patch
21
+
22
+ <!-- prettier-ignore-end -->
23
+
24
+ The pirate mask!
25
+
26
+ A Python library and CLI tools for creating masks to assist deconvolution of
27
+ interferometric data.
28
+
29
+ This library was originally the masking module of the
30
+ [Flint](https://github.com/flint-crew/flint) pipeline, but has now been
31
+ separated out for flexible use.
32
+
33
+ <img width="256" height="256" alt="image" src="https://github.com/user-attachments/assets/2a8e442c-036b-4d78-8370-180c02588c95" />
34
+
35
+ ## Documentation
36
+
37
+ Full documentation is provided on
38
+ [Read the Docs](https://eye-patch.readthedocs.io/).
39
+
40
+ ## Installation
41
+
42
+ We publish releases on PyPI:
43
+
44
+ ```bash
45
+ # PyPI release
46
+ pip install eye-patch
47
+ ```
48
+
49
+ You can also install directly from the git repository:
50
+
51
+ ```bash
52
+ # Direct git install (latest push)
53
+ pip install git+https://github.com/flint-crew/eye-patch.git
54
+ ```
55
+
56
+ Or, from a local clone:
57
+
58
+ ```bash
59
+ git clone https://github.com/flint-crew/eye-patch.git
60
+ cd eye-patch
61
+ pip install -e .
62
+ ```
63
+
64
+ We highly recommend using [uv](https://docs.astral.sh/uv/) for speedy
65
+ installations. Reproducible builds can be created using `uv sync`:
66
+
67
+ ```bash
68
+ git clone https://github.com/flint-crew/eye-patch.git
69
+ cd eye-patch
70
+ uv venv
71
+ uv sync
72
+ ```
73
+
74
+ ## Contributions
75
+
76
+ Contributions are welcome! Please do submit a pull request or issue if you spot
77
+ something you would like to address.
78
+
79
+ The full set of dev tooling can be installed via:
80
+
81
+ ```bash
82
+ git clone https://github.com/flint-crew/eye-patch.git
83
+ cd eye-patch
84
+ pip install -e . --group dev # --group needs pip 25.1 or newer
85
+ ```
86
+
87
+ Or, using `uv`:
88
+
89
+ ```bash
90
+ git clone https://github.com/flint-crew/eye-patch.git
91
+ cd eye-patch
92
+ uv sync --group dev
93
+ ```
@@ -0,0 +1,20 @@
1
+ # Minimal makefile for Sphinx documentation
2
+ #
3
+
4
+ # You can set these variables from the command line, and also
5
+ # from the environment for the first two.
6
+ SPHINXOPTS ?=
7
+ SPHINXBUILD ?= sphinx-build
8
+ SOURCEDIR = .
9
+ BUILDDIR = _build
10
+
11
+ # Put it first so that "make" without argument is like "make help".
12
+ help:
13
+ @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
14
+
15
+ .PHONY: help Makefile
16
+
17
+ # Catch-all target: route all unknown targets to Sphinx using the new
18
+ # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
19
+ %: Makefile
20
+ @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
@@ -0,0 +1,73 @@
1
+ # Configuration file for the Sphinx documentation builder.
2
+ #
3
+ # For the full list of built-in configuration values, see the documentation:
4
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html
5
+
6
+ # -- Project information -----------------------------------------------------
7
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
8
+ from __future__ import annotations
9
+
10
+ import eye_patch
11
+
12
+ project = "eye-patch"
13
+ copyright = "2025, Tim Galvin"
14
+ author = "Tim Galvin"
15
+ version = release = eye_patch.__version__
16
+
17
+ # -- General configuration ---------------------------------------------------
18
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
19
+
20
+
21
+ extensions = [
22
+ "myst_parser",
23
+ "sphinx.ext.autodoc",
24
+ "sphinx_autodoc_typehints",
25
+ "sphinx.ext.doctest",
26
+ "sphinx.ext.intersphinx",
27
+ "sphinx.ext.todo",
28
+ "sphinx.ext.coverage",
29
+ "sphinx.ext.mathjax",
30
+ "sphinx.ext.ifconfig",
31
+ "sphinx.ext.viewcode",
32
+ "sphinx.ext.githubpages",
33
+ "sphinx.ext.napoleon",
34
+ "sphinx_copybutton",
35
+ "autoapi.extension",
36
+ "sphinxarg.ext",
37
+ ]
38
+
39
+ myst_enable_extensions = [
40
+ "colon_fence",
41
+ ]
42
+
43
+ autoapi_type = "python"
44
+ autoapi_dirs = ["../eye_patch"]
45
+ autoapi_member_order = "groupwise"
46
+ autoapi_keep_files = False
47
+ autoapi_root = "autoapi"
48
+ autoapi_add_toctree_entry = True
49
+
50
+ # Napoleon settings
51
+ napoleon_google_docstring = True
52
+ napoleon_numpy_docstring = True
53
+ napoleon_include_init_with_doc = True
54
+ napoleon_include_private_with_doc = True
55
+ napoleon_include_special_with_doc = True
56
+ napoleon_use_admonition_for_examples = False
57
+ napoleon_use_admonition_for_notes = False
58
+ napoleon_use_admonition_for_references = False
59
+ napoleon_use_ivar = False
60
+ napoleon_use_param = True
61
+ napoleon_use_rtype = True
62
+
63
+ source_suffix = [".rst", ".md"]
64
+ templates_path = ["_templates"]
65
+ exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"]
66
+
67
+
68
+ # -- Options for HTML output -------------------------------------------------
69
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
70
+
71
+ html_theme = "furo"
72
+ # html_theme = "sphinx_rtd_theme"
73
+ html_static_path = ["_static"]
@@ -1,15 +1,16 @@
1
- # eye-patch
2
-
3
- ```{toctree}
4
- :maxdepth: 2
5
- :hidden:
6
-
7
- ```
1
+ # Eye Patch
8
2
 
9
3
  ```{include} ../README.md
10
4
  :start-after: <!-- SPHINX-START -->
11
5
  ```
12
6
 
7
+ ## Table of contents
8
+
9
+ ```{toctree}
10
+ :maxdepth: 1
11
+ masking.md
12
+ ```
13
+
13
14
  ## Indices and tables
14
15
 
15
16
  - {ref}`genindex`