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.
@@ -0,0 +1,7 @@
1
+ __pycache__/
2
+ legacy/
3
+ downloaded_images/
4
+ image_lists/
5
+ .coverage
6
+ .kiro/
7
+ internal-docs/
@@ -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.
@@ -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.