dolphin 0.22.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.
- dolphin-0.22.0/.dockerignore +8 -0
- dolphin-0.22.0/.flake8 +3 -0
- dolphin-0.22.0/.git-blame-ignore-revs +2 -0
- dolphin-0.22.0/.github/ISSUE_TEMPLATE/bug_report.yml +60 -0
- dolphin-0.22.0/.github/ISSUE_TEMPLATE/feature_request.yml +48 -0
- dolphin-0.22.0/.github/dependabot.yml +10 -0
- dolphin-0.22.0/.github/release.yml +5 -0
- dolphin-0.22.0/.github/workflows/benchmark.yml +85 -0
- dolphin-0.22.0/.github/workflows/cd.yml +37 -0
- dolphin-0.22.0/.github/workflows/test-build-push.yml +118 -0
- dolphin-0.22.0/.gitignore +171 -0
- dolphin-0.22.0/.pre-commit-config.yaml +41 -0
- dolphin-0.22.0/.readthedocs.yaml +24 -0
- dolphin-0.22.0/CHANGELOG.md +580 -0
- dolphin-0.22.0/CONTRIBUTING.md +93 -0
- dolphin-0.22.0/LICENSE +236 -0
- dolphin-0.22.0/MANIFEST.in +3 -0
- dolphin-0.22.0/PKG-INFO +149 -0
- dolphin-0.22.0/README.md +98 -0
- dolphin-0.22.0/asv.conf.json +45 -0
- dolphin-0.22.0/benchmarks/README_CI.md +28 -0
- dolphin-0.22.0/benchmarks/__init__.py +0 -0
- dolphin-0.22.0/benchmarks/benchmarks.py +217 -0
- dolphin-0.22.0/conda-env.yml +22 -0
- dolphin-0.22.0/docker/Dockerfile +84 -0
- dolphin-0.22.0/docker/build-docker-image.sh +90 -0
- dolphin-0.22.0/docker/create-lockfile.sh +96 -0
- dolphin-0.22.0/docker/specfile.txt +197 -0
- dolphin-0.22.0/docs/background-theory.md +0 -0
- dolphin-0.22.0/docs/developer-setup.md +2 -0
- dolphin-0.22.0/docs/gen_ref_pages.py +32 -0
- dolphin-0.22.0/docs/getting-started.md +5 -0
- dolphin-0.22.0/docs/gpu-setup.md +38 -0
- dolphin-0.22.0/docs/how-to-guides.md +0 -0
- dolphin-0.22.0/docs/img/apple-touch-icon.png +0 -0
- dolphin-0.22.0/docs/img/favicon-16x16.png +0 -0
- dolphin-0.22.0/docs/img/favicon-32x32.png +0 -0
- dolphin-0.22.0/docs/img/favicon.ico +0 -0
- dolphin-0.22.0/docs/img/site.webmanifest +1 -0
- dolphin-0.22.0/docs/index.md +12 -0
- dolphin-0.22.0/docs/javascripts/mathjax.js +18 -0
- dolphin-0.22.0/docs/mdx_bib.py +266 -0
- dolphin-0.22.0/docs/notebooks/simulate-demo.ipynb +470 -0
- dolphin-0.22.0/docs/notebooks/walkthrough-basic.ipynb +994 -0
- dolphin-0.22.0/docs/references.bib +166 -0
- dolphin-0.22.0/docs/requirements.txt +11 -0
- dolphin-0.22.0/docs/tutorials.md +21 -0
- dolphin-0.22.0/mkdocs.yml +68 -0
- dolphin-0.22.0/pyproject.toml +128 -0
- dolphin-0.22.0/requirements.txt +13 -0
- dolphin-0.22.0/scripts/create_glrt_cutoffs.py +109 -0
- dolphin-0.22.0/scripts/plot_shps.py +211 -0
- dolphin-0.22.0/scripts/test_run_bench.sh +14 -0
- dolphin-0.22.0/setup.cfg +4 -0
- dolphin-0.22.0/src/dolphin/__init__.py +9 -0
- dolphin-0.22.0/src/dolphin/__main__.py +9 -0
- dolphin-0.22.0/src/dolphin/_cli_timeseries.py +144 -0
- dolphin-0.22.0/src/dolphin/_cli_unwrap.py +150 -0
- dolphin-0.22.0/src/dolphin/_decorators.py +148 -0
- dolphin-0.22.0/src/dolphin/_log.py +137 -0
- dolphin-0.22.0/src/dolphin/_overviews.py +174 -0
- dolphin-0.22.0/src/dolphin/_show_versions.py +130 -0
- dolphin-0.22.0/src/dolphin/_types.py +136 -0
- dolphin-0.22.0/src/dolphin/_version.py +16 -0
- dolphin-0.22.0/src/dolphin/atmosphere/__init__.py +33 -0
- dolphin-0.22.0/src/dolphin/atmosphere/_netcdf.py +521 -0
- dolphin-0.22.0/src/dolphin/atmosphere/_utils.py +241 -0
- dolphin-0.22.0/src/dolphin/atmosphere/ionosphere.py +416 -0
- dolphin-0.22.0/src/dolphin/atmosphere/model_levels.py +1247 -0
- dolphin-0.22.0/src/dolphin/atmosphere/troposphere.py +505 -0
- dolphin-0.22.0/src/dolphin/atmosphere/weather_model.py +867 -0
- dolphin-0.22.0/src/dolphin/baseline.py +157 -0
- dolphin-0.22.0/src/dolphin/cli.py +34 -0
- dolphin-0.22.0/src/dolphin/filtering.py +194 -0
- dolphin-0.22.0/src/dolphin/goldstein.py +99 -0
- dolphin-0.22.0/src/dolphin/interferogram.py +780 -0
- dolphin-0.22.0/src/dolphin/interpolation.py +214 -0
- dolphin-0.22.0/src/dolphin/io/__init__.py +8 -0
- dolphin-0.22.0/src/dolphin/io/_background.py +264 -0
- dolphin-0.22.0/src/dolphin/io/_blocks.py +349 -0
- dolphin-0.22.0/src/dolphin/io/_core.py +779 -0
- dolphin-0.22.0/src/dolphin/io/_paths.py +197 -0
- dolphin-0.22.0/src/dolphin/io/_process.py +58 -0
- dolphin-0.22.0/src/dolphin/io/_readers.py +1078 -0
- dolphin-0.22.0/src/dolphin/io/_utils.py +264 -0
- dolphin-0.22.0/src/dolphin/io/_writers.py +479 -0
- dolphin-0.22.0/src/dolphin/log-config.json +45 -0
- dolphin-0.22.0/src/dolphin/masking.py +147 -0
- dolphin-0.22.0/src/dolphin/phase_link/__init__.py +9 -0
- dolphin-0.22.0/src/dolphin/phase_link/_compress.py +45 -0
- dolphin-0.22.0/src/dolphin/phase_link/_core.jl +19 -0
- dolphin-0.22.0/src/dolphin/phase_link/_core.py +507 -0
- dolphin-0.22.0/src/dolphin/phase_link/_eigenvalues.py +205 -0
- dolphin-0.22.0/src/dolphin/phase_link/_ps_filling.py +153 -0
- dolphin-0.22.0/src/dolphin/phase_link/covariance.py +195 -0
- dolphin-0.22.0/src/dolphin/phase_link/metrics.py +95 -0
- dolphin-0.22.0/src/dolphin/phase_link/simulate.py +433 -0
- dolphin-0.22.0/src/dolphin/ps.py +489 -0
- dolphin-0.22.0/src/dolphin/py.typed +0 -0
- dolphin-0.22.0/src/dolphin/shp/__init__.py +117 -0
- dolphin-0.22.0/src/dolphin/shp/_common.py +79 -0
- dolphin-0.22.0/src/dolphin/shp/_glrt.py +206 -0
- dolphin-0.22.0/src/dolphin/shp/_ks.py +243 -0
- dolphin-0.22.0/src/dolphin/shp/glrt_cutoffs.csv +1201 -0
- dolphin-0.22.0/src/dolphin/similarity.py +325 -0
- dolphin-0.22.0/src/dolphin/stack.py +466 -0
- dolphin-0.22.0/src/dolphin/stitching.py +631 -0
- dolphin-0.22.0/src/dolphin/timeseries.py +926 -0
- dolphin-0.22.0/src/dolphin/unwrap/__init__.py +5 -0
- dolphin-0.22.0/src/dolphin/unwrap/_constants.py +11 -0
- dolphin-0.22.0/src/dolphin/unwrap/_isce3.py +153 -0
- dolphin-0.22.0/src/dolphin/unwrap/_post_process.py +127 -0
- dolphin-0.22.0/src/dolphin/unwrap/_snaphu_py.py +227 -0
- dolphin-0.22.0/src/dolphin/unwrap/_tophu.py +189 -0
- dolphin-0.22.0/src/dolphin/unwrap/_unwrap.py +441 -0
- dolphin-0.22.0/src/dolphin/unwrap/_unwrap_3d.py +108 -0
- dolphin-0.22.0/src/dolphin/unwrap/_utils.py +162 -0
- dolphin-0.22.0/src/dolphin/utils.py +685 -0
- dolphin-0.22.0/src/dolphin/workflows/__init__.py +4 -0
- dolphin-0.22.0/src/dolphin/workflows/_cli_config.py +407 -0
- dolphin-0.22.0/src/dolphin/workflows/_cli_run.py +70 -0
- dolphin-0.22.0/src/dolphin/workflows/_utils.py +32 -0
- dolphin-0.22.0/src/dolphin/workflows/config/__init__.py +9 -0
- dolphin-0.22.0/src/dolphin/workflows/config/_common.py +436 -0
- dolphin-0.22.0/src/dolphin/workflows/config/_displacement.py +237 -0
- dolphin-0.22.0/src/dolphin/workflows/config/_enums.py +33 -0
- dolphin-0.22.0/src/dolphin/workflows/config/_ps.py +77 -0
- dolphin-0.22.0/src/dolphin/workflows/config/_unwrap_options.py +265 -0
- dolphin-0.22.0/src/dolphin/workflows/config/_unwrapping.py +74 -0
- dolphin-0.22.0/src/dolphin/workflows/config/_yaml_model.py +220 -0
- dolphin-0.22.0/src/dolphin/workflows/displacement.py +358 -0
- dolphin-0.22.0/src/dolphin/workflows/ps.py +120 -0
- dolphin-0.22.0/src/dolphin/workflows/sequential.py +183 -0
- dolphin-0.22.0/src/dolphin/workflows/single.py +422 -0
- dolphin-0.22.0/src/dolphin/workflows/stitching_bursts.py +168 -0
- dolphin-0.22.0/src/dolphin/workflows/unwrapping.py +118 -0
- dolphin-0.22.0/src/dolphin/workflows/wrapped_phase.py +386 -0
- dolphin-0.22.0/src/dolphin.egg-info/PKG-INFO +149 -0
- dolphin-0.22.0/src/dolphin.egg-info/SOURCES.txt +191 -0
- dolphin-0.22.0/src/dolphin.egg-info/dependency_links.txt +1 -0
- dolphin-0.22.0/src/dolphin.egg-info/entry_points.txt +2 -0
- dolphin-0.22.0/src/dolphin.egg-info/requires.txt +39 -0
- dolphin-0.22.0/src/dolphin.egg-info/top_level.txt +1 -0
- dolphin-0.22.0/tests/conftest.py +514 -0
- dolphin-0.22.0/tests/data/baseline_cslcs/OPERA_L2_CSLC-S1_T042-088905-IW1_20231021T140757Z_20231023T003801Z_S1A_VV_v1.0.h5 +0 -0
- dolphin-0.22.0/tests/data/baseline_cslcs/OPERA_L2_CSLC-S1_T042-088905-IW2_20231009T140758Z_20231010T204936Z_S1A_VV_v1.0.h5 +0 -0
- dolphin-0.22.0/tests/data/baseline_cslcs/copy_hdf5_subset.py +38 -0
- dolphin-0.22.0/tests/data/idaho_slc_file_list.txt.zip +0 -0
- dolphin-0.22.0/tests/data/ionosphere_files/jplg0010.22i +11417 -0
- dolphin-0.22.0/tests/data/ionosphere_files/jplg0020.22i +11417 -0
- dolphin-0.22.0/tests/data/ionosphere_files/jplg0030.22i +11417 -0
- dolphin-0.22.0/tests/data/ps-fix/failing_data_idxs.npz +0 -0
- dolphin-0.22.0/tests/data/tec_files.txt +3 -0
- dolphin-0.22.0/tests/data/troposphere_files/ERA5_N17_N22_W159_W147_20220101_14.grb +0 -0
- dolphin-0.22.0/tests/data/troposphere_files/ERA5_N17_N22_W159_W147_20220102_14.grb +0 -0
- dolphin-0.22.0/tests/data/troposphere_files/ERA5_N17_N22_W159_W147_20220103_14.grb +0 -0
- dolphin-0.22.0/tests/data/weather_model_files.txt +3 -0
- dolphin-0.22.0/tests/make_netcdf.py +157 -0
- dolphin-0.22.0/tests/requirements.txt +13 -0
- dolphin-0.22.0/tests/test_baseline.py +23 -0
- dolphin-0.22.0/tests/test_cli.py +47 -0
- dolphin-0.22.0/tests/test_decorators.py +96 -0
- dolphin-0.22.0/tests/test_filtering.py +18 -0
- dolphin-0.22.0/tests/test_interferogram.py +370 -0
- dolphin-0.22.0/tests/test_io_background.py +5 -0
- dolphin-0.22.0/tests/test_io_blocks.py +244 -0
- dolphin-0.22.0/tests/test_io_core.py +285 -0
- dolphin-0.22.0/tests/test_io_paths.py +119 -0
- dolphin-0.22.0/tests/test_io_readers.py +542 -0
- dolphin-0.22.0/tests/test_io_writers.py +152 -0
- dolphin-0.22.0/tests/test_overviews.py +55 -0
- dolphin-0.22.0/tests/test_phase_link_compress.py +43 -0
- dolphin-0.22.0/tests/test_phase_link_core.py +183 -0
- dolphin-0.22.0/tests/test_phase_link_covariance.py +154 -0
- dolphin-0.22.0/tests/test_phase_link_eigs.py +84 -0
- dolphin-0.22.0/tests/test_phase_link_metrics.py +56 -0
- dolphin-0.22.0/tests/test_phase_link_ps_filling.py +146 -0
- dolphin-0.22.0/tests/test_ps.py +169 -0
- dolphin-0.22.0/tests/test_show_versions.py +29 -0
- dolphin-0.22.0/tests/test_shp.py +264 -0
- dolphin-0.22.0/tests/test_similarity.py +97 -0
- dolphin-0.22.0/tests/test_stack.py +243 -0
- dolphin-0.22.0/tests/test_stitching.py +196 -0
- dolphin-0.22.0/tests/test_timeseries.py +229 -0
- dolphin-0.22.0/tests/test_unwrap.py +332 -0
- dolphin-0.22.0/tests/test_unwrap_utils.py +97 -0
- dolphin-0.22.0/tests/test_utils.py +92 -0
- dolphin-0.22.0/tests/test_workflows_config.py +420 -0
- dolphin-0.22.0/tests/test_workflows_displacement.py +181 -0
- dolphin-0.22.0/tests/test_workflows_ps.py +51 -0
- dolphin-0.22.0/tests/test_workflows_sequential.py +125 -0
- dolphin-0.22.0/tests/test_workflows_single.py +41 -0
- dolphin-0.22.0/tests/test_workflows_utils.py +84 -0
dolphin-0.22.0/.flake8
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
name: Bug Report
|
|
2
|
+
description: Create a report to help us improve
|
|
3
|
+
title: "[Bug]: "
|
|
4
|
+
labels: ["bug", "needs triage"]
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: |
|
|
9
|
+
> _Thanks for filing a bug ticket. We appreciate your time and effort. Please answer a few questions._
|
|
10
|
+
- type: dropdown
|
|
11
|
+
id: checked-for-duplicates
|
|
12
|
+
attributes:
|
|
13
|
+
label: Checked for duplicates
|
|
14
|
+
description: Have you checked for duplicate issue tickets?
|
|
15
|
+
multiple: false
|
|
16
|
+
options:
|
|
17
|
+
- "Yes - I've already checked"
|
|
18
|
+
- "No - I haven't checked"
|
|
19
|
+
validations:
|
|
20
|
+
required: yes
|
|
21
|
+
- type: textarea
|
|
22
|
+
id: description
|
|
23
|
+
attributes:
|
|
24
|
+
label: Describe the bug
|
|
25
|
+
description: A clear and concise description of what the bug is. Plain-text snippets preferred but screenshots welcome.
|
|
26
|
+
placeholder: Tell us what you saw
|
|
27
|
+
value: "When I did [...] action, I noticed [...]"
|
|
28
|
+
validations:
|
|
29
|
+
required: true
|
|
30
|
+
- type: textarea
|
|
31
|
+
id: expected-behavior
|
|
32
|
+
attributes:
|
|
33
|
+
label: What did you expect?
|
|
34
|
+
description: A clear and concise description of what you expect to happen
|
|
35
|
+
placeholder: Tell us what you expected
|
|
36
|
+
value: "I expected [...]"
|
|
37
|
+
validations:
|
|
38
|
+
required: true
|
|
39
|
+
- type: textarea
|
|
40
|
+
id: reproduction
|
|
41
|
+
attributes:
|
|
42
|
+
label: Reproducible steps
|
|
43
|
+
description: "How would we reproduce this bug? Please walk us through it step by step. Plain-text snippets preferred but screenshots welcome."
|
|
44
|
+
value: |
|
|
45
|
+
1.
|
|
46
|
+
2.
|
|
47
|
+
3.
|
|
48
|
+
...
|
|
49
|
+
If you have a `dolphin_config.yaml` that you used, you can attach that as well.
|
|
50
|
+
render: bash
|
|
51
|
+
- type: textarea
|
|
52
|
+
id: environment
|
|
53
|
+
attributes:
|
|
54
|
+
label: Environment
|
|
55
|
+
description: "What is your environment?"
|
|
56
|
+
value: |
|
|
57
|
+
Please paste the output of the following:
|
|
58
|
+
`python -c "import dolphin; print(dolphin.show_versions())"`
|
|
59
|
+
...
|
|
60
|
+
render: bash
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
name: New Feature
|
|
2
|
+
description: Submit a new feature request
|
|
3
|
+
title: "[New Feature]: "
|
|
4
|
+
labels: ["enhancement", "needs triage"]
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: |
|
|
9
|
+
> _Thanks for filing a new feature request. We appreciate your time and effort. Please answer a few questions._
|
|
10
|
+
- type: dropdown
|
|
11
|
+
id: checked-for-duplicates
|
|
12
|
+
attributes:
|
|
13
|
+
label: Checked for duplicates
|
|
14
|
+
description: Have you checked for duplicate issue tickets?
|
|
15
|
+
multiple: false
|
|
16
|
+
options:
|
|
17
|
+
- "Yes - I've already checked"
|
|
18
|
+
- "No - I haven't checked"
|
|
19
|
+
validations:
|
|
20
|
+
required: yes
|
|
21
|
+
- type: dropdown
|
|
22
|
+
id: checked-alternatives
|
|
23
|
+
attributes:
|
|
24
|
+
label: Alternatives considered
|
|
25
|
+
description: Have you considered alternative solutions to your feature request?
|
|
26
|
+
options:
|
|
27
|
+
- "Yes - and alternatives don't suffice"
|
|
28
|
+
- "No - I haven't considered"
|
|
29
|
+
validations:
|
|
30
|
+
required: yes
|
|
31
|
+
- type: textarea
|
|
32
|
+
id: related-problems
|
|
33
|
+
attributes:
|
|
34
|
+
label: Related problems
|
|
35
|
+
description: Is your feature request related to any problems? Please help us understand if so, including linking to any other issue tickets.
|
|
36
|
+
placeholder: Tell us the problems
|
|
37
|
+
value: "I'm frustrated when [...] happens as documented in issue-XYZ"
|
|
38
|
+
validations:
|
|
39
|
+
required: false
|
|
40
|
+
- type: textarea
|
|
41
|
+
id: description
|
|
42
|
+
attributes:
|
|
43
|
+
label: Describe the feature request
|
|
44
|
+
description: A clear and concise description of your request.
|
|
45
|
+
placeholder: Tell us what you want
|
|
46
|
+
value: "I need or want [...]"
|
|
47
|
+
validations:
|
|
48
|
+
required: true
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# Based off of scikit-image .github/workflows/benchmarks.yml
|
|
2
|
+
# and tqdm .github/workflows/check.yml#L54C1-L54C1
|
|
3
|
+
name: Benchmark
|
|
4
|
+
|
|
5
|
+
on:
|
|
6
|
+
pull_request:
|
|
7
|
+
types: [labeled]
|
|
8
|
+
workflow_dispatch:
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
benchmark:
|
|
12
|
+
if: contains(github.event.label.name, 'benchmark') || github.event_name == 'workflow_dispatch'
|
|
13
|
+
name: Linux
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
# We need the full repo to avoid this issue
|
|
18
|
+
# https://github.com/actions/checkout/issues/23
|
|
19
|
+
- uses: actions/checkout@v4
|
|
20
|
+
with:
|
|
21
|
+
fetch-depth: 0
|
|
22
|
+
|
|
23
|
+
- name: Setup environment
|
|
24
|
+
uses: mamba-org/setup-micromamba@v1
|
|
25
|
+
with:
|
|
26
|
+
environment-file: requirements.txt
|
|
27
|
+
environment-name: dolphin
|
|
28
|
+
condarc: |
|
|
29
|
+
channels:
|
|
30
|
+
- conda-forge
|
|
31
|
+
- nodefaults
|
|
32
|
+
create-args: >-
|
|
33
|
+
python=3.11
|
|
34
|
+
asv>=0.6
|
|
35
|
+
|
|
36
|
+
- name: Record machine info
|
|
37
|
+
shell: bash -l {0}
|
|
38
|
+
run: |
|
|
39
|
+
asv machine --yes
|
|
40
|
+
# https://github.com/tqdm/tqdm/blob/4c956c20b83be4312460fc0c4812eeb3fef5e7df/.github/workflows/check.yml#L26
|
|
41
|
+
- name: Restore previous results
|
|
42
|
+
uses: actions/cache@v4
|
|
43
|
+
with:
|
|
44
|
+
path: .asv
|
|
45
|
+
key: asv-${{ runner.os }}
|
|
46
|
+
restore-keys: |
|
|
47
|
+
asv-
|
|
48
|
+
|
|
49
|
+
- name: Run benchmarks
|
|
50
|
+
shell: bash -l {0}
|
|
51
|
+
id: benchmark
|
|
52
|
+
env:
|
|
53
|
+
OPENBLAS_NUM_THREADS: 1
|
|
54
|
+
MKL_NUM_THREADS: 1
|
|
55
|
+
OMP_NUM_THREADS: 1
|
|
56
|
+
run: |
|
|
57
|
+
set -x
|
|
58
|
+
|
|
59
|
+
echo "Baseline: ${{ github.event.pull_request.base.sha }} (${{ github.event.pull_request.base.label }})"
|
|
60
|
+
echo "Contender: ${GITHUB_SHA} (${{ github.event.pull_request.head.label }})"
|
|
61
|
+
|
|
62
|
+
# Run benchmarks for current commit against base
|
|
63
|
+
ASV_OPTIONS="--split --show-stderr"
|
|
64
|
+
asv continuous $ASV_OPTIONS ${{ github.event.pull_request.base.sha }} ${GITHUB_SHA} \
|
|
65
|
+
| sed "/Traceback \|failed$/ s/^/::error::/" \
|
|
66
|
+
| tee benchmarks.log
|
|
67
|
+
|
|
68
|
+
# Report and export results for subsequent steps
|
|
69
|
+
if grep "Traceback \|failed" benchmarks.log > /dev/null ; then
|
|
70
|
+
exit 1
|
|
71
|
+
fi
|
|
72
|
+
|
|
73
|
+
- name: Add instructions to artifact
|
|
74
|
+
if: always()
|
|
75
|
+
run: cp benchmarks/README_CI.md benchmarks.log .asv/results/
|
|
76
|
+
|
|
77
|
+
- uses: actions/upload-artifact@v4
|
|
78
|
+
if: always()
|
|
79
|
+
with:
|
|
80
|
+
name: asv-benchmark-results-${{ runner.os }}
|
|
81
|
+
path: .asv/results
|
|
82
|
+
|
|
83
|
+
# For now, we're just uploading the artifact
|
|
84
|
+
# If we want to publish to github pages, may want this:
|
|
85
|
+
# https://github.com/tqdm/tqdm/blob/4c956c20b83be4312460fc0c4812eeb3fef5e7df/.github/workflows/check.yml#L54C1-L54C1
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# This workflow will build a Python Package and upload to pypi. See:
|
|
2
|
+
# https://docs.pypi.org/trusted-publishers/using-a-publisher/
|
|
3
|
+
# https://github.com/marketplace/actions/pypi-publish
|
|
4
|
+
name: CD
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
release:
|
|
9
|
+
types: [created]
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
pypi-publish:
|
|
13
|
+
name: upload release to PyPI
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
environment: release
|
|
16
|
+
permissions:
|
|
17
|
+
id-token: write
|
|
18
|
+
steps:
|
|
19
|
+
# retrieve your distributions here
|
|
20
|
+
- uses: actions/checkout@v4
|
|
21
|
+
with:
|
|
22
|
+
fetch-depth: 0
|
|
23
|
+
- name: Set up Python
|
|
24
|
+
uses: actions/setup-python@v5
|
|
25
|
+
with:
|
|
26
|
+
python-version: '3.x'
|
|
27
|
+
- name: Install build dependencies and package
|
|
28
|
+
run: |
|
|
29
|
+
python -m pip install --upgrade pip setuptools_scm
|
|
30
|
+
pip install build
|
|
31
|
+
- name: Get version and Build
|
|
32
|
+
run: |
|
|
33
|
+
# Version added upon installing package
|
|
34
|
+
python -m pip install --no-deps .
|
|
35
|
+
python -m build --sdist --wheel
|
|
36
|
+
- name: Publish package distributions to PyPI
|
|
37
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
name: Pytest, build docker image, push to GHCR
|
|
2
|
+
|
|
3
|
+
on: [pull_request, push]
|
|
4
|
+
|
|
5
|
+
concurrency:
|
|
6
|
+
group: ${{ github.workflow }}-${{ github.head_ref }}
|
|
7
|
+
cancel-in-progress: true
|
|
8
|
+
|
|
9
|
+
env:
|
|
10
|
+
# https://github.com/pytest-dev/pytest/issues/2042#issuecomment-429289164
|
|
11
|
+
PY_IGNORE_IMPORTMISMATCH: 1
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
pytest:
|
|
15
|
+
strategy:
|
|
16
|
+
matrix:
|
|
17
|
+
os: [ubuntu-latest, macos-14]
|
|
18
|
+
deps:
|
|
19
|
+
- label: Latest
|
|
20
|
+
# we can't specify `tophu` for conda, not available on mac
|
|
21
|
+
spec: >-
|
|
22
|
+
isce3
|
|
23
|
+
dask
|
|
24
|
+
|
|
25
|
+
fail-fast: true
|
|
26
|
+
name: ${{ matrix.os }} • ${{ matrix.deps.label }}
|
|
27
|
+
runs-on: ${{ matrix.os }}
|
|
28
|
+
defaults:
|
|
29
|
+
run:
|
|
30
|
+
shell: bash -l {0}
|
|
31
|
+
steps:
|
|
32
|
+
- name: Checkout
|
|
33
|
+
uses: actions/checkout@v4
|
|
34
|
+
- name: Setup environment
|
|
35
|
+
uses: mamba-org/setup-micromamba@v1
|
|
36
|
+
with:
|
|
37
|
+
environment-file: conda-env.yml
|
|
38
|
+
environment-name: dolphin-env
|
|
39
|
+
generate-run-shell: false
|
|
40
|
+
create-args: ${{ matrix.deps.spec }}
|
|
41
|
+
condarc: |
|
|
42
|
+
channels:
|
|
43
|
+
- conda-forge
|
|
44
|
+
- name: Install
|
|
45
|
+
run: |
|
|
46
|
+
pip install --no-deps "snaphu>=0.4.0" "opera-utils>=0.4.1" git+https://github.com/isce-framework/tophu@main
|
|
47
|
+
pip install --no-deps .
|
|
48
|
+
- name: Install test dependencies
|
|
49
|
+
run: |
|
|
50
|
+
micromamba install -f tests/requirements.txt -c conda-forge
|
|
51
|
+
pip install --no-deps git+https://github.com/isce-framework/tophu@main
|
|
52
|
+
- name: Enable numba boundscheck for better error catching
|
|
53
|
+
run: |
|
|
54
|
+
echo "NUMBA_BOUNDSCHECK=1" >> $GITHUB_ENV
|
|
55
|
+
echo "TQDM_DISABLE=1" >> $GITHUB_ENV
|
|
56
|
+
- name: Test (with numba boundscheck on)
|
|
57
|
+
run: |
|
|
58
|
+
pytest -n0 -vv
|
|
59
|
+
# https://community.codecov.com/t/numba-jitted-methods-are-not-captured-by-codecov/2649
|
|
60
|
+
# - name: Coverage report
|
|
61
|
+
# uses: codecov/codecov-action@v2
|
|
62
|
+
|
|
63
|
+
dockerize: # Based on Mintpy: https://github.com/insarlab/MintPy/blob/5ca554fef324b816f9130feec567e2cf463e41d2/.github/workflows/build-n-publish-to-pypi.yml
|
|
64
|
+
name: Build Docker image and push to GitHub Container Registry
|
|
65
|
+
runs-on: ubuntu-latest
|
|
66
|
+
permissions:
|
|
67
|
+
contents: read
|
|
68
|
+
packages: write
|
|
69
|
+
steps:
|
|
70
|
+
- name: Checkout
|
|
71
|
+
uses: actions/checkout@v4
|
|
72
|
+
with:
|
|
73
|
+
fetch-depth: 0
|
|
74
|
+
- name: Set up Python 3.11
|
|
75
|
+
uses: actions/setup-python@v5
|
|
76
|
+
with:
|
|
77
|
+
python-version: '3.11'
|
|
78
|
+
- name: Set environment variables for docker build
|
|
79
|
+
run: |
|
|
80
|
+
pip install setuptools_scm # Install setuptools_scm to get version number
|
|
81
|
+
# Save version number from CLI
|
|
82
|
+
version=$(python -m setuptools_scm)
|
|
83
|
+
sanitized_version=${version//+/-} # Replace all '+' with '-'
|
|
84
|
+
echo "DOLPHIN_VERSION=${sanitized_version}" >> $GITHUB_ENV
|
|
85
|
+
|
|
86
|
+
- name: Login to GitHub Container Registry
|
|
87
|
+
uses: docker/login-action@v3
|
|
88
|
+
with:
|
|
89
|
+
registry: ghcr.io
|
|
90
|
+
username: ${{ github.actor }}
|
|
91
|
+
password: ${{ secrets.GITHUB_TOKEN }}
|
|
92
|
+
|
|
93
|
+
- name: Build, tag, and push image to Github Container Registry
|
|
94
|
+
uses: docker/build-push-action@v6
|
|
95
|
+
with:
|
|
96
|
+
context: .
|
|
97
|
+
file: ./docker/Dockerfile
|
|
98
|
+
push: ${{ github.event_name != 'pull_request' }}
|
|
99
|
+
tags: |
|
|
100
|
+
ghcr.io/${{ github.repository }}:${{ env.DOLPHIN_VERSION }}
|
|
101
|
+
labels: |
|
|
102
|
+
org.opencontainers.image.created=${{ env.CI_JOB_TIMESTAMP }}
|
|
103
|
+
org.opencontainers.image.version=${{ env.DOLPHIN_VERSION }}
|
|
104
|
+
org.opencontainers.image.revision=${{ github.sha }}
|
|
105
|
+
|
|
106
|
+
- name: Add develop tag
|
|
107
|
+
if: github.ref == 'refs/heads/main'
|
|
108
|
+
uses: akhilerm/tag-push-action@v2.2.0
|
|
109
|
+
with:
|
|
110
|
+
src: ghcr.io/${{ github.repository }}:${{ env.DOLPHIN_VERSION }}
|
|
111
|
+
dst: ghcr.io/${{ github.repository }}:develop
|
|
112
|
+
|
|
113
|
+
- name: Add latest tag
|
|
114
|
+
if: startsWith(github.ref, 'refs/tags/v')
|
|
115
|
+
uses: akhilerm/tag-push-action@v2.2.0
|
|
116
|
+
with:
|
|
117
|
+
src: ghcr.io/${{ github.repository }}:${{ env.DOLPHIN_VERSION }}
|
|
118
|
+
dst: ghcr.io/${{ github.repository }}:latest
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# setuptools-scm: autogenerated version, see pyproject.toml
|
|
2
|
+
src/dolphin/_version.py
|
|
3
|
+
|
|
4
|
+
docs/reference
|
|
5
|
+
|
|
6
|
+
# airspeed cache directory
|
|
7
|
+
.asv
|
|
8
|
+
|
|
9
|
+
# Testing data dir
|
|
10
|
+
data/
|
|
11
|
+
docs/**/*.h5
|
|
12
|
+
|
|
13
|
+
# MacOS
|
|
14
|
+
.DS_Store
|
|
15
|
+
|
|
16
|
+
# Byte-compiled / optimized / DLL files
|
|
17
|
+
__pycache__/
|
|
18
|
+
*.py[cod]
|
|
19
|
+
*$py.class
|
|
20
|
+
|
|
21
|
+
# C extensions
|
|
22
|
+
*.so
|
|
23
|
+
|
|
24
|
+
# Distribution / packaging
|
|
25
|
+
.Python
|
|
26
|
+
build/
|
|
27
|
+
develop-eggs/
|
|
28
|
+
dist/
|
|
29
|
+
downloads/
|
|
30
|
+
eggs/
|
|
31
|
+
.eggs/
|
|
32
|
+
lib/
|
|
33
|
+
lib64/
|
|
34
|
+
parts/
|
|
35
|
+
sdist/
|
|
36
|
+
var/
|
|
37
|
+
wheels/
|
|
38
|
+
share/python-wheels/
|
|
39
|
+
*.egg-info/
|
|
40
|
+
.installed.cfg
|
|
41
|
+
*.egg
|
|
42
|
+
MANIFEST
|
|
43
|
+
|
|
44
|
+
# PyInstaller
|
|
45
|
+
# Usually these files are written by a python script from a template
|
|
46
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
47
|
+
*.manifest
|
|
48
|
+
*.spec
|
|
49
|
+
|
|
50
|
+
# Installer logs
|
|
51
|
+
pip-log.txt
|
|
52
|
+
pip-delete-this-directory.txt
|
|
53
|
+
|
|
54
|
+
# Unit test / coverage reports
|
|
55
|
+
htmlcov/
|
|
56
|
+
.tox/
|
|
57
|
+
.nox/
|
|
58
|
+
.coverage
|
|
59
|
+
.coverage.*
|
|
60
|
+
.cache
|
|
61
|
+
nosetests.xml
|
|
62
|
+
coverage.xml
|
|
63
|
+
*.cover
|
|
64
|
+
*.py,cover
|
|
65
|
+
.hypothesis/
|
|
66
|
+
.pytest_cache/
|
|
67
|
+
cover/
|
|
68
|
+
|
|
69
|
+
# Translations
|
|
70
|
+
*.mo
|
|
71
|
+
*.pot
|
|
72
|
+
|
|
73
|
+
# Django stuff:
|
|
74
|
+
*.log
|
|
75
|
+
local_settings.py
|
|
76
|
+
db.sqlite3
|
|
77
|
+
db.sqlite3-journal
|
|
78
|
+
|
|
79
|
+
# Flask stuff:
|
|
80
|
+
instance/
|
|
81
|
+
.webassets-cache
|
|
82
|
+
|
|
83
|
+
# Scrapy stuff:
|
|
84
|
+
.scrapy
|
|
85
|
+
|
|
86
|
+
# Sphinx documentation
|
|
87
|
+
docs/_build/
|
|
88
|
+
|
|
89
|
+
# PyBuilder
|
|
90
|
+
.pybuilder/
|
|
91
|
+
target/
|
|
92
|
+
|
|
93
|
+
# Jupyter Notebook
|
|
94
|
+
.ipynb_checkpoints
|
|
95
|
+
|
|
96
|
+
# IPython
|
|
97
|
+
profile_default/
|
|
98
|
+
ipython_config.py
|
|
99
|
+
|
|
100
|
+
# pyenv
|
|
101
|
+
# For a library or package, you might want to ignore these files since the code is
|
|
102
|
+
# intended to run in multiple environments; otherwise, check them in:
|
|
103
|
+
# .python-version
|
|
104
|
+
|
|
105
|
+
# pipenv
|
|
106
|
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
|
107
|
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
|
108
|
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
|
109
|
+
# install all needed dependencies.
|
|
110
|
+
#Pipfile.lock
|
|
111
|
+
|
|
112
|
+
# poetry
|
|
113
|
+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
|
114
|
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
|
115
|
+
# commonly ignored for libraries.
|
|
116
|
+
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
|
117
|
+
#poetry.lock
|
|
118
|
+
|
|
119
|
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
|
|
120
|
+
__pypackages__/
|
|
121
|
+
|
|
122
|
+
# Celery stuff
|
|
123
|
+
celerybeat-schedule
|
|
124
|
+
celerybeat.pid
|
|
125
|
+
|
|
126
|
+
# SageMath parsed files
|
|
127
|
+
*.sage.py
|
|
128
|
+
|
|
129
|
+
# Environments
|
|
130
|
+
.env
|
|
131
|
+
.venv
|
|
132
|
+
env/
|
|
133
|
+
venv/
|
|
134
|
+
ENV/
|
|
135
|
+
env.bak/
|
|
136
|
+
venv.bak/
|
|
137
|
+
|
|
138
|
+
# Spyder project settings
|
|
139
|
+
.spyderproject
|
|
140
|
+
.spyproject
|
|
141
|
+
|
|
142
|
+
# Rope project settings
|
|
143
|
+
.ropeproject
|
|
144
|
+
|
|
145
|
+
# VSCode project settings
|
|
146
|
+
.vscode
|
|
147
|
+
|
|
148
|
+
# mkdocs documentation
|
|
149
|
+
site
|
|
150
|
+
docs/reference
|
|
151
|
+
|
|
152
|
+
# mypy
|
|
153
|
+
.mypy_cache/
|
|
154
|
+
.dmypy.json
|
|
155
|
+
dmypy.json
|
|
156
|
+
|
|
157
|
+
# Pyre type checker
|
|
158
|
+
.pyre/
|
|
159
|
+
|
|
160
|
+
# pytype static type analyzer
|
|
161
|
+
.pytype/
|
|
162
|
+
|
|
163
|
+
# Cython debug symbols
|
|
164
|
+
cython_debug/
|
|
165
|
+
|
|
166
|
+
# PyCharm
|
|
167
|
+
# JetBrains specific template is maintainted in a separate JetBrains.gitignore that can
|
|
168
|
+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
|
169
|
+
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
|
170
|
+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
|
171
|
+
#.idea/
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
ci:
|
|
2
|
+
autofix_prs: true
|
|
3
|
+
|
|
4
|
+
repos:
|
|
5
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
6
|
+
rev: "v4.6.0"
|
|
7
|
+
hooks:
|
|
8
|
+
# https://github.com/pre-commit/pre-commit-hooks/issues/718
|
|
9
|
+
# - id: check-added-large-files # Fails with git v1.8.3
|
|
10
|
+
- id: check-case-conflict
|
|
11
|
+
- id: check-docstring-first
|
|
12
|
+
- id: check-merge-conflict
|
|
13
|
+
- id: check-yaml
|
|
14
|
+
args: [--allow-multiple-documents]
|
|
15
|
+
- id: debug-statements
|
|
16
|
+
- id: end-of-file-fixer
|
|
17
|
+
- id: file-contents-sorter
|
|
18
|
+
files: (requirements.txt)$
|
|
19
|
+
- id: mixed-line-ending
|
|
20
|
+
- id: trailing-whitespace
|
|
21
|
+
|
|
22
|
+
- repo: https://github.com/psf/black
|
|
23
|
+
rev: "24.4.2"
|
|
24
|
+
hooks:
|
|
25
|
+
- id: black
|
|
26
|
+
|
|
27
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
28
|
+
rev: v0.5.2
|
|
29
|
+
hooks:
|
|
30
|
+
- id: ruff
|
|
31
|
+
args: [--fix, --exit-non-zero-on-fix, --show-fixes]
|
|
32
|
+
|
|
33
|
+
- repo: https://github.com/pre-commit/mirrors-mypy
|
|
34
|
+
rev: "v1.10.1"
|
|
35
|
+
hooks:
|
|
36
|
+
- id: mypy
|
|
37
|
+
additional_dependencies:
|
|
38
|
+
- types-pkg_resources
|
|
39
|
+
- types-requests
|
|
40
|
+
- "pydantic>=2.4"
|
|
41
|
+
- types-markdown
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# .readthedocs.yaml
|
|
2
|
+
# Read the Docs configuration file
|
|
3
|
+
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
|
|
4
|
+
version: 2
|
|
5
|
+
|
|
6
|
+
mkdocs:
|
|
7
|
+
configuration: mkdocs.yml
|
|
8
|
+
|
|
9
|
+
# Conda is causing "excessive memory usage"
|
|
10
|
+
# https://docs.readthedocs.io/en/stable/guides/conda.html#making-builds-faster-with-mamba
|
|
11
|
+
build:
|
|
12
|
+
os: "ubuntu-20.04"
|
|
13
|
+
tools:
|
|
14
|
+
python: "mambaforge-4.10"
|
|
15
|
+
|
|
16
|
+
conda:
|
|
17
|
+
environment: conda-env.yml
|
|
18
|
+
|
|
19
|
+
python:
|
|
20
|
+
install:
|
|
21
|
+
- method: pip
|
|
22
|
+
path: .
|
|
23
|
+
extra_requirements:
|
|
24
|
+
- docs
|