pynims 1.0.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.
- pynims-1.0.0/.gitignore +7 -0
- pynims-1.0.0/.gitlab-ci.yml +102 -0
- pynims-1.0.0/CHANGELOG.md +447 -0
- pynims-1.0.0/DISCLAIMER.md +11 -0
- pynims-1.0.0/LICENSE.md +37 -0
- pynims-1.0.0/PKG-INFO +201 -0
- pynims-1.0.0/README.md +182 -0
- pynims-1.0.0/code.json +41 -0
- pynims-1.0.0/docs/filtering.md +190 -0
- pynims-1.0.0/gl-sast-report.json +1 -0
- pynims-1.0.0/gl-secret-detection-report.json +1 -0
- pynims-1.0.0/pynims/__init__.py +3 -0
- pynims-1.0.0/pynims/cli.py +402 -0
- pynims-1.0.0/pynims/client.py +345 -0
- pynims-1.0.0/pynims/config.py +19 -0
- pynims-1.0.0/pynims/filtering.py +277 -0
- pynims-1.0.0/pynims/py.typed +1 -0
- pynims-1.0.0/pynims/utils.py +84 -0
- pynims-1.0.0/pynims/workflows.py +132 -0
- pynims-1.0.0/pyproject.toml +61 -0
- pynims-1.0.0/scripts/finalize_release_candidate.py +55 -0
- pynims-1.0.0/scripts/update_code_json.py +89 -0
- pynims-1.0.0/tests/test_cli.py +440 -0
- pynims-1.0.0/tests/test_client.py +728 -0
- pynims-1.0.0/tests/test_filtering.py +622 -0
- pynims-1.0.0/tests/test_package.py +12 -0
- pynims-1.0.0/tests/test_utils.py +119 -0
- pynims-1.0.0/tests/test_workflows.py +312 -0
- pynims-1.0.0/uv.lock +1451 -0
pynims-1.0.0/.gitignore
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
stages:
|
|
2
|
+
- test
|
|
3
|
+
- release
|
|
4
|
+
|
|
5
|
+
# --- Security scanning (all branches) ---
|
|
6
|
+
|
|
7
|
+
sast:
|
|
8
|
+
stage: test
|
|
9
|
+
|
|
10
|
+
include:
|
|
11
|
+
- template: Security/SAST.gitlab-ci.yml
|
|
12
|
+
- template: Security/Secret-Detection.gitlab-ci.yml
|
|
13
|
+
|
|
14
|
+
# --- Lint and test (main only) ---
|
|
15
|
+
|
|
16
|
+
lint:
|
|
17
|
+
stage: test
|
|
18
|
+
image: python:3.10
|
|
19
|
+
rules:
|
|
20
|
+
- if: '$CI_COMMIT_BRANCH == "main"'
|
|
21
|
+
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME =~ /^\d+\.\d+\.\d+/)'
|
|
22
|
+
before_script:
|
|
23
|
+
- pip install uv
|
|
24
|
+
- uv sync
|
|
25
|
+
script:
|
|
26
|
+
- uv run ruff check .
|
|
27
|
+
|
|
28
|
+
test:
|
|
29
|
+
stage: test
|
|
30
|
+
image: python:3.10
|
|
31
|
+
rules:
|
|
32
|
+
- if: '$CI_COMMIT_BRANCH == "main"'
|
|
33
|
+
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME =~ /^\d+\.\d+\.\d+/)'
|
|
34
|
+
before_script:
|
|
35
|
+
- pip install uv
|
|
36
|
+
- uv sync
|
|
37
|
+
script:
|
|
38
|
+
- uv run coverage run -m pytest
|
|
39
|
+
- uv run coverage report --include="pynims/*" --fail-under=96
|
|
40
|
+
|
|
41
|
+
# --- Release (main only, manual trigger) ---
|
|
42
|
+
|
|
43
|
+
release:
|
|
44
|
+
stage: release
|
|
45
|
+
image: python:3.10
|
|
46
|
+
variables:
|
|
47
|
+
GIT_DEPTH: 0
|
|
48
|
+
rules:
|
|
49
|
+
- if: '$CI_COMMIT_BRANCH == "main" && $CI_COMMIT_MESSAGE !~ /^chore\(release\)/'
|
|
50
|
+
when: manual
|
|
51
|
+
before_script:
|
|
52
|
+
- pip install uv
|
|
53
|
+
- uv sync
|
|
54
|
+
script:
|
|
55
|
+
- git config user.name "ci-bot"
|
|
56
|
+
- git config user.email "ci-bot@code.usgs.gov"
|
|
57
|
+
- git checkout $CI_COMMIT_BRANCH
|
|
58
|
+
- git reset --hard origin/$CI_COMMIT_BRANCH
|
|
59
|
+
- uv run semantic-release version
|
|
60
|
+
- uv run python -m build
|
|
61
|
+
- TWINE_PASSWORD=${CI_JOB_TOKEN} uv run twine upload --repository-url ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi -u gitlab-ci-token dist/*
|
|
62
|
+
|
|
63
|
+
# --- USGS software release (manual triggers) ---
|
|
64
|
+
|
|
65
|
+
usgs-release-prepare:
|
|
66
|
+
stage: release
|
|
67
|
+
image: python:3.10
|
|
68
|
+
rules:
|
|
69
|
+
- if: '$CI_COMMIT_TAG =~ /^v\d+\.\d+\.\d+$/'
|
|
70
|
+
when: manual
|
|
71
|
+
script:
|
|
72
|
+
- 'VERSION=${CI_COMMIT_TAG#v}'
|
|
73
|
+
- git clone https://ci-bot:${GITLAB_TOKEN}@code.usgs.gov/wim/usgs-imagery/sdk/pynims.git repo
|
|
74
|
+
- cd repo
|
|
75
|
+
- git config user.name "ci-bot"
|
|
76
|
+
- git config user.email "ci-bot@code.usgs.gov"
|
|
77
|
+
- git checkout main
|
|
78
|
+
- python scripts/update_code_json.py $VERSION
|
|
79
|
+
- git add code.json
|
|
80
|
+
- 'git commit -m "chore: update code.json for v${VERSION}"'
|
|
81
|
+
- git push origin main
|
|
82
|
+
- git checkout -b $VERSION
|
|
83
|
+
- 'python scripts/update_code_json.py $VERSION --status "Release Candidate"'
|
|
84
|
+
- git add code.json
|
|
85
|
+
- 'git commit -m "chore: set release candidate status for v${VERSION}"'
|
|
86
|
+
- git push origin $VERSION
|
|
87
|
+
|
|
88
|
+
usgs-release-finalize:
|
|
89
|
+
stage: release
|
|
90
|
+
image: python:3.10
|
|
91
|
+
rules:
|
|
92
|
+
- if: '$CI_COMMIT_BRANCH =~ /^\d+\.\d+\.\d+/'
|
|
93
|
+
when: manual
|
|
94
|
+
script:
|
|
95
|
+
- git config user.name "ci-bot"
|
|
96
|
+
- git config user.email "ci-bot@code.usgs.gov"
|
|
97
|
+
- git remote set-url origin https://ci-bot:${GITLAB_TOKEN}@code.usgs.gov/wim/usgs-imagery/sdk/pynims.git
|
|
98
|
+
- git checkout $CI_COMMIT_BRANCH
|
|
99
|
+
- python scripts/finalize_release_candidate.py $CI_COMMIT_BRANCH
|
|
100
|
+
- git add DISCLAIMER.md code.json
|
|
101
|
+
- 'git commit -m "chore: finalize release ${CI_COMMIT_BRANCH}"'
|
|
102
|
+
- git push
|
|
@@ -0,0 +1,447 @@
|
|
|
1
|
+
# CHANGELOG
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
## v1.0.0 (2026-04-21)
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
- Add input validation for CLI filter flags and image name parsing
|
|
9
|
+
([`df63a4a`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/df63a4af916457d741d5db8bd6bc47f27a45f540))
|
|
10
|
+
|
|
11
|
+
### Chores
|
|
12
|
+
|
|
13
|
+
- Disable allow_zero_version for 1.0.0 release
|
|
14
|
+
([`570bc12`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/570bc12af5ae2caaee367105a1107f0fcf01bf15))
|
|
15
|
+
|
|
16
|
+
- Gitignore all .kiro/ files and untrack steering docs
|
|
17
|
+
([`8beb1cc`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/8beb1cca3d3106590f9c595ae6e205ecaa6cc437))
|
|
18
|
+
|
|
19
|
+
- Stop tracking .kiro/specs/ in git
|
|
20
|
+
([`6ea9b1c`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/6ea9b1c316c5918f488e4d70201d72890eb6d779))
|
|
21
|
+
|
|
22
|
+
- Update dependencies to resolve CVEs in cryptography, pygments, pytest
|
|
23
|
+
([`f495847`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/f4958476186530556d747a4561ce6540308d3fa1))
|
|
24
|
+
|
|
25
|
+
### Code Style
|
|
26
|
+
|
|
27
|
+
- Format cli.py with ruff
|
|
28
|
+
([`998d720`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/998d720218f44ed2603d6de3af3e194a506a18ec))
|
|
29
|
+
|
|
30
|
+
### Continuous Integration
|
|
31
|
+
|
|
32
|
+
- Add full clone depth and reset to release job
|
|
33
|
+
([`df1d8bf`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/df1d8bf09d981ae43bc9a0f8f9bafe99238f5f99))
|
|
34
|
+
|
|
35
|
+
### Documentation
|
|
36
|
+
|
|
37
|
+
- Add AI disclosure to README
|
|
38
|
+
([`739268f`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/739268f19c2dd7eaacbf9239434bc58d5338d926))
|
|
39
|
+
|
|
40
|
+
- Add guidance on addressing review feedback during USGS release
|
|
41
|
+
([`75f3b72`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/75f3b72093dbf000af94300b68d2ac1e1800395d))
|
|
42
|
+
|
|
43
|
+
- Remove registry install instructions from README, clean up CI/CD doc
|
|
44
|
+
([`c07fdb4`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/c07fdb409092cecd51343f956cfccf2604ffbd03))
|
|
45
|
+
|
|
46
|
+
- Update CHANGELOG.md commit SHAs after history rewrite
|
|
47
|
+
([`397feb3`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/397feb369561cf700fd1ffcad28bf96eb044e9a0))
|
|
48
|
+
|
|
49
|
+
- Update filtering guide for warn_threshold parameter
|
|
50
|
+
([`7f6b94c`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/7f6b94ce496e0888cd378820eba190dcb7086173))
|
|
51
|
+
|
|
52
|
+
### Features
|
|
53
|
+
|
|
54
|
+
- V1.0.0 stable release
|
|
55
|
+
([`7fc268b`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/7fc268bd331de014dd3572c6dd1aa14a2ff19fd0))
|
|
56
|
+
|
|
57
|
+
- Warn when times-of-day filter matches far from target
|
|
58
|
+
([`51b294d`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/51b294dd2be2b88b9e6970d43789c014ba9c1e0f))
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
## v0.7.0 (2026-04-18)
|
|
62
|
+
|
|
63
|
+
### Chores
|
|
64
|
+
|
|
65
|
+
- Lint, format, and clean up filtering module
|
|
66
|
+
([`c15a3eb`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/c15a3ebf9dc59a3cc14c7770f3d30d009acef627))
|
|
67
|
+
|
|
68
|
+
### Documentation
|
|
69
|
+
|
|
70
|
+
- Add filtering guide and README filtering section
|
|
71
|
+
([`72ec700`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/72ec7002aee2f853ebe7858d08ddb4fdcc68be82))
|
|
72
|
+
|
|
73
|
+
- Update structure steering doc with filtering module
|
|
74
|
+
([`6d337f4`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/6d337f4c769a40666f6fa6d983a8dff8905fe81d))
|
|
75
|
+
|
|
76
|
+
### Features
|
|
77
|
+
|
|
78
|
+
- Add apply_filters helper for ordered filter application
|
|
79
|
+
([`ac9e6bb`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/ac9e6bb45fb9dc577830c1027a8636109458cfbb))
|
|
80
|
+
|
|
81
|
+
- Add attribute filters (day of week, day of month, month, year)
|
|
82
|
+
([`8bfad52`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/8bfad52541edb0f61d056de8ed51b83fedff7d63))
|
|
83
|
+
|
|
84
|
+
- Add filter flags to image-list and download-images CLI commands
|
|
85
|
+
([`6d84429`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/6d84429b5f113928eac0ee7d0798d35c3a6f3801))
|
|
86
|
+
|
|
87
|
+
- Add filtering module with ImageList type and conversion functions
|
|
88
|
+
([`42f8ac1`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/42f8ac1195bf2ec1b3e34cda577dd25269fe7ab0))
|
|
89
|
+
|
|
90
|
+
- Add match_nearest_to_times for pairing images with external time series
|
|
91
|
+
([`c896179`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/c896179c9d1bc84c9f4d53d0f13bfef0876fe432))
|
|
92
|
+
|
|
93
|
+
- Add range filters (time of day, date range, recurring range)
|
|
94
|
+
([`3b9ce3a`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/3b9ce3a5196ab5f463c1d05d5f1b7ded775ca04c))
|
|
95
|
+
|
|
96
|
+
- Add selection filters (interval, nth per group, times of day)
|
|
97
|
+
([`549c98c`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/549c98c7f0537d227e3b160a169743a8d02a3c11))
|
|
98
|
+
|
|
99
|
+
- Integrate filtering into workflow functions with optional tz override
|
|
100
|
+
([`f977573`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/f97757344e309558bfd82b4bf28c44dd52756208))
|
|
101
|
+
|
|
102
|
+
### Testing
|
|
103
|
+
|
|
104
|
+
- Add coverage for CLI flag parsing, apply_filters branches, and edge cases
|
|
105
|
+
([`45b85a3`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/45b85a3460b8ba35ef34269670b120484e053969))
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
## v0.6.0 (2026-04-17)
|
|
109
|
+
|
|
110
|
+
### Bug Fixes
|
|
111
|
+
|
|
112
|
+
- Quote YAML special characters in CI job scripts
|
|
113
|
+
([`29287a6`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/29287a657fdd9d1caef3eea9d5a1011425ab6812))
|
|
114
|
+
|
|
115
|
+
- Resolve YAML parsing in usgs-release-finalize job
|
|
116
|
+
([`9bbc607`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/9bbc607d9fdf24dcbe126abe172e696a0d798085))
|
|
117
|
+
|
|
118
|
+
- Set git config inside cloned repo in usgs-release-prepare
|
|
119
|
+
([`4d0df74`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/4d0df7494a87a9d6fecd10ea11c6787b420dc42c))
|
|
120
|
+
|
|
121
|
+
- Use GITLAB_TOKEN for push in usgs-release-finalize
|
|
122
|
+
([`de4c3ae`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/de4c3ae9856cfbc94baaf6a6441e64a1136fd400))
|
|
123
|
+
|
|
124
|
+
### Chores
|
|
125
|
+
|
|
126
|
+
- Update code.json for v0.6.0
|
|
127
|
+
([`32202f9`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/32202f94a3ea28bcd592f1dbc9d699dc7d2c3aed))
|
|
128
|
+
|
|
129
|
+
- Update code.json for v0.6.0
|
|
130
|
+
([`f310502`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/f31050242db4ced3597fd6f9ee50bbb475118041))
|
|
131
|
+
|
|
132
|
+
### Documentation
|
|
133
|
+
|
|
134
|
+
- Add USGS release jobs to tech stack steering doc
|
|
135
|
+
([`f75a5d5`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/f75a5d53aaaf09b2fe82d268649eb8b02798d862))
|
|
136
|
+
|
|
137
|
+
- Add USGS software release guide and README updates
|
|
138
|
+
([`389d7d9`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/389d7d9c2a8a7c10c379da69955b5abc2d11380b))
|
|
139
|
+
|
|
140
|
+
- Update CI job docs with protected tag/branch requirements
|
|
141
|
+
([`b924fa9`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/b924fa9cbc3d8e70eae20d475d1c51da2d7f3627))
|
|
142
|
+
|
|
143
|
+
### Features
|
|
144
|
+
|
|
145
|
+
- Add USGS release CI jobs and scripts
|
|
146
|
+
([`fc4a6c0`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/fc4a6c03454ebc60f7c5a6541635bea77cec81ee))
|
|
147
|
+
|
|
148
|
+
- Add USGS software release compliance files
|
|
149
|
+
([`3821e0b`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/3821e0b0a462adc4df02e1b76de90a099bce6798))
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
## v0.5.0 (2026-04-16)
|
|
153
|
+
|
|
154
|
+
### Documentation
|
|
155
|
+
|
|
156
|
+
- Add download-results spec
|
|
157
|
+
([`b17d60b`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/b17d60b0015bb0d011fb518954852e38d1f82e09))
|
|
158
|
+
|
|
159
|
+
### Features
|
|
160
|
+
|
|
161
|
+
- Return download result counts from download_images_for_camera
|
|
162
|
+
([`7c1eb3c`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/7c1eb3cede03f6e0283b28c1f89e13743745e22a))
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
## v0.4.0 (2026-04-16)
|
|
166
|
+
|
|
167
|
+
### Bug Fixes
|
|
168
|
+
|
|
169
|
+
- Skip 404 images in download_image instead of raising
|
|
170
|
+
([`ad82506`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/ad82506b25a437e035f05970cab1e94b491ad186))
|
|
171
|
+
|
|
172
|
+
- Use coverage cli for fail-under so CI actually fails on coverage drops
|
|
173
|
+
([`a45e2c4`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/a45e2c403a3fbbf56f8c165f0bcd94e60fb4e98b))
|
|
174
|
+
|
|
175
|
+
### Documentation
|
|
176
|
+
|
|
177
|
+
- Add Package Registry install instructions to README
|
|
178
|
+
([`6d095d2`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/6d095d23ff4b5a159f23bba804f212007c706e93))
|
|
179
|
+
|
|
180
|
+
- Add registry authentication instructions for internal project
|
|
181
|
+
([`80b4eff`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/80b4effa3a12572b669fe85fa53d3ebd1c70dde8))
|
|
182
|
+
|
|
183
|
+
- Add remove-image-utils spec
|
|
184
|
+
([`f28e8bc`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/f28e8bc4b56cc97a588189c43b681d56f9058b2b))
|
|
185
|
+
|
|
186
|
+
- Clarify installation options and reorder by audience
|
|
187
|
+
([`17a808e`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/17a808e8b2381bd1beee9f7c90596e9e6393a96f))
|
|
188
|
+
|
|
189
|
+
- Improve README clarity for installation, Python API, and CLI sections
|
|
190
|
+
([`c8aabff`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/c8aabff241d77463800f1425de700bc11fd1fa32))
|
|
191
|
+
|
|
192
|
+
### Features
|
|
193
|
+
|
|
194
|
+
- Remove image_utils module (migrated to usgs-imagery-tools)
|
|
195
|
+
([`cebce24`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/cebce24a8a8005ff7a885227479bf972feab2990))
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
## v0.3.0 (2026-04-01)
|
|
199
|
+
|
|
200
|
+
### Bug Fixes
|
|
201
|
+
|
|
202
|
+
- Remove duplicate Unreleased section from changelog
|
|
203
|
+
([`df67b1c`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/df67b1c7680054315790fe65978ac18616a870d6))
|
|
204
|
+
|
|
205
|
+
### Chores
|
|
206
|
+
|
|
207
|
+
- Update lockfile and add gitlab-registry-publishing spec docs
|
|
208
|
+
([`ea5ac8f`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/ea5ac8fd4c775f98d01a4f7228ee4b15cd0517ce))
|
|
209
|
+
|
|
210
|
+
### Continuous Integration
|
|
211
|
+
|
|
212
|
+
- Add GitLab Secret Detection scanning
|
|
213
|
+
([`c44edc8`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/c44edc8649d2e82b92744de7c9539c676b518d31))
|
|
214
|
+
|
|
215
|
+
### Documentation
|
|
216
|
+
|
|
217
|
+
- Update CI/CD guide with package registry publishing and secret detection
|
|
218
|
+
([`8e9feb1`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/8e9feb13b87baeddaccf676672cb40dfd9bd30dd))
|
|
219
|
+
|
|
220
|
+
### Features
|
|
221
|
+
|
|
222
|
+
- Add GitLab Package Registry publishing to release job
|
|
223
|
+
([`fbc1c91`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/fbc1c9134895d5e546440cc976a45347c2f4af5d))
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
## v0.2.1 (2026-03-31)
|
|
227
|
+
|
|
228
|
+
### Bug Fixes
|
|
229
|
+
|
|
230
|
+
- Remove debug line from release job
|
|
231
|
+
([`417f66f`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/417f66fc06bc30ff3ee412ab159232dbb7a5f049))
|
|
232
|
+
|
|
233
|
+
- Rewrite recursive image list fetch as iterative loop
|
|
234
|
+
([`2578ae4`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/2578ae4561bd02bfdb1b4b89d8c336b742ac20f0))
|
|
235
|
+
|
|
236
|
+
- Replace recursion with bounded for-loop (max 100 pages) - Fix single-image range returning empty
|
|
237
|
+
list - Send explicit limit=50000 to API - Parse start/end datetimes once before loop - Log
|
|
238
|
+
progress on multi-page fetches - Log warning if max pagination cap reached
|
|
239
|
+
|
|
240
|
+
### Chores
|
|
241
|
+
|
|
242
|
+
- Add .coverage to gitignore
|
|
243
|
+
([`19c008c`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/19c008c09b20874b7fc04c24eafd8caf15fb3363))
|
|
244
|
+
|
|
245
|
+
- Include uv.lock for pytest-cov dependency
|
|
246
|
+
([`d6ed962`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/d6ed962d41948b2f36e7814362fef21c421298c6))
|
|
247
|
+
|
|
248
|
+
### Code Style
|
|
249
|
+
|
|
250
|
+
- Fix lint and formatting in test files
|
|
251
|
+
([`315635c`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/315635c916102a64b5131a5501acbd7bc1357759))
|
|
252
|
+
|
|
253
|
+
### Continuous Integration
|
|
254
|
+
|
|
255
|
+
- Enforce 97% test coverage threshold
|
|
256
|
+
([`cb49fa7`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/cb49fa7de685faccf7b5df548fa1d743c298429c))
|
|
257
|
+
|
|
258
|
+
### Documentation
|
|
259
|
+
|
|
260
|
+
- Add CI/CD and release automation guide
|
|
261
|
+
([`c5978c1`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/c5978c1f230a4156be31a8c682ac5f95dfab7483))
|
|
262
|
+
|
|
263
|
+
- Add pytest-cov to tech stack
|
|
264
|
+
([`bb6a6d1`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/bb6a6d1cf92812fe902ba74998c210162d85882d))
|
|
265
|
+
|
|
266
|
+
- Add recursive-fetch-improvements spec
|
|
267
|
+
([`54a5b72`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/54a5b721ce3a9d6cabc5cf1ebe3847573d87a3ce))
|
|
268
|
+
|
|
269
|
+
- Add test-improvements spec
|
|
270
|
+
([`b93cdfc`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/b93cdfc892f58215d56c7f5cbd09623e1ab7f536))
|
|
271
|
+
|
|
272
|
+
### Testing
|
|
273
|
+
|
|
274
|
+
- Add CLI error-path tests
|
|
275
|
+
([`3abf98a`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/3abf98ac3f47261e3be9c5cad323b5ab3a6b52b7))
|
|
276
|
+
|
|
277
|
+
- Add client validation and edge-case tests
|
|
278
|
+
([`7bc5d19`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/7bc5d198503f1f5b3c4fd52ccf4995bf8fb3fcc2))
|
|
279
|
+
|
|
280
|
+
- Add context manager and utils edge-case tests
|
|
281
|
+
([`a9e75e2`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/a9e75e206a4b0e8e09994b0ba40439abf1309bd7))
|
|
282
|
+
|
|
283
|
+
- Add image list result count assertions
|
|
284
|
+
([`0a2e6e0`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/0a2e6e07de0a4f0a6713bf26d71aa7eafeb90526))
|
|
285
|
+
|
|
286
|
+
- Add image_utils missing-function tests
|
|
287
|
+
([`569596f`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/569596f55f91743ba56b981fc0531e2e354c278b))
|
|
288
|
+
|
|
289
|
+
- Add pytest-cov dependency and _make_request retry tests
|
|
290
|
+
([`d3b77eb`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/d3b77ebb8f104fc89b071f3e47d6cc2fe759dc26))
|
|
291
|
+
|
|
292
|
+
- Add workflow error-path and output tests
|
|
293
|
+
([`72bfab8`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/72bfab8d12b94ced6c5de0d8bd14d33f30a9b0c9))
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
## v0.2.0 (2026-03-31)
|
|
297
|
+
|
|
298
|
+
### Bug Fixes
|
|
299
|
+
|
|
300
|
+
- Checkout branch before semantic-release to avoid detached HEAD
|
|
301
|
+
([`a57a867`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/a57a8679e15285cbb2e9f89ade5805e6a8b5c8c3))
|
|
302
|
+
|
|
303
|
+
- Configure semantic-release for zero-version and v-prefixed tags
|
|
304
|
+
([`0048057`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/004805719ba92bea19593cf272045f1c165ef51a))
|
|
305
|
+
|
|
306
|
+
- Correct broken timezone check in get_nims_image_name_from_date_time_and_cam_id
|
|
307
|
+
([`0fc8549`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/0fc8549da831c19463038834fa1ef97cb20da99a))
|
|
308
|
+
|
|
309
|
+
- Correct CLI examples and add image_lists to gitignore
|
|
310
|
+
([`cd12649`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/cd12649af5b775867ebe7b6d2cb52ea08f9c8d60))
|
|
311
|
+
|
|
312
|
+
### Chores
|
|
313
|
+
|
|
314
|
+
- Add ruff to dev dependencies, fix lint and format
|
|
315
|
+
([`e34a13e`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/e34a13ec934314e18829abb4045cf654e4cdf25b))
|
|
316
|
+
|
|
317
|
+
- Fix logger placement in client.py and verify all tests pass
|
|
318
|
+
([`c100d22`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/c100d22ed7d8acd0c4e75ec4a66bf4944607b876))
|
|
319
|
+
|
|
320
|
+
### Documentation
|
|
321
|
+
|
|
322
|
+
- Add ci-and-packaging spec
|
|
323
|
+
([`a784791`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/a784791cf6c604cf90193bf5ae85a1bf0b2c6784))
|
|
324
|
+
|
|
325
|
+
- Add workflow preferences steering doc
|
|
326
|
+
([`ee2248b`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/ee2248bab1c046e17ae6b091d8db3a41b119eb6b))
|
|
327
|
+
|
|
328
|
+
- Expand workflow.md with TDD, code review, and post-spec completion guidelines
|
|
329
|
+
([`f9cd5e7`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/f9cd5e72919213c2d4e69e9f2f345933900eb705))
|
|
330
|
+
|
|
331
|
+
- Update README and steering for image URL methods
|
|
332
|
+
([`fa6e7d2`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/fa6e7d2c3e5df00e85c36da70fa0919fa17676b1))
|
|
333
|
+
|
|
334
|
+
- Update README CLI section with new commands and flags
|
|
335
|
+
([`2836c84`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/2836c843c6ab4e1fc962a2fea08a3a6e190a521d))
|
|
336
|
+
|
|
337
|
+
- Update README examples to lead with site-filtered camera usage
|
|
338
|
+
([`f850933`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/f850933e718db5816313082ecde139f6f185e9df))
|
|
339
|
+
|
|
340
|
+
- Update steering commit strategy to group related tasks
|
|
341
|
+
([`7a09c2c`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/7a09c2c8024b65328619cffeecb81477c9d423a1))
|
|
342
|
+
|
|
343
|
+
- Update steering docs for CI/CD pipeline and semantic-release
|
|
344
|
+
([`6651932`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/665193221ef3228b8f9d5877e59efa79a8ce75b3))
|
|
345
|
+
|
|
346
|
+
- Update steering docs to reflect client improvements
|
|
347
|
+
([`126b515`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/126b51559b2332612abc0759c601a886715589fa))
|
|
348
|
+
|
|
349
|
+
- Update structure.md for API coverage and CLI polish changes
|
|
350
|
+
([`ad1901a`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/ad1901ac6e13b2146903cd5a49d6328bb4975355))
|
|
351
|
+
|
|
352
|
+
- Update structure.md to reflect logging usage in client, workflows, and CLI
|
|
353
|
+
([`cb4b7eb`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/cb4b7ebe761aac14829474a494ce4f01db843cd1))
|
|
354
|
+
|
|
355
|
+
### Features
|
|
356
|
+
|
|
357
|
+
- Add --site-id and --cam-id CLI options to cameras command
|
|
358
|
+
([`7c99956`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/7c99956eb20547f29b776bbe0aec489283389897))
|
|
359
|
+
|
|
360
|
+
- Add --size option to download workflow and CLI
|
|
361
|
+
([`48d37ca`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/48d37caddee7fa7c4328e3567559887226c95349))
|
|
362
|
+
|
|
363
|
+
- Add API key support with X-Api-Key header
|
|
364
|
+
([`4200cbd`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/4200cbd08e5b307525a0d5994893431448ad5135))
|
|
365
|
+
|
|
366
|
+
- Add camera caching to avoid redundant API calls
|
|
367
|
+
([`50c005c`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/50c005ca4f37540f02474a4832a13b85aaf6c7ff))
|
|
368
|
+
|
|
369
|
+
- Add CI/CD pipeline and packaging infrastructure
|
|
370
|
+
([`4a67185`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/4a67185170b148e6b25810b460d90a4df5f1ca04))
|
|
371
|
+
|
|
372
|
+
- Add image size support and URL convenience methods
|
|
373
|
+
([`af950a3`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/af950a3a72712bc39d016156d97a1b1f0040b7ad))
|
|
374
|
+
|
|
375
|
+
- Add optional image_list parameter to download_images_for_camera
|
|
376
|
+
([`b84636c`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/b84636ca8800c2794c6b35a6f33ef236a4d5a5d9))
|
|
377
|
+
|
|
378
|
+
- Add raw_item parameter to get_image_list()
|
|
379
|
+
([`1bf7bba`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/1bf7bbacd10e16c229176d7851caf77ccb641c98))
|
|
380
|
+
|
|
381
|
+
- Add return_fields parameter to get_cameras()
|
|
382
|
+
([`0a50fd2`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/0a50fd2d29531626486d793c99763486e0c3b303))
|
|
383
|
+
|
|
384
|
+
- Add site_id and cam_id params to get_camera_list() workflow
|
|
385
|
+
([`d00aad4`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/d00aad4e432e32e17c92cb2909ec0174f9b91c46))
|
|
386
|
+
|
|
387
|
+
- Add site_id and cam_id params to NIMSClient.get_cameras()
|
|
388
|
+
([`71360b9`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/71360b99b3df093a90ceb8294a2f114ca42066f9))
|
|
389
|
+
|
|
390
|
+
- Add type annotations, logging, and snake_case renames in client.py
|
|
391
|
+
([`1c692e6`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/1c692e6d02cdddc31e7f1b3f05902d8a89d5c912))
|
|
392
|
+
|
|
393
|
+
- Cli polish — version flag, camera command, --full, --json, stdout default
|
|
394
|
+
([`1c971bd`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/1c971bd9400d0b8b7569bfebd1f584fcd8dcefcf))
|
|
395
|
+
|
|
396
|
+
- Fix config and base URL to use public NIMS API
|
|
397
|
+
([`f1841b3`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/f1841b3af00359cf13d6c66e84e844445c3d75ea))
|
|
398
|
+
|
|
399
|
+
- Fix packaging and exports
|
|
400
|
+
([`7af9806`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/7af98066d0bf9630b8d846ffe5c7d17abf1417b9))
|
|
401
|
+
|
|
402
|
+
- Improve get_camera_attribute error message and implement max_results in recursive fetch
|
|
403
|
+
([`dce8d2e`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/dce8d2e0f5a702d4570ba079e5068bb6b5fa3802))
|
|
404
|
+
|
|
405
|
+
- Improve workflow robustness and add get_image_list_for_camera
|
|
406
|
+
([`61ecb88`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/61ecb882cf0c40ae5bb5c99a4cc992d7cc0314d9))
|
|
407
|
+
|
|
408
|
+
- Make camera_id optional in download-images when image list is provided
|
|
409
|
+
([`7507150`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/750715056a0cd626ec63f63c23ceeb1e0efad60a))
|
|
410
|
+
|
|
411
|
+
- Rename camelCase to snake_case and add type annotations in image_utils.py
|
|
412
|
+
([`cfb4db3`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/cfb4db31484978580568e80eba601fa99584a8c5))
|
|
413
|
+
|
|
414
|
+
- Rename camelCase to snake_case and add type annotations in utils.py
|
|
415
|
+
([`fbd3e65`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/fbd3e6535b8da62eaf7a08a842309ea90d137600))
|
|
416
|
+
|
|
417
|
+
- Reorganize utils into utils.py and image_utils.py
|
|
418
|
+
([`b504642`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/b504642a92c92a0727f4d4cc1947f54c21f2ae14))
|
|
419
|
+
|
|
420
|
+
- Replace hardcoded image URL with camera base path lookup
|
|
421
|
+
([`37d7373`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/37d737319bbc0acab00a5a3fc8c3f7c81cf5f49f))
|
|
422
|
+
|
|
423
|
+
- Replace print() with logging in workflows.py
|
|
424
|
+
([`1ffc8ea`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/1ffc8eaec81d6b54a9a4baa30b94d5c64dea5004))
|
|
425
|
+
|
|
426
|
+
- Rewrite README with docs links, API key section, and quick start
|
|
427
|
+
([`bc89918`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/bc89918a7a90d4486e92ffc6768f76b1e1f1d55b))
|
|
428
|
+
|
|
429
|
+
- Wire up CLI with API key support and verify end-to-end
|
|
430
|
+
([`0b8b8ff`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/0b8b8ff033c6374691e697c4f89cd866d5090d15))
|
|
431
|
+
|
|
432
|
+
### Testing
|
|
433
|
+
|
|
434
|
+
- Add tests for API coverage and CLI polish features
|
|
435
|
+
([`1743ff8`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/1743ff8b21f80d8e15fc936c704b99a4ac16f0b8))
|
|
436
|
+
|
|
437
|
+
- Add tests for get_camera_attribute error and max_results; configure CLI logging
|
|
438
|
+
([`63dd5ae`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/63dd5ae1d374e633d46378d9f147996dbc05424b))
|
|
439
|
+
|
|
440
|
+
- Add tests for image URL methods and base dir lookup
|
|
441
|
+
([`c560745`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/c560745b5377885b1c0574ce5daadd8f1ebf04a6))
|
|
442
|
+
|
|
443
|
+
- Add tests for site_id and cam_id query params
|
|
444
|
+
([`c2f7289`](https://code.usgs.gov/usgs-imagery-packages/pynims/-/commit/c2f7289e488ab40711313614bd4bff5738b12fe6))
|
|
445
|
+
|
|
446
|
+
|
|
447
|
+
## v0.1.0 (2025-02-26)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Disclaimer
|
|
2
|
+
|
|
3
|
+
This software has been approved for release by the U.S. Geological Survey
|
|
4
|
+
(USGS). Although the software has been subjected to rigorous review, the USGS
|
|
5
|
+
reserves the right to update the software as needed pursuant to further analysis
|
|
6
|
+
and review. No warranty, expressed or implied, is made by the USGS or the U.S.
|
|
7
|
+
Government as to the functionality of the software and related material nor
|
|
8
|
+
shall the fact of release constitute any such warranty. Furthermore, the
|
|
9
|
+
software is released on condition that neither the USGS nor the U.S. Government
|
|
10
|
+
shall be held liable for any damages resulting from its authorized or
|
|
11
|
+
unauthorized use.
|
pynims-1.0.0/LICENSE.md
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# License
|
|
2
|
+
|
|
3
|
+
Unless otherwise noted, This project is in the public domain in the United
|
|
4
|
+
States because it contains materials that originally came from the United
|
|
5
|
+
States Geological Survey, an agency of the United States Department of
|
|
6
|
+
Interior. For more information, see the official USGS copyright policy at
|
|
7
|
+
<https://www.usgs.gov/information-policies-and-instructions/copyrights-and-credits>
|
|
8
|
+
|
|
9
|
+
Additionally, we waive copyright and related rights in the work
|
|
10
|
+
worldwide through the CC0 1.0 Universal public domain dedication.
|
|
11
|
+
|
|
12
|
+
## CC0 1.0 Universal Summary
|
|
13
|
+
|
|
14
|
+
This is a human-readable summary of the
|
|
15
|
+
[Legal Code](https://creativecommons.org/publicdomain/zero/1.0/legalcode).
|
|
16
|
+
|
|
17
|
+
## No Copyright
|
|
18
|
+
|
|
19
|
+
The person who associated a work with this deed has dedicated the work to
|
|
20
|
+
the public domain by waiving all of his or her rights to the work worldwide
|
|
21
|
+
under copyright law, including all related and neighboring rights, to the
|
|
22
|
+
extent allowed by law.
|
|
23
|
+
|
|
24
|
+
You can copy, modify, distribute and perform the work, even for commercial
|
|
25
|
+
purposes, all without asking permission.
|
|
26
|
+
|
|
27
|
+
## Other Information
|
|
28
|
+
|
|
29
|
+
In no way are the patent or trademark rights of any person affected by CC0,
|
|
30
|
+
nor are the rights that other persons may have in the work or in how the
|
|
31
|
+
work is used, such as publicity or privacy rights.
|
|
32
|
+
|
|
33
|
+
Unless expressly stated otherwise, the person who associated a work with
|
|
34
|
+
this deed makes no warranties about the work, and disclaims liability for
|
|
35
|
+
all uses of the work, to the fullest extent permitted by applicable law.
|
|
36
|
+
When using or citing the work, you should not imply endorsement by the
|
|
37
|
+
author or the affirmer.
|