Skip to content

Conversation

@DanielTOsborne
Copy link
Collaborator

@DanielTOsborne DanielTOsborne commented Nov 24, 2025

Implements #72
Add CLOB support like BLOB.

Dependencies: USACE/cwms-data-api#1483 HydrologicEngineeringCenter/cwms-python#242

image

Cleanup BLOB support to match CLOB implementation. list command has left-justified output for easier reading.
Enovotny
Enovotny previously approved these changes Nov 24, 2025
Copy link
Collaborator

@krowvin krowvin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for the type fixes/removing unused methods in blobs!

Few questions and one suggested fix before merging.

Fix CI/CD

@Enovotny approved but it does look like black was not setup locally? Admittedly I don't think we have a contributing yet but you can see how to setup black locally with Poetry here:
https://github.com/HydrologicEngineeringCenter/cwms-python/blob/main/CONTRIBUTING.md#getting-started

That will fix formatting issues on commit to match the repo standard setup by Eric

Ignoring the formatting now could end up making for confusing commits later, imo

logging.info(f"Uploaded blob: {blob_id_up}")
logging.info(f"View: {api_root}blobs/{blob_id_up}?office={office}")
if has_invalid_chars(blob_id_up):
logging.info(f"View: {api_root}blobs/ignored?blob-id={blob_id_up}&office={office}")
Copy link
Collaborator

@krowvin krowvin Nov 25, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

blobs/ignored? Is this a hidden endpoint to allow for blob id in a URI with a path?

If this requires your fix to CDA (i.e. it's not a hidden endpoint now) we might need to lock the package to a specific CDA version and call the version endpoint to test the version on cwms-cli first run. Instead of assuming the /ignored endpoint exists in a given instance.

Think delayed adoption type stuff. And the /v2 /v3 etc does not exist in CDA yet.

Copy link
Collaborator Author

@DanielTOsborne DanielTOsborne Dec 2, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'ignored' is recommended in the CDA documentation, see /blobs/{blob-id} endpoint.

return dest


def store_blob(**kwargs):
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for removing this! I missed it

@krowvin
Copy link
Collaborator

krowvin commented Dec 11, 2025

Drafting this until the cwms-python PR is merged

@krowvin krowvin marked this pull request as draft December 11, 2025 16:35
dependabot bot and others added 8 commits January 9, 2026 16:11
Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to
6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/checkout/releases">actions/checkout's
releases</a>.</em></p>
<blockquote>
<h2>v6.0.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Update README to include Node.js 24 support details and requirements
by <a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2248">actions/checkout#2248</a></li>
<li>Persist creds to a separate file by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2286">actions/checkout#2286</a></li>
<li>v6-beta by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2298">actions/checkout#2298</a></li>
<li>update readme/changelog for v6 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2311">actions/checkout#2311</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v5.0.0...v6.0.0">https://github.com/actions/checkout/compare/v5.0.0...v6.0.0</a></p>
<h2>v6-beta</h2>
<h2>What's Changed</h2>
<p>Updated persist-credentials to store the credentials under
<code>$RUNNER_TEMP</code> instead of directly in the local git
config.</p>
<p>This requires a minimum Actions Runner version of <a
href="https://github.com/actions/runner/releases/tag/v2.329.0">v2.329.0</a>
to access the persisted credentials for <a
href="https://docs.github.com/en/actions/tutorials/use-containerized-services/create-a-docker-container-action">Docker
container action</a> scenarios.</p>
<h2>v5.0.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Port v6 cleanup to v5 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2301">actions/checkout#2301</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v5...v5.0.1">https://github.com/actions/checkout/compare/v5...v5.0.1</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/actions/checkout/blob/main/CHANGELOG.md">actions/checkout's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h2>V6.0.0</h2>
<ul>
<li>Persist creds to a separate file by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2286">actions/checkout#2286</a></li>
<li>Update README to include Node.js 24 support details and requirements
by <a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2248">actions/checkout#2248</a></li>
</ul>
<h2>V5.0.1</h2>
<ul>
<li>Port v6 cleanup to v5 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2301">actions/checkout#2301</a></li>
</ul>
<h2>V5.0.0</h2>
<ul>
<li>Update actions checkout to use node 24 by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2226">actions/checkout#2226</a></li>
</ul>
<h2>V4.3.1</h2>
<ul>
<li>Port v6 cleanup to v4 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2305">actions/checkout#2305</a></li>
</ul>
<h2>V4.3.0</h2>
<ul>
<li>docs: update README.md by <a
href="https://github.com/motss"><code>@​motss</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1971">actions/checkout#1971</a></li>
<li>Add internal repos for checking out multiple repositories by <a
href="https://github.com/mouismail"><code>@​mouismail</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1977">actions/checkout#1977</a></li>
<li>Documentation update - add recommended permissions to Readme by <a
href="https://github.com/benwells"><code>@​benwells</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2043">actions/checkout#2043</a></li>
<li>Adjust positioning of user email note and permissions heading by <a
href="https://github.com/joshmgross"><code>@​joshmgross</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2044">actions/checkout#2044</a></li>
<li>Update README.md by <a
href="https://github.com/nebuk89"><code>@​nebuk89</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2194">actions/checkout#2194</a></li>
<li>Update CODEOWNERS for actions by <a
href="https://github.com/TingluoHuang"><code>@​TingluoHuang</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2224">actions/checkout#2224</a></li>
<li>Update package dependencies by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2236">actions/checkout#2236</a></li>
</ul>
<h2>v4.2.2</h2>
<ul>
<li><code>url-helper.ts</code> now leverages well-known environment
variables by <a href="https://github.com/jww3"><code>@​jww3</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/1941">actions/checkout#1941</a></li>
<li>Expand unit test coverage for <code>isGhes</code> by <a
href="https://github.com/jww3"><code>@​jww3</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1946">actions/checkout#1946</a></li>
</ul>
<h2>v4.2.1</h2>
<ul>
<li>Check out other refs/* by commit if provided, fall back to ref by <a
href="https://github.com/orhantoy"><code>@​orhantoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1924">actions/checkout#1924</a></li>
</ul>
<h2>v4.2.0</h2>
<ul>
<li>Add Ref and Commit outputs by <a
href="https://github.com/lucacome"><code>@​lucacome</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1180">actions/checkout#1180</a></li>
<li>Dependency updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>- <a
href="https://redirect.github.com/actions/checkout/pull/1777">actions/checkout#1777</a>,
<a
href="https://redirect.github.com/actions/checkout/pull/1872">actions/checkout#1872</a></li>
</ul>
<h2>v4.1.7</h2>
<ul>
<li>Bump the minor-npm-dependencies group across 1 directory with 4
updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1739">actions/checkout#1739</a></li>
<li>Bump actions/checkout from 3 to 4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1697">actions/checkout#1697</a></li>
<li>Check out other refs/* by commit by <a
href="https://github.com/orhantoy"><code>@​orhantoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1774">actions/checkout#1774</a></li>
<li>Pin actions/checkout's own workflows to a known, good, stable
version. by <a href="https://github.com/jww3"><code>@​jww3</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1776">actions/checkout#1776</a></li>
</ul>
<h2>v4.1.6</h2>
<ul>
<li>Check platform to set archive extension appropriately by <a
href="https://github.com/cory-miller"><code>@​cory-miller</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1732">actions/checkout#1732</a></li>
</ul>
<h2>v4.1.5</h2>
<ul>
<li>Update NPM dependencies by <a
href="https://github.com/cory-miller"><code>@​cory-miller</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1703">actions/checkout#1703</a></li>
<li>Bump github/codeql-action from 2 to 3 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1694">actions/checkout#1694</a></li>
<li>Bump actions/setup-node from 1 to 4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1696">actions/checkout#1696</a></li>
<li>Bump actions/upload-artifact from 2 to 4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1695">actions/checkout#1695</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/checkout/commit/1af3b93b6815bc44a9784bd300feb67ff0d1eeb3"><code>1af3b93</code></a>
update readme/changelog for v6 (<a
href="https://redirect.github.com/actions/checkout/issues/2311">#2311</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/71cf2267d89c5cb81562390fa70a37fa40b1305e"><code>71cf226</code></a>
v6-beta (<a
href="https://redirect.github.com/actions/checkout/issues/2298">#2298</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/069c6959146423d11cd0184e6accf28f9d45f06e"><code>069c695</code></a>
Persist creds to a separate file (<a
href="https://redirect.github.com/actions/checkout/issues/2286">#2286</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493"><code>ff7abcd</code></a>
Update README to include Node.js 24 support details and requirements (<a
href="https://redirect.github.com/actions/checkout/issues/2248">#2248</a>)</li>
<li>See full diff in <a
href="https://github.com/actions/checkout/compare/v5...v6">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/checkout&package-manager=github_actions&previous-version=5&new-version=6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
)

Saw this was missing doing a side review of the state of things
Previously we would get failed builds because even if the PR was merged
if the version did not change or did not need to change it would fail.

Doing it this way lets us explicitly bump a version in between PRs and
also make doc/tests changes without having to publish a version.

It requires specific directories be edited AND a diff on the last
committed `/pyproject.toml` version to the current

Mike if you wouldn't mind reviewing this action. There maybe a better
way (already made action?) but I really believe we don't need this to
run on every commit.
Update readme

Folks trying to install on T7 did not catch pip vs pip3
…icEngineeringCenter#83)

Bumps
[sigstore/gh-action-sigstore-python](https://github.com/sigstore/gh-action-sigstore-python)
from 3.1.0 to 3.2.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/sigstore/gh-action-sigstore-python/releases">sigstore/gh-action-sigstore-python's
releases</a>.</em></p>
<blockquote>
<h2>v3.2.0</h2>
<p><code>gh-action-sigstore-python</code> action now manages the used
Python version internally, improving reliability.</p>
<h3>Changed</h3>
<ul>
<li>Manage Python version internally (<a
href="https://redirect.github.com/sigstore/gh-action-sigstore-python/pull/242">#242</a>,
<a
href="https://redirect.github.com/sigstore/gh-action-sigstore-python/pull/258">#258</a>)</li>
<li>Dependency updates</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/sigstore/gh-action-sigstore-python/blob/main/CHANGELOG.md">sigstore/gh-action-sigstore-python's
changelog</a>.</em></p>
<blockquote>
<h2>[3.2.0]</h2>
<p><code>gh-action-sigstore-python</code> now manages the used Python
version internally, improving reliability.</p>
<h3>Changed</h3>
<ul>
<li>Manage Python version internally
(<a
href="https://redirect.github.com/sigstore/gh-action-sigstore-python/pull/242">#242</a>,
<a
href="https://redirect.github.com/sigstore/gh-action-sigstore-python/pull/258">#258</a>)</li>
<li>Dependency updates</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/sigstore/gh-action-sigstore-python/commit/a5caf349bc536fbef3668a10ed7f5cd309a4b53d"><code>a5caf34</code></a>
build(deps): bump actions/checkout in the actions group (<a
href="https://redirect.github.com/sigstore/gh-action-sigstore-python/issues/265">#265</a>)</li>
<li><a
href="https://github.com/sigstore/gh-action-sigstore-python/commit/7b8cfcba45e769065eb4bf410ccf1dcb13b8b24f"><code>7b8cfcb</code></a>
build(deps): bump the actions group with 2 updates (<a
href="https://redirect.github.com/sigstore/gh-action-sigstore-python/issues/264">#264</a>)</li>
<li><a
href="https://github.com/sigstore/gh-action-sigstore-python/commit/270f433185478a1a3902211f074a7efa94452f55"><code>270f433</code></a>
build(deps-dev): bump ruff in the python-dependencies group (<a
href="https://redirect.github.com/sigstore/gh-action-sigstore-python/issues/263">#263</a>)</li>
<li><a
href="https://github.com/sigstore/gh-action-sigstore-python/commit/034c8bfd0f9070272055a64998e33ae2a5291615"><code>034c8bf</code></a>
build(deps): bump actions/setup-python in the actions group (<a
href="https://redirect.github.com/sigstore/gh-action-sigstore-python/issues/260">#260</a>)</li>
<li><a
href="https://github.com/sigstore/gh-action-sigstore-python/commit/5483fa818031f71d2e23ae9a2456ae538dada9b4"><code>5483fa8</code></a>
Fix .python-version lookup (<a
href="https://redirect.github.com/sigstore/gh-action-sigstore-python/issues/258">#258</a>)</li>
<li><a
href="https://github.com/sigstore/gh-action-sigstore-python/commit/f962baac4faa7a96f5626208433f5dc47188b103"><code>f962baa</code></a>
build(deps): bump github/codeql-action in the actions group (<a
href="https://redirect.github.com/sigstore/gh-action-sigstore-python/issues/259">#259</a>)</li>
<li><a
href="https://github.com/sigstore/gh-action-sigstore-python/commit/225a3128d9f24d0e4c80f459d1b9ab1a4d17be9a"><code>225a312</code></a>
build(deps): bump astral-sh/setup-uv in the actions group (<a
href="https://redirect.github.com/sigstore/gh-action-sigstore-python/issues/253">#253</a>)</li>
<li><a
href="https://github.com/sigstore/gh-action-sigstore-python/commit/b7c02b3cfdd3b758852ef056ec53a6619a0b620c"><code>b7c02b3</code></a>
build(deps): bump actions/checkout in the actions group (<a
href="https://redirect.github.com/sigstore/gh-action-sigstore-python/issues/251">#251</a>)</li>
<li><a
href="https://github.com/sigstore/gh-action-sigstore-python/commit/52bad44deeac5948618be5ac2d5ce8815cdda0cb"><code>52bad44</code></a>
build(deps-dev): bump ruff in the python-dependencies group (<a
href="https://redirect.github.com/sigstore/gh-action-sigstore-python/issues/252">#252</a>)</li>
<li><a
href="https://github.com/sigstore/gh-action-sigstore-python/commit/68eceea097be69ea42957f920f8cd8684aeb09d2"><code>68eceea</code></a>
build(deps): bump certifi in the python-dependencies group (<a
href="https://redirect.github.com/sigstore/gh-action-sigstore-python/issues/250">#250</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/sigstore/gh-action-sigstore-python/compare/v3.1.0...v3.2.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sigstore/gh-action-sigstore-python&package-manager=github_actions&previous-version=3.1.0&new-version=3.2.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Resolves HydrologicEngineeringCenter#80

- Ensured we had a line in the branch for HydrologicEngineeringCenter#33
- Removed `|` references for Optional type to support 3.9
- Tested by pasting blob.py over the blob.py on the T7 to ensure no
additional issues
@krowvin
Copy link
Collaborator

krowvin commented Jan 9, 2026

Merged main in, applied style reqs.

Waiting to mark ready for review until HydrologicEngineeringCenter/cwms-python#242 is merged

Copy link
Collaborator

@krowvin krowvin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Failed style check was resolved

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants