You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hamilton.apache.org by Stefan Krawczyk <st...@gmail.com> on 2026/04/04 05:20:05 UTC

[VOTE] Release Apache Hamilton - apache-hamilton 1.90.0-incubating (release candidate 0)

Hi all,

This is a call for a vote on releasing Apache Hamilton apache-hamilton
1.90.0-incubating, release candidate 0.

This release includes the following changes (see CHANGELOG for details):

Features:
> - While loop DFS implementation (#1483)
> - Async data validator support
> - Add `unpack_fields` annotation for unpacking structured fields (#1305)
> - Expose DAG validation as LLM tools via MCP (#1490)
> - Add NDJSON support in polars (#1431)
> - Enhance visualization with display_name tag support


Bug fixes:
> - Fix `@resolve` decorator not calling `validate()` on returned decorators
> (#1524)
> - Fix is_submodule substring match causing spurious DAG nodes (#1485)
> - Fix pandas 2.2+ compatibility in pandas_extensions.py
> - Fix spark failures on Python 3.14
> - Fix local (Windows) tests (#1302)
> - Fix typer version requirement for click 8.3 help compatibility


Performance:
> - Use deque for BFS queue in graph traversal (#1494)


Platform changes:
> - Drop Python 3.8 and 3.9 support
> - Add Python 3.13 and 3.14 support
> - Remove usage telemetry (PostHog) (#1512)
> - Remove RayWorkflows (#1359)
> - Update `dlt` plugin with changes to `loader_file_format`
> - Package renamed from sf-hamilton to apache-hamilton



The artifacts for this release candidate can be found at:
https://dist.apache.org/repos/dist/dev/incubator/hamilton/apache-hamilton/1.90.0-RC0


The Git tag to be voted upon is: apache-hamilton-v1.90.0-incubating-RC0


The release hash is: bed5a272904bd7d68bc03167978f663e1906738c

But the functional release is from this commit from main:
e84ed90b4428d777449b9bfc413ed86ee41a77c9

Release artifacts are signed with the following key:

FE668E857E89A11C5E5C000CA8D3D15600545C61

The KEYS file is available at:
https://downloads.apache.org/incubator/hamilton/KEYS

Please download, verify, and test the release candidate. You can find the
instructions to do so here
<https://github.com/apache/hamilton/tree/main/scripts#for-voters-verifying-a-release>
(and
if you're having issues following them please reply and I'll help).

The vote will run for a minimum of 72 hours, likely much longer due to the
holiday.

Please vote:

[ ] +1 Release this package as Apache Hamilton apache-hamilton
1.90.0-incubating
[ ] +0 No opinion
[ ] -1 Do not release this package because... (Please provide a reason)

Checklist for reference:

[ ] Incubating in name.
[ ] Download links are valid.
[ ] Checksums and signatures.
[ ] LICENSE/NOTICE/DISCLAIMER files exist
[ ] No unexpected binary files
[ ] All source files have ASF headers
[ ] Can compile from source


On behalf of the Apache Hamilton PPMC,

Stefan Krawczyk

Re: [VOTE] Release Apache Hamilton - apache-hamilton 1.90.0-incubating (release candidate 0)

Posted by Jarek Potiuk <ja...@potiuk.com>.
Sorry I was not around - but I've been 1000% busy. Will do better next time.

On Mon, Apr 20, 2026 at 2:23 AM Stefan Krawczyk <st...@gmail.com>
wrote:

> thanks PJ! I'm calling the vote. +4: Stefan, Jernej, Elijah, PJ. Email
> result in a few.
>
>
> On Sun, Apr 19, 2026 at 11:49 AM PJ Fanning <fa...@apache.org> wrote:
>
> > +1 binding for the IPMC vote
> >
> > [x] Incubating in name.
> > [x] Download links are valid.
> > [x] Checksums and signatures.
> > [x] LICENSE/NOTICE/DISCLAIMER files exist
> > [x] No unexpected binary files
> > [x] All source files have ASF headers
> > [ ] Can compile from source
> >
> > I just concentrated on checking the source release and the contents of
> the
> > whl file. I did not attempt to build the artifacts.
> >
> > On 2026/04/18 21:01:13 Stefan Krawczyk wrote:
> > > Hey mentors,
> > >
> > > Can someone claim verifying this RC please? I'm okay waiting, I would
> > just
> > > like to know who's turn it is to help please.
> > >
> > > Cheers,
> > >
> > > Stefan
> > >
> > > On Sun, Apr 12, 2026, 11:20 PM Stefan Krawczyk <
> > stefan.krawczyk@gmail.com>
> > > wrote:
> > >
> > > > Awesome, if one of the mentors has time to check, then we can call
> this
> > > > vote or not.
> > > >
> > > > You can try this gist to make it easier on you:
> > > > https://gist.github.com/skrawcz/a091951d8da1c9d2eb0b880e1da725bc
> > > >
> > > > Cheers,
> > > >
> > > > Stefan
> > > >
> > > > On Sun, Apr 12, 2026 at 7:20 AM Jernej Frank <
> > > > jernej.frank@physics.ox.ac.uk> wrote:
> > > >
> > > >> Thanks for that, this works! Maybe we can put this script into the
> > repo?
> > > >>
> > > >> Happy to change to +1 for me.
> > > >>
> > > >> Best,
> > > >> Jernej
> > > >> ________________________________
> > > >> From: Stefan Krawczyk <st...@gmail.com>
> > > >> Sent: 11 April 2026 22:03
> > > >> To: dev@hamilton.apache.org <de...@hamilton.apache.org>
> > > >> Subject: Re: [VOTE] Release Apache Hamilton - apache-hamilton
> > > >> 1.90.0-incubating (release candidate 0)
> > > >>
> > > >> in a fresh directory (not repo)*.
> > > >>
> > > >> On Sat, Apr 11, 2026 at 2:02 PM Stefan Krawczyk <
> > > >> stefan.krawczyk@gmail.com>
> > > >> wrote:
> > > >>
> > > >> > @jernej, do you want to try again? I created this gist that is a
> > script
> > > >> > that walks through the process:
> > > >> > https://gist.github.com/skrawcz/a091951d8da1c9d2eb0b880e1da725bc.
> > > >> >
> > > >> > You don't need to use the scripts to validate -- and that's not
> what
> > > >> we're
> > > >> > voting on. If you use the above script, it should set everything
> up
> > > >> fresh
> > > >> > if you do it in a fresh repo and have `uv` installed.
> > > >> >
> > > >> > On Sat, Apr 11, 2026 at 2:28 AM Jernej Frank <
> > > >> > jernej.frank@physics.ox.ac.uk> wrote:
> > > >> >
> > > >> >> Hey, I tried following the verification readme and use the
> scripts:
> > > >> >>
> > > >>
> > https://github.com/apache/hamilton/tree/main/scripts#verification-script
> > > >> >> and could not get a lot of things working out of the box.
> > > >> >>
> > > >> >> -1
> > > >> >>
> > > >> >> Checklist for reference:
> > > >> >>
> > > >> >> [x] Incubating in name.
> > > >> >> [x] Download links are valid.
> > > >> >> The actual link is fine but the readme is wrong
> > > >> >> ```
> > > >> >> svn export
> > > >> >>
> > > >>
> >
> https://dist.apache.org/repos/dist/dev/incubator/hamilton/${PACKAGE}-${VERSION}-incubating-RC${RC}/
> > > >> >> hamilton-rc${RC}
> > > >> >>
> > > >> >> svn: E170000: URL '
> > > >> >>
> > > >>
> >
> https://dist.apache.org/repos/dist/dev/incubator/hamilton/apache-hamilton-1.90.0-incubating-RC0
> > > >> '
> > > >> >> doesn't exist
> > > >> >> ```
> > > >> >> [ ] Checksums and signatures.
> > > >> >> I can verify gpg keys but the readme is missing a -src in the
> name
> > for
> > > >> >> the source.
> > > >> >> ```
> > > >> >> gpg --verify ${PACKAGE}-${VERSION}-incubating.tar.gz.asc
> > > >> >> ${PACKAGE}-${VERSION}-incubating.tar.gz
> > > >> >> gpg: can't open 'apache-hamilton-1.90.0-incubating.tar.gz.asc':
> No
> > such
> > > >> >> file or directory
> > > >> >> gpg: verify signatures failed: No such file or directory
> > > >> >> ```
> > > >> >>
> > > >> >> The wheel gpg keys worked.
> > > >> >> I could not get sha verification working:
> > > >> >> ```
> > > >> >> shasum -a 512 -c ${PACKAGE}-${VERSION}-incubating.tar.gz.sha512
> > > >> >> shasum: apache-hamilton-1.90.0-incubating.tar.gz.sha512: No such
> > file
> > > >> or
> > > >> >> directory
> > > >> >>
> > > >> >> shasum -a 512 -c
> ${PACKAGE}-${VERSION}-incubating-src.tar.gz.sha512
> > > >> >> shasum: apache-hamilton-1.90.0-incubating-src.tar.gz.sha512: no
> > > >> properly
> > > >> >> formatted SHA checksum lines found
> > > >> >>
> > > >> >> shasum -a 512 -c ${WHEEL_NAME}.sha512
> > > >> >> shasum: apache_hamilton-1.90.0-py3-none-any.whl.sha512: no
> properly
> > > >> >> formatted SHA checksum lines found
> > > >> >> ```
> > > >> >>
> > > >> >> Similarly,  in case of using the script at the end:
> > > >> >> ```
> > > >> >> # Run from the extracted source directory
> > > >> >> (${PACKAGE}-${VERSION}-incubating/)
> > > >> >> # Verify GPG signatures and SHA512 checksums
> > > >> >> uv run python scripts/verify_apache_artifacts.py signatures
> > > >> >>
> > > >> >>
> > > >>
> >
> ================================================================================
> > > >> >>   Verifying Signatures and Checksums
> > > >> >>
> > > >> >>
> > > >>
> >
> ================================================================================
> > > >> >>
> > > >> >> Found 2 artifact(s) to verify:
> > > >> >>
> > > >> >> Verifying: apache_hamilton-1.90.0.tar.gz
> > > >> >>
> > > >> >>
> > > >>
> >
> --------------------------------------------------------------------------------
> > > >> >>   ✓ Artifact exists: apache_hamilton-1.90.0.tar.gz (3,655,569
> > bytes)
> > > >> >>   Verifying GPG signature: apache_hamilton-1.90.0.tar.gz.asc
> > > >> >>     ✗ Signature file not found
> > > >> >>   Verifying SHA512 checksum: apache_hamilton-1.90.0.tar.gz.sha512
> > > >> >>     ✗ Checksum file not found
> > > >> >>   Checking archive readability: apache_hamilton-1.90.0.tar.gz
> > > >> >>     ✓ Archive is readable and contains 706 files
> > > >> >>
> > > >> >> Verifying: apache_hamilton-1.90.0-py3-none-any.whl
> > > >> >>
> > > >> >>
> > > >>
> >
> --------------------------------------------------------------------------------
> > > >> >>   ✓ Artifact exists: apache_hamilton-1.90.0-py3-none-any.whl
> > (475,199
> > > >> >> bytes)
> > > >> >>   Verifying GPG signature:
> > apache_hamilton-1.90.0-py3-none-any.whl.asc
> > > >> >>     ✗ Signature file not found
> > > >> >>   Verifying SHA512 checksum:
> > > >> >> apache_hamilton-1.90.0-py3-none-any.whl.sha512
> > > >> >>     ✗ Checksum file not found
> > > >> >>   Checking wheel readability:
> > apache_hamilton-1.90.0-py3-none-any.whl
> > > >> >>     ✓ Wheel is readable and contains 151 files
> > > >> >>
> > > >> >>
> > > >> >> ❌ Verification failed.
> > > >> >> ```
> > > >> >> [ ] LICENSE/NOTICE/DISCLAIMER files exist
> > > >> >> See above and below, there's some files in the examples that
> don't
> > have
> > > >> >> licenceses but are part of the source package.
> > > >> >> [x] No unexpected binary files
> > > >> >> [ ] All source files have ASF headers
> > > >> >> I ran the provided script, but rat-excludes seems not to be
> found.
> > Some
> > > >> >> of these files admit comments so they could have licence headers
> > > >> >> ```
> > > >> >> # Verify license headers (requires Apache RAT)
> > > >> >> uv run python scripts/verify_apache_artifacts.py licenses
> --rat-jar
> > > >> >> apache-rat-0.15.jar
> > > >> >> Running Apache RAT on: apache_hamilton-1.90.0.tar.gz
> > > >> >>
> > > >> >>
> > > >>
> >
> --------------------------------------------------------------------------------
> > > >> >>   Extracting archive...
> > > >> >>     ✓ Extracted to temp directory
> > > >> >>     ⚠️  Warning: .rat-excludes not found, running without
> excludes
> > > >> >>   Running Apache RAT (XML format for parsing)...
> > > >> >>     ✓ RAT XML report: dist/rat-report-apache_hamilton-1-90-0.xml
> > > >> >>   Running Apache RAT (text format for review)...
> > > >> >>     ✓ RAT text report: dist/rat-report-apache_hamilton-1-90-0.txt
> > > >> >>   Parsing RAT report...
> > > >> >>     ✓ Scanned 706 files
> > > >> >>     ✓ Found 33 files with license issues
> > > >> >>
> > > >> >>   ⚠️  License Issues Found:
> > > >> >>
> > > >> >>     Unapproved Licenses (33 files):
> > > >> >>       -
> > > >> >>
> > > >>
> >
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/Absenteeism_at_work.csv
> > > >> >>       -
> > > >> >>
> > > >>
> >
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-dask.txt
> > > >> >>       -
> > > >> >>
> > > >>
> >
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-ray.txt
> > > >> >>       -
> > > >> >>
> > > >>
> >
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-spark.txt
> > > >> >>       -
> > > >> >>
> > > >>
> >
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements.txt
> > > >> >>       -
> > > >> >>
> > > >>
> >
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/hello_world/requirements.txt
> > > >> >>       -
> > > >> >>
> > > >>
> >
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/pandas/materialization/requirements.txt
> > > >> >>       -
> > > >> >>
> > > >>
> >
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/requirements.txt
> > > >> >>       -
> > > >> >>
> > > >>
> >
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/valid_configs.jsonl
> > > >> >>       -
> > > >> >>
> > > >>
> >
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/hamilton/experimental/databackend.py
> > > >> >>       ... and 23 more
> > > >> >>
> > > >> >>     📄 Reports saved:
> > > >> >>        - dist/rat-report-apache_hamilton-1-90-0.xml (structured)
> > > >> >>        - dist/rat-report-apache_hamilton-1-90-0.txt
> > (human-readable)
> > > >> >>
> > > >> >>   ❌ License check failed!
> > > >> >>
> > > >> >> ❌ Verification failed.
> > > >> >> ```
> > > >> >> [x] Can compile from source
> > > >> >>
> > > >> >>   *
> > > >> >> the tar extracts into `apache_hamilton-1.90.0` so `cd
> > > >> >> ${PACKAGE}-${VERSION}-incubating/` doesn't work.
> > > >> >>   *
> > > >> >> `uv venv --python 3.11 --clean` doesn't work: `error: unexpected
> > > >> argument
> > > >> >> '--clean' found`
> > > >> >>   *
> > > >> >> flit worked and could install wheel
> > > >> >>   *
> > > >> >> cannot install test dependencies: `error: Distribution
> > > >> `lancedb==0.30.2 @
> > > >> >> registry+https://pypi.org/simple` <https://pypi.org/simple> <
> https://pypi.org/simple> <
> > https://pypi.org/simple> <
> > > >> https://pypi.org/simple> can't be
> > > >> >> installed because it doesn't have a source distribution or wheel
> > for
> > > >> the
> > > >> >> current platform` — seems like uv cannot resolve lance db. I am
> on
> > > >> `hint:
> > > >> >> You're on macOS (`macosx_15_0_x86_64`), but `lancedb` (v0.30.2)`
> > > >> >>   *
> > > >> >> hello_world runs -ish: only constructing the dag at the end fais
> > if you
> > > >> >> don't have graphviz: `ERROR:hamilton.graph: graphviz is required
> > for
> > > >> >> visualizing the function graph. Install it with: pip install
> > > >> >> "sf-hamilton[visualization]" or pip install graphviz`
> > > >> >>
> > > >> >>
> > > >> >> Complete verification output:
> > > >> >> ```
> > > >> >> # Verify everything
> > > >> >> uv run python scripts/verify_apache_artifacts.py all --rat-jar
> > > >> >> apache-rat-0.15.jar
> > > >> >>
> > > >> >> # Inspect artifact contents
> > > >> >> uv run python scripts/verify_apache_artifacts.py list-contents
> > > >> >> dist/apache-hamilton-1.90.0-incubating.tar.gz
> > > >> >> uv run python scripts/verify_apache_artifacts.py list-contents
> > > >> >> dist/apache_hamilton-1.90.0-py3-none-any.whl
> > > >> >>
> > > >> >> # Validate wheel metadata
> > > >> >> uv run python scripts/verify_apache_artifacts.py twine-check
> > > >> >>
> > > >> >>
> > > >> >>
> > > >>
> >
> ================================================================================
> > > >> >>   Complete Apache Artifacts Verification
> > > >> >>
> > > >> >>
> > > >>
> >
> ================================================================================
> > > >> >>
> > > >> >>
> > > >> >> [1/2] Verifying signatures and checksums...
> > > >> >>
> > > >> >>
> > > >> >>
> > > >>
> >
> ================================================================================
> > > >> >>   Verifying Signatures and Checksums
> > > >> >>
> > > >> >>
> > > >>
> >
> ================================================================================
> > > >> >>
> > > >> >> Found 4 artifact(s) to verify:
> > > >> >>
> > > >> >> Verifying: rat-report-apache_hamilton-1-90-0.xml
> > > >> >>
> > > >> >>
> > > >>
> >
> --------------------------------------------------------------------------------
> > > >> >>   ✓ Artifact exists: rat-report-apache_hamilton-1-90-0.xml
> (236,467
> > > >> bytes)
> > > >> >>   Verifying GPG signature:
> > rat-report-apache_hamilton-1-90-0.xml.asc
> > > >> >>     ✗ Signature file not found
> > > >> >>   Verifying SHA512 checksum:
> > > >> rat-report-apache_hamilton-1-90-0.xml.sha512
> > > >> >>     ✗ Checksum file not found
> > > >> >>
> > > >> >> Verifying: apache_hamilton-1.90.0.tar.gz
> > > >> >>
> > > >> >>
> > > >>
> >
> --------------------------------------------------------------------------------
> > > >> >>   ✓ Artifact exists: apache_hamilton-1.90.0.tar.gz (3,655,569
> > bytes)
> > > >> >>   Verifying GPG signature: apache_hamilton-1.90.0.tar.gz.asc
> > > >> >>     ✗ Signature file not found
> > > >> >>   Verifying SHA512 checksum: apache_hamilton-1.90.0.tar.gz.sha512
> > > >> >>     ✗ Checksum file not found
> > > >> >>   Checking archive readability: apache_hamilton-1.90.0.tar.gz
> > > >> >>     ✓ Archive is readable and contains 706 files
> > > >> >>
> > > >> >> Verifying: rat-report-apache_hamilton-1-90-0.txt
> > > >> >>
> > > >> >>
> > > >>
> >
> --------------------------------------------------------------------------------
> > > >> >>   ✓ Artifact exists: rat-report-apache_hamilton-1-90-0.txt
> (128,073
> > > >> bytes)
> > > >> >>   Verifying GPG signature:
> > rat-report-apache_hamilton-1-90-0.txt.asc
> > > >> >>     ✗ Signature file not found
> > > >> >>   Verifying SHA512 checksum:
> > > >> rat-report-apache_hamilton-1-90-0.txt.sha512
> > > >> >>     ✗ Checksum file not found
> > > >> >>
> > > >> >> Verifying: apache_hamilton-1.90.0-py3-none-any.whl
> > > >> >>
> > > >> >>
> > > >>
> >
> --------------------------------------------------------------------------------
> > > >> >>   ✓ Artifact exists: apache_hamilton-1.90.0-py3-none-any.whl
> > (475,199
> > > >> >> bytes)
> > > >> >>   Verifying GPG signature:
> > apache_hamilton-1.90.0-py3-none-any.whl.asc
> > > >> >>     ✗ Signature file not found
> > > >> >>   Verifying SHA512 checksum:
> > > >> >> apache_hamilton-1.90.0-py3-none-any.whl.sha512
> > > >> >>     ✗ Checksum file not found
> > > >> >>   Checking wheel readability:
> > apache_hamilton-1.90.0-py3-none-any.whl
> > > >> >>     ✓ Wheel is readable and contains 151 files
> > > >> >>
> > > >> >>
> > > >> >> [2/2] Verifying licenses with Apache RAT...
> > > >> >>
> > > >> >>
> > > >> >>
> > > >>
> >
> ================================================================================
> > > >> >>   Verifying Licenses with Apache RAT
> > > >> >>
> > > >> >>
> > > >>
> >
> ================================================================================
> > > >> >>
> > > >> >> Found 1 tar.gz artifact(s) to check:
> > > >> >>
> > > >> >>
> > > >> >> Running Apache RAT on: apache_hamilton-1.90.0.tar.gz
> > > >> >>
> > > >> >>
> > > >>
> >
> --------------------------------------------------------------------------------
> > > >> >>   Extracting archive...
> > > >> >>     ✓ Extracted to temp directory
> > > >> >>     ⚠️  Warning: .rat-excludes not found, running without
> excludes
> > > >> >>   Running Apache RAT (XML format for parsing)...
> > > >> >>     ✓ RAT XML report: dist/rat-report-apache_hamilton-1-90-0.xml
> > > >> >>   Running Apache RAT (text format for review)...
> > > >> >>     ✓ RAT text report: dist/rat-report-apache_hamilton-1-90-0.txt
> > > >> >>   Parsing RAT report...
> > > >> >>     ✓ Scanned 706 files
> > > >> >>     ✓ Found 33 files with license issues
> > > >> >>
> > > >> >>   ⚠️  License Issues Found:
> > > >> >>
> > > >> >>     Unapproved Licenses (33 files):
> > > >> >>       -
> > > >> >>
> > > >>
> >
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/Absenteeism_at_work.csv
> > > >> >>       -
> > > >> >>
> > > >>
> >
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-dask.txt
> > > >> >>       -
> > > >> >>
> > > >>
> >
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-ray.txt
> > > >> >>       -
> > > >> >>
> > > >>
> >
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-spark.txt
> > > >> >>       -
> > > >> >>
> > > >>
> >
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements.txt
> > > >> >>       -
> > > >> >>
> > > >>
> >
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/hello_world/requirements.txt
> > > >> >>       -
> > > >> >>
> > > >>
> >
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/pandas/materialization/requirements.txt
> > > >> >>       -
> > > >> >>
> > > >>
> >
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/requirements.txt
> > > >> >>       -
> > > >> >>
> > > >>
> >
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/valid_configs.jsonl
> > > >> >>       -
> > > >> >>
> > > >>
> >
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/hamilton/experimental/databackend.py
> > > >> >>       ... and 23 more
> > > >> >>
> > > >> >>     📄 Reports saved:
> > > >> >>        - dist/rat-report-apache_hamilton-1-90-0.xml (structured)
> > > >> >>        - dist/rat-report-apache_hamilton-1-90-0.txt
> > (human-readable)
> > > >> >>
> > > >> >>   ❌ License check failed!
> > > >> >>
> > > >> >>
> > > >> >>
> > > >>
> >
> ================================================================================
> > > >> >>   Verification Summary
> > > >> >>
> > > >> >>
> > > >>
> >
> ================================================================================
> > > >> >>
> > > >> >> Results:
> > > >> >>   Signatures & Checksums: ❌ FAIL
> > > >> >>   License Compliance:     ❌ FAIL
> > > >> >>
> > > >> >> ❌ Verification failed.
> > > >> >>
> > > >> >>
> > > >> >>
> > > >>
> >
> ================================================================================
> > > >> >>   Listing Artifact Contents
> > > >> >>
> > > >> >>
> > > >>
> >
> ================================================================================
> > > >> >>
> > > >> >>
> > > >> >> ❌ Artifact not found:
> dist/apache-hamilton-1.90.0-incubating.tar.gz
> > > >> >>
> > > >> >>
> > > >> >>
> > > >>
> >
> ================================================================================
> > > >> >>   Listing Artifact Contents
> > > >> >>
> > > >> >>
> > > >>
> >
> ================================================================================
> > > >> >>
> > > >> >>
> > > >> >> Contents of: apache_hamilton-1.90.0-py3-none-any.whl
> > > >> >>
> > > >> >>
> > > >>
> >
> ================================================================================
> > > >> >> Total files: 151
> > > >> >>
> > > >> >> Top-level structure:
> > > >> >>   apache_hamilton-1.90.0.dist-info                   (7 files)
> > > >> >>   hamilton                                           (144 files)
> > > >> >>
> > > >> >> Files:
> > > >> >>
> > > >> >>   apache_hamilton-1.90.0.dist-info/METADATA
> > > >> >>       22,665
> > > >> >>   apache_hamilton-1.90.0.dist-info/RECORD
> > > >> >>       13,565
> > > >> >>   apache_hamilton-1.90.0.dist-info/WHEEL
> > > >> >>          82
> > > >> >>   apache_hamilton-1.90.0.dist-info/entry_points.txt
> > > >> >>          421
> > > >> >>   apache_hamilton-1.90.0.dist-info/licenses/DISCLAIMER
> > > >> >>         554
> > > >> >>   apache_hamilton-1.90.0.dist-info/licenses/LICENSE
> > > >> >>       12,602
> > > >> >>   apache_hamilton-1.90.0.dist-info/licenses/NOTICE
> > > >> >>         182
> > > >> >>   hamilton/__init__.py
> > > >> >>       1,086
> > > >> >>   hamilton/ad_hoc_utils.py
> > > >> >>       5,677
> > > >> >>   hamilton/async_driver.py
> > > >> >>      19,548
> > > >> >>   hamilton/base.py
> > > >> >>      19,860
> > > >> >>   hamilton/caching/__init__.py
> > > >> >>         785
> > > >> >>   hamilton/caching/adapter.py
> > > >> >>       61,482
> > > >> >>   hamilton/caching/cache_key.py
> > > >> >>        2,497
> > > >> >>   hamilton/caching/fingerprinting.py
> > > >> >>       9,986
> > > >> >>   hamilton/caching/stores/__init__.py
> > > >> >>          785
> > > >> >>   hamilton/caching/stores/base.py
> > > >> >>        8,529
> > > >> >>   hamilton/caching/stores/file.py
> > > >> >>        5,229
> > > >> >>   hamilton/caching/stores/memory.py
> > > >> >>       11,159
> > > >> >>   hamilton/caching/stores/sqlite.py
> > > >> >>        9,965
> > > >> >>   hamilton/caching/stores/utils.py
> > > >> >>       1,370
> > > >> >>   hamilton/cli/__init__.py
> > > >> >>         785
> > > >> >>   hamilton/cli/__main__.py
> > > >> >>       9,202
> > > >> >>   hamilton/cli/commands.py
> > > >> >>       4,446
> > > >> >>   hamilton/cli/logic.py
> > > >> >>       10,338
> > > >> >>   hamilton/common/__init__.py
> > > >> >>        3,075
> > > >> >>   hamilton/contrib/__init__.py
> > > >> >>       1,644
> > > >> >>   hamilton/data_quality/__init__.py
> > > >> >>          785
> > > >> >>   hamilton/data_quality/base.py
> > > >> >>        6,890
> > > >> >>   hamilton/data_quality/default_validators.py
> > > >> >>       21,184
> > > >> >>   hamilton/data_quality/pandera_validators.py
> > > >> >>        4,493
> > > >> >>   hamilton/dataflows/__init__.py
> > > >> >>      27,999
> > > >> >>   hamilton/dataflows/template/README.md
> > > >> >>          958
> > > >> >>   hamilton/dataflows/template/__init__.py
> > > >> >>        1,721
> > > >> >>   hamilton/dataflows/template/author.md
> > > >> >>          940
> > > >> >>   hamilton/dataflows/template/requirements.txt
> > > >> >>           0
> > > >> >>   hamilton/dataflows/template/tags.json
> > > >> >>           98
> > > >> >>   hamilton/dataflows/template/valid_configs.jsonl
> > > >> >>            3
> > > >> >>   hamilton/dev_utils/__init__.py
> > > >> >>         785
> > > >> >>   hamilton/dev_utils/deprecation.py
> > > >> >>        7,774
> > > >> >>   hamilton/driver.py
> > > >> >>      95,686
> > > >> >>   hamilton/execution/__init__.py
> > > >> >>         785
> > > >> >>   hamilton/execution/debugging_utils.py
> > > >> >>        2,041
> > > >> >>   hamilton/execution/executors.py
> > > >> >>       18,833
> > > >> >>   hamilton/execution/graph_functions.py
> > > >> >>       16,527
> > > >> >>   hamilton/execution/grouping.py
> > > >> >>      17,480
> > > >> >>   hamilton/execution/state.py
> > > >> >>       23,957
> > > >> >>   hamilton/experimental/__init__.py
> > > >> >>        1,100
> > > >> >>   hamilton/experimental/databackend.py
> > > >> >>       1,397
> > > >> >>   hamilton/experimental/decorators/__init__.py
> > > >> >>         785
> > > >> >>   hamilton/experimental/decorators/parameterize_frame.py
> > > >> >>       8,684
> > > >> >>   hamilton/experimental/h_async.py
> > > >> >>       1,057
> > > >> >>   hamilton/experimental/h_cache.py
> > > >> >>      15,259
> > > >> >>   hamilton/experimental/h_dask.py
> > > >> >>        1,166
> > > >> >>   hamilton/experimental/h_databackends.py
> > > >> >>        5,075
> > > >> >>   hamilton/experimental/h_ray.py
> > > >> >>       1,124
> > > >> >>   hamilton/experimental/h_spark.py
> > > >> >>       1,223
> > > >> >>   hamilton/function_modifiers/README
> > > >> >>       2,672
> > > >> >>   hamilton/function_modifiers/__init__.py
> > > >> >>        3,812
> > > >> >>   hamilton/function_modifiers/adapters.py
> > > >> >>       38,908
> > > >> >>   hamilton/function_modifiers/base.py
> > > >> >>       33,403
> > > >> >>   hamilton/function_modifiers/configuration.py
> > > >> >>      13,422
> > > >> >>   hamilton/function_modifiers/delayed.py
> > > >> >>       9,448
> > > >> >>   hamilton/function_modifiers/dependencies.py
> > > >> >>       10,014
> > > >> >>   hamilton/function_modifiers/expanders.py
> > > >> >>      56,117
> > > >> >>   hamilton/function_modifiers/macros.py
> > > >> >>       73,755
> > > >> >>   hamilton/function_modifiers/metadata.py
> > > >> >>       17,253
> > > >> >>   hamilton/function_modifiers/recursive.py
> > > >> >>      40,426
> > > >> >>   hamilton/function_modifiers/validation.py
> > > >> >>       12,484
> > > >> >>   hamilton/function_modifiers_base.py
> > > >> >>        1,462
> > > >> >>   hamilton/graph.py
> > > >> >>       50,459
> > > >> >>   hamilton/graph_types.py
> > > >> >>       10,478
> > > >> >>   hamilton/graph_utils.py
> > > >> >>        1,656
> > > >> >>   hamilton/htypes.py
> > > >> >>      17,746
> > > >> >>   hamilton/io/__init__.py
> > > >> >>        1,183
> > > >> >>   hamilton/io/data_adapters.py
> > > >> >>       7,987
> > > >> >>   hamilton/io/default_data_loaders.py
> > > >> >>        5,617
> > > >> >>   hamilton/io/materialization.py
> > > >> >>      21,578
> > > >> >>   hamilton/io/utils.py
> > > >> >>       5,073
> > > >> >>   hamilton/lifecycle/__init__.py
> > > >> >>       2,053
> > > >> >>   hamilton/lifecycle/api.py
> > > >> >>       31,981
> > > >> >>   hamilton/lifecycle/base.py
> > > >> >>      44,599
> > > >> >>   hamilton/lifecycle/default.py
> > > >> >>       32,890
> > > >> >>   hamilton/log_setup.py
> > > >> >>        1,714
> > > >> >>   hamilton/models.py
> > > >> >>       3,265
> > > >> >>   hamilton/node.py
> > > >> >>      17,153
> > > >> >>   hamilton/plugins/README.md
> > > >> >>       2,659
> > > >> >>   hamilton/plugins/__init__.py
> > > >> >>         785
> > > >> >>   hamilton/plugins/dask_extensions.py
> > > >> >>        1,518
> > > >> >>   hamilton/plugins/dlt_extensions.py
> > > >> >>       5,585
> > > >> >>   hamilton/plugins/geopandas_extensions.py
> > > >> >>       1,572
> > > >> >>   hamilton/plugins/h_dask.py
> > > >> >>      15,566
> > > >> >>   hamilton/plugins/h_ddog.py
> > > >> >>      22,392
> > > >> >>   hamilton/plugins/h_diskcache.py
> > > >> >>        6,683
> > > >> >>   hamilton/plugins/h_experiments/__init__.py
> > > >> >>         892
> > > >> >>   hamilton/plugins/h_experiments/__main__.py
> > > >> >>       2,181
> > > >> >>   hamilton/plugins/h_experiments/cache.py
> > > >> >>        1,395
> > > >> >>   hamilton/plugins/h_experiments/data_model.py
> > > >> >>       2,180
> > > >> >>   hamilton/plugins/h_experiments/hook.py
> > > >> >>       7,240
> > > >> >>   hamilton/plugins/h_experiments/server.py
> > > >> >>      12,493
> > > >> >>   hamilton/plugins/h_kedro.py
> > > >> >>        5,583
> > > >> >>   hamilton/plugins/h_logging.py
> > > >> >>       15,225
> > > >> >>   hamilton/plugins/h_mcp/__init__.py
> > > >> >>       1,068
> > > >> >>   hamilton/plugins/h_mcp/__main__.py
> > > >> >>       1,137
> > > >> >>   hamilton/plugins/h_mcp/_helpers.py
> > > >> >>       4,152
> > > >> >>   hamilton/plugins/h_mcp/_templates.py
> > > >> >>      13,528
> > > >> >>   hamilton/plugins/h_mcp/server.py
> > > >> >>      12,392
> > > >> >>   hamilton/plugins/h_mlflow.py
> > > >> >>      14,442
> > > >> >>   hamilton/plugins/h_narwhals.py
> > > >> >>       4,677
> > > >> >>   hamilton/plugins/h_openlineage.py
> > > >> >>       13,129
> > > >> >>   hamilton/plugins/h_opentelemetry.py
> > > >> >>        5,928
> > > >> >>   hamilton/plugins/h_pandas.py
> > > >> >>      10,633
> > > >> >>   hamilton/plugins/h_pandera.py
> > > >> >>        4,952
> > > >> >>   hamilton/plugins/h_polars.py
> > > >> >>      12,507
> > > >> >>   hamilton/plugins/h_polars_lazyframe.py
> > > >> >>      11,561
> > > >> >>   hamilton/plugins/h_pyarrow.py
> > > >> >>        2,177
> > > >> >>   hamilton/plugins/h_pydantic.py
> > > >> >>       4,962
> > > >> >>   hamilton/plugins/h_ray.py
> > > >> >>        9,130
> > > >> >>   hamilton/plugins/h_rich.py
> > > >> >>       5,181
> > > >> >>   hamilton/plugins/h_schema.py
> > > >> >>      18,307
> > > >> >>   hamilton/plugins/h_slack.py
> > > >> >>        3,634
> > > >> >>   hamilton/plugins/h_spark.py
> > > >> >>       63,268
> > > >> >>   hamilton/plugins/h_threadpool.py
> > > >> >>       5,036
> > > >> >>   hamilton/plugins/h_tqdm.py
> > > >> >>       4,665
> > > >> >>   hamilton/plugins/h_vaex.py
> > > >> >>       5,034
> > > >> >>   hamilton/plugins/huggingface_extensions.py
> > > >> >>       7,839
> > > >> >>   hamilton/plugins/ibis_extensions.py
> > > >> >>        2,970
> > > >> >>   hamilton/plugins/jupyter_magic.py
> > > >> >>       24,929
> > > >> >>   hamilton/plugins/kedro_extensions.py
> > > >> >>       3,267
> > > >> >>   hamilton/plugins/lightgbm_extensions.py
> > > >> >>        2,961
> > > >> >>   hamilton/plugins/matplotlib_extensions.py
> > > >> >>        3,738
> > > >> >>   hamilton/plugins/mlflow_extensions.py
> > > >> >>        8,856
> > > >> >>   hamilton/plugins/numpy_extensions.py
> > > >> >>       3,221
> > > >> >>   hamilton/plugins/pandas_extensions.py
> > > >> >>       66,288
> > > >> >>   hamilton/plugins/plotly_extensions.py
> > > >> >>        5,010
> > > >> >>   hamilton/plugins/polars_extensions.py
> > > >> >>        2,345
> > > >> >>   hamilton/plugins/polars_implementations.py
> > > >> >>       1,028
> > > >> >>   hamilton/plugins/polars_lazyframe_extensions.py
> > > >> >>       10,889
> > > >> >>   hamilton/plugins/polars_post_1_0_0_extensions.py
> > > >> >>      30,733
> > > >> >>   hamilton/plugins/polars_pre_1_0_0_extension.py
> > > >> >>      29,649
> > > >> >>   hamilton/plugins/pydantic_extensions.py
> > > >> >>        3,840
> > > >> >>   hamilton/plugins/pyspark_pandas_extensions.py
> > > >> >>        1,551
> > > >> >>   hamilton/plugins/sklearn_plot_extensions.py
> > > >> >>        4,326
> > > >> >>   hamilton/plugins/spark_extensions.py
> > > >> >>       3,236
> > > >> >>   hamilton/plugins/vaex_extensions.py
> > > >> >>        1,673
> > > >> >>   hamilton/plugins/xgboost_extensions.py
> > > >> >>       2,762
> > > >> >>   hamilton/plugins/yaml_extensions.py
> > > >> >>        2,554
> > > >> >>   hamilton/registry.py
> > > >> >>       8,588
> > > >> >>   hamilton/settings.py
> > > >> >>         845
> > > >> >>   hamilton/telemetry.py
> > > >> >>        1,772
> > > >> >>   hamilton/version.py
> > > >> >>          807
> > > >> >>
> > > >> >>
> > > >> >>
> > > >>
> >
> ================================================================================
> > > >> >>   Verifying Wheel Metadata with Twine
> > > >> >>
> > > >> >>
> > > >>
> >
> ================================================================================
> > > >> >>
> > > >> >>
> > > >> >> Checking apache_hamilton-1.90.0-py3-none-any.whl...
> > > >> >>   ✓ apache_hamilton-1.90.0-py3-none-any.whl metadata is valid
> > > >> >>
> > > >> >> ✅ All wheels passed twine validation
> > > >> >>
> > > >> >> ✅ Verification completed successfully!
> > > >> >> ```
> > > >> >>
> > > >> >> Maybe for some of the things it is just me doing something stupid
> > (but
> > > >> >> not sure what since I copy-paste the readme commands and just fix
> > the
> > > >> file
> > > >> >> names).
> > > >> >>
> > > >> >> Best,
> > > >> >> Jernej
> > > >> >>
> > > >> >> ________________________________
> > > >> >> From: Elijah ben Izzy <el...@alumni.brown.edu>
> > > >> >> Sent: 07 April 2026 05:37
> > > >> >> To: dev@hamilton.apache.org <de...@hamilton.apache.org>
> > > >> >> Subject: Re: [VOTE] Release Apache Hamilton - apache-hamilton
> > > >> >> 1.90.0-incubating (release candidate 0)
> > > >> >>
> > > >> >> Nice work. Checks performed:
> > > >> >>   [x] Verified GPG signature (Good signature, key
> > > >> >> FE668E857E89A11C5E5C000CA8D3D15600545C61)
> > > >> >>   [x] Verified SHA-512 checksums
> > > >> >>   [x] "incubating" in source tarball filename
> > > >> >>   [x] LICENSE, NOTICE, DISCLAIMER present and correct
> > > >> >>   [x] ASF license headers present in source files
> > > >> >>   [x] No unexpected binary files
> > > >> >>   [x] Built and installed from source (Python 3.13)
> > > >> >>   [x] Ran hello_world example successfully
> > > >> >>
> > > >> >> + 1 (binding)
> > > >> >>
> > > >> >> On Fri, Apr 3, 2026 at 10:31 PM Stefan Krawczyk <
> > > >> >> stefan.krawczyk@gmail.com>
> > > >> >> wrote:
> > > >> >>
> > > >> >> > Oh I forgot to link to it, but to hopefully make it faster to
> > verify
> > > >> >> > the verification
> > > >> >> > script
> > > >> >> > <
> > > >> >> >
> > > >> >>
> > > >>
> >
> https://github.com/apache/hamilton/blob/main/scripts/verify_apache_artifacts.py
> > > >> >> > >
> > > >> >> > should help (see these instructions
> > > >> >> > <
> > > >> >>
> > > >>
> > https://github.com/apache/hamilton/tree/main/scripts#verification-script
> > > >> >> > >).
> > > >> >> >
> > > >> >> > Otherwise I have noticed the README instructions for
> verification
> > > >> have
> > > >> >> some
> > > >> >> > incorrect paths -- please adjust for that and you should be
> able
> > to
> > > >> >> follow
> > > >> >> > the instructions.
> > > >> >> >
> > > >> >> > On Fri, Apr 3, 2026 at 10:20 PM Stefan Krawczyk <
> > > >> >> stefan.krawczyk@gmail.com
> > > >> >> > >
> > > >> >> > wrote:
> > > >> >> >
> > > >> >> > > Hi all,
> > > >> >> > >
> > > >> >> > > This is a call for a vote on releasing Apache Hamilton
> > > >> apache-hamilton
> > > >> >> > > 1.90.0-incubating, release candidate 0.
> > > >> >> > >
> > > >> >> > > This release includes the following changes (see CHANGELOG
> for
> > > >> >> details):
> > > >> >> > >
> > > >> >> > > Features:
> > > >> >> > >> - While loop DFS implementation (#1483)
> > > >> >> > >> - Async data validator support
> > > >> >> > >> - Add `unpack_fields` annotation for unpacking structured
> > fields
> > > >> >> (#1305)
> > > >> >> > >> - Expose DAG validation as LLM tools via MCP (#1490)
> > > >> >> > >> - Add NDJSON support in polars (#1431)
> > > >> >> > >> - Enhance visualization with display_name tag support
> > > >> >> > >
> > > >> >> > >
> > > >> >> > > Bug fixes:
> > > >> >> > >> - Fix `@resolve` decorator not calling `validate()` on
> > returned
> > > >> >> > >> decorators (#1524)
> > > >> >> > >> - Fix is_submodule substring match causing spurious DAG
> nodes
> > > >> (#1485)
> > > >> >> > >> - Fix pandas 2.2+ compatibility in pandas_extensions.py
> > > >> >> > >> - Fix spark failures on Python 3.14
> > > >> >> > >> - Fix local (Windows) tests (#1302)
> > > >> >> > >> - Fix typer version requirement for click 8.3 help
> > compatibility
> > > >> >> > >
> > > >> >> > >
> > > >> >> > > Performance:
> > > >> >> > >> - Use deque for BFS queue in graph traversal (#1494)
> > > >> >> > >
> > > >> >> > >
> > > >> >> > > Platform changes:
> > > >> >> > >> - Drop Python 3.8 and 3.9 support
> > > >> >> > >> - Add Python 3.13 and 3.14 support
> > > >> >> > >> - Remove usage telemetry (PostHog) (#1512)
> > > >> >> > >> - Remove RayWorkflows (#1359)
> > > >> >> > >> - Update `dlt` plugin with changes to `loader_file_format`
> > > >> >> > >> - Package renamed from sf-hamilton to apache-hamilton
> > > >> >> > >
> > > >> >> > >
> > > >> >> > >
> > > >> >> > > The artifacts for this release candidate can be found at:
> > > >> >> > >
> > > >> >> > >
> > > >> >> >
> > > >> >>
> > > >>
> >
> https://dist.apache.org/repos/dist/dev/incubator/hamilton/apache-hamilton/1.90.0-RC0
> > > >> >> > >
> > > >> >> > >
> > > >> >> > > The Git tag to be voted upon is:
> > > >> >> apache-hamilton-v1.90.0-incubating-RC0
> > > >> >> > >
> > > >> >> > >
> > > >> >> > > The release hash is: bed5a272904bd7d68bc03167978f663e1906738c
> > > >> >> > >
> > > >> >> > > But the functional release is from this commit from main:
> > > >> >> > > e84ed90b4428d777449b9bfc413ed86ee41a77c9
> > > >> >> > >
> > > >> >> > > Release artifacts are signed with the following key:
> > > >> >> > >
> > > >> >> > > FE668E857E89A11C5E5C000CA8D3D15600545C61
> > > >> >> > >
> > > >> >> > > The KEYS file is available at:
> > > >> >> > > https://downloads.apache.org/incubator/hamilton/KEYS
> > > >> >> > >
> > > >> >> > > Please download, verify, and test the release candidate. You
> > can
> > > >> find
> > > >> >> the
> > > >> >> > > instructions to do so here
> > > >> >> > > <
> > > >> >> >
> > > >> >>
> > > >>
> >
> https://github.com/apache/hamilton/tree/main/scripts#for-voters-verifying-a-release
> > > >> >> >
> > > >> >> > (and
> > > >> >> > > if you're having issues following them please reply and I'll
> > help).
> > > >> >> > >
> > > >> >> > > The vote will run for a minimum of 72 hours, likely much
> longer
> > > >> due to
> > > >> >> > the
> > > >> >> > > holiday.
> > > >> >> > >
> > > >> >> > > Please vote:
> > > >> >> > >
> > > >> >> > > [ ] +1 Release this package as Apache Hamilton
> apache-hamilton
> > > >> >> > > 1.90.0-incubating
> > > >> >> > > [ ] +0 No opinion
> > > >> >> > > [ ] -1 Do not release this package because... (Please
> provide a
> > > >> >> reason)
> > > >> >> > >
> > > >> >> > > Checklist for reference:
> > > >> >> > >
> > > >> >> > > [ ] Incubating in name.
> > > >> >> > > [ ] Download links are valid.
> > > >> >> > > [ ] Checksums and signatures.
> > > >> >> > > [ ] LICENSE/NOTICE/DISCLAIMER files exist
> > > >> >> > > [ ] No unexpected binary files
> > > >> >> > > [ ] All source files have ASF headers
> > > >> >> > > [ ] Can compile from source
> > > >> >> > >
> > > >> >> > >
> > > >> >> > > On behalf of the Apache Hamilton PPMC,
> > > >> >> > >
> > > >> >> > > Stefan Krawczyk
> > > >> >> > >
> > > >> >> >
> > > >> >>
> > > >> >
> > > >>
> > > >
> > >
> >
>

Re: [VOTE] Release Apache Hamilton - apache-hamilton 1.90.0-incubating (release candidate 0)

Posted by Stefan Krawczyk <st...@gmail.com>.
thanks PJ! I'm calling the vote. +4: Stefan, Jernej, Elijah, PJ. Email
result in a few.


On Sun, Apr 19, 2026 at 11:49 AM PJ Fanning <fa...@apache.org> wrote:

> +1 binding for the IPMC vote
>
> [x] Incubating in name.
> [x] Download links are valid.
> [x] Checksums and signatures.
> [x] LICENSE/NOTICE/DISCLAIMER files exist
> [x] No unexpected binary files
> [x] All source files have ASF headers
> [ ] Can compile from source
>
> I just concentrated on checking the source release and the contents of the
> whl file. I did not attempt to build the artifacts.
>
> On 2026/04/18 21:01:13 Stefan Krawczyk wrote:
> > Hey mentors,
> >
> > Can someone claim verifying this RC please? I'm okay waiting, I would
> just
> > like to know who's turn it is to help please.
> >
> > Cheers,
> >
> > Stefan
> >
> > On Sun, Apr 12, 2026, 11:20 PM Stefan Krawczyk <
> stefan.krawczyk@gmail.com>
> > wrote:
> >
> > > Awesome, if one of the mentors has time to check, then we can call this
> > > vote or not.
> > >
> > > You can try this gist to make it easier on you:
> > > https://gist.github.com/skrawcz/a091951d8da1c9d2eb0b880e1da725bc
> > >
> > > Cheers,
> > >
> > > Stefan
> > >
> > > On Sun, Apr 12, 2026 at 7:20 AM Jernej Frank <
> > > jernej.frank@physics.ox.ac.uk> wrote:
> > >
> > >> Thanks for that, this works! Maybe we can put this script into the
> repo?
> > >>
> > >> Happy to change to +1 for me.
> > >>
> > >> Best,
> > >> Jernej
> > >> ________________________________
> > >> From: Stefan Krawczyk <st...@gmail.com>
> > >> Sent: 11 April 2026 22:03
> > >> To: dev@hamilton.apache.org <de...@hamilton.apache.org>
> > >> Subject: Re: [VOTE] Release Apache Hamilton - apache-hamilton
> > >> 1.90.0-incubating (release candidate 0)
> > >>
> > >> in a fresh directory (not repo)*.
> > >>
> > >> On Sat, Apr 11, 2026 at 2:02 PM Stefan Krawczyk <
> > >> stefan.krawczyk@gmail.com>
> > >> wrote:
> > >>
> > >> > @jernej, do you want to try again? I created this gist that is a
> script
> > >> > that walks through the process:
> > >> > https://gist.github.com/skrawcz/a091951d8da1c9d2eb0b880e1da725bc.
> > >> >
> > >> > You don't need to use the scripts to validate -- and that's not what
> > >> we're
> > >> > voting on. If you use the above script, it should set everything up
> > >> fresh
> > >> > if you do it in a fresh repo and have `uv` installed.
> > >> >
> > >> > On Sat, Apr 11, 2026 at 2:28 AM Jernej Frank <
> > >> > jernej.frank@physics.ox.ac.uk> wrote:
> > >> >
> > >> >> Hey, I tried following the verification readme and use the scripts:
> > >> >>
> > >>
> https://github.com/apache/hamilton/tree/main/scripts#verification-script
> > >> >> and could not get a lot of things working out of the box.
> > >> >>
> > >> >> -1
> > >> >>
> > >> >> Checklist for reference:
> > >> >>
> > >> >> [x] Incubating in name.
> > >> >> [x] Download links are valid.
> > >> >> The actual link is fine but the readme is wrong
> > >> >> ```
> > >> >> svn export
> > >> >>
> > >>
> https://dist.apache.org/repos/dist/dev/incubator/hamilton/${PACKAGE}-${VERSION}-incubating-RC${RC}/
> > >> >> hamilton-rc${RC}
> > >> >>
> > >> >> svn: E170000: URL '
> > >> >>
> > >>
> https://dist.apache.org/repos/dist/dev/incubator/hamilton/apache-hamilton-1.90.0-incubating-RC0
> > >> '
> > >> >> doesn't exist
> > >> >> ```
> > >> >> [ ] Checksums and signatures.
> > >> >> I can verify gpg keys but the readme is missing a -src in the name
> for
> > >> >> the source.
> > >> >> ```
> > >> >> gpg --verify ${PACKAGE}-${VERSION}-incubating.tar.gz.asc
> > >> >> ${PACKAGE}-${VERSION}-incubating.tar.gz
> > >> >> gpg: can't open 'apache-hamilton-1.90.0-incubating.tar.gz.asc': No
> such
> > >> >> file or directory
> > >> >> gpg: verify signatures failed: No such file or directory
> > >> >> ```
> > >> >>
> > >> >> The wheel gpg keys worked.
> > >> >> I could not get sha verification working:
> > >> >> ```
> > >> >> shasum -a 512 -c ${PACKAGE}-${VERSION}-incubating.tar.gz.sha512
> > >> >> shasum: apache-hamilton-1.90.0-incubating.tar.gz.sha512: No such
> file
> > >> or
> > >> >> directory
> > >> >>
> > >> >> shasum -a 512 -c ${PACKAGE}-${VERSION}-incubating-src.tar.gz.sha512
> > >> >> shasum: apache-hamilton-1.90.0-incubating-src.tar.gz.sha512: no
> > >> properly
> > >> >> formatted SHA checksum lines found
> > >> >>
> > >> >> shasum -a 512 -c ${WHEEL_NAME}.sha512
> > >> >> shasum: apache_hamilton-1.90.0-py3-none-any.whl.sha512: no properly
> > >> >> formatted SHA checksum lines found
> > >> >> ```
> > >> >>
> > >> >> Similarly,  in case of using the script at the end:
> > >> >> ```
> > >> >> # Run from the extracted source directory
> > >> >> (${PACKAGE}-${VERSION}-incubating/)
> > >> >> # Verify GPG signatures and SHA512 checksums
> > >> >> uv run python scripts/verify_apache_artifacts.py signatures
> > >> >>
> > >> >>
> > >>
> ================================================================================
> > >> >>   Verifying Signatures and Checksums
> > >> >>
> > >> >>
> > >>
> ================================================================================
> > >> >>
> > >> >> Found 2 artifact(s) to verify:
> > >> >>
> > >> >> Verifying: apache_hamilton-1.90.0.tar.gz
> > >> >>
> > >> >>
> > >>
> --------------------------------------------------------------------------------
> > >> >>   ✓ Artifact exists: apache_hamilton-1.90.0.tar.gz (3,655,569
> bytes)
> > >> >>   Verifying GPG signature: apache_hamilton-1.90.0.tar.gz.asc
> > >> >>     ✗ Signature file not found
> > >> >>   Verifying SHA512 checksum: apache_hamilton-1.90.0.tar.gz.sha512
> > >> >>     ✗ Checksum file not found
> > >> >>   Checking archive readability: apache_hamilton-1.90.0.tar.gz
> > >> >>     ✓ Archive is readable and contains 706 files
> > >> >>
> > >> >> Verifying: apache_hamilton-1.90.0-py3-none-any.whl
> > >> >>
> > >> >>
> > >>
> --------------------------------------------------------------------------------
> > >> >>   ✓ Artifact exists: apache_hamilton-1.90.0-py3-none-any.whl
> (475,199
> > >> >> bytes)
> > >> >>   Verifying GPG signature:
> apache_hamilton-1.90.0-py3-none-any.whl.asc
> > >> >>     ✗ Signature file not found
> > >> >>   Verifying SHA512 checksum:
> > >> >> apache_hamilton-1.90.0-py3-none-any.whl.sha512
> > >> >>     ✗ Checksum file not found
> > >> >>   Checking wheel readability:
> apache_hamilton-1.90.0-py3-none-any.whl
> > >> >>     ✓ Wheel is readable and contains 151 files
> > >> >>
> > >> >>
> > >> >> ❌ Verification failed.
> > >> >> ```
> > >> >> [ ] LICENSE/NOTICE/DISCLAIMER files exist
> > >> >> See above and below, there's some files in the examples that don't
> have
> > >> >> licenceses but are part of the source package.
> > >> >> [x] No unexpected binary files
> > >> >> [ ] All source files have ASF headers
> > >> >> I ran the provided script, but rat-excludes seems not to be found.
> Some
> > >> >> of these files admit comments so they could have licence headers
> > >> >> ```
> > >> >> # Verify license headers (requires Apache RAT)
> > >> >> uv run python scripts/verify_apache_artifacts.py licenses --rat-jar
> > >> >> apache-rat-0.15.jar
> > >> >> Running Apache RAT on: apache_hamilton-1.90.0.tar.gz
> > >> >>
> > >> >>
> > >>
> --------------------------------------------------------------------------------
> > >> >>   Extracting archive...
> > >> >>     ✓ Extracted to temp directory
> > >> >>     ⚠️  Warning: .rat-excludes not found, running without excludes
> > >> >>   Running Apache RAT (XML format for parsing)...
> > >> >>     ✓ RAT XML report: dist/rat-report-apache_hamilton-1-90-0.xml
> > >> >>   Running Apache RAT (text format for review)...
> > >> >>     ✓ RAT text report: dist/rat-report-apache_hamilton-1-90-0.txt
> > >> >>   Parsing RAT report...
> > >> >>     ✓ Scanned 706 files
> > >> >>     ✓ Found 33 files with license issues
> > >> >>
> > >> >>   ⚠️  License Issues Found:
> > >> >>
> > >> >>     Unapproved Licenses (33 files):
> > >> >>       -
> > >> >>
> > >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/Absenteeism_at_work.csv
> > >> >>       -
> > >> >>
> > >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-dask.txt
> > >> >>       -
> > >> >>
> > >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-ray.txt
> > >> >>       -
> > >> >>
> > >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-spark.txt
> > >> >>       -
> > >> >>
> > >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements.txt
> > >> >>       -
> > >> >>
> > >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/hello_world/requirements.txt
> > >> >>       -
> > >> >>
> > >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/pandas/materialization/requirements.txt
> > >> >>       -
> > >> >>
> > >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/requirements.txt
> > >> >>       -
> > >> >>
> > >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/valid_configs.jsonl
> > >> >>       -
> > >> >>
> > >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/hamilton/experimental/databackend.py
> > >> >>       ... and 23 more
> > >> >>
> > >> >>     📄 Reports saved:
> > >> >>        - dist/rat-report-apache_hamilton-1-90-0.xml (structured)
> > >> >>        - dist/rat-report-apache_hamilton-1-90-0.txt
> (human-readable)
> > >> >>
> > >> >>   ❌ License check failed!
> > >> >>
> > >> >> ❌ Verification failed.
> > >> >> ```
> > >> >> [x] Can compile from source
> > >> >>
> > >> >>   *
> > >> >> the tar extracts into `apache_hamilton-1.90.0` so `cd
> > >> >> ${PACKAGE}-${VERSION}-incubating/` doesn't work.
> > >> >>   *
> > >> >> `uv venv --python 3.11 --clean` doesn't work: `error: unexpected
> > >> argument
> > >> >> '--clean' found`
> > >> >>   *
> > >> >> flit worked and could install wheel
> > >> >>   *
> > >> >> cannot install test dependencies: `error: Distribution
> > >> `lancedb==0.30.2 @
> > >> >> registry+https://pypi.org/simple` <https://pypi.org/simple> <
> https://pypi.org/simple> <
> > >> https://pypi.org/simple> can't be
> > >> >> installed because it doesn't have a source distribution or wheel
> for
> > >> the
> > >> >> current platform` — seems like uv cannot resolve lance db. I am on
> > >> `hint:
> > >> >> You're on macOS (`macosx_15_0_x86_64`), but `lancedb` (v0.30.2)`
> > >> >>   *
> > >> >> hello_world runs -ish: only constructing the dag at the end fais
> if you
> > >> >> don't have graphviz: `ERROR:hamilton.graph: graphviz is required
> for
> > >> >> visualizing the function graph. Install it with: pip install
> > >> >> "sf-hamilton[visualization]" or pip install graphviz`
> > >> >>
> > >> >>
> > >> >> Complete verification output:
> > >> >> ```
> > >> >> # Verify everything
> > >> >> uv run python scripts/verify_apache_artifacts.py all --rat-jar
> > >> >> apache-rat-0.15.jar
> > >> >>
> > >> >> # Inspect artifact contents
> > >> >> uv run python scripts/verify_apache_artifacts.py list-contents
> > >> >> dist/apache-hamilton-1.90.0-incubating.tar.gz
> > >> >> uv run python scripts/verify_apache_artifacts.py list-contents
> > >> >> dist/apache_hamilton-1.90.0-py3-none-any.whl
> > >> >>
> > >> >> # Validate wheel metadata
> > >> >> uv run python scripts/verify_apache_artifacts.py twine-check
> > >> >>
> > >> >>
> > >> >>
> > >>
> ================================================================================
> > >> >>   Complete Apache Artifacts Verification
> > >> >>
> > >> >>
> > >>
> ================================================================================
> > >> >>
> > >> >>
> > >> >> [1/2] Verifying signatures and checksums...
> > >> >>
> > >> >>
> > >> >>
> > >>
> ================================================================================
> > >> >>   Verifying Signatures and Checksums
> > >> >>
> > >> >>
> > >>
> ================================================================================
> > >> >>
> > >> >> Found 4 artifact(s) to verify:
> > >> >>
> > >> >> Verifying: rat-report-apache_hamilton-1-90-0.xml
> > >> >>
> > >> >>
> > >>
> --------------------------------------------------------------------------------
> > >> >>   ✓ Artifact exists: rat-report-apache_hamilton-1-90-0.xml (236,467
> > >> bytes)
> > >> >>   Verifying GPG signature:
> rat-report-apache_hamilton-1-90-0.xml.asc
> > >> >>     ✗ Signature file not found
> > >> >>   Verifying SHA512 checksum:
> > >> rat-report-apache_hamilton-1-90-0.xml.sha512
> > >> >>     ✗ Checksum file not found
> > >> >>
> > >> >> Verifying: apache_hamilton-1.90.0.tar.gz
> > >> >>
> > >> >>
> > >>
> --------------------------------------------------------------------------------
> > >> >>   ✓ Artifact exists: apache_hamilton-1.90.0.tar.gz (3,655,569
> bytes)
> > >> >>   Verifying GPG signature: apache_hamilton-1.90.0.tar.gz.asc
> > >> >>     ✗ Signature file not found
> > >> >>   Verifying SHA512 checksum: apache_hamilton-1.90.0.tar.gz.sha512
> > >> >>     ✗ Checksum file not found
> > >> >>   Checking archive readability: apache_hamilton-1.90.0.tar.gz
> > >> >>     ✓ Archive is readable and contains 706 files
> > >> >>
> > >> >> Verifying: rat-report-apache_hamilton-1-90-0.txt
> > >> >>
> > >> >>
> > >>
> --------------------------------------------------------------------------------
> > >> >>   ✓ Artifact exists: rat-report-apache_hamilton-1-90-0.txt (128,073
> > >> bytes)
> > >> >>   Verifying GPG signature:
> rat-report-apache_hamilton-1-90-0.txt.asc
> > >> >>     ✗ Signature file not found
> > >> >>   Verifying SHA512 checksum:
> > >> rat-report-apache_hamilton-1-90-0.txt.sha512
> > >> >>     ✗ Checksum file not found
> > >> >>
> > >> >> Verifying: apache_hamilton-1.90.0-py3-none-any.whl
> > >> >>
> > >> >>
> > >>
> --------------------------------------------------------------------------------
> > >> >>   ✓ Artifact exists: apache_hamilton-1.90.0-py3-none-any.whl
> (475,199
> > >> >> bytes)
> > >> >>   Verifying GPG signature:
> apache_hamilton-1.90.0-py3-none-any.whl.asc
> > >> >>     ✗ Signature file not found
> > >> >>   Verifying SHA512 checksum:
> > >> >> apache_hamilton-1.90.0-py3-none-any.whl.sha512
> > >> >>     ✗ Checksum file not found
> > >> >>   Checking wheel readability:
> apache_hamilton-1.90.0-py3-none-any.whl
> > >> >>     ✓ Wheel is readable and contains 151 files
> > >> >>
> > >> >>
> > >> >> [2/2] Verifying licenses with Apache RAT...
> > >> >>
> > >> >>
> > >> >>
> > >>
> ================================================================================
> > >> >>   Verifying Licenses with Apache RAT
> > >> >>
> > >> >>
> > >>
> ================================================================================
> > >> >>
> > >> >> Found 1 tar.gz artifact(s) to check:
> > >> >>
> > >> >>
> > >> >> Running Apache RAT on: apache_hamilton-1.90.0.tar.gz
> > >> >>
> > >> >>
> > >>
> --------------------------------------------------------------------------------
> > >> >>   Extracting archive...
> > >> >>     ✓ Extracted to temp directory
> > >> >>     ⚠️  Warning: .rat-excludes not found, running without excludes
> > >> >>   Running Apache RAT (XML format for parsing)...
> > >> >>     ✓ RAT XML report: dist/rat-report-apache_hamilton-1-90-0.xml
> > >> >>   Running Apache RAT (text format for review)...
> > >> >>     ✓ RAT text report: dist/rat-report-apache_hamilton-1-90-0.txt
> > >> >>   Parsing RAT report...
> > >> >>     ✓ Scanned 706 files
> > >> >>     ✓ Found 33 files with license issues
> > >> >>
> > >> >>   ⚠️  License Issues Found:
> > >> >>
> > >> >>     Unapproved Licenses (33 files):
> > >> >>       -
> > >> >>
> > >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/Absenteeism_at_work.csv
> > >> >>       -
> > >> >>
> > >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-dask.txt
> > >> >>       -
> > >> >>
> > >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-ray.txt
> > >> >>       -
> > >> >>
> > >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-spark.txt
> > >> >>       -
> > >> >>
> > >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements.txt
> > >> >>       -
> > >> >>
> > >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/hello_world/requirements.txt
> > >> >>       -
> > >> >>
> > >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/pandas/materialization/requirements.txt
> > >> >>       -
> > >> >>
> > >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/requirements.txt
> > >> >>       -
> > >> >>
> > >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/valid_configs.jsonl
> > >> >>       -
> > >> >>
> > >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/hamilton/experimental/databackend.py
> > >> >>       ... and 23 more
> > >> >>
> > >> >>     📄 Reports saved:
> > >> >>        - dist/rat-report-apache_hamilton-1-90-0.xml (structured)
> > >> >>        - dist/rat-report-apache_hamilton-1-90-0.txt
> (human-readable)
> > >> >>
> > >> >>   ❌ License check failed!
> > >> >>
> > >> >>
> > >> >>
> > >>
> ================================================================================
> > >> >>   Verification Summary
> > >> >>
> > >> >>
> > >>
> ================================================================================
> > >> >>
> > >> >> Results:
> > >> >>   Signatures & Checksums: ❌ FAIL
> > >> >>   License Compliance:     ❌ FAIL
> > >> >>
> > >> >> ❌ Verification failed.
> > >> >>
> > >> >>
> > >> >>
> > >>
> ================================================================================
> > >> >>   Listing Artifact Contents
> > >> >>
> > >> >>
> > >>
> ================================================================================
> > >> >>
> > >> >>
> > >> >> ❌ Artifact not found: dist/apache-hamilton-1.90.0-incubating.tar.gz
> > >> >>
> > >> >>
> > >> >>
> > >>
> ================================================================================
> > >> >>   Listing Artifact Contents
> > >> >>
> > >> >>
> > >>
> ================================================================================
> > >> >>
> > >> >>
> > >> >> Contents of: apache_hamilton-1.90.0-py3-none-any.whl
> > >> >>
> > >> >>
> > >>
> ================================================================================
> > >> >> Total files: 151
> > >> >>
> > >> >> Top-level structure:
> > >> >>   apache_hamilton-1.90.0.dist-info                   (7 files)
> > >> >>   hamilton                                           (144 files)
> > >> >>
> > >> >> Files:
> > >> >>
> > >> >>   apache_hamilton-1.90.0.dist-info/METADATA
> > >> >>       22,665
> > >> >>   apache_hamilton-1.90.0.dist-info/RECORD
> > >> >>       13,565
> > >> >>   apache_hamilton-1.90.0.dist-info/WHEEL
> > >> >>          82
> > >> >>   apache_hamilton-1.90.0.dist-info/entry_points.txt
> > >> >>          421
> > >> >>   apache_hamilton-1.90.0.dist-info/licenses/DISCLAIMER
> > >> >>         554
> > >> >>   apache_hamilton-1.90.0.dist-info/licenses/LICENSE
> > >> >>       12,602
> > >> >>   apache_hamilton-1.90.0.dist-info/licenses/NOTICE
> > >> >>         182
> > >> >>   hamilton/__init__.py
> > >> >>       1,086
> > >> >>   hamilton/ad_hoc_utils.py
> > >> >>       5,677
> > >> >>   hamilton/async_driver.py
> > >> >>      19,548
> > >> >>   hamilton/base.py
> > >> >>      19,860
> > >> >>   hamilton/caching/__init__.py
> > >> >>         785
> > >> >>   hamilton/caching/adapter.py
> > >> >>       61,482
> > >> >>   hamilton/caching/cache_key.py
> > >> >>        2,497
> > >> >>   hamilton/caching/fingerprinting.py
> > >> >>       9,986
> > >> >>   hamilton/caching/stores/__init__.py
> > >> >>          785
> > >> >>   hamilton/caching/stores/base.py
> > >> >>        8,529
> > >> >>   hamilton/caching/stores/file.py
> > >> >>        5,229
> > >> >>   hamilton/caching/stores/memory.py
> > >> >>       11,159
> > >> >>   hamilton/caching/stores/sqlite.py
> > >> >>        9,965
> > >> >>   hamilton/caching/stores/utils.py
> > >> >>       1,370
> > >> >>   hamilton/cli/__init__.py
> > >> >>         785
> > >> >>   hamilton/cli/__main__.py
> > >> >>       9,202
> > >> >>   hamilton/cli/commands.py
> > >> >>       4,446
> > >> >>   hamilton/cli/logic.py
> > >> >>       10,338
> > >> >>   hamilton/common/__init__.py
> > >> >>        3,075
> > >> >>   hamilton/contrib/__init__.py
> > >> >>       1,644
> > >> >>   hamilton/data_quality/__init__.py
> > >> >>          785
> > >> >>   hamilton/data_quality/base.py
> > >> >>        6,890
> > >> >>   hamilton/data_quality/default_validators.py
> > >> >>       21,184
> > >> >>   hamilton/data_quality/pandera_validators.py
> > >> >>        4,493
> > >> >>   hamilton/dataflows/__init__.py
> > >> >>      27,999
> > >> >>   hamilton/dataflows/template/README.md
> > >> >>          958
> > >> >>   hamilton/dataflows/template/__init__.py
> > >> >>        1,721
> > >> >>   hamilton/dataflows/template/author.md
> > >> >>          940
> > >> >>   hamilton/dataflows/template/requirements.txt
> > >> >>           0
> > >> >>   hamilton/dataflows/template/tags.json
> > >> >>           98
> > >> >>   hamilton/dataflows/template/valid_configs.jsonl
> > >> >>            3
> > >> >>   hamilton/dev_utils/__init__.py
> > >> >>         785
> > >> >>   hamilton/dev_utils/deprecation.py
> > >> >>        7,774
> > >> >>   hamilton/driver.py
> > >> >>      95,686
> > >> >>   hamilton/execution/__init__.py
> > >> >>         785
> > >> >>   hamilton/execution/debugging_utils.py
> > >> >>        2,041
> > >> >>   hamilton/execution/executors.py
> > >> >>       18,833
> > >> >>   hamilton/execution/graph_functions.py
> > >> >>       16,527
> > >> >>   hamilton/execution/grouping.py
> > >> >>      17,480
> > >> >>   hamilton/execution/state.py
> > >> >>       23,957
> > >> >>   hamilton/experimental/__init__.py
> > >> >>        1,100
> > >> >>   hamilton/experimental/databackend.py
> > >> >>       1,397
> > >> >>   hamilton/experimental/decorators/__init__.py
> > >> >>         785
> > >> >>   hamilton/experimental/decorators/parameterize_frame.py
> > >> >>       8,684
> > >> >>   hamilton/experimental/h_async.py
> > >> >>       1,057
> > >> >>   hamilton/experimental/h_cache.py
> > >> >>      15,259
> > >> >>   hamilton/experimental/h_dask.py
> > >> >>        1,166
> > >> >>   hamilton/experimental/h_databackends.py
> > >> >>        5,075
> > >> >>   hamilton/experimental/h_ray.py
> > >> >>       1,124
> > >> >>   hamilton/experimental/h_spark.py
> > >> >>       1,223
> > >> >>   hamilton/function_modifiers/README
> > >> >>       2,672
> > >> >>   hamilton/function_modifiers/__init__.py
> > >> >>        3,812
> > >> >>   hamilton/function_modifiers/adapters.py
> > >> >>       38,908
> > >> >>   hamilton/function_modifiers/base.py
> > >> >>       33,403
> > >> >>   hamilton/function_modifiers/configuration.py
> > >> >>      13,422
> > >> >>   hamilton/function_modifiers/delayed.py
> > >> >>       9,448
> > >> >>   hamilton/function_modifiers/dependencies.py
> > >> >>       10,014
> > >> >>   hamilton/function_modifiers/expanders.py
> > >> >>      56,117
> > >> >>   hamilton/function_modifiers/macros.py
> > >> >>       73,755
> > >> >>   hamilton/function_modifiers/metadata.py
> > >> >>       17,253
> > >> >>   hamilton/function_modifiers/recursive.py
> > >> >>      40,426
> > >> >>   hamilton/function_modifiers/validation.py
> > >> >>       12,484
> > >> >>   hamilton/function_modifiers_base.py
> > >> >>        1,462
> > >> >>   hamilton/graph.py
> > >> >>       50,459
> > >> >>   hamilton/graph_types.py
> > >> >>       10,478
> > >> >>   hamilton/graph_utils.py
> > >> >>        1,656
> > >> >>   hamilton/htypes.py
> > >> >>      17,746
> > >> >>   hamilton/io/__init__.py
> > >> >>        1,183
> > >> >>   hamilton/io/data_adapters.py
> > >> >>       7,987
> > >> >>   hamilton/io/default_data_loaders.py
> > >> >>        5,617
> > >> >>   hamilton/io/materialization.py
> > >> >>      21,578
> > >> >>   hamilton/io/utils.py
> > >> >>       5,073
> > >> >>   hamilton/lifecycle/__init__.py
> > >> >>       2,053
> > >> >>   hamilton/lifecycle/api.py
> > >> >>       31,981
> > >> >>   hamilton/lifecycle/base.py
> > >> >>      44,599
> > >> >>   hamilton/lifecycle/default.py
> > >> >>       32,890
> > >> >>   hamilton/log_setup.py
> > >> >>        1,714
> > >> >>   hamilton/models.py
> > >> >>       3,265
> > >> >>   hamilton/node.py
> > >> >>      17,153
> > >> >>   hamilton/plugins/README.md
> > >> >>       2,659
> > >> >>   hamilton/plugins/__init__.py
> > >> >>         785
> > >> >>   hamilton/plugins/dask_extensions.py
> > >> >>        1,518
> > >> >>   hamilton/plugins/dlt_extensions.py
> > >> >>       5,585
> > >> >>   hamilton/plugins/geopandas_extensions.py
> > >> >>       1,572
> > >> >>   hamilton/plugins/h_dask.py
> > >> >>      15,566
> > >> >>   hamilton/plugins/h_ddog.py
> > >> >>      22,392
> > >> >>   hamilton/plugins/h_diskcache.py
> > >> >>        6,683
> > >> >>   hamilton/plugins/h_experiments/__init__.py
> > >> >>         892
> > >> >>   hamilton/plugins/h_experiments/__main__.py
> > >> >>       2,181
> > >> >>   hamilton/plugins/h_experiments/cache.py
> > >> >>        1,395
> > >> >>   hamilton/plugins/h_experiments/data_model.py
> > >> >>       2,180
> > >> >>   hamilton/plugins/h_experiments/hook.py
> > >> >>       7,240
> > >> >>   hamilton/plugins/h_experiments/server.py
> > >> >>      12,493
> > >> >>   hamilton/plugins/h_kedro.py
> > >> >>        5,583
> > >> >>   hamilton/plugins/h_logging.py
> > >> >>       15,225
> > >> >>   hamilton/plugins/h_mcp/__init__.py
> > >> >>       1,068
> > >> >>   hamilton/plugins/h_mcp/__main__.py
> > >> >>       1,137
> > >> >>   hamilton/plugins/h_mcp/_helpers.py
> > >> >>       4,152
> > >> >>   hamilton/plugins/h_mcp/_templates.py
> > >> >>      13,528
> > >> >>   hamilton/plugins/h_mcp/server.py
> > >> >>      12,392
> > >> >>   hamilton/plugins/h_mlflow.py
> > >> >>      14,442
> > >> >>   hamilton/plugins/h_narwhals.py
> > >> >>       4,677
> > >> >>   hamilton/plugins/h_openlineage.py
> > >> >>       13,129
> > >> >>   hamilton/plugins/h_opentelemetry.py
> > >> >>        5,928
> > >> >>   hamilton/plugins/h_pandas.py
> > >> >>      10,633
> > >> >>   hamilton/plugins/h_pandera.py
> > >> >>        4,952
> > >> >>   hamilton/plugins/h_polars.py
> > >> >>      12,507
> > >> >>   hamilton/plugins/h_polars_lazyframe.py
> > >> >>      11,561
> > >> >>   hamilton/plugins/h_pyarrow.py
> > >> >>        2,177
> > >> >>   hamilton/plugins/h_pydantic.py
> > >> >>       4,962
> > >> >>   hamilton/plugins/h_ray.py
> > >> >>        9,130
> > >> >>   hamilton/plugins/h_rich.py
> > >> >>       5,181
> > >> >>   hamilton/plugins/h_schema.py
> > >> >>      18,307
> > >> >>   hamilton/plugins/h_slack.py
> > >> >>        3,634
> > >> >>   hamilton/plugins/h_spark.py
> > >> >>       63,268
> > >> >>   hamilton/plugins/h_threadpool.py
> > >> >>       5,036
> > >> >>   hamilton/plugins/h_tqdm.py
> > >> >>       4,665
> > >> >>   hamilton/plugins/h_vaex.py
> > >> >>       5,034
> > >> >>   hamilton/plugins/huggingface_extensions.py
> > >> >>       7,839
> > >> >>   hamilton/plugins/ibis_extensions.py
> > >> >>        2,970
> > >> >>   hamilton/plugins/jupyter_magic.py
> > >> >>       24,929
> > >> >>   hamilton/plugins/kedro_extensions.py
> > >> >>       3,267
> > >> >>   hamilton/plugins/lightgbm_extensions.py
> > >> >>        2,961
> > >> >>   hamilton/plugins/matplotlib_extensions.py
> > >> >>        3,738
> > >> >>   hamilton/plugins/mlflow_extensions.py
> > >> >>        8,856
> > >> >>   hamilton/plugins/numpy_extensions.py
> > >> >>       3,221
> > >> >>   hamilton/plugins/pandas_extensions.py
> > >> >>       66,288
> > >> >>   hamilton/plugins/plotly_extensions.py
> > >> >>        5,010
> > >> >>   hamilton/plugins/polars_extensions.py
> > >> >>        2,345
> > >> >>   hamilton/plugins/polars_implementations.py
> > >> >>       1,028
> > >> >>   hamilton/plugins/polars_lazyframe_extensions.py
> > >> >>       10,889
> > >> >>   hamilton/plugins/polars_post_1_0_0_extensions.py
> > >> >>      30,733
> > >> >>   hamilton/plugins/polars_pre_1_0_0_extension.py
> > >> >>      29,649
> > >> >>   hamilton/plugins/pydantic_extensions.py
> > >> >>        3,840
> > >> >>   hamilton/plugins/pyspark_pandas_extensions.py
> > >> >>        1,551
> > >> >>   hamilton/plugins/sklearn_plot_extensions.py
> > >> >>        4,326
> > >> >>   hamilton/plugins/spark_extensions.py
> > >> >>       3,236
> > >> >>   hamilton/plugins/vaex_extensions.py
> > >> >>        1,673
> > >> >>   hamilton/plugins/xgboost_extensions.py
> > >> >>       2,762
> > >> >>   hamilton/plugins/yaml_extensions.py
> > >> >>        2,554
> > >> >>   hamilton/registry.py
> > >> >>       8,588
> > >> >>   hamilton/settings.py
> > >> >>         845
> > >> >>   hamilton/telemetry.py
> > >> >>        1,772
> > >> >>   hamilton/version.py
> > >> >>          807
> > >> >>
> > >> >>
> > >> >>
> > >>
> ================================================================================
> > >> >>   Verifying Wheel Metadata with Twine
> > >> >>
> > >> >>
> > >>
> ================================================================================
> > >> >>
> > >> >>
> > >> >> Checking apache_hamilton-1.90.0-py3-none-any.whl...
> > >> >>   ✓ apache_hamilton-1.90.0-py3-none-any.whl metadata is valid
> > >> >>
> > >> >> ✅ All wheels passed twine validation
> > >> >>
> > >> >> ✅ Verification completed successfully!
> > >> >> ```
> > >> >>
> > >> >> Maybe for some of the things it is just me doing something stupid
> (but
> > >> >> not sure what since I copy-paste the readme commands and just fix
> the
> > >> file
> > >> >> names).
> > >> >>
> > >> >> Best,
> > >> >> Jernej
> > >> >>
> > >> >> ________________________________
> > >> >> From: Elijah ben Izzy <el...@alumni.brown.edu>
> > >> >> Sent: 07 April 2026 05:37
> > >> >> To: dev@hamilton.apache.org <de...@hamilton.apache.org>
> > >> >> Subject: Re: [VOTE] Release Apache Hamilton - apache-hamilton
> > >> >> 1.90.0-incubating (release candidate 0)
> > >> >>
> > >> >> Nice work. Checks performed:
> > >> >>   [x] Verified GPG signature (Good signature, key
> > >> >> FE668E857E89A11C5E5C000CA8D3D15600545C61)
> > >> >>   [x] Verified SHA-512 checksums
> > >> >>   [x] "incubating" in source tarball filename
> > >> >>   [x] LICENSE, NOTICE, DISCLAIMER present and correct
> > >> >>   [x] ASF license headers present in source files
> > >> >>   [x] No unexpected binary files
> > >> >>   [x] Built and installed from source (Python 3.13)
> > >> >>   [x] Ran hello_world example successfully
> > >> >>
> > >> >> + 1 (binding)
> > >> >>
> > >> >> On Fri, Apr 3, 2026 at 10:31 PM Stefan Krawczyk <
> > >> >> stefan.krawczyk@gmail.com>
> > >> >> wrote:
> > >> >>
> > >> >> > Oh I forgot to link to it, but to hopefully make it faster to
> verify
> > >> >> > the verification
> > >> >> > script
> > >> >> > <
> > >> >> >
> > >> >>
> > >>
> https://github.com/apache/hamilton/blob/main/scripts/verify_apache_artifacts.py
> > >> >> > >
> > >> >> > should help (see these instructions
> > >> >> > <
> > >> >>
> > >>
> https://github.com/apache/hamilton/tree/main/scripts#verification-script
> > >> >> > >).
> > >> >> >
> > >> >> > Otherwise I have noticed the README instructions for verification
> > >> have
> > >> >> some
> > >> >> > incorrect paths -- please adjust for that and you should be able
> to
> > >> >> follow
> > >> >> > the instructions.
> > >> >> >
> > >> >> > On Fri, Apr 3, 2026 at 10:20 PM Stefan Krawczyk <
> > >> >> stefan.krawczyk@gmail.com
> > >> >> > >
> > >> >> > wrote:
> > >> >> >
> > >> >> > > Hi all,
> > >> >> > >
> > >> >> > > This is a call for a vote on releasing Apache Hamilton
> > >> apache-hamilton
> > >> >> > > 1.90.0-incubating, release candidate 0.
> > >> >> > >
> > >> >> > > This release includes the following changes (see CHANGELOG for
> > >> >> details):
> > >> >> > >
> > >> >> > > Features:
> > >> >> > >> - While loop DFS implementation (#1483)
> > >> >> > >> - Async data validator support
> > >> >> > >> - Add `unpack_fields` annotation for unpacking structured
> fields
> > >> >> (#1305)
> > >> >> > >> - Expose DAG validation as LLM tools via MCP (#1490)
> > >> >> > >> - Add NDJSON support in polars (#1431)
> > >> >> > >> - Enhance visualization with display_name tag support
> > >> >> > >
> > >> >> > >
> > >> >> > > Bug fixes:
> > >> >> > >> - Fix `@resolve` decorator not calling `validate()` on
> returned
> > >> >> > >> decorators (#1524)
> > >> >> > >> - Fix is_submodule substring match causing spurious DAG nodes
> > >> (#1485)
> > >> >> > >> - Fix pandas 2.2+ compatibility in pandas_extensions.py
> > >> >> > >> - Fix spark failures on Python 3.14
> > >> >> > >> - Fix local (Windows) tests (#1302)
> > >> >> > >> - Fix typer version requirement for click 8.3 help
> compatibility
> > >> >> > >
> > >> >> > >
> > >> >> > > Performance:
> > >> >> > >> - Use deque for BFS queue in graph traversal (#1494)
> > >> >> > >
> > >> >> > >
> > >> >> > > Platform changes:
> > >> >> > >> - Drop Python 3.8 and 3.9 support
> > >> >> > >> - Add Python 3.13 and 3.14 support
> > >> >> > >> - Remove usage telemetry (PostHog) (#1512)
> > >> >> > >> - Remove RayWorkflows (#1359)
> > >> >> > >> - Update `dlt` plugin with changes to `loader_file_format`
> > >> >> > >> - Package renamed from sf-hamilton to apache-hamilton
> > >> >> > >
> > >> >> > >
> > >> >> > >
> > >> >> > > The artifacts for this release candidate can be found at:
> > >> >> > >
> > >> >> > >
> > >> >> >
> > >> >>
> > >>
> https://dist.apache.org/repos/dist/dev/incubator/hamilton/apache-hamilton/1.90.0-RC0
> > >> >> > >
> > >> >> > >
> > >> >> > > The Git tag to be voted upon is:
> > >> >> apache-hamilton-v1.90.0-incubating-RC0
> > >> >> > >
> > >> >> > >
> > >> >> > > The release hash is: bed5a272904bd7d68bc03167978f663e1906738c
> > >> >> > >
> > >> >> > > But the functional release is from this commit from main:
> > >> >> > > e84ed90b4428d777449b9bfc413ed86ee41a77c9
> > >> >> > >
> > >> >> > > Release artifacts are signed with the following key:
> > >> >> > >
> > >> >> > > FE668E857E89A11C5E5C000CA8D3D15600545C61
> > >> >> > >
> > >> >> > > The KEYS file is available at:
> > >> >> > > https://downloads.apache.org/incubator/hamilton/KEYS
> > >> >> > >
> > >> >> > > Please download, verify, and test the release candidate. You
> can
> > >> find
> > >> >> the
> > >> >> > > instructions to do so here
> > >> >> > > <
> > >> >> >
> > >> >>
> > >>
> https://github.com/apache/hamilton/tree/main/scripts#for-voters-verifying-a-release
> > >> >> >
> > >> >> > (and
> > >> >> > > if you're having issues following them please reply and I'll
> help).
> > >> >> > >
> > >> >> > > The vote will run for a minimum of 72 hours, likely much longer
> > >> due to
> > >> >> > the
> > >> >> > > holiday.
> > >> >> > >
> > >> >> > > Please vote:
> > >> >> > >
> > >> >> > > [ ] +1 Release this package as Apache Hamilton apache-hamilton
> > >> >> > > 1.90.0-incubating
> > >> >> > > [ ] +0 No opinion
> > >> >> > > [ ] -1 Do not release this package because... (Please provide a
> > >> >> reason)
> > >> >> > >
> > >> >> > > Checklist for reference:
> > >> >> > >
> > >> >> > > [ ] Incubating in name.
> > >> >> > > [ ] Download links are valid.
> > >> >> > > [ ] Checksums and signatures.
> > >> >> > > [ ] LICENSE/NOTICE/DISCLAIMER files exist
> > >> >> > > [ ] No unexpected binary files
> > >> >> > > [ ] All source files have ASF headers
> > >> >> > > [ ] Can compile from source
> > >> >> > >
> > >> >> > >
> > >> >> > > On behalf of the Apache Hamilton PPMC,
> > >> >> > >
> > >> >> > > Stefan Krawczyk
> > >> >> > >
> > >> >> >
> > >> >>
> > >> >
> > >>
> > >
> >
>

Re: [VOTE] Release Apache Hamilton - apache-hamilton 1.90.0-incubating (release candidate 0)

Posted by PJ Fanning <fa...@apache.org>.
+1 binding for the IPMC vote

[x] Incubating in name.
[x] Download links are valid.
[x] Checksums and signatures.
[x] LICENSE/NOTICE/DISCLAIMER files exist
[x] No unexpected binary files
[x] All source files have ASF headers
[ ] Can compile from source

I just concentrated on checking the source release and the contents of the whl file. I did not attempt to build the artifacts.

On 2026/04/18 21:01:13 Stefan Krawczyk wrote:
> Hey mentors,
> 
> Can someone claim verifying this RC please? I'm okay waiting, I would just
> like to know who's turn it is to help please.
> 
> Cheers,
> 
> Stefan
> 
> On Sun, Apr 12, 2026, 11:20 PM Stefan Krawczyk <st...@gmail.com>
> wrote:
> 
> > Awesome, if one of the mentors has time to check, then we can call this
> > vote or not.
> >
> > You can try this gist to make it easier on you:
> > https://gist.github.com/skrawcz/a091951d8da1c9d2eb0b880e1da725bc
> >
> > Cheers,
> >
> > Stefan
> >
> > On Sun, Apr 12, 2026 at 7:20 AM Jernej Frank <
> > jernej.frank@physics.ox.ac.uk> wrote:
> >
> >> Thanks for that, this works! Maybe we can put this script into the repo?
> >>
> >> Happy to change to +1 for me.
> >>
> >> Best,
> >> Jernej
> >> ________________________________
> >> From: Stefan Krawczyk <st...@gmail.com>
> >> Sent: 11 April 2026 22:03
> >> To: dev@hamilton.apache.org <de...@hamilton.apache.org>
> >> Subject: Re: [VOTE] Release Apache Hamilton - apache-hamilton
> >> 1.90.0-incubating (release candidate 0)
> >>
> >> in a fresh directory (not repo)*.
> >>
> >> On Sat, Apr 11, 2026 at 2:02 PM Stefan Krawczyk <
> >> stefan.krawczyk@gmail.com>
> >> wrote:
> >>
> >> > @jernej, do you want to try again? I created this gist that is a script
> >> > that walks through the process:
> >> > https://gist.github.com/skrawcz/a091951d8da1c9d2eb0b880e1da725bc.
> >> >
> >> > You don't need to use the scripts to validate -- and that's not what
> >> we're
> >> > voting on. If you use the above script, it should set everything up
> >> fresh
> >> > if you do it in a fresh repo and have `uv` installed.
> >> >
> >> > On Sat, Apr 11, 2026 at 2:28 AM Jernej Frank <
> >> > jernej.frank@physics.ox.ac.uk> wrote:
> >> >
> >> >> Hey, I tried following the verification readme and use the scripts:
> >> >>
> >> https://github.com/apache/hamilton/tree/main/scripts#verification-script
> >> >> and could not get a lot of things working out of the box.
> >> >>
> >> >> -1
> >> >>
> >> >> Checklist for reference:
> >> >>
> >> >> [x] Incubating in name.
> >> >> [x] Download links are valid.
> >> >> The actual link is fine but the readme is wrong
> >> >> ```
> >> >> svn export
> >> >>
> >> https://dist.apache.org/repos/dist/dev/incubator/hamilton/${PACKAGE}-${VERSION}-incubating-RC${RC}/
> >> >> hamilton-rc${RC}
> >> >>
> >> >> svn: E170000: URL '
> >> >>
> >> https://dist.apache.org/repos/dist/dev/incubator/hamilton/apache-hamilton-1.90.0-incubating-RC0
> >> '
> >> >> doesn't exist
> >> >> ```
> >> >> [ ] Checksums and signatures.
> >> >> I can verify gpg keys but the readme is missing a -src in the name for
> >> >> the source.
> >> >> ```
> >> >> gpg --verify ${PACKAGE}-${VERSION}-incubating.tar.gz.asc
> >> >> ${PACKAGE}-${VERSION}-incubating.tar.gz
> >> >> gpg: can't open 'apache-hamilton-1.90.0-incubating.tar.gz.asc': No such
> >> >> file or directory
> >> >> gpg: verify signatures failed: No such file or directory
> >> >> ```
> >> >>
> >> >> The wheel gpg keys worked.
> >> >> I could not get sha verification working:
> >> >> ```
> >> >> shasum -a 512 -c ${PACKAGE}-${VERSION}-incubating.tar.gz.sha512
> >> >> shasum: apache-hamilton-1.90.0-incubating.tar.gz.sha512: No such file
> >> or
> >> >> directory
> >> >>
> >> >> shasum -a 512 -c ${PACKAGE}-${VERSION}-incubating-src.tar.gz.sha512
> >> >> shasum: apache-hamilton-1.90.0-incubating-src.tar.gz.sha512: no
> >> properly
> >> >> formatted SHA checksum lines found
> >> >>
> >> >> shasum -a 512 -c ${WHEEL_NAME}.sha512
> >> >> shasum: apache_hamilton-1.90.0-py3-none-any.whl.sha512: no properly
> >> >> formatted SHA checksum lines found
> >> >> ```
> >> >>
> >> >> Similarly,  in case of using the script at the end:
> >> >> ```
> >> >> # Run from the extracted source directory
> >> >> (${PACKAGE}-${VERSION}-incubating/)
> >> >> # Verify GPG signatures and SHA512 checksums
> >> >> uv run python scripts/verify_apache_artifacts.py signatures
> >> >>
> >> >>
> >> ================================================================================
> >> >>   Verifying Signatures and Checksums
> >> >>
> >> >>
> >> ================================================================================
> >> >>
> >> >> Found 2 artifact(s) to verify:
> >> >>
> >> >> Verifying: apache_hamilton-1.90.0.tar.gz
> >> >>
> >> >>
> >> --------------------------------------------------------------------------------
> >> >>   ✓ Artifact exists: apache_hamilton-1.90.0.tar.gz (3,655,569 bytes)
> >> >>   Verifying GPG signature: apache_hamilton-1.90.0.tar.gz.asc
> >> >>     ✗ Signature file not found
> >> >>   Verifying SHA512 checksum: apache_hamilton-1.90.0.tar.gz.sha512
> >> >>     ✗ Checksum file not found
> >> >>   Checking archive readability: apache_hamilton-1.90.0.tar.gz
> >> >>     ✓ Archive is readable and contains 706 files
> >> >>
> >> >> Verifying: apache_hamilton-1.90.0-py3-none-any.whl
> >> >>
> >> >>
> >> --------------------------------------------------------------------------------
> >> >>   ✓ Artifact exists: apache_hamilton-1.90.0-py3-none-any.whl (475,199
> >> >> bytes)
> >> >>   Verifying GPG signature: apache_hamilton-1.90.0-py3-none-any.whl.asc
> >> >>     ✗ Signature file not found
> >> >>   Verifying SHA512 checksum:
> >> >> apache_hamilton-1.90.0-py3-none-any.whl.sha512
> >> >>     ✗ Checksum file not found
> >> >>   Checking wheel readability: apache_hamilton-1.90.0-py3-none-any.whl
> >> >>     ✓ Wheel is readable and contains 151 files
> >> >>
> >> >>
> >> >> ❌ Verification failed.
> >> >> ```
> >> >> [ ] LICENSE/NOTICE/DISCLAIMER files exist
> >> >> See above and below, there's some files in the examples that don't have
> >> >> licenceses but are part of the source package.
> >> >> [x] No unexpected binary files
> >> >> [ ] All source files have ASF headers
> >> >> I ran the provided script, but rat-excludes seems not to be found. Some
> >> >> of these files admit comments so they could have licence headers
> >> >> ```
> >> >> # Verify license headers (requires Apache RAT)
> >> >> uv run python scripts/verify_apache_artifacts.py licenses --rat-jar
> >> >> apache-rat-0.15.jar
> >> >> Running Apache RAT on: apache_hamilton-1.90.0.tar.gz
> >> >>
> >> >>
> >> --------------------------------------------------------------------------------
> >> >>   Extracting archive...
> >> >>     ✓ Extracted to temp directory
> >> >>     ⚠️  Warning: .rat-excludes not found, running without excludes
> >> >>   Running Apache RAT (XML format for parsing)...
> >> >>     ✓ RAT XML report: dist/rat-report-apache_hamilton-1-90-0.xml
> >> >>   Running Apache RAT (text format for review)...
> >> >>     ✓ RAT text report: dist/rat-report-apache_hamilton-1-90-0.txt
> >> >>   Parsing RAT report...
> >> >>     ✓ Scanned 706 files
> >> >>     ✓ Found 33 files with license issues
> >> >>
> >> >>   ⚠️  License Issues Found:
> >> >>
> >> >>     Unapproved Licenses (33 files):
> >> >>       -
> >> >>
> >> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/Absenteeism_at_work.csv
> >> >>       -
> >> >>
> >> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-dask.txt
> >> >>       -
> >> >>
> >> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-ray.txt
> >> >>       -
> >> >>
> >> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-spark.txt
> >> >>       -
> >> >>
> >> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements.txt
> >> >>       -
> >> >>
> >> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/hello_world/requirements.txt
> >> >>       -
> >> >>
> >> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/pandas/materialization/requirements.txt
> >> >>       -
> >> >>
> >> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/requirements.txt
> >> >>       -
> >> >>
> >> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/valid_configs.jsonl
> >> >>       -
> >> >>
> >> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/hamilton/experimental/databackend.py
> >> >>       ... and 23 more
> >> >>
> >> >>     📄 Reports saved:
> >> >>        - dist/rat-report-apache_hamilton-1-90-0.xml (structured)
> >> >>        - dist/rat-report-apache_hamilton-1-90-0.txt (human-readable)
> >> >>
> >> >>   ❌ License check failed!
> >> >>
> >> >> ❌ Verification failed.
> >> >> ```
> >> >> [x] Can compile from source
> >> >>
> >> >>   *
> >> >> the tar extracts into `apache_hamilton-1.90.0` so `cd
> >> >> ${PACKAGE}-${VERSION}-incubating/` doesn't work.
> >> >>   *
> >> >> `uv venv --python 3.11 --clean` doesn't work: `error: unexpected
> >> argument
> >> >> '--clean' found`
> >> >>   *
> >> >> flit worked and could install wheel
> >> >>   *
> >> >> cannot install test dependencies: `error: Distribution
> >> `lancedb==0.30.2 @
> >> >> registry+https://pypi.org/simple` <https://pypi.org/simple> <
> >> https://pypi.org/simple> can't be
> >> >> installed because it doesn't have a source distribution or wheel for
> >> the
> >> >> current platform` — seems like uv cannot resolve lance db. I am on
> >> `hint:
> >> >> You're on macOS (`macosx_15_0_x86_64`), but `lancedb` (v0.30.2)`
> >> >>   *
> >> >> hello_world runs -ish: only constructing the dag at the end fais if you
> >> >> don't have graphviz: `ERROR:hamilton.graph: graphviz is required for
> >> >> visualizing the function graph. Install it with: pip install
> >> >> "sf-hamilton[visualization]" or pip install graphviz`
> >> >>
> >> >>
> >> >> Complete verification output:
> >> >> ```
> >> >> # Verify everything
> >> >> uv run python scripts/verify_apache_artifacts.py all --rat-jar
> >> >> apache-rat-0.15.jar
> >> >>
> >> >> # Inspect artifact contents
> >> >> uv run python scripts/verify_apache_artifacts.py list-contents
> >> >> dist/apache-hamilton-1.90.0-incubating.tar.gz
> >> >> uv run python scripts/verify_apache_artifacts.py list-contents
> >> >> dist/apache_hamilton-1.90.0-py3-none-any.whl
> >> >>
> >> >> # Validate wheel metadata
> >> >> uv run python scripts/verify_apache_artifacts.py twine-check
> >> >>
> >> >>
> >> >>
> >> ================================================================================
> >> >>   Complete Apache Artifacts Verification
> >> >>
> >> >>
> >> ================================================================================
> >> >>
> >> >>
> >> >> [1/2] Verifying signatures and checksums...
> >> >>
> >> >>
> >> >>
> >> ================================================================================
> >> >>   Verifying Signatures and Checksums
> >> >>
> >> >>
> >> ================================================================================
> >> >>
> >> >> Found 4 artifact(s) to verify:
> >> >>
> >> >> Verifying: rat-report-apache_hamilton-1-90-0.xml
> >> >>
> >> >>
> >> --------------------------------------------------------------------------------
> >> >>   ✓ Artifact exists: rat-report-apache_hamilton-1-90-0.xml (236,467
> >> bytes)
> >> >>   Verifying GPG signature: rat-report-apache_hamilton-1-90-0.xml.asc
> >> >>     ✗ Signature file not found
> >> >>   Verifying SHA512 checksum:
> >> rat-report-apache_hamilton-1-90-0.xml.sha512
> >> >>     ✗ Checksum file not found
> >> >>
> >> >> Verifying: apache_hamilton-1.90.0.tar.gz
> >> >>
> >> >>
> >> --------------------------------------------------------------------------------
> >> >>   ✓ Artifact exists: apache_hamilton-1.90.0.tar.gz (3,655,569 bytes)
> >> >>   Verifying GPG signature: apache_hamilton-1.90.0.tar.gz.asc
> >> >>     ✗ Signature file not found
> >> >>   Verifying SHA512 checksum: apache_hamilton-1.90.0.tar.gz.sha512
> >> >>     ✗ Checksum file not found
> >> >>   Checking archive readability: apache_hamilton-1.90.0.tar.gz
> >> >>     ✓ Archive is readable and contains 706 files
> >> >>
> >> >> Verifying: rat-report-apache_hamilton-1-90-0.txt
> >> >>
> >> >>
> >> --------------------------------------------------------------------------------
> >> >>   ✓ Artifact exists: rat-report-apache_hamilton-1-90-0.txt (128,073
> >> bytes)
> >> >>   Verifying GPG signature: rat-report-apache_hamilton-1-90-0.txt.asc
> >> >>     ✗ Signature file not found
> >> >>   Verifying SHA512 checksum:
> >> rat-report-apache_hamilton-1-90-0.txt.sha512
> >> >>     ✗ Checksum file not found
> >> >>
> >> >> Verifying: apache_hamilton-1.90.0-py3-none-any.whl
> >> >>
> >> >>
> >> --------------------------------------------------------------------------------
> >> >>   ✓ Artifact exists: apache_hamilton-1.90.0-py3-none-any.whl (475,199
> >> >> bytes)
> >> >>   Verifying GPG signature: apache_hamilton-1.90.0-py3-none-any.whl.asc
> >> >>     ✗ Signature file not found
> >> >>   Verifying SHA512 checksum:
> >> >> apache_hamilton-1.90.0-py3-none-any.whl.sha512
> >> >>     ✗ Checksum file not found
> >> >>   Checking wheel readability: apache_hamilton-1.90.0-py3-none-any.whl
> >> >>     ✓ Wheel is readable and contains 151 files
> >> >>
> >> >>
> >> >> [2/2] Verifying licenses with Apache RAT...
> >> >>
> >> >>
> >> >>
> >> ================================================================================
> >> >>   Verifying Licenses with Apache RAT
> >> >>
> >> >>
> >> ================================================================================
> >> >>
> >> >> Found 1 tar.gz artifact(s) to check:
> >> >>
> >> >>
> >> >> Running Apache RAT on: apache_hamilton-1.90.0.tar.gz
> >> >>
> >> >>
> >> --------------------------------------------------------------------------------
> >> >>   Extracting archive...
> >> >>     ✓ Extracted to temp directory
> >> >>     ⚠️  Warning: .rat-excludes not found, running without excludes
> >> >>   Running Apache RAT (XML format for parsing)...
> >> >>     ✓ RAT XML report: dist/rat-report-apache_hamilton-1-90-0.xml
> >> >>   Running Apache RAT (text format for review)...
> >> >>     ✓ RAT text report: dist/rat-report-apache_hamilton-1-90-0.txt
> >> >>   Parsing RAT report...
> >> >>     ✓ Scanned 706 files
> >> >>     ✓ Found 33 files with license issues
> >> >>
> >> >>   ⚠️  License Issues Found:
> >> >>
> >> >>     Unapproved Licenses (33 files):
> >> >>       -
> >> >>
> >> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/Absenteeism_at_work.csv
> >> >>       -
> >> >>
> >> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-dask.txt
> >> >>       -
> >> >>
> >> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-ray.txt
> >> >>       -
> >> >>
> >> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-spark.txt
> >> >>       -
> >> >>
> >> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements.txt
> >> >>       -
> >> >>
> >> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/hello_world/requirements.txt
> >> >>       -
> >> >>
> >> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/pandas/materialization/requirements.txt
> >> >>       -
> >> >>
> >> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/requirements.txt
> >> >>       -
> >> >>
> >> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/valid_configs.jsonl
> >> >>       -
> >> >>
> >> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/hamilton/experimental/databackend.py
> >> >>       ... and 23 more
> >> >>
> >> >>     📄 Reports saved:
> >> >>        - dist/rat-report-apache_hamilton-1-90-0.xml (structured)
> >> >>        - dist/rat-report-apache_hamilton-1-90-0.txt (human-readable)
> >> >>
> >> >>   ❌ License check failed!
> >> >>
> >> >>
> >> >>
> >> ================================================================================
> >> >>   Verification Summary
> >> >>
> >> >>
> >> ================================================================================
> >> >>
> >> >> Results:
> >> >>   Signatures & Checksums: ❌ FAIL
> >> >>   License Compliance:     ❌ FAIL
> >> >>
> >> >> ❌ Verification failed.
> >> >>
> >> >>
> >> >>
> >> ================================================================================
> >> >>   Listing Artifact Contents
> >> >>
> >> >>
> >> ================================================================================
> >> >>
> >> >>
> >> >> ❌ Artifact not found: dist/apache-hamilton-1.90.0-incubating.tar.gz
> >> >>
> >> >>
> >> >>
> >> ================================================================================
> >> >>   Listing Artifact Contents
> >> >>
> >> >>
> >> ================================================================================
> >> >>
> >> >>
> >> >> Contents of: apache_hamilton-1.90.0-py3-none-any.whl
> >> >>
> >> >>
> >> ================================================================================
> >> >> Total files: 151
> >> >>
> >> >> Top-level structure:
> >> >>   apache_hamilton-1.90.0.dist-info                   (7 files)
> >> >>   hamilton                                           (144 files)
> >> >>
> >> >> Files:
> >> >>
> >> >>   apache_hamilton-1.90.0.dist-info/METADATA
> >> >>       22,665
> >> >>   apache_hamilton-1.90.0.dist-info/RECORD
> >> >>       13,565
> >> >>   apache_hamilton-1.90.0.dist-info/WHEEL
> >> >>          82
> >> >>   apache_hamilton-1.90.0.dist-info/entry_points.txt
> >> >>          421
> >> >>   apache_hamilton-1.90.0.dist-info/licenses/DISCLAIMER
> >> >>         554
> >> >>   apache_hamilton-1.90.0.dist-info/licenses/LICENSE
> >> >>       12,602
> >> >>   apache_hamilton-1.90.0.dist-info/licenses/NOTICE
> >> >>         182
> >> >>   hamilton/__init__.py
> >> >>       1,086
> >> >>   hamilton/ad_hoc_utils.py
> >> >>       5,677
> >> >>   hamilton/async_driver.py
> >> >>      19,548
> >> >>   hamilton/base.py
> >> >>      19,860
> >> >>   hamilton/caching/__init__.py
> >> >>         785
> >> >>   hamilton/caching/adapter.py
> >> >>       61,482
> >> >>   hamilton/caching/cache_key.py
> >> >>        2,497
> >> >>   hamilton/caching/fingerprinting.py
> >> >>       9,986
> >> >>   hamilton/caching/stores/__init__.py
> >> >>          785
> >> >>   hamilton/caching/stores/base.py
> >> >>        8,529
> >> >>   hamilton/caching/stores/file.py
> >> >>        5,229
> >> >>   hamilton/caching/stores/memory.py
> >> >>       11,159
> >> >>   hamilton/caching/stores/sqlite.py
> >> >>        9,965
> >> >>   hamilton/caching/stores/utils.py
> >> >>       1,370
> >> >>   hamilton/cli/__init__.py
> >> >>         785
> >> >>   hamilton/cli/__main__.py
> >> >>       9,202
> >> >>   hamilton/cli/commands.py
> >> >>       4,446
> >> >>   hamilton/cli/logic.py
> >> >>       10,338
> >> >>   hamilton/common/__init__.py
> >> >>        3,075
> >> >>   hamilton/contrib/__init__.py
> >> >>       1,644
> >> >>   hamilton/data_quality/__init__.py
> >> >>          785
> >> >>   hamilton/data_quality/base.py
> >> >>        6,890
> >> >>   hamilton/data_quality/default_validators.py
> >> >>       21,184
> >> >>   hamilton/data_quality/pandera_validators.py
> >> >>        4,493
> >> >>   hamilton/dataflows/__init__.py
> >> >>      27,999
> >> >>   hamilton/dataflows/template/README.md
> >> >>          958
> >> >>   hamilton/dataflows/template/__init__.py
> >> >>        1,721
> >> >>   hamilton/dataflows/template/author.md
> >> >>          940
> >> >>   hamilton/dataflows/template/requirements.txt
> >> >>           0
> >> >>   hamilton/dataflows/template/tags.json
> >> >>           98
> >> >>   hamilton/dataflows/template/valid_configs.jsonl
> >> >>            3
> >> >>   hamilton/dev_utils/__init__.py
> >> >>         785
> >> >>   hamilton/dev_utils/deprecation.py
> >> >>        7,774
> >> >>   hamilton/driver.py
> >> >>      95,686
> >> >>   hamilton/execution/__init__.py
> >> >>         785
> >> >>   hamilton/execution/debugging_utils.py
> >> >>        2,041
> >> >>   hamilton/execution/executors.py
> >> >>       18,833
> >> >>   hamilton/execution/graph_functions.py
> >> >>       16,527
> >> >>   hamilton/execution/grouping.py
> >> >>      17,480
> >> >>   hamilton/execution/state.py
> >> >>       23,957
> >> >>   hamilton/experimental/__init__.py
> >> >>        1,100
> >> >>   hamilton/experimental/databackend.py
> >> >>       1,397
> >> >>   hamilton/experimental/decorators/__init__.py
> >> >>         785
> >> >>   hamilton/experimental/decorators/parameterize_frame.py
> >> >>       8,684
> >> >>   hamilton/experimental/h_async.py
> >> >>       1,057
> >> >>   hamilton/experimental/h_cache.py
> >> >>      15,259
> >> >>   hamilton/experimental/h_dask.py
> >> >>        1,166
> >> >>   hamilton/experimental/h_databackends.py
> >> >>        5,075
> >> >>   hamilton/experimental/h_ray.py
> >> >>       1,124
> >> >>   hamilton/experimental/h_spark.py
> >> >>       1,223
> >> >>   hamilton/function_modifiers/README
> >> >>       2,672
> >> >>   hamilton/function_modifiers/__init__.py
> >> >>        3,812
> >> >>   hamilton/function_modifiers/adapters.py
> >> >>       38,908
> >> >>   hamilton/function_modifiers/base.py
> >> >>       33,403
> >> >>   hamilton/function_modifiers/configuration.py
> >> >>      13,422
> >> >>   hamilton/function_modifiers/delayed.py
> >> >>       9,448
> >> >>   hamilton/function_modifiers/dependencies.py
> >> >>       10,014
> >> >>   hamilton/function_modifiers/expanders.py
> >> >>      56,117
> >> >>   hamilton/function_modifiers/macros.py
> >> >>       73,755
> >> >>   hamilton/function_modifiers/metadata.py
> >> >>       17,253
> >> >>   hamilton/function_modifiers/recursive.py
> >> >>      40,426
> >> >>   hamilton/function_modifiers/validation.py
> >> >>       12,484
> >> >>   hamilton/function_modifiers_base.py
> >> >>        1,462
> >> >>   hamilton/graph.py
> >> >>       50,459
> >> >>   hamilton/graph_types.py
> >> >>       10,478
> >> >>   hamilton/graph_utils.py
> >> >>        1,656
> >> >>   hamilton/htypes.py
> >> >>      17,746
> >> >>   hamilton/io/__init__.py
> >> >>        1,183
> >> >>   hamilton/io/data_adapters.py
> >> >>       7,987
> >> >>   hamilton/io/default_data_loaders.py
> >> >>        5,617
> >> >>   hamilton/io/materialization.py
> >> >>      21,578
> >> >>   hamilton/io/utils.py
> >> >>       5,073
> >> >>   hamilton/lifecycle/__init__.py
> >> >>       2,053
> >> >>   hamilton/lifecycle/api.py
> >> >>       31,981
> >> >>   hamilton/lifecycle/base.py
> >> >>      44,599
> >> >>   hamilton/lifecycle/default.py
> >> >>       32,890
> >> >>   hamilton/log_setup.py
> >> >>        1,714
> >> >>   hamilton/models.py
> >> >>       3,265
> >> >>   hamilton/node.py
> >> >>      17,153
> >> >>   hamilton/plugins/README.md
> >> >>       2,659
> >> >>   hamilton/plugins/__init__.py
> >> >>         785
> >> >>   hamilton/plugins/dask_extensions.py
> >> >>        1,518
> >> >>   hamilton/plugins/dlt_extensions.py
> >> >>       5,585
> >> >>   hamilton/plugins/geopandas_extensions.py
> >> >>       1,572
> >> >>   hamilton/plugins/h_dask.py
> >> >>      15,566
> >> >>   hamilton/plugins/h_ddog.py
> >> >>      22,392
> >> >>   hamilton/plugins/h_diskcache.py
> >> >>        6,683
> >> >>   hamilton/plugins/h_experiments/__init__.py
> >> >>         892
> >> >>   hamilton/plugins/h_experiments/__main__.py
> >> >>       2,181
> >> >>   hamilton/plugins/h_experiments/cache.py
> >> >>        1,395
> >> >>   hamilton/plugins/h_experiments/data_model.py
> >> >>       2,180
> >> >>   hamilton/plugins/h_experiments/hook.py
> >> >>       7,240
> >> >>   hamilton/plugins/h_experiments/server.py
> >> >>      12,493
> >> >>   hamilton/plugins/h_kedro.py
> >> >>        5,583
> >> >>   hamilton/plugins/h_logging.py
> >> >>       15,225
> >> >>   hamilton/plugins/h_mcp/__init__.py
> >> >>       1,068
> >> >>   hamilton/plugins/h_mcp/__main__.py
> >> >>       1,137
> >> >>   hamilton/plugins/h_mcp/_helpers.py
> >> >>       4,152
> >> >>   hamilton/plugins/h_mcp/_templates.py
> >> >>      13,528
> >> >>   hamilton/plugins/h_mcp/server.py
> >> >>      12,392
> >> >>   hamilton/plugins/h_mlflow.py
> >> >>      14,442
> >> >>   hamilton/plugins/h_narwhals.py
> >> >>       4,677
> >> >>   hamilton/plugins/h_openlineage.py
> >> >>       13,129
> >> >>   hamilton/plugins/h_opentelemetry.py
> >> >>        5,928
> >> >>   hamilton/plugins/h_pandas.py
> >> >>      10,633
> >> >>   hamilton/plugins/h_pandera.py
> >> >>        4,952
> >> >>   hamilton/plugins/h_polars.py
> >> >>      12,507
> >> >>   hamilton/plugins/h_polars_lazyframe.py
> >> >>      11,561
> >> >>   hamilton/plugins/h_pyarrow.py
> >> >>        2,177
> >> >>   hamilton/plugins/h_pydantic.py
> >> >>       4,962
> >> >>   hamilton/plugins/h_ray.py
> >> >>        9,130
> >> >>   hamilton/plugins/h_rich.py
> >> >>       5,181
> >> >>   hamilton/plugins/h_schema.py
> >> >>      18,307
> >> >>   hamilton/plugins/h_slack.py
> >> >>        3,634
> >> >>   hamilton/plugins/h_spark.py
> >> >>       63,268
> >> >>   hamilton/plugins/h_threadpool.py
> >> >>       5,036
> >> >>   hamilton/plugins/h_tqdm.py
> >> >>       4,665
> >> >>   hamilton/plugins/h_vaex.py
> >> >>       5,034
> >> >>   hamilton/plugins/huggingface_extensions.py
> >> >>       7,839
> >> >>   hamilton/plugins/ibis_extensions.py
> >> >>        2,970
> >> >>   hamilton/plugins/jupyter_magic.py
> >> >>       24,929
> >> >>   hamilton/plugins/kedro_extensions.py
> >> >>       3,267
> >> >>   hamilton/plugins/lightgbm_extensions.py
> >> >>        2,961
> >> >>   hamilton/plugins/matplotlib_extensions.py
> >> >>        3,738
> >> >>   hamilton/plugins/mlflow_extensions.py
> >> >>        8,856
> >> >>   hamilton/plugins/numpy_extensions.py
> >> >>       3,221
> >> >>   hamilton/plugins/pandas_extensions.py
> >> >>       66,288
> >> >>   hamilton/plugins/plotly_extensions.py
> >> >>        5,010
> >> >>   hamilton/plugins/polars_extensions.py
> >> >>        2,345
> >> >>   hamilton/plugins/polars_implementations.py
> >> >>       1,028
> >> >>   hamilton/plugins/polars_lazyframe_extensions.py
> >> >>       10,889
> >> >>   hamilton/plugins/polars_post_1_0_0_extensions.py
> >> >>      30,733
> >> >>   hamilton/plugins/polars_pre_1_0_0_extension.py
> >> >>      29,649
> >> >>   hamilton/plugins/pydantic_extensions.py
> >> >>        3,840
> >> >>   hamilton/plugins/pyspark_pandas_extensions.py
> >> >>        1,551
> >> >>   hamilton/plugins/sklearn_plot_extensions.py
> >> >>        4,326
> >> >>   hamilton/plugins/spark_extensions.py
> >> >>       3,236
> >> >>   hamilton/plugins/vaex_extensions.py
> >> >>        1,673
> >> >>   hamilton/plugins/xgboost_extensions.py
> >> >>       2,762
> >> >>   hamilton/plugins/yaml_extensions.py
> >> >>        2,554
> >> >>   hamilton/registry.py
> >> >>       8,588
> >> >>   hamilton/settings.py
> >> >>         845
> >> >>   hamilton/telemetry.py
> >> >>        1,772
> >> >>   hamilton/version.py
> >> >>          807
> >> >>
> >> >>
> >> >>
> >> ================================================================================
> >> >>   Verifying Wheel Metadata with Twine
> >> >>
> >> >>
> >> ================================================================================
> >> >>
> >> >>
> >> >> Checking apache_hamilton-1.90.0-py3-none-any.whl...
> >> >>   ✓ apache_hamilton-1.90.0-py3-none-any.whl metadata is valid
> >> >>
> >> >> ✅ All wheels passed twine validation
> >> >>
> >> >> ✅ Verification completed successfully!
> >> >> ```
> >> >>
> >> >> Maybe for some of the things it is just me doing something stupid (but
> >> >> not sure what since I copy-paste the readme commands and just fix the
> >> file
> >> >> names).
> >> >>
> >> >> Best,
> >> >> Jernej
> >> >>
> >> >> ________________________________
> >> >> From: Elijah ben Izzy <el...@alumni.brown.edu>
> >> >> Sent: 07 April 2026 05:37
> >> >> To: dev@hamilton.apache.org <de...@hamilton.apache.org>
> >> >> Subject: Re: [VOTE] Release Apache Hamilton - apache-hamilton
> >> >> 1.90.0-incubating (release candidate 0)
> >> >>
> >> >> Nice work. Checks performed:
> >> >>   [x] Verified GPG signature (Good signature, key
> >> >> FE668E857E89A11C5E5C000CA8D3D15600545C61)
> >> >>   [x] Verified SHA-512 checksums
> >> >>   [x] "incubating" in source tarball filename
> >> >>   [x] LICENSE, NOTICE, DISCLAIMER present and correct
> >> >>   [x] ASF license headers present in source files
> >> >>   [x] No unexpected binary files
> >> >>   [x] Built and installed from source (Python 3.13)
> >> >>   [x] Ran hello_world example successfully
> >> >>
> >> >> + 1 (binding)
> >> >>
> >> >> On Fri, Apr 3, 2026 at 10:31 PM Stefan Krawczyk <
> >> >> stefan.krawczyk@gmail.com>
> >> >> wrote:
> >> >>
> >> >> > Oh I forgot to link to it, but to hopefully make it faster to verify
> >> >> > the verification
> >> >> > script
> >> >> > <
> >> >> >
> >> >>
> >> https://github.com/apache/hamilton/blob/main/scripts/verify_apache_artifacts.py
> >> >> > >
> >> >> > should help (see these instructions
> >> >> > <
> >> >>
> >> https://github.com/apache/hamilton/tree/main/scripts#verification-script
> >> >> > >).
> >> >> >
> >> >> > Otherwise I have noticed the README instructions for verification
> >> have
> >> >> some
> >> >> > incorrect paths -- please adjust for that and you should be able to
> >> >> follow
> >> >> > the instructions.
> >> >> >
> >> >> > On Fri, Apr 3, 2026 at 10:20 PM Stefan Krawczyk <
> >> >> stefan.krawczyk@gmail.com
> >> >> > >
> >> >> > wrote:
> >> >> >
> >> >> > > Hi all,
> >> >> > >
> >> >> > > This is a call for a vote on releasing Apache Hamilton
> >> apache-hamilton
> >> >> > > 1.90.0-incubating, release candidate 0.
> >> >> > >
> >> >> > > This release includes the following changes (see CHANGELOG for
> >> >> details):
> >> >> > >
> >> >> > > Features:
> >> >> > >> - While loop DFS implementation (#1483)
> >> >> > >> - Async data validator support
> >> >> > >> - Add `unpack_fields` annotation for unpacking structured fields
> >> >> (#1305)
> >> >> > >> - Expose DAG validation as LLM tools via MCP (#1490)
> >> >> > >> - Add NDJSON support in polars (#1431)
> >> >> > >> - Enhance visualization with display_name tag support
> >> >> > >
> >> >> > >
> >> >> > > Bug fixes:
> >> >> > >> - Fix `@resolve` decorator not calling `validate()` on returned
> >> >> > >> decorators (#1524)
> >> >> > >> - Fix is_submodule substring match causing spurious DAG nodes
> >> (#1485)
> >> >> > >> - Fix pandas 2.2+ compatibility in pandas_extensions.py
> >> >> > >> - Fix spark failures on Python 3.14
> >> >> > >> - Fix local (Windows) tests (#1302)
> >> >> > >> - Fix typer version requirement for click 8.3 help compatibility
> >> >> > >
> >> >> > >
> >> >> > > Performance:
> >> >> > >> - Use deque for BFS queue in graph traversal (#1494)
> >> >> > >
> >> >> > >
> >> >> > > Platform changes:
> >> >> > >> - Drop Python 3.8 and 3.9 support
> >> >> > >> - Add Python 3.13 and 3.14 support
> >> >> > >> - Remove usage telemetry (PostHog) (#1512)
> >> >> > >> - Remove RayWorkflows (#1359)
> >> >> > >> - Update `dlt` plugin with changes to `loader_file_format`
> >> >> > >> - Package renamed from sf-hamilton to apache-hamilton
> >> >> > >
> >> >> > >
> >> >> > >
> >> >> > > The artifacts for this release candidate can be found at:
> >> >> > >
> >> >> > >
> >> >> >
> >> >>
> >> https://dist.apache.org/repos/dist/dev/incubator/hamilton/apache-hamilton/1.90.0-RC0
> >> >> > >
> >> >> > >
> >> >> > > The Git tag to be voted upon is:
> >> >> apache-hamilton-v1.90.0-incubating-RC0
> >> >> > >
> >> >> > >
> >> >> > > The release hash is: bed5a272904bd7d68bc03167978f663e1906738c
> >> >> > >
> >> >> > > But the functional release is from this commit from main:
> >> >> > > e84ed90b4428d777449b9bfc413ed86ee41a77c9
> >> >> > >
> >> >> > > Release artifacts are signed with the following key:
> >> >> > >
> >> >> > > FE668E857E89A11C5E5C000CA8D3D15600545C61
> >> >> > >
> >> >> > > The KEYS file is available at:
> >> >> > > https://downloads.apache.org/incubator/hamilton/KEYS
> >> >> > >
> >> >> > > Please download, verify, and test the release candidate. You can
> >> find
> >> >> the
> >> >> > > instructions to do so here
> >> >> > > <
> >> >> >
> >> >>
> >> https://github.com/apache/hamilton/tree/main/scripts#for-voters-verifying-a-release
> >> >> >
> >> >> > (and
> >> >> > > if you're having issues following them please reply and I'll help).
> >> >> > >
> >> >> > > The vote will run for a minimum of 72 hours, likely much longer
> >> due to
> >> >> > the
> >> >> > > holiday.
> >> >> > >
> >> >> > > Please vote:
> >> >> > >
> >> >> > > [ ] +1 Release this package as Apache Hamilton apache-hamilton
> >> >> > > 1.90.0-incubating
> >> >> > > [ ] +0 No opinion
> >> >> > > [ ] -1 Do not release this package because... (Please provide a
> >> >> reason)
> >> >> > >
> >> >> > > Checklist for reference:
> >> >> > >
> >> >> > > [ ] Incubating in name.
> >> >> > > [ ] Download links are valid.
> >> >> > > [ ] Checksums and signatures.
> >> >> > > [ ] LICENSE/NOTICE/DISCLAIMER files exist
> >> >> > > [ ] No unexpected binary files
> >> >> > > [ ] All source files have ASF headers
> >> >> > > [ ] Can compile from source
> >> >> > >
> >> >> > >
> >> >> > > On behalf of the Apache Hamilton PPMC,
> >> >> > >
> >> >> > > Stefan Krawczyk
> >> >> > >
> >> >> >
> >> >>
> >> >
> >>
> >
> 

Re: [VOTE] Release Apache Hamilton - apache-hamilton 1.90.0-incubating (release candidate 0)

Posted by Stefan Krawczyk <st...@gmail.com>.
Hey mentors,

Can someone claim verifying this RC please? I'm okay waiting, I would just
like to know who's turn it is to help please.

Cheers,

Stefan

On Sun, Apr 12, 2026, 11:20 PM Stefan Krawczyk <st...@gmail.com>
wrote:

> Awesome, if one of the mentors has time to check, then we can call this
> vote or not.
>
> You can try this gist to make it easier on you:
> https://gist.github.com/skrawcz/a091951d8da1c9d2eb0b880e1da725bc
>
> Cheers,
>
> Stefan
>
> On Sun, Apr 12, 2026 at 7:20 AM Jernej Frank <
> jernej.frank@physics.ox.ac.uk> wrote:
>
>> Thanks for that, this works! Maybe we can put this script into the repo?
>>
>> Happy to change to +1 for me.
>>
>> Best,
>> Jernej
>> ________________________________
>> From: Stefan Krawczyk <st...@gmail.com>
>> Sent: 11 April 2026 22:03
>> To: dev@hamilton.apache.org <de...@hamilton.apache.org>
>> Subject: Re: [VOTE] Release Apache Hamilton - apache-hamilton
>> 1.90.0-incubating (release candidate 0)
>>
>> in a fresh directory (not repo)*.
>>
>> On Sat, Apr 11, 2026 at 2:02 PM Stefan Krawczyk <
>> stefan.krawczyk@gmail.com>
>> wrote:
>>
>> > @jernej, do you want to try again? I created this gist that is a script
>> > that walks through the process:
>> > https://gist.github.com/skrawcz/a091951d8da1c9d2eb0b880e1da725bc.
>> >
>> > You don't need to use the scripts to validate -- and that's not what
>> we're
>> > voting on. If you use the above script, it should set everything up
>> fresh
>> > if you do it in a fresh repo and have `uv` installed.
>> >
>> > On Sat, Apr 11, 2026 at 2:28 AM Jernej Frank <
>> > jernej.frank@physics.ox.ac.uk> wrote:
>> >
>> >> Hey, I tried following the verification readme and use the scripts:
>> >>
>> https://github.com/apache/hamilton/tree/main/scripts#verification-script
>> >> and could not get a lot of things working out of the box.
>> >>
>> >> -1
>> >>
>> >> Checklist for reference:
>> >>
>> >> [x] Incubating in name.
>> >> [x] Download links are valid.
>> >> The actual link is fine but the readme is wrong
>> >> ```
>> >> svn export
>> >>
>> https://dist.apache.org/repos/dist/dev/incubator/hamilton/${PACKAGE}-${VERSION}-incubating-RC${RC}/
>> >> hamilton-rc${RC}
>> >>
>> >> svn: E170000: URL '
>> >>
>> https://dist.apache.org/repos/dist/dev/incubator/hamilton/apache-hamilton-1.90.0-incubating-RC0
>> '
>> >> doesn't exist
>> >> ```
>> >> [ ] Checksums and signatures.
>> >> I can verify gpg keys but the readme is missing a -src in the name for
>> >> the source.
>> >> ```
>> >> gpg --verify ${PACKAGE}-${VERSION}-incubating.tar.gz.asc
>> >> ${PACKAGE}-${VERSION}-incubating.tar.gz
>> >> gpg: can't open 'apache-hamilton-1.90.0-incubating.tar.gz.asc': No such
>> >> file or directory
>> >> gpg: verify signatures failed: No such file or directory
>> >> ```
>> >>
>> >> The wheel gpg keys worked.
>> >> I could not get sha verification working:
>> >> ```
>> >> shasum -a 512 -c ${PACKAGE}-${VERSION}-incubating.tar.gz.sha512
>> >> shasum: apache-hamilton-1.90.0-incubating.tar.gz.sha512: No such file
>> or
>> >> directory
>> >>
>> >> shasum -a 512 -c ${PACKAGE}-${VERSION}-incubating-src.tar.gz.sha512
>> >> shasum: apache-hamilton-1.90.0-incubating-src.tar.gz.sha512: no
>> properly
>> >> formatted SHA checksum lines found
>> >>
>> >> shasum -a 512 -c ${WHEEL_NAME}.sha512
>> >> shasum: apache_hamilton-1.90.0-py3-none-any.whl.sha512: no properly
>> >> formatted SHA checksum lines found
>> >> ```
>> >>
>> >> Similarly,  in case of using the script at the end:
>> >> ```
>> >> # Run from the extracted source directory
>> >> (${PACKAGE}-${VERSION}-incubating/)
>> >> # Verify GPG signatures and SHA512 checksums
>> >> uv run python scripts/verify_apache_artifacts.py signatures
>> >>
>> >>
>> ================================================================================
>> >>   Verifying Signatures and Checksums
>> >>
>> >>
>> ================================================================================
>> >>
>> >> Found 2 artifact(s) to verify:
>> >>
>> >> Verifying: apache_hamilton-1.90.0.tar.gz
>> >>
>> >>
>> --------------------------------------------------------------------------------
>> >>   ✓ Artifact exists: apache_hamilton-1.90.0.tar.gz (3,655,569 bytes)
>> >>   Verifying GPG signature: apache_hamilton-1.90.0.tar.gz.asc
>> >>     ✗ Signature file not found
>> >>   Verifying SHA512 checksum: apache_hamilton-1.90.0.tar.gz.sha512
>> >>     ✗ Checksum file not found
>> >>   Checking archive readability: apache_hamilton-1.90.0.tar.gz
>> >>     ✓ Archive is readable and contains 706 files
>> >>
>> >> Verifying: apache_hamilton-1.90.0-py3-none-any.whl
>> >>
>> >>
>> --------------------------------------------------------------------------------
>> >>   ✓ Artifact exists: apache_hamilton-1.90.0-py3-none-any.whl (475,199
>> >> bytes)
>> >>   Verifying GPG signature: apache_hamilton-1.90.0-py3-none-any.whl.asc
>> >>     ✗ Signature file not found
>> >>   Verifying SHA512 checksum:
>> >> apache_hamilton-1.90.0-py3-none-any.whl.sha512
>> >>     ✗ Checksum file not found
>> >>   Checking wheel readability: apache_hamilton-1.90.0-py3-none-any.whl
>> >>     ✓ Wheel is readable and contains 151 files
>> >>
>> >>
>> >> ❌ Verification failed.
>> >> ```
>> >> [ ] LICENSE/NOTICE/DISCLAIMER files exist
>> >> See above and below, there's some files in the examples that don't have
>> >> licenceses but are part of the source package.
>> >> [x] No unexpected binary files
>> >> [ ] All source files have ASF headers
>> >> I ran the provided script, but rat-excludes seems not to be found. Some
>> >> of these files admit comments so they could have licence headers
>> >> ```
>> >> # Verify license headers (requires Apache RAT)
>> >> uv run python scripts/verify_apache_artifacts.py licenses --rat-jar
>> >> apache-rat-0.15.jar
>> >> Running Apache RAT on: apache_hamilton-1.90.0.tar.gz
>> >>
>> >>
>> --------------------------------------------------------------------------------
>> >>   Extracting archive...
>> >>     ✓ Extracted to temp directory
>> >>     ⚠️  Warning: .rat-excludes not found, running without excludes
>> >>   Running Apache RAT (XML format for parsing)...
>> >>     ✓ RAT XML report: dist/rat-report-apache_hamilton-1-90-0.xml
>> >>   Running Apache RAT (text format for review)...
>> >>     ✓ RAT text report: dist/rat-report-apache_hamilton-1-90-0.txt
>> >>   Parsing RAT report...
>> >>     ✓ Scanned 706 files
>> >>     ✓ Found 33 files with license issues
>> >>
>> >>   ⚠️  License Issues Found:
>> >>
>> >>     Unapproved Licenses (33 files):
>> >>       -
>> >>
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/Absenteeism_at_work.csv
>> >>       -
>> >>
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-dask.txt
>> >>       -
>> >>
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-ray.txt
>> >>       -
>> >>
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-spark.txt
>> >>       -
>> >>
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements.txt
>> >>       -
>> >>
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/hello_world/requirements.txt
>> >>       -
>> >>
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/pandas/materialization/requirements.txt
>> >>       -
>> >>
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/requirements.txt
>> >>       -
>> >>
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/valid_configs.jsonl
>> >>       -
>> >>
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/hamilton/experimental/databackend.py
>> >>       ... and 23 more
>> >>
>> >>     📄 Reports saved:
>> >>        - dist/rat-report-apache_hamilton-1-90-0.xml (structured)
>> >>        - dist/rat-report-apache_hamilton-1-90-0.txt (human-readable)
>> >>
>> >>   ❌ License check failed!
>> >>
>> >> ❌ Verification failed.
>> >> ```
>> >> [x] Can compile from source
>> >>
>> >>   *
>> >> the tar extracts into `apache_hamilton-1.90.0` so `cd
>> >> ${PACKAGE}-${VERSION}-incubating/` doesn't work.
>> >>   *
>> >> `uv venv --python 3.11 --clean` doesn't work: `error: unexpected
>> argument
>> >> '--clean' found`
>> >>   *
>> >> flit worked and could install wheel
>> >>   *
>> >> cannot install test dependencies: `error: Distribution
>> `lancedb==0.30.2 @
>> >> registry+https://pypi.org/simple` <https://pypi.org/simple> <
>> https://pypi.org/simple> can't be
>> >> installed because it doesn't have a source distribution or wheel for
>> the
>> >> current platform` — seems like uv cannot resolve lance db. I am on
>> `hint:
>> >> You're on macOS (`macosx_15_0_x86_64`), but `lancedb` (v0.30.2)`
>> >>   *
>> >> hello_world runs -ish: only constructing the dag at the end fais if you
>> >> don't have graphviz: `ERROR:hamilton.graph: graphviz is required for
>> >> visualizing the function graph. Install it with: pip install
>> >> "sf-hamilton[visualization]" or pip install graphviz`
>> >>
>> >>
>> >> Complete verification output:
>> >> ```
>> >> # Verify everything
>> >> uv run python scripts/verify_apache_artifacts.py all --rat-jar
>> >> apache-rat-0.15.jar
>> >>
>> >> # Inspect artifact contents
>> >> uv run python scripts/verify_apache_artifacts.py list-contents
>> >> dist/apache-hamilton-1.90.0-incubating.tar.gz
>> >> uv run python scripts/verify_apache_artifacts.py list-contents
>> >> dist/apache_hamilton-1.90.0-py3-none-any.whl
>> >>
>> >> # Validate wheel metadata
>> >> uv run python scripts/verify_apache_artifacts.py twine-check
>> >>
>> >>
>> >>
>> ================================================================================
>> >>   Complete Apache Artifacts Verification
>> >>
>> >>
>> ================================================================================
>> >>
>> >>
>> >> [1/2] Verifying signatures and checksums...
>> >>
>> >>
>> >>
>> ================================================================================
>> >>   Verifying Signatures and Checksums
>> >>
>> >>
>> ================================================================================
>> >>
>> >> Found 4 artifact(s) to verify:
>> >>
>> >> Verifying: rat-report-apache_hamilton-1-90-0.xml
>> >>
>> >>
>> --------------------------------------------------------------------------------
>> >>   ✓ Artifact exists: rat-report-apache_hamilton-1-90-0.xml (236,467
>> bytes)
>> >>   Verifying GPG signature: rat-report-apache_hamilton-1-90-0.xml.asc
>> >>     ✗ Signature file not found
>> >>   Verifying SHA512 checksum:
>> rat-report-apache_hamilton-1-90-0.xml.sha512
>> >>     ✗ Checksum file not found
>> >>
>> >> Verifying: apache_hamilton-1.90.0.tar.gz
>> >>
>> >>
>> --------------------------------------------------------------------------------
>> >>   ✓ Artifact exists: apache_hamilton-1.90.0.tar.gz (3,655,569 bytes)
>> >>   Verifying GPG signature: apache_hamilton-1.90.0.tar.gz.asc
>> >>     ✗ Signature file not found
>> >>   Verifying SHA512 checksum: apache_hamilton-1.90.0.tar.gz.sha512
>> >>     ✗ Checksum file not found
>> >>   Checking archive readability: apache_hamilton-1.90.0.tar.gz
>> >>     ✓ Archive is readable and contains 706 files
>> >>
>> >> Verifying: rat-report-apache_hamilton-1-90-0.txt
>> >>
>> >>
>> --------------------------------------------------------------------------------
>> >>   ✓ Artifact exists: rat-report-apache_hamilton-1-90-0.txt (128,073
>> bytes)
>> >>   Verifying GPG signature: rat-report-apache_hamilton-1-90-0.txt.asc
>> >>     ✗ Signature file not found
>> >>   Verifying SHA512 checksum:
>> rat-report-apache_hamilton-1-90-0.txt.sha512
>> >>     ✗ Checksum file not found
>> >>
>> >> Verifying: apache_hamilton-1.90.0-py3-none-any.whl
>> >>
>> >>
>> --------------------------------------------------------------------------------
>> >>   ✓ Artifact exists: apache_hamilton-1.90.0-py3-none-any.whl (475,199
>> >> bytes)
>> >>   Verifying GPG signature: apache_hamilton-1.90.0-py3-none-any.whl.asc
>> >>     ✗ Signature file not found
>> >>   Verifying SHA512 checksum:
>> >> apache_hamilton-1.90.0-py3-none-any.whl.sha512
>> >>     ✗ Checksum file not found
>> >>   Checking wheel readability: apache_hamilton-1.90.0-py3-none-any.whl
>> >>     ✓ Wheel is readable and contains 151 files
>> >>
>> >>
>> >> [2/2] Verifying licenses with Apache RAT...
>> >>
>> >>
>> >>
>> ================================================================================
>> >>   Verifying Licenses with Apache RAT
>> >>
>> >>
>> ================================================================================
>> >>
>> >> Found 1 tar.gz artifact(s) to check:
>> >>
>> >>
>> >> Running Apache RAT on: apache_hamilton-1.90.0.tar.gz
>> >>
>> >>
>> --------------------------------------------------------------------------------
>> >>   Extracting archive...
>> >>     ✓ Extracted to temp directory
>> >>     ⚠️  Warning: .rat-excludes not found, running without excludes
>> >>   Running Apache RAT (XML format for parsing)...
>> >>     ✓ RAT XML report: dist/rat-report-apache_hamilton-1-90-0.xml
>> >>   Running Apache RAT (text format for review)...
>> >>     ✓ RAT text report: dist/rat-report-apache_hamilton-1-90-0.txt
>> >>   Parsing RAT report...
>> >>     ✓ Scanned 706 files
>> >>     ✓ Found 33 files with license issues
>> >>
>> >>   ⚠️  License Issues Found:
>> >>
>> >>     Unapproved Licenses (33 files):
>> >>       -
>> >>
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/Absenteeism_at_work.csv
>> >>       -
>> >>
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-dask.txt
>> >>       -
>> >>
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-ray.txt
>> >>       -
>> >>
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-spark.txt
>> >>       -
>> >>
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements.txt
>> >>       -
>> >>
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/hello_world/requirements.txt
>> >>       -
>> >>
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/pandas/materialization/requirements.txt
>> >>       -
>> >>
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/requirements.txt
>> >>       -
>> >>
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/valid_configs.jsonl
>> >>       -
>> >>
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/hamilton/experimental/databackend.py
>> >>       ... and 23 more
>> >>
>> >>     📄 Reports saved:
>> >>        - dist/rat-report-apache_hamilton-1-90-0.xml (structured)
>> >>        - dist/rat-report-apache_hamilton-1-90-0.txt (human-readable)
>> >>
>> >>   ❌ License check failed!
>> >>
>> >>
>> >>
>> ================================================================================
>> >>   Verification Summary
>> >>
>> >>
>> ================================================================================
>> >>
>> >> Results:
>> >>   Signatures & Checksums: ❌ FAIL
>> >>   License Compliance:     ❌ FAIL
>> >>
>> >> ❌ Verification failed.
>> >>
>> >>
>> >>
>> ================================================================================
>> >>   Listing Artifact Contents
>> >>
>> >>
>> ================================================================================
>> >>
>> >>
>> >> ❌ Artifact not found: dist/apache-hamilton-1.90.0-incubating.tar.gz
>> >>
>> >>
>> >>
>> ================================================================================
>> >>   Listing Artifact Contents
>> >>
>> >>
>> ================================================================================
>> >>
>> >>
>> >> Contents of: apache_hamilton-1.90.0-py3-none-any.whl
>> >>
>> >>
>> ================================================================================
>> >> Total files: 151
>> >>
>> >> Top-level structure:
>> >>   apache_hamilton-1.90.0.dist-info                   (7 files)
>> >>   hamilton                                           (144 files)
>> >>
>> >> Files:
>> >>
>> >>   apache_hamilton-1.90.0.dist-info/METADATA
>> >>       22,665
>> >>   apache_hamilton-1.90.0.dist-info/RECORD
>> >>       13,565
>> >>   apache_hamilton-1.90.0.dist-info/WHEEL
>> >>          82
>> >>   apache_hamilton-1.90.0.dist-info/entry_points.txt
>> >>          421
>> >>   apache_hamilton-1.90.0.dist-info/licenses/DISCLAIMER
>> >>         554
>> >>   apache_hamilton-1.90.0.dist-info/licenses/LICENSE
>> >>       12,602
>> >>   apache_hamilton-1.90.0.dist-info/licenses/NOTICE
>> >>         182
>> >>   hamilton/__init__.py
>> >>       1,086
>> >>   hamilton/ad_hoc_utils.py
>> >>       5,677
>> >>   hamilton/async_driver.py
>> >>      19,548
>> >>   hamilton/base.py
>> >>      19,860
>> >>   hamilton/caching/__init__.py
>> >>         785
>> >>   hamilton/caching/adapter.py
>> >>       61,482
>> >>   hamilton/caching/cache_key.py
>> >>        2,497
>> >>   hamilton/caching/fingerprinting.py
>> >>       9,986
>> >>   hamilton/caching/stores/__init__.py
>> >>          785
>> >>   hamilton/caching/stores/base.py
>> >>        8,529
>> >>   hamilton/caching/stores/file.py
>> >>        5,229
>> >>   hamilton/caching/stores/memory.py
>> >>       11,159
>> >>   hamilton/caching/stores/sqlite.py
>> >>        9,965
>> >>   hamilton/caching/stores/utils.py
>> >>       1,370
>> >>   hamilton/cli/__init__.py
>> >>         785
>> >>   hamilton/cli/__main__.py
>> >>       9,202
>> >>   hamilton/cli/commands.py
>> >>       4,446
>> >>   hamilton/cli/logic.py
>> >>       10,338
>> >>   hamilton/common/__init__.py
>> >>        3,075
>> >>   hamilton/contrib/__init__.py
>> >>       1,644
>> >>   hamilton/data_quality/__init__.py
>> >>          785
>> >>   hamilton/data_quality/base.py
>> >>        6,890
>> >>   hamilton/data_quality/default_validators.py
>> >>       21,184
>> >>   hamilton/data_quality/pandera_validators.py
>> >>        4,493
>> >>   hamilton/dataflows/__init__.py
>> >>      27,999
>> >>   hamilton/dataflows/template/README.md
>> >>          958
>> >>   hamilton/dataflows/template/__init__.py
>> >>        1,721
>> >>   hamilton/dataflows/template/author.md
>> >>          940
>> >>   hamilton/dataflows/template/requirements.txt
>> >>           0
>> >>   hamilton/dataflows/template/tags.json
>> >>           98
>> >>   hamilton/dataflows/template/valid_configs.jsonl
>> >>            3
>> >>   hamilton/dev_utils/__init__.py
>> >>         785
>> >>   hamilton/dev_utils/deprecation.py
>> >>        7,774
>> >>   hamilton/driver.py
>> >>      95,686
>> >>   hamilton/execution/__init__.py
>> >>         785
>> >>   hamilton/execution/debugging_utils.py
>> >>        2,041
>> >>   hamilton/execution/executors.py
>> >>       18,833
>> >>   hamilton/execution/graph_functions.py
>> >>       16,527
>> >>   hamilton/execution/grouping.py
>> >>      17,480
>> >>   hamilton/execution/state.py
>> >>       23,957
>> >>   hamilton/experimental/__init__.py
>> >>        1,100
>> >>   hamilton/experimental/databackend.py
>> >>       1,397
>> >>   hamilton/experimental/decorators/__init__.py
>> >>         785
>> >>   hamilton/experimental/decorators/parameterize_frame.py
>> >>       8,684
>> >>   hamilton/experimental/h_async.py
>> >>       1,057
>> >>   hamilton/experimental/h_cache.py
>> >>      15,259
>> >>   hamilton/experimental/h_dask.py
>> >>        1,166
>> >>   hamilton/experimental/h_databackends.py
>> >>        5,075
>> >>   hamilton/experimental/h_ray.py
>> >>       1,124
>> >>   hamilton/experimental/h_spark.py
>> >>       1,223
>> >>   hamilton/function_modifiers/README
>> >>       2,672
>> >>   hamilton/function_modifiers/__init__.py
>> >>        3,812
>> >>   hamilton/function_modifiers/adapters.py
>> >>       38,908
>> >>   hamilton/function_modifiers/base.py
>> >>       33,403
>> >>   hamilton/function_modifiers/configuration.py
>> >>      13,422
>> >>   hamilton/function_modifiers/delayed.py
>> >>       9,448
>> >>   hamilton/function_modifiers/dependencies.py
>> >>       10,014
>> >>   hamilton/function_modifiers/expanders.py
>> >>      56,117
>> >>   hamilton/function_modifiers/macros.py
>> >>       73,755
>> >>   hamilton/function_modifiers/metadata.py
>> >>       17,253
>> >>   hamilton/function_modifiers/recursive.py
>> >>      40,426
>> >>   hamilton/function_modifiers/validation.py
>> >>       12,484
>> >>   hamilton/function_modifiers_base.py
>> >>        1,462
>> >>   hamilton/graph.py
>> >>       50,459
>> >>   hamilton/graph_types.py
>> >>       10,478
>> >>   hamilton/graph_utils.py
>> >>        1,656
>> >>   hamilton/htypes.py
>> >>      17,746
>> >>   hamilton/io/__init__.py
>> >>        1,183
>> >>   hamilton/io/data_adapters.py
>> >>       7,987
>> >>   hamilton/io/default_data_loaders.py
>> >>        5,617
>> >>   hamilton/io/materialization.py
>> >>      21,578
>> >>   hamilton/io/utils.py
>> >>       5,073
>> >>   hamilton/lifecycle/__init__.py
>> >>       2,053
>> >>   hamilton/lifecycle/api.py
>> >>       31,981
>> >>   hamilton/lifecycle/base.py
>> >>      44,599
>> >>   hamilton/lifecycle/default.py
>> >>       32,890
>> >>   hamilton/log_setup.py
>> >>        1,714
>> >>   hamilton/models.py
>> >>       3,265
>> >>   hamilton/node.py
>> >>      17,153
>> >>   hamilton/plugins/README.md
>> >>       2,659
>> >>   hamilton/plugins/__init__.py
>> >>         785
>> >>   hamilton/plugins/dask_extensions.py
>> >>        1,518
>> >>   hamilton/plugins/dlt_extensions.py
>> >>       5,585
>> >>   hamilton/plugins/geopandas_extensions.py
>> >>       1,572
>> >>   hamilton/plugins/h_dask.py
>> >>      15,566
>> >>   hamilton/plugins/h_ddog.py
>> >>      22,392
>> >>   hamilton/plugins/h_diskcache.py
>> >>        6,683
>> >>   hamilton/plugins/h_experiments/__init__.py
>> >>         892
>> >>   hamilton/plugins/h_experiments/__main__.py
>> >>       2,181
>> >>   hamilton/plugins/h_experiments/cache.py
>> >>        1,395
>> >>   hamilton/plugins/h_experiments/data_model.py
>> >>       2,180
>> >>   hamilton/plugins/h_experiments/hook.py
>> >>       7,240
>> >>   hamilton/plugins/h_experiments/server.py
>> >>      12,493
>> >>   hamilton/plugins/h_kedro.py
>> >>        5,583
>> >>   hamilton/plugins/h_logging.py
>> >>       15,225
>> >>   hamilton/plugins/h_mcp/__init__.py
>> >>       1,068
>> >>   hamilton/plugins/h_mcp/__main__.py
>> >>       1,137
>> >>   hamilton/plugins/h_mcp/_helpers.py
>> >>       4,152
>> >>   hamilton/plugins/h_mcp/_templates.py
>> >>      13,528
>> >>   hamilton/plugins/h_mcp/server.py
>> >>      12,392
>> >>   hamilton/plugins/h_mlflow.py
>> >>      14,442
>> >>   hamilton/plugins/h_narwhals.py
>> >>       4,677
>> >>   hamilton/plugins/h_openlineage.py
>> >>       13,129
>> >>   hamilton/plugins/h_opentelemetry.py
>> >>        5,928
>> >>   hamilton/plugins/h_pandas.py
>> >>      10,633
>> >>   hamilton/plugins/h_pandera.py
>> >>        4,952
>> >>   hamilton/plugins/h_polars.py
>> >>      12,507
>> >>   hamilton/plugins/h_polars_lazyframe.py
>> >>      11,561
>> >>   hamilton/plugins/h_pyarrow.py
>> >>        2,177
>> >>   hamilton/plugins/h_pydantic.py
>> >>       4,962
>> >>   hamilton/plugins/h_ray.py
>> >>        9,130
>> >>   hamilton/plugins/h_rich.py
>> >>       5,181
>> >>   hamilton/plugins/h_schema.py
>> >>      18,307
>> >>   hamilton/plugins/h_slack.py
>> >>        3,634
>> >>   hamilton/plugins/h_spark.py
>> >>       63,268
>> >>   hamilton/plugins/h_threadpool.py
>> >>       5,036
>> >>   hamilton/plugins/h_tqdm.py
>> >>       4,665
>> >>   hamilton/plugins/h_vaex.py
>> >>       5,034
>> >>   hamilton/plugins/huggingface_extensions.py
>> >>       7,839
>> >>   hamilton/plugins/ibis_extensions.py
>> >>        2,970
>> >>   hamilton/plugins/jupyter_magic.py
>> >>       24,929
>> >>   hamilton/plugins/kedro_extensions.py
>> >>       3,267
>> >>   hamilton/plugins/lightgbm_extensions.py
>> >>        2,961
>> >>   hamilton/plugins/matplotlib_extensions.py
>> >>        3,738
>> >>   hamilton/plugins/mlflow_extensions.py
>> >>        8,856
>> >>   hamilton/plugins/numpy_extensions.py
>> >>       3,221
>> >>   hamilton/plugins/pandas_extensions.py
>> >>       66,288
>> >>   hamilton/plugins/plotly_extensions.py
>> >>        5,010
>> >>   hamilton/plugins/polars_extensions.py
>> >>        2,345
>> >>   hamilton/plugins/polars_implementations.py
>> >>       1,028
>> >>   hamilton/plugins/polars_lazyframe_extensions.py
>> >>       10,889
>> >>   hamilton/plugins/polars_post_1_0_0_extensions.py
>> >>      30,733
>> >>   hamilton/plugins/polars_pre_1_0_0_extension.py
>> >>      29,649
>> >>   hamilton/plugins/pydantic_extensions.py
>> >>        3,840
>> >>   hamilton/plugins/pyspark_pandas_extensions.py
>> >>        1,551
>> >>   hamilton/plugins/sklearn_plot_extensions.py
>> >>        4,326
>> >>   hamilton/plugins/spark_extensions.py
>> >>       3,236
>> >>   hamilton/plugins/vaex_extensions.py
>> >>        1,673
>> >>   hamilton/plugins/xgboost_extensions.py
>> >>       2,762
>> >>   hamilton/plugins/yaml_extensions.py
>> >>        2,554
>> >>   hamilton/registry.py
>> >>       8,588
>> >>   hamilton/settings.py
>> >>         845
>> >>   hamilton/telemetry.py
>> >>        1,772
>> >>   hamilton/version.py
>> >>          807
>> >>
>> >>
>> >>
>> ================================================================================
>> >>   Verifying Wheel Metadata with Twine
>> >>
>> >>
>> ================================================================================
>> >>
>> >>
>> >> Checking apache_hamilton-1.90.0-py3-none-any.whl...
>> >>   ✓ apache_hamilton-1.90.0-py3-none-any.whl metadata is valid
>> >>
>> >> ✅ All wheels passed twine validation
>> >>
>> >> ✅ Verification completed successfully!
>> >> ```
>> >>
>> >> Maybe for some of the things it is just me doing something stupid (but
>> >> not sure what since I copy-paste the readme commands and just fix the
>> file
>> >> names).
>> >>
>> >> Best,
>> >> Jernej
>> >>
>> >> ________________________________
>> >> From: Elijah ben Izzy <el...@alumni.brown.edu>
>> >> Sent: 07 April 2026 05:37
>> >> To: dev@hamilton.apache.org <de...@hamilton.apache.org>
>> >> Subject: Re: [VOTE] Release Apache Hamilton - apache-hamilton
>> >> 1.90.0-incubating (release candidate 0)
>> >>
>> >> Nice work. Checks performed:
>> >>   [x] Verified GPG signature (Good signature, key
>> >> FE668E857E89A11C5E5C000CA8D3D15600545C61)
>> >>   [x] Verified SHA-512 checksums
>> >>   [x] "incubating" in source tarball filename
>> >>   [x] LICENSE, NOTICE, DISCLAIMER present and correct
>> >>   [x] ASF license headers present in source files
>> >>   [x] No unexpected binary files
>> >>   [x] Built and installed from source (Python 3.13)
>> >>   [x] Ran hello_world example successfully
>> >>
>> >> + 1 (binding)
>> >>
>> >> On Fri, Apr 3, 2026 at 10:31 PM Stefan Krawczyk <
>> >> stefan.krawczyk@gmail.com>
>> >> wrote:
>> >>
>> >> > Oh I forgot to link to it, but to hopefully make it faster to verify
>> >> > the verification
>> >> > script
>> >> > <
>> >> >
>> >>
>> https://github.com/apache/hamilton/blob/main/scripts/verify_apache_artifacts.py
>> >> > >
>> >> > should help (see these instructions
>> >> > <
>> >>
>> https://github.com/apache/hamilton/tree/main/scripts#verification-script
>> >> > >).
>> >> >
>> >> > Otherwise I have noticed the README instructions for verification
>> have
>> >> some
>> >> > incorrect paths -- please adjust for that and you should be able to
>> >> follow
>> >> > the instructions.
>> >> >
>> >> > On Fri, Apr 3, 2026 at 10:20 PM Stefan Krawczyk <
>> >> stefan.krawczyk@gmail.com
>> >> > >
>> >> > wrote:
>> >> >
>> >> > > Hi all,
>> >> > >
>> >> > > This is a call for a vote on releasing Apache Hamilton
>> apache-hamilton
>> >> > > 1.90.0-incubating, release candidate 0.
>> >> > >
>> >> > > This release includes the following changes (see CHANGELOG for
>> >> details):
>> >> > >
>> >> > > Features:
>> >> > >> - While loop DFS implementation (#1483)
>> >> > >> - Async data validator support
>> >> > >> - Add `unpack_fields` annotation for unpacking structured fields
>> >> (#1305)
>> >> > >> - Expose DAG validation as LLM tools via MCP (#1490)
>> >> > >> - Add NDJSON support in polars (#1431)
>> >> > >> - Enhance visualization with display_name tag support
>> >> > >
>> >> > >
>> >> > > Bug fixes:
>> >> > >> - Fix `@resolve` decorator not calling `validate()` on returned
>> >> > >> decorators (#1524)
>> >> > >> - Fix is_submodule substring match causing spurious DAG nodes
>> (#1485)
>> >> > >> - Fix pandas 2.2+ compatibility in pandas_extensions.py
>> >> > >> - Fix spark failures on Python 3.14
>> >> > >> - Fix local (Windows) tests (#1302)
>> >> > >> - Fix typer version requirement for click 8.3 help compatibility
>> >> > >
>> >> > >
>> >> > > Performance:
>> >> > >> - Use deque for BFS queue in graph traversal (#1494)
>> >> > >
>> >> > >
>> >> > > Platform changes:
>> >> > >> - Drop Python 3.8 and 3.9 support
>> >> > >> - Add Python 3.13 and 3.14 support
>> >> > >> - Remove usage telemetry (PostHog) (#1512)
>> >> > >> - Remove RayWorkflows (#1359)
>> >> > >> - Update `dlt` plugin with changes to `loader_file_format`
>> >> > >> - Package renamed from sf-hamilton to apache-hamilton
>> >> > >
>> >> > >
>> >> > >
>> >> > > The artifacts for this release candidate can be found at:
>> >> > >
>> >> > >
>> >> >
>> >>
>> https://dist.apache.org/repos/dist/dev/incubator/hamilton/apache-hamilton/1.90.0-RC0
>> >> > >
>> >> > >
>> >> > > The Git tag to be voted upon is:
>> >> apache-hamilton-v1.90.0-incubating-RC0
>> >> > >
>> >> > >
>> >> > > The release hash is: bed5a272904bd7d68bc03167978f663e1906738c
>> >> > >
>> >> > > But the functional release is from this commit from main:
>> >> > > e84ed90b4428d777449b9bfc413ed86ee41a77c9
>> >> > >
>> >> > > Release artifacts are signed with the following key:
>> >> > >
>> >> > > FE668E857E89A11C5E5C000CA8D3D15600545C61
>> >> > >
>> >> > > The KEYS file is available at:
>> >> > > https://downloads.apache.org/incubator/hamilton/KEYS
>> >> > >
>> >> > > Please download, verify, and test the release candidate. You can
>> find
>> >> the
>> >> > > instructions to do so here
>> >> > > <
>> >> >
>> >>
>> https://github.com/apache/hamilton/tree/main/scripts#for-voters-verifying-a-release
>> >> >
>> >> > (and
>> >> > > if you're having issues following them please reply and I'll help).
>> >> > >
>> >> > > The vote will run for a minimum of 72 hours, likely much longer
>> due to
>> >> > the
>> >> > > holiday.
>> >> > >
>> >> > > Please vote:
>> >> > >
>> >> > > [ ] +1 Release this package as Apache Hamilton apache-hamilton
>> >> > > 1.90.0-incubating
>> >> > > [ ] +0 No opinion
>> >> > > [ ] -1 Do not release this package because... (Please provide a
>> >> reason)
>> >> > >
>> >> > > Checklist for reference:
>> >> > >
>> >> > > [ ] Incubating in name.
>> >> > > [ ] Download links are valid.
>> >> > > [ ] Checksums and signatures.
>> >> > > [ ] LICENSE/NOTICE/DISCLAIMER files exist
>> >> > > [ ] No unexpected binary files
>> >> > > [ ] All source files have ASF headers
>> >> > > [ ] Can compile from source
>> >> > >
>> >> > >
>> >> > > On behalf of the Apache Hamilton PPMC,
>> >> > >
>> >> > > Stefan Krawczyk
>> >> > >
>> >> >
>> >>
>> >
>>
>

Re: [VOTE] Release Apache Hamilton - apache-hamilton 1.90.0-incubating (release candidate 0)

Posted by Stefan Krawczyk <st...@gmail.com>.
Awesome, if one of the mentors has time to check, then we can call this
vote or not.

You can try this gist to make it easier on you:
https://gist.github.com/skrawcz/a091951d8da1c9d2eb0b880e1da725bc

Cheers,

Stefan

On Sun, Apr 12, 2026 at 7:20 AM Jernej Frank <je...@physics.ox.ac.uk>
wrote:

> Thanks for that, this works! Maybe we can put this script into the repo?
>
> Happy to change to +1 for me.
>
> Best,
> Jernej
> ________________________________
> From: Stefan Krawczyk <st...@gmail.com>
> Sent: 11 April 2026 22:03
> To: dev@hamilton.apache.org <de...@hamilton.apache.org>
> Subject: Re: [VOTE] Release Apache Hamilton - apache-hamilton
> 1.90.0-incubating (release candidate 0)
>
> in a fresh directory (not repo)*.
>
> On Sat, Apr 11, 2026 at 2:02 PM Stefan Krawczyk <stefan.krawczyk@gmail.com
> >
> wrote:
>
> > @jernej, do you want to try again? I created this gist that is a script
> > that walks through the process:
> > https://gist.github.com/skrawcz/a091951d8da1c9d2eb0b880e1da725bc.
> >
> > You don't need to use the scripts to validate -- and that's not what
> we're
> > voting on. If you use the above script, it should set everything up fresh
> > if you do it in a fresh repo and have `uv` installed.
> >
> > On Sat, Apr 11, 2026 at 2:28 AM Jernej Frank <
> > jernej.frank@physics.ox.ac.uk> wrote:
> >
> >> Hey, I tried following the verification readme and use the scripts:
> >>
> https://github.com/apache/hamilton/tree/main/scripts#verification-script
> >> and could not get a lot of things working out of the box.
> >>
> >> -1
> >>
> >> Checklist for reference:
> >>
> >> [x] Incubating in name.
> >> [x] Download links are valid.
> >> The actual link is fine but the readme is wrong
> >> ```
> >> svn export
> >>
> https://dist.apache.org/repos/dist/dev/incubator/hamilton/${PACKAGE}-${VERSION}-incubating-RC${RC}/
> >> hamilton-rc${RC}
> >>
> >> svn: E170000: URL '
> >>
> https://dist.apache.org/repos/dist/dev/incubator/hamilton/apache-hamilton-1.90.0-incubating-RC0
> '
> >> doesn't exist
> >> ```
> >> [ ] Checksums and signatures.
> >> I can verify gpg keys but the readme is missing a -src in the name for
> >> the source.
> >> ```
> >> gpg --verify ${PACKAGE}-${VERSION}-incubating.tar.gz.asc
> >> ${PACKAGE}-${VERSION}-incubating.tar.gz
> >> gpg: can't open 'apache-hamilton-1.90.0-incubating.tar.gz.asc': No such
> >> file or directory
> >> gpg: verify signatures failed: No such file or directory
> >> ```
> >>
> >> The wheel gpg keys worked.
> >> I could not get sha verification working:
> >> ```
> >> shasum -a 512 -c ${PACKAGE}-${VERSION}-incubating.tar.gz.sha512
> >> shasum: apache-hamilton-1.90.0-incubating.tar.gz.sha512: No such file or
> >> directory
> >>
> >> shasum -a 512 -c ${PACKAGE}-${VERSION}-incubating-src.tar.gz.sha512
> >> shasum: apache-hamilton-1.90.0-incubating-src.tar.gz.sha512: no properly
> >> formatted SHA checksum lines found
> >>
> >> shasum -a 512 -c ${WHEEL_NAME}.sha512
> >> shasum: apache_hamilton-1.90.0-py3-none-any.whl.sha512: no properly
> >> formatted SHA checksum lines found
> >> ```
> >>
> >> Similarly,  in case of using the script at the end:
> >> ```
> >> # Run from the extracted source directory
> >> (${PACKAGE}-${VERSION}-incubating/)
> >> # Verify GPG signatures and SHA512 checksums
> >> uv run python scripts/verify_apache_artifacts.py signatures
> >>
> >>
> ================================================================================
> >>   Verifying Signatures and Checksums
> >>
> >>
> ================================================================================
> >>
> >> Found 2 artifact(s) to verify:
> >>
> >> Verifying: apache_hamilton-1.90.0.tar.gz
> >>
> >>
> --------------------------------------------------------------------------------
> >>   ✓ Artifact exists: apache_hamilton-1.90.0.tar.gz (3,655,569 bytes)
> >>   Verifying GPG signature: apache_hamilton-1.90.0.tar.gz.asc
> >>     ✗ Signature file not found
> >>   Verifying SHA512 checksum: apache_hamilton-1.90.0.tar.gz.sha512
> >>     ✗ Checksum file not found
> >>   Checking archive readability: apache_hamilton-1.90.0.tar.gz
> >>     ✓ Archive is readable and contains 706 files
> >>
> >> Verifying: apache_hamilton-1.90.0-py3-none-any.whl
> >>
> >>
> --------------------------------------------------------------------------------
> >>   ✓ Artifact exists: apache_hamilton-1.90.0-py3-none-any.whl (475,199
> >> bytes)
> >>   Verifying GPG signature: apache_hamilton-1.90.0-py3-none-any.whl.asc
> >>     ✗ Signature file not found
> >>   Verifying SHA512 checksum:
> >> apache_hamilton-1.90.0-py3-none-any.whl.sha512
> >>     ✗ Checksum file not found
> >>   Checking wheel readability: apache_hamilton-1.90.0-py3-none-any.whl
> >>     ✓ Wheel is readable and contains 151 files
> >>
> >>
> >> ❌ Verification failed.
> >> ```
> >> [ ] LICENSE/NOTICE/DISCLAIMER files exist
> >> See above and below, there's some files in the examples that don't have
> >> licenceses but are part of the source package.
> >> [x] No unexpected binary files
> >> [ ] All source files have ASF headers
> >> I ran the provided script, but rat-excludes seems not to be found. Some
> >> of these files admit comments so they could have licence headers
> >> ```
> >> # Verify license headers (requires Apache RAT)
> >> uv run python scripts/verify_apache_artifacts.py licenses --rat-jar
> >> apache-rat-0.15.jar
> >> Running Apache RAT on: apache_hamilton-1.90.0.tar.gz
> >>
> >>
> --------------------------------------------------------------------------------
> >>   Extracting archive...
> >>     ✓ Extracted to temp directory
> >>     ⚠️  Warning: .rat-excludes not found, running without excludes
> >>   Running Apache RAT (XML format for parsing)...
> >>     ✓ RAT XML report: dist/rat-report-apache_hamilton-1-90-0.xml
> >>   Running Apache RAT (text format for review)...
> >>     ✓ RAT text report: dist/rat-report-apache_hamilton-1-90-0.txt
> >>   Parsing RAT report...
> >>     ✓ Scanned 706 files
> >>     ✓ Found 33 files with license issues
> >>
> >>   ⚠️  License Issues Found:
> >>
> >>     Unapproved Licenses (33 files):
> >>       -
> >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/Absenteeism_at_work.csv
> >>       -
> >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-dask.txt
> >>       -
> >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-ray.txt
> >>       -
> >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-spark.txt
> >>       -
> >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements.txt
> >>       -
> >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/hello_world/requirements.txt
> >>       -
> >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/pandas/materialization/requirements.txt
> >>       -
> >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/requirements.txt
> >>       -
> >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/valid_configs.jsonl
> >>       -
> >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/hamilton/experimental/databackend.py
> >>       ... and 23 more
> >>
> >>     📄 Reports saved:
> >>        - dist/rat-report-apache_hamilton-1-90-0.xml (structured)
> >>        - dist/rat-report-apache_hamilton-1-90-0.txt (human-readable)
> >>
> >>   ❌ License check failed!
> >>
> >> ❌ Verification failed.
> >> ```
> >> [x] Can compile from source
> >>
> >>   *
> >> the tar extracts into `apache_hamilton-1.90.0` so `cd
> >> ${PACKAGE}-${VERSION}-incubating/` doesn't work.
> >>   *
> >> `uv venv --python 3.11 --clean` doesn't work: `error: unexpected
> argument
> >> '--clean' found`
> >>   *
> >> flit worked and could install wheel
> >>   *
> >> cannot install test dependencies: `error: Distribution `lancedb==0.30.2
> @
> >> registry+https://pypi.org/simple` <https://pypi.org/simple> <
> https://pypi.org/simple> can't be
> >> installed because it doesn't have a source distribution or wheel for the
> >> current platform` — seems like uv cannot resolve lance db. I am on
> `hint:
> >> You're on macOS (`macosx_15_0_x86_64`), but `lancedb` (v0.30.2)`
> >>   *
> >> hello_world runs -ish: only constructing the dag at the end fais if you
> >> don't have graphviz: `ERROR:hamilton.graph: graphviz is required for
> >> visualizing the function graph. Install it with: pip install
> >> "sf-hamilton[visualization]" or pip install graphviz`
> >>
> >>
> >> Complete verification output:
> >> ```
> >> # Verify everything
> >> uv run python scripts/verify_apache_artifacts.py all --rat-jar
> >> apache-rat-0.15.jar
> >>
> >> # Inspect artifact contents
> >> uv run python scripts/verify_apache_artifacts.py list-contents
> >> dist/apache-hamilton-1.90.0-incubating.tar.gz
> >> uv run python scripts/verify_apache_artifacts.py list-contents
> >> dist/apache_hamilton-1.90.0-py3-none-any.whl
> >>
> >> # Validate wheel metadata
> >> uv run python scripts/verify_apache_artifacts.py twine-check
> >>
> >>
> >>
> ================================================================================
> >>   Complete Apache Artifacts Verification
> >>
> >>
> ================================================================================
> >>
> >>
> >> [1/2] Verifying signatures and checksums...
> >>
> >>
> >>
> ================================================================================
> >>   Verifying Signatures and Checksums
> >>
> >>
> ================================================================================
> >>
> >> Found 4 artifact(s) to verify:
> >>
> >> Verifying: rat-report-apache_hamilton-1-90-0.xml
> >>
> >>
> --------------------------------------------------------------------------------
> >>   ✓ Artifact exists: rat-report-apache_hamilton-1-90-0.xml (236,467
> bytes)
> >>   Verifying GPG signature: rat-report-apache_hamilton-1-90-0.xml.asc
> >>     ✗ Signature file not found
> >>   Verifying SHA512 checksum:
> rat-report-apache_hamilton-1-90-0.xml.sha512
> >>     ✗ Checksum file not found
> >>
> >> Verifying: apache_hamilton-1.90.0.tar.gz
> >>
> >>
> --------------------------------------------------------------------------------
> >>   ✓ Artifact exists: apache_hamilton-1.90.0.tar.gz (3,655,569 bytes)
> >>   Verifying GPG signature: apache_hamilton-1.90.0.tar.gz.asc
> >>     ✗ Signature file not found
> >>   Verifying SHA512 checksum: apache_hamilton-1.90.0.tar.gz.sha512
> >>     ✗ Checksum file not found
> >>   Checking archive readability: apache_hamilton-1.90.0.tar.gz
> >>     ✓ Archive is readable and contains 706 files
> >>
> >> Verifying: rat-report-apache_hamilton-1-90-0.txt
> >>
> >>
> --------------------------------------------------------------------------------
> >>   ✓ Artifact exists: rat-report-apache_hamilton-1-90-0.txt (128,073
> bytes)
> >>   Verifying GPG signature: rat-report-apache_hamilton-1-90-0.txt.asc
> >>     ✗ Signature file not found
> >>   Verifying SHA512 checksum:
> rat-report-apache_hamilton-1-90-0.txt.sha512
> >>     ✗ Checksum file not found
> >>
> >> Verifying: apache_hamilton-1.90.0-py3-none-any.whl
> >>
> >>
> --------------------------------------------------------------------------------
> >>   ✓ Artifact exists: apache_hamilton-1.90.0-py3-none-any.whl (475,199
> >> bytes)
> >>   Verifying GPG signature: apache_hamilton-1.90.0-py3-none-any.whl.asc
> >>     ✗ Signature file not found
> >>   Verifying SHA512 checksum:
> >> apache_hamilton-1.90.0-py3-none-any.whl.sha512
> >>     ✗ Checksum file not found
> >>   Checking wheel readability: apache_hamilton-1.90.0-py3-none-any.whl
> >>     ✓ Wheel is readable and contains 151 files
> >>
> >>
> >> [2/2] Verifying licenses with Apache RAT...
> >>
> >>
> >>
> ================================================================================
> >>   Verifying Licenses with Apache RAT
> >>
> >>
> ================================================================================
> >>
> >> Found 1 tar.gz artifact(s) to check:
> >>
> >>
> >> Running Apache RAT on: apache_hamilton-1.90.0.tar.gz
> >>
> >>
> --------------------------------------------------------------------------------
> >>   Extracting archive...
> >>     ✓ Extracted to temp directory
> >>     ⚠️  Warning: .rat-excludes not found, running without excludes
> >>   Running Apache RAT (XML format for parsing)...
> >>     ✓ RAT XML report: dist/rat-report-apache_hamilton-1-90-0.xml
> >>   Running Apache RAT (text format for review)...
> >>     ✓ RAT text report: dist/rat-report-apache_hamilton-1-90-0.txt
> >>   Parsing RAT report...
> >>     ✓ Scanned 706 files
> >>     ✓ Found 33 files with license issues
> >>
> >>   ⚠️  License Issues Found:
> >>
> >>     Unapproved Licenses (33 files):
> >>       -
> >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/Absenteeism_at_work.csv
> >>       -
> >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-dask.txt
> >>       -
> >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-ray.txt
> >>       -
> >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-spark.txt
> >>       -
> >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements.txt
> >>       -
> >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/hello_world/requirements.txt
> >>       -
> >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/pandas/materialization/requirements.txt
> >>       -
> >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/requirements.txt
> >>       -
> >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/valid_configs.jsonl
> >>       -
> >>
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/hamilton/experimental/databackend.py
> >>       ... and 23 more
> >>
> >>     📄 Reports saved:
> >>        - dist/rat-report-apache_hamilton-1-90-0.xml (structured)
> >>        - dist/rat-report-apache_hamilton-1-90-0.txt (human-readable)
> >>
> >>   ❌ License check failed!
> >>
> >>
> >>
> ================================================================================
> >>   Verification Summary
> >>
> >>
> ================================================================================
> >>
> >> Results:
> >>   Signatures & Checksums: ❌ FAIL
> >>   License Compliance:     ❌ FAIL
> >>
> >> ❌ Verification failed.
> >>
> >>
> >>
> ================================================================================
> >>   Listing Artifact Contents
> >>
> >>
> ================================================================================
> >>
> >>
> >> ❌ Artifact not found: dist/apache-hamilton-1.90.0-incubating.tar.gz
> >>
> >>
> >>
> ================================================================================
> >>   Listing Artifact Contents
> >>
> >>
> ================================================================================
> >>
> >>
> >> Contents of: apache_hamilton-1.90.0-py3-none-any.whl
> >>
> >>
> ================================================================================
> >> Total files: 151
> >>
> >> Top-level structure:
> >>   apache_hamilton-1.90.0.dist-info                   (7 files)
> >>   hamilton                                           (144 files)
> >>
> >> Files:
> >>
> >>   apache_hamilton-1.90.0.dist-info/METADATA
> >>       22,665
> >>   apache_hamilton-1.90.0.dist-info/RECORD
> >>       13,565
> >>   apache_hamilton-1.90.0.dist-info/WHEEL
> >>          82
> >>   apache_hamilton-1.90.0.dist-info/entry_points.txt
> >>          421
> >>   apache_hamilton-1.90.0.dist-info/licenses/DISCLAIMER
> >>         554
> >>   apache_hamilton-1.90.0.dist-info/licenses/LICENSE
> >>       12,602
> >>   apache_hamilton-1.90.0.dist-info/licenses/NOTICE
> >>         182
> >>   hamilton/__init__.py
> >>       1,086
> >>   hamilton/ad_hoc_utils.py
> >>       5,677
> >>   hamilton/async_driver.py
> >>      19,548
> >>   hamilton/base.py
> >>      19,860
> >>   hamilton/caching/__init__.py
> >>         785
> >>   hamilton/caching/adapter.py
> >>       61,482
> >>   hamilton/caching/cache_key.py
> >>        2,497
> >>   hamilton/caching/fingerprinting.py
> >>       9,986
> >>   hamilton/caching/stores/__init__.py
> >>          785
> >>   hamilton/caching/stores/base.py
> >>        8,529
> >>   hamilton/caching/stores/file.py
> >>        5,229
> >>   hamilton/caching/stores/memory.py
> >>       11,159
> >>   hamilton/caching/stores/sqlite.py
> >>        9,965
> >>   hamilton/caching/stores/utils.py
> >>       1,370
> >>   hamilton/cli/__init__.py
> >>         785
> >>   hamilton/cli/__main__.py
> >>       9,202
> >>   hamilton/cli/commands.py
> >>       4,446
> >>   hamilton/cli/logic.py
> >>       10,338
> >>   hamilton/common/__init__.py
> >>        3,075
> >>   hamilton/contrib/__init__.py
> >>       1,644
> >>   hamilton/data_quality/__init__.py
> >>          785
> >>   hamilton/data_quality/base.py
> >>        6,890
> >>   hamilton/data_quality/default_validators.py
> >>       21,184
> >>   hamilton/data_quality/pandera_validators.py
> >>        4,493
> >>   hamilton/dataflows/__init__.py
> >>      27,999
> >>   hamilton/dataflows/template/README.md
> >>          958
> >>   hamilton/dataflows/template/__init__.py
> >>        1,721
> >>   hamilton/dataflows/template/author.md
> >>          940
> >>   hamilton/dataflows/template/requirements.txt
> >>           0
> >>   hamilton/dataflows/template/tags.json
> >>           98
> >>   hamilton/dataflows/template/valid_configs.jsonl
> >>            3
> >>   hamilton/dev_utils/__init__.py
> >>         785
> >>   hamilton/dev_utils/deprecation.py
> >>        7,774
> >>   hamilton/driver.py
> >>      95,686
> >>   hamilton/execution/__init__.py
> >>         785
> >>   hamilton/execution/debugging_utils.py
> >>        2,041
> >>   hamilton/execution/executors.py
> >>       18,833
> >>   hamilton/execution/graph_functions.py
> >>       16,527
> >>   hamilton/execution/grouping.py
> >>      17,480
> >>   hamilton/execution/state.py
> >>       23,957
> >>   hamilton/experimental/__init__.py
> >>        1,100
> >>   hamilton/experimental/databackend.py
> >>       1,397
> >>   hamilton/experimental/decorators/__init__.py
> >>         785
> >>   hamilton/experimental/decorators/parameterize_frame.py
> >>       8,684
> >>   hamilton/experimental/h_async.py
> >>       1,057
> >>   hamilton/experimental/h_cache.py
> >>      15,259
> >>   hamilton/experimental/h_dask.py
> >>        1,166
> >>   hamilton/experimental/h_databackends.py
> >>        5,075
> >>   hamilton/experimental/h_ray.py
> >>       1,124
> >>   hamilton/experimental/h_spark.py
> >>       1,223
> >>   hamilton/function_modifiers/README
> >>       2,672
> >>   hamilton/function_modifiers/__init__.py
> >>        3,812
> >>   hamilton/function_modifiers/adapters.py
> >>       38,908
> >>   hamilton/function_modifiers/base.py
> >>       33,403
> >>   hamilton/function_modifiers/configuration.py
> >>      13,422
> >>   hamilton/function_modifiers/delayed.py
> >>       9,448
> >>   hamilton/function_modifiers/dependencies.py
> >>       10,014
> >>   hamilton/function_modifiers/expanders.py
> >>      56,117
> >>   hamilton/function_modifiers/macros.py
> >>       73,755
> >>   hamilton/function_modifiers/metadata.py
> >>       17,253
> >>   hamilton/function_modifiers/recursive.py
> >>      40,426
> >>   hamilton/function_modifiers/validation.py
> >>       12,484
> >>   hamilton/function_modifiers_base.py
> >>        1,462
> >>   hamilton/graph.py
> >>       50,459
> >>   hamilton/graph_types.py
> >>       10,478
> >>   hamilton/graph_utils.py
> >>        1,656
> >>   hamilton/htypes.py
> >>      17,746
> >>   hamilton/io/__init__.py
> >>        1,183
> >>   hamilton/io/data_adapters.py
> >>       7,987
> >>   hamilton/io/default_data_loaders.py
> >>        5,617
> >>   hamilton/io/materialization.py
> >>      21,578
> >>   hamilton/io/utils.py
> >>       5,073
> >>   hamilton/lifecycle/__init__.py
> >>       2,053
> >>   hamilton/lifecycle/api.py
> >>       31,981
> >>   hamilton/lifecycle/base.py
> >>      44,599
> >>   hamilton/lifecycle/default.py
> >>       32,890
> >>   hamilton/log_setup.py
> >>        1,714
> >>   hamilton/models.py
> >>       3,265
> >>   hamilton/node.py
> >>      17,153
> >>   hamilton/plugins/README.md
> >>       2,659
> >>   hamilton/plugins/__init__.py
> >>         785
> >>   hamilton/plugins/dask_extensions.py
> >>        1,518
> >>   hamilton/plugins/dlt_extensions.py
> >>       5,585
> >>   hamilton/plugins/geopandas_extensions.py
> >>       1,572
> >>   hamilton/plugins/h_dask.py
> >>      15,566
> >>   hamilton/plugins/h_ddog.py
> >>      22,392
> >>   hamilton/plugins/h_diskcache.py
> >>        6,683
> >>   hamilton/plugins/h_experiments/__init__.py
> >>         892
> >>   hamilton/plugins/h_experiments/__main__.py
> >>       2,181
> >>   hamilton/plugins/h_experiments/cache.py
> >>        1,395
> >>   hamilton/plugins/h_experiments/data_model.py
> >>       2,180
> >>   hamilton/plugins/h_experiments/hook.py
> >>       7,240
> >>   hamilton/plugins/h_experiments/server.py
> >>      12,493
> >>   hamilton/plugins/h_kedro.py
> >>        5,583
> >>   hamilton/plugins/h_logging.py
> >>       15,225
> >>   hamilton/plugins/h_mcp/__init__.py
> >>       1,068
> >>   hamilton/plugins/h_mcp/__main__.py
> >>       1,137
> >>   hamilton/plugins/h_mcp/_helpers.py
> >>       4,152
> >>   hamilton/plugins/h_mcp/_templates.py
> >>      13,528
> >>   hamilton/plugins/h_mcp/server.py
> >>      12,392
> >>   hamilton/plugins/h_mlflow.py
> >>      14,442
> >>   hamilton/plugins/h_narwhals.py
> >>       4,677
> >>   hamilton/plugins/h_openlineage.py
> >>       13,129
> >>   hamilton/plugins/h_opentelemetry.py
> >>        5,928
> >>   hamilton/plugins/h_pandas.py
> >>      10,633
> >>   hamilton/plugins/h_pandera.py
> >>        4,952
> >>   hamilton/plugins/h_polars.py
> >>      12,507
> >>   hamilton/plugins/h_polars_lazyframe.py
> >>      11,561
> >>   hamilton/plugins/h_pyarrow.py
> >>        2,177
> >>   hamilton/plugins/h_pydantic.py
> >>       4,962
> >>   hamilton/plugins/h_ray.py
> >>        9,130
> >>   hamilton/plugins/h_rich.py
> >>       5,181
> >>   hamilton/plugins/h_schema.py
> >>      18,307
> >>   hamilton/plugins/h_slack.py
> >>        3,634
> >>   hamilton/plugins/h_spark.py
> >>       63,268
> >>   hamilton/plugins/h_threadpool.py
> >>       5,036
> >>   hamilton/plugins/h_tqdm.py
> >>       4,665
> >>   hamilton/plugins/h_vaex.py
> >>       5,034
> >>   hamilton/plugins/huggingface_extensions.py
> >>       7,839
> >>   hamilton/plugins/ibis_extensions.py
> >>        2,970
> >>   hamilton/plugins/jupyter_magic.py
> >>       24,929
> >>   hamilton/plugins/kedro_extensions.py
> >>       3,267
> >>   hamilton/plugins/lightgbm_extensions.py
> >>        2,961
> >>   hamilton/plugins/matplotlib_extensions.py
> >>        3,738
> >>   hamilton/plugins/mlflow_extensions.py
> >>        8,856
> >>   hamilton/plugins/numpy_extensions.py
> >>       3,221
> >>   hamilton/plugins/pandas_extensions.py
> >>       66,288
> >>   hamilton/plugins/plotly_extensions.py
> >>        5,010
> >>   hamilton/plugins/polars_extensions.py
> >>        2,345
> >>   hamilton/plugins/polars_implementations.py
> >>       1,028
> >>   hamilton/plugins/polars_lazyframe_extensions.py
> >>       10,889
> >>   hamilton/plugins/polars_post_1_0_0_extensions.py
> >>      30,733
> >>   hamilton/plugins/polars_pre_1_0_0_extension.py
> >>      29,649
> >>   hamilton/plugins/pydantic_extensions.py
> >>        3,840
> >>   hamilton/plugins/pyspark_pandas_extensions.py
> >>        1,551
> >>   hamilton/plugins/sklearn_plot_extensions.py
> >>        4,326
> >>   hamilton/plugins/spark_extensions.py
> >>       3,236
> >>   hamilton/plugins/vaex_extensions.py
> >>        1,673
> >>   hamilton/plugins/xgboost_extensions.py
> >>       2,762
> >>   hamilton/plugins/yaml_extensions.py
> >>        2,554
> >>   hamilton/registry.py
> >>       8,588
> >>   hamilton/settings.py
> >>         845
> >>   hamilton/telemetry.py
> >>        1,772
> >>   hamilton/version.py
> >>          807
> >>
> >>
> >>
> ================================================================================
> >>   Verifying Wheel Metadata with Twine
> >>
> >>
> ================================================================================
> >>
> >>
> >> Checking apache_hamilton-1.90.0-py3-none-any.whl...
> >>   ✓ apache_hamilton-1.90.0-py3-none-any.whl metadata is valid
> >>
> >> ✅ All wheels passed twine validation
> >>
> >> ✅ Verification completed successfully!
> >> ```
> >>
> >> Maybe for some of the things it is just me doing something stupid (but
> >> not sure what since I copy-paste the readme commands and just fix the
> file
> >> names).
> >>
> >> Best,
> >> Jernej
> >>
> >> ________________________________
> >> From: Elijah ben Izzy <el...@alumni.brown.edu>
> >> Sent: 07 April 2026 05:37
> >> To: dev@hamilton.apache.org <de...@hamilton.apache.org>
> >> Subject: Re: [VOTE] Release Apache Hamilton - apache-hamilton
> >> 1.90.0-incubating (release candidate 0)
> >>
> >> Nice work. Checks performed:
> >>   [x] Verified GPG signature (Good signature, key
> >> FE668E857E89A11C5E5C000CA8D3D15600545C61)
> >>   [x] Verified SHA-512 checksums
> >>   [x] "incubating" in source tarball filename
> >>   [x] LICENSE, NOTICE, DISCLAIMER present and correct
> >>   [x] ASF license headers present in source files
> >>   [x] No unexpected binary files
> >>   [x] Built and installed from source (Python 3.13)
> >>   [x] Ran hello_world example successfully
> >>
> >> + 1 (binding)
> >>
> >> On Fri, Apr 3, 2026 at 10:31 PM Stefan Krawczyk <
> >> stefan.krawczyk@gmail.com>
> >> wrote:
> >>
> >> > Oh I forgot to link to it, but to hopefully make it faster to verify
> >> > the verification
> >> > script
> >> > <
> >> >
> >>
> https://github.com/apache/hamilton/blob/main/scripts/verify_apache_artifacts.py
> >> > >
> >> > should help (see these instructions
> >> > <
> >>
> https://github.com/apache/hamilton/tree/main/scripts#verification-script
> >> > >).
> >> >
> >> > Otherwise I have noticed the README instructions for verification have
> >> some
> >> > incorrect paths -- please adjust for that and you should be able to
> >> follow
> >> > the instructions.
> >> >
> >> > On Fri, Apr 3, 2026 at 10:20 PM Stefan Krawczyk <
> >> stefan.krawczyk@gmail.com
> >> > >
> >> > wrote:
> >> >
> >> > > Hi all,
> >> > >
> >> > > This is a call for a vote on releasing Apache Hamilton
> apache-hamilton
> >> > > 1.90.0-incubating, release candidate 0.
> >> > >
> >> > > This release includes the following changes (see CHANGELOG for
> >> details):
> >> > >
> >> > > Features:
> >> > >> - While loop DFS implementation (#1483)
> >> > >> - Async data validator support
> >> > >> - Add `unpack_fields` annotation for unpacking structured fields
> >> (#1305)
> >> > >> - Expose DAG validation as LLM tools via MCP (#1490)
> >> > >> - Add NDJSON support in polars (#1431)
> >> > >> - Enhance visualization with display_name tag support
> >> > >
> >> > >
> >> > > Bug fixes:
> >> > >> - Fix `@resolve` decorator not calling `validate()` on returned
> >> > >> decorators (#1524)
> >> > >> - Fix is_submodule substring match causing spurious DAG nodes
> (#1485)
> >> > >> - Fix pandas 2.2+ compatibility in pandas_extensions.py
> >> > >> - Fix spark failures on Python 3.14
> >> > >> - Fix local (Windows) tests (#1302)
> >> > >> - Fix typer version requirement for click 8.3 help compatibility
> >> > >
> >> > >
> >> > > Performance:
> >> > >> - Use deque for BFS queue in graph traversal (#1494)
> >> > >
> >> > >
> >> > > Platform changes:
> >> > >> - Drop Python 3.8 and 3.9 support
> >> > >> - Add Python 3.13 and 3.14 support
> >> > >> - Remove usage telemetry (PostHog) (#1512)
> >> > >> - Remove RayWorkflows (#1359)
> >> > >> - Update `dlt` plugin with changes to `loader_file_format`
> >> > >> - Package renamed from sf-hamilton to apache-hamilton
> >> > >
> >> > >
> >> > >
> >> > > The artifacts for this release candidate can be found at:
> >> > >
> >> > >
> >> >
> >>
> https://dist.apache.org/repos/dist/dev/incubator/hamilton/apache-hamilton/1.90.0-RC0
> >> > >
> >> > >
> >> > > The Git tag to be voted upon is:
> >> apache-hamilton-v1.90.0-incubating-RC0
> >> > >
> >> > >
> >> > > The release hash is: bed5a272904bd7d68bc03167978f663e1906738c
> >> > >
> >> > > But the functional release is from this commit from main:
> >> > > e84ed90b4428d777449b9bfc413ed86ee41a77c9
> >> > >
> >> > > Release artifacts are signed with the following key:
> >> > >
> >> > > FE668E857E89A11C5E5C000CA8D3D15600545C61
> >> > >
> >> > > The KEYS file is available at:
> >> > > https://downloads.apache.org/incubator/hamilton/KEYS
> >> > >
> >> > > Please download, verify, and test the release candidate. You can
> find
> >> the
> >> > > instructions to do so here
> >> > > <
> >> >
> >>
> https://github.com/apache/hamilton/tree/main/scripts#for-voters-verifying-a-release
> >> >
> >> > (and
> >> > > if you're having issues following them please reply and I'll help).
> >> > >
> >> > > The vote will run for a minimum of 72 hours, likely much longer due
> to
> >> > the
> >> > > holiday.
> >> > >
> >> > > Please vote:
> >> > >
> >> > > [ ] +1 Release this package as Apache Hamilton apache-hamilton
> >> > > 1.90.0-incubating
> >> > > [ ] +0 No opinion
> >> > > [ ] -1 Do not release this package because... (Please provide a
> >> reason)
> >> > >
> >> > > Checklist for reference:
> >> > >
> >> > > [ ] Incubating in name.
> >> > > [ ] Download links are valid.
> >> > > [ ] Checksums and signatures.
> >> > > [ ] LICENSE/NOTICE/DISCLAIMER files exist
> >> > > [ ] No unexpected binary files
> >> > > [ ] All source files have ASF headers
> >> > > [ ] Can compile from source
> >> > >
> >> > >
> >> > > On behalf of the Apache Hamilton PPMC,
> >> > >
> >> > > Stefan Krawczyk
> >> > >
> >> >
> >>
> >
>

Re: [VOTE] Release Apache Hamilton - apache-hamilton 1.90.0-incubating (release candidate 0)

Posted by Jernej Frank <je...@physics.ox.ac.uk>.
Thanks for that, this works! Maybe we can put this script into the repo?

Happy to change to +1 for me.

Best,
Jernej
________________________________
From: Stefan Krawczyk <st...@gmail.com>
Sent: 11 April 2026 22:03
To: dev@hamilton.apache.org <de...@hamilton.apache.org>
Subject: Re: [VOTE] Release Apache Hamilton - apache-hamilton 1.90.0-incubating (release candidate 0)

in a fresh directory (not repo)*.

On Sat, Apr 11, 2026 at 2:02 PM Stefan Krawczyk <st...@gmail.com>
wrote:

> @jernej, do you want to try again? I created this gist that is a script
> that walks through the process:
> https://gist.github.com/skrawcz/a091951d8da1c9d2eb0b880e1da725bc.
>
> You don't need to use the scripts to validate -- and that's not what we're
> voting on. If you use the above script, it should set everything up fresh
> if you do it in a fresh repo and have `uv` installed.
>
> On Sat, Apr 11, 2026 at 2:28 AM Jernej Frank <
> jernej.frank@physics.ox.ac.uk> wrote:
>
>> Hey, I tried following the verification readme and use the scripts:
>> https://github.com/apache/hamilton/tree/main/scripts#verification-script
>> and could not get a lot of things working out of the box.
>>
>> -1
>>
>> Checklist for reference:
>>
>> [x] Incubating in name.
>> [x] Download links are valid.
>> The actual link is fine but the readme is wrong
>> ```
>> svn export
>> https://dist.apache.org/repos/dist/dev/incubator/hamilton/${PACKAGE}-${VERSION}-incubating-RC${RC}/
>> hamilton-rc${RC}
>>
>> svn: E170000: URL '
>> https://dist.apache.org/repos/dist/dev/incubator/hamilton/apache-hamilton-1.90.0-incubating-RC0'
>> doesn't exist
>> ```
>> [ ] Checksums and signatures.
>> I can verify gpg keys but the readme is missing a -src in the name for
>> the source.
>> ```
>> gpg --verify ${PACKAGE}-${VERSION}-incubating.tar.gz.asc
>> ${PACKAGE}-${VERSION}-incubating.tar.gz
>> gpg: can't open 'apache-hamilton-1.90.0-incubating.tar.gz.asc': No such
>> file or directory
>> gpg: verify signatures failed: No such file or directory
>> ```
>>
>> The wheel gpg keys worked.
>> I could not get sha verification working:
>> ```
>> shasum -a 512 -c ${PACKAGE}-${VERSION}-incubating.tar.gz.sha512
>> shasum: apache-hamilton-1.90.0-incubating.tar.gz.sha512: No such file or
>> directory
>>
>> shasum -a 512 -c ${PACKAGE}-${VERSION}-incubating-src.tar.gz.sha512
>> shasum: apache-hamilton-1.90.0-incubating-src.tar.gz.sha512: no properly
>> formatted SHA checksum lines found
>>
>> shasum -a 512 -c ${WHEEL_NAME}.sha512
>> shasum: apache_hamilton-1.90.0-py3-none-any.whl.sha512: no properly
>> formatted SHA checksum lines found
>> ```
>>
>> Similarly,  in case of using the script at the end:
>> ```
>> # Run from the extracted source directory
>> (${PACKAGE}-${VERSION}-incubating/)
>> # Verify GPG signatures and SHA512 checksums
>> uv run python scripts/verify_apache_artifacts.py signatures
>>
>> ================================================================================
>>   Verifying Signatures and Checksums
>>
>> ================================================================================
>>
>> Found 2 artifact(s) to verify:
>>
>> Verifying: apache_hamilton-1.90.0.tar.gz
>>
>> --------------------------------------------------------------------------------
>>   ✓ Artifact exists: apache_hamilton-1.90.0.tar.gz (3,655,569 bytes)
>>   Verifying GPG signature: apache_hamilton-1.90.0.tar.gz.asc
>>     ✗ Signature file not found
>>   Verifying SHA512 checksum: apache_hamilton-1.90.0.tar.gz.sha512
>>     ✗ Checksum file not found
>>   Checking archive readability: apache_hamilton-1.90.0.tar.gz
>>     ✓ Archive is readable and contains 706 files
>>
>> Verifying: apache_hamilton-1.90.0-py3-none-any.whl
>>
>> --------------------------------------------------------------------------------
>>   ✓ Artifact exists: apache_hamilton-1.90.0-py3-none-any.whl (475,199
>> bytes)
>>   Verifying GPG signature: apache_hamilton-1.90.0-py3-none-any.whl.asc
>>     ✗ Signature file not found
>>   Verifying SHA512 checksum:
>> apache_hamilton-1.90.0-py3-none-any.whl.sha512
>>     ✗ Checksum file not found
>>   Checking wheel readability: apache_hamilton-1.90.0-py3-none-any.whl
>>     ✓ Wheel is readable and contains 151 files
>>
>>
>> ❌ Verification failed.
>> ```
>> [ ] LICENSE/NOTICE/DISCLAIMER files exist
>> See above and below, there's some files in the examples that don't have
>> licenceses but are part of the source package.
>> [x] No unexpected binary files
>> [ ] All source files have ASF headers
>> I ran the provided script, but rat-excludes seems not to be found. Some
>> of these files admit comments so they could have licence headers
>> ```
>> # Verify license headers (requires Apache RAT)
>> uv run python scripts/verify_apache_artifacts.py licenses --rat-jar
>> apache-rat-0.15.jar
>> Running Apache RAT on: apache_hamilton-1.90.0.tar.gz
>>
>> --------------------------------------------------------------------------------
>>   Extracting archive...
>>     ✓ Extracted to temp directory
>>     ⚠️  Warning: .rat-excludes not found, running without excludes
>>   Running Apache RAT (XML format for parsing)...
>>     ✓ RAT XML report: dist/rat-report-apache_hamilton-1-90-0.xml
>>   Running Apache RAT (text format for review)...
>>     ✓ RAT text report: dist/rat-report-apache_hamilton-1-90-0.txt
>>   Parsing RAT report...
>>     ✓ Scanned 706 files
>>     ✓ Found 33 files with license issues
>>
>>   ⚠️  License Issues Found:
>>
>>     Unapproved Licenses (33 files):
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/Absenteeism_at_work.csv
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-dask.txt
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-ray.txt
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-spark.txt
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements.txt
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/hello_world/requirements.txt
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/pandas/materialization/requirements.txt
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/requirements.txt
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/valid_configs.jsonl
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/hamilton/experimental/databackend.py
>>       ... and 23 more
>>
>>     📄 Reports saved:
>>        - dist/rat-report-apache_hamilton-1-90-0.xml (structured)
>>        - dist/rat-report-apache_hamilton-1-90-0.txt (human-readable)
>>
>>   ❌ License check failed!
>>
>> ❌ Verification failed.
>> ```
>> [x] Can compile from source
>>
>>   *
>> the tar extracts into `apache_hamilton-1.90.0` so `cd
>> ${PACKAGE}-${VERSION}-incubating/` doesn't work.
>>   *
>> `uv venv --python 3.11 --clean` doesn't work: `error: unexpected argument
>> '--clean' found`
>>   *
>> flit worked and could install wheel
>>   *
>> cannot install test dependencies: `error: Distribution `lancedb==0.30.2 @
>> registry+https://pypi.org/simple` <https://pypi.org/simple> can't be
>> installed because it doesn't have a source distribution or wheel for the
>> current platform` — seems like uv cannot resolve lance db. I am on `hint:
>> You're on macOS (`macosx_15_0_x86_64`), but `lancedb` (v0.30.2)`
>>   *
>> hello_world runs -ish: only constructing the dag at the end fais if you
>> don't have graphviz: `ERROR:hamilton.graph: graphviz is required for
>> visualizing the function graph. Install it with: pip install
>> "sf-hamilton[visualization]" or pip install graphviz`
>>
>>
>> Complete verification output:
>> ```
>> # Verify everything
>> uv run python scripts/verify_apache_artifacts.py all --rat-jar
>> apache-rat-0.15.jar
>>
>> # Inspect artifact contents
>> uv run python scripts/verify_apache_artifacts.py list-contents
>> dist/apache-hamilton-1.90.0-incubating.tar.gz
>> uv run python scripts/verify_apache_artifacts.py list-contents
>> dist/apache_hamilton-1.90.0-py3-none-any.whl
>>
>> # Validate wheel metadata
>> uv run python scripts/verify_apache_artifacts.py twine-check
>>
>>
>> ================================================================================
>>   Complete Apache Artifacts Verification
>>
>> ================================================================================
>>
>>
>> [1/2] Verifying signatures and checksums...
>>
>>
>> ================================================================================
>>   Verifying Signatures and Checksums
>>
>> ================================================================================
>>
>> Found 4 artifact(s) to verify:
>>
>> Verifying: rat-report-apache_hamilton-1-90-0.xml
>>
>> --------------------------------------------------------------------------------
>>   ✓ Artifact exists: rat-report-apache_hamilton-1-90-0.xml (236,467 bytes)
>>   Verifying GPG signature: rat-report-apache_hamilton-1-90-0.xml.asc
>>     ✗ Signature file not found
>>   Verifying SHA512 checksum: rat-report-apache_hamilton-1-90-0.xml.sha512
>>     ✗ Checksum file not found
>>
>> Verifying: apache_hamilton-1.90.0.tar.gz
>>
>> --------------------------------------------------------------------------------
>>   ✓ Artifact exists: apache_hamilton-1.90.0.tar.gz (3,655,569 bytes)
>>   Verifying GPG signature: apache_hamilton-1.90.0.tar.gz.asc
>>     ✗ Signature file not found
>>   Verifying SHA512 checksum: apache_hamilton-1.90.0.tar.gz.sha512
>>     ✗ Checksum file not found
>>   Checking archive readability: apache_hamilton-1.90.0.tar.gz
>>     ✓ Archive is readable and contains 706 files
>>
>> Verifying: rat-report-apache_hamilton-1-90-0.txt
>>
>> --------------------------------------------------------------------------------
>>   ✓ Artifact exists: rat-report-apache_hamilton-1-90-0.txt (128,073 bytes)
>>   Verifying GPG signature: rat-report-apache_hamilton-1-90-0.txt.asc
>>     ✗ Signature file not found
>>   Verifying SHA512 checksum: rat-report-apache_hamilton-1-90-0.txt.sha512
>>     ✗ Checksum file not found
>>
>> Verifying: apache_hamilton-1.90.0-py3-none-any.whl
>>
>> --------------------------------------------------------------------------------
>>   ✓ Artifact exists: apache_hamilton-1.90.0-py3-none-any.whl (475,199
>> bytes)
>>   Verifying GPG signature: apache_hamilton-1.90.0-py3-none-any.whl.asc
>>     ✗ Signature file not found
>>   Verifying SHA512 checksum:
>> apache_hamilton-1.90.0-py3-none-any.whl.sha512
>>     ✗ Checksum file not found
>>   Checking wheel readability: apache_hamilton-1.90.0-py3-none-any.whl
>>     ✓ Wheel is readable and contains 151 files
>>
>>
>> [2/2] Verifying licenses with Apache RAT...
>>
>>
>> ================================================================================
>>   Verifying Licenses with Apache RAT
>>
>> ================================================================================
>>
>> Found 1 tar.gz artifact(s) to check:
>>
>>
>> Running Apache RAT on: apache_hamilton-1.90.0.tar.gz
>>
>> --------------------------------------------------------------------------------
>>   Extracting archive...
>>     ✓ Extracted to temp directory
>>     ⚠️  Warning: .rat-excludes not found, running without excludes
>>   Running Apache RAT (XML format for parsing)...
>>     ✓ RAT XML report: dist/rat-report-apache_hamilton-1-90-0.xml
>>   Running Apache RAT (text format for review)...
>>     ✓ RAT text report: dist/rat-report-apache_hamilton-1-90-0.txt
>>   Parsing RAT report...
>>     ✓ Scanned 706 files
>>     ✓ Found 33 files with license issues
>>
>>   ⚠️  License Issues Found:
>>
>>     Unapproved Licenses (33 files):
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/Absenteeism_at_work.csv
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-dask.txt
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-ray.txt
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-spark.txt
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements.txt
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/hello_world/requirements.txt
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/pandas/materialization/requirements.txt
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/requirements.txt
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/valid_configs.jsonl
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/hamilton/experimental/databackend.py
>>       ... and 23 more
>>
>>     📄 Reports saved:
>>        - dist/rat-report-apache_hamilton-1-90-0.xml (structured)
>>        - dist/rat-report-apache_hamilton-1-90-0.txt (human-readable)
>>
>>   ❌ License check failed!
>>
>>
>> ================================================================================
>>   Verification Summary
>>
>> ================================================================================
>>
>> Results:
>>   Signatures & Checksums: ❌ FAIL
>>   License Compliance:     ❌ FAIL
>>
>> ❌ Verification failed.
>>
>>
>> ================================================================================
>>   Listing Artifact Contents
>>
>> ================================================================================
>>
>>
>> ❌ Artifact not found: dist/apache-hamilton-1.90.0-incubating.tar.gz
>>
>>
>> ================================================================================
>>   Listing Artifact Contents
>>
>> ================================================================================
>>
>>
>> Contents of: apache_hamilton-1.90.0-py3-none-any.whl
>>
>> ================================================================================
>> Total files: 151
>>
>> Top-level structure:
>>   apache_hamilton-1.90.0.dist-info                   (7 files)
>>   hamilton                                           (144 files)
>>
>> Files:
>>
>>   apache_hamilton-1.90.0.dist-info/METADATA
>>       22,665
>>   apache_hamilton-1.90.0.dist-info/RECORD
>>       13,565
>>   apache_hamilton-1.90.0.dist-info/WHEEL
>>          82
>>   apache_hamilton-1.90.0.dist-info/entry_points.txt
>>          421
>>   apache_hamilton-1.90.0.dist-info/licenses/DISCLAIMER
>>         554
>>   apache_hamilton-1.90.0.dist-info/licenses/LICENSE
>>       12,602
>>   apache_hamilton-1.90.0.dist-info/licenses/NOTICE
>>         182
>>   hamilton/__init__.py
>>       1,086
>>   hamilton/ad_hoc_utils.py
>>       5,677
>>   hamilton/async_driver.py
>>      19,548
>>   hamilton/base.py
>>      19,860
>>   hamilton/caching/__init__.py
>>         785
>>   hamilton/caching/adapter.py
>>       61,482
>>   hamilton/caching/cache_key.py
>>        2,497
>>   hamilton/caching/fingerprinting.py
>>       9,986
>>   hamilton/caching/stores/__init__.py
>>          785
>>   hamilton/caching/stores/base.py
>>        8,529
>>   hamilton/caching/stores/file.py
>>        5,229
>>   hamilton/caching/stores/memory.py
>>       11,159
>>   hamilton/caching/stores/sqlite.py
>>        9,965
>>   hamilton/caching/stores/utils.py
>>       1,370
>>   hamilton/cli/__init__.py
>>         785
>>   hamilton/cli/__main__.py
>>       9,202
>>   hamilton/cli/commands.py
>>       4,446
>>   hamilton/cli/logic.py
>>       10,338
>>   hamilton/common/__init__.py
>>        3,075
>>   hamilton/contrib/__init__.py
>>       1,644
>>   hamilton/data_quality/__init__.py
>>          785
>>   hamilton/data_quality/base.py
>>        6,890
>>   hamilton/data_quality/default_validators.py
>>       21,184
>>   hamilton/data_quality/pandera_validators.py
>>        4,493
>>   hamilton/dataflows/__init__.py
>>      27,999
>>   hamilton/dataflows/template/README.md
>>          958
>>   hamilton/dataflows/template/__init__.py
>>        1,721
>>   hamilton/dataflows/template/author.md
>>          940
>>   hamilton/dataflows/template/requirements.txt
>>           0
>>   hamilton/dataflows/template/tags.json
>>           98
>>   hamilton/dataflows/template/valid_configs.jsonl
>>            3
>>   hamilton/dev_utils/__init__.py
>>         785
>>   hamilton/dev_utils/deprecation.py
>>        7,774
>>   hamilton/driver.py
>>      95,686
>>   hamilton/execution/__init__.py
>>         785
>>   hamilton/execution/debugging_utils.py
>>        2,041
>>   hamilton/execution/executors.py
>>       18,833
>>   hamilton/execution/graph_functions.py
>>       16,527
>>   hamilton/execution/grouping.py
>>      17,480
>>   hamilton/execution/state.py
>>       23,957
>>   hamilton/experimental/__init__.py
>>        1,100
>>   hamilton/experimental/databackend.py
>>       1,397
>>   hamilton/experimental/decorators/__init__.py
>>         785
>>   hamilton/experimental/decorators/parameterize_frame.py
>>       8,684
>>   hamilton/experimental/h_async.py
>>       1,057
>>   hamilton/experimental/h_cache.py
>>      15,259
>>   hamilton/experimental/h_dask.py
>>        1,166
>>   hamilton/experimental/h_databackends.py
>>        5,075
>>   hamilton/experimental/h_ray.py
>>       1,124
>>   hamilton/experimental/h_spark.py
>>       1,223
>>   hamilton/function_modifiers/README
>>       2,672
>>   hamilton/function_modifiers/__init__.py
>>        3,812
>>   hamilton/function_modifiers/adapters.py
>>       38,908
>>   hamilton/function_modifiers/base.py
>>       33,403
>>   hamilton/function_modifiers/configuration.py
>>      13,422
>>   hamilton/function_modifiers/delayed.py
>>       9,448
>>   hamilton/function_modifiers/dependencies.py
>>       10,014
>>   hamilton/function_modifiers/expanders.py
>>      56,117
>>   hamilton/function_modifiers/macros.py
>>       73,755
>>   hamilton/function_modifiers/metadata.py
>>       17,253
>>   hamilton/function_modifiers/recursive.py
>>      40,426
>>   hamilton/function_modifiers/validation.py
>>       12,484
>>   hamilton/function_modifiers_base.py
>>        1,462
>>   hamilton/graph.py
>>       50,459
>>   hamilton/graph_types.py
>>       10,478
>>   hamilton/graph_utils.py
>>        1,656
>>   hamilton/htypes.py
>>      17,746
>>   hamilton/io/__init__.py
>>        1,183
>>   hamilton/io/data_adapters.py
>>       7,987
>>   hamilton/io/default_data_loaders.py
>>        5,617
>>   hamilton/io/materialization.py
>>      21,578
>>   hamilton/io/utils.py
>>       5,073
>>   hamilton/lifecycle/__init__.py
>>       2,053
>>   hamilton/lifecycle/api.py
>>       31,981
>>   hamilton/lifecycle/base.py
>>      44,599
>>   hamilton/lifecycle/default.py
>>       32,890
>>   hamilton/log_setup.py
>>        1,714
>>   hamilton/models.py
>>       3,265
>>   hamilton/node.py
>>      17,153
>>   hamilton/plugins/README.md
>>       2,659
>>   hamilton/plugins/__init__.py
>>         785
>>   hamilton/plugins/dask_extensions.py
>>        1,518
>>   hamilton/plugins/dlt_extensions.py
>>       5,585
>>   hamilton/plugins/geopandas_extensions.py
>>       1,572
>>   hamilton/plugins/h_dask.py
>>      15,566
>>   hamilton/plugins/h_ddog.py
>>      22,392
>>   hamilton/plugins/h_diskcache.py
>>        6,683
>>   hamilton/plugins/h_experiments/__init__.py
>>         892
>>   hamilton/plugins/h_experiments/__main__.py
>>       2,181
>>   hamilton/plugins/h_experiments/cache.py
>>        1,395
>>   hamilton/plugins/h_experiments/data_model.py
>>       2,180
>>   hamilton/plugins/h_experiments/hook.py
>>       7,240
>>   hamilton/plugins/h_experiments/server.py
>>      12,493
>>   hamilton/plugins/h_kedro.py
>>        5,583
>>   hamilton/plugins/h_logging.py
>>       15,225
>>   hamilton/plugins/h_mcp/__init__.py
>>       1,068
>>   hamilton/plugins/h_mcp/__main__.py
>>       1,137
>>   hamilton/plugins/h_mcp/_helpers.py
>>       4,152
>>   hamilton/plugins/h_mcp/_templates.py
>>      13,528
>>   hamilton/plugins/h_mcp/server.py
>>      12,392
>>   hamilton/plugins/h_mlflow.py
>>      14,442
>>   hamilton/plugins/h_narwhals.py
>>       4,677
>>   hamilton/plugins/h_openlineage.py
>>       13,129
>>   hamilton/plugins/h_opentelemetry.py
>>        5,928
>>   hamilton/plugins/h_pandas.py
>>      10,633
>>   hamilton/plugins/h_pandera.py
>>        4,952
>>   hamilton/plugins/h_polars.py
>>      12,507
>>   hamilton/plugins/h_polars_lazyframe.py
>>      11,561
>>   hamilton/plugins/h_pyarrow.py
>>        2,177
>>   hamilton/plugins/h_pydantic.py
>>       4,962
>>   hamilton/plugins/h_ray.py
>>        9,130
>>   hamilton/plugins/h_rich.py
>>       5,181
>>   hamilton/plugins/h_schema.py
>>      18,307
>>   hamilton/plugins/h_slack.py
>>        3,634
>>   hamilton/plugins/h_spark.py
>>       63,268
>>   hamilton/plugins/h_threadpool.py
>>       5,036
>>   hamilton/plugins/h_tqdm.py
>>       4,665
>>   hamilton/plugins/h_vaex.py
>>       5,034
>>   hamilton/plugins/huggingface_extensions.py
>>       7,839
>>   hamilton/plugins/ibis_extensions.py
>>        2,970
>>   hamilton/plugins/jupyter_magic.py
>>       24,929
>>   hamilton/plugins/kedro_extensions.py
>>       3,267
>>   hamilton/plugins/lightgbm_extensions.py
>>        2,961
>>   hamilton/plugins/matplotlib_extensions.py
>>        3,738
>>   hamilton/plugins/mlflow_extensions.py
>>        8,856
>>   hamilton/plugins/numpy_extensions.py
>>       3,221
>>   hamilton/plugins/pandas_extensions.py
>>       66,288
>>   hamilton/plugins/plotly_extensions.py
>>        5,010
>>   hamilton/plugins/polars_extensions.py
>>        2,345
>>   hamilton/plugins/polars_implementations.py
>>       1,028
>>   hamilton/plugins/polars_lazyframe_extensions.py
>>       10,889
>>   hamilton/plugins/polars_post_1_0_0_extensions.py
>>      30,733
>>   hamilton/plugins/polars_pre_1_0_0_extension.py
>>      29,649
>>   hamilton/plugins/pydantic_extensions.py
>>        3,840
>>   hamilton/plugins/pyspark_pandas_extensions.py
>>        1,551
>>   hamilton/plugins/sklearn_plot_extensions.py
>>        4,326
>>   hamilton/plugins/spark_extensions.py
>>       3,236
>>   hamilton/plugins/vaex_extensions.py
>>        1,673
>>   hamilton/plugins/xgboost_extensions.py
>>       2,762
>>   hamilton/plugins/yaml_extensions.py
>>        2,554
>>   hamilton/registry.py
>>       8,588
>>   hamilton/settings.py
>>         845
>>   hamilton/telemetry.py
>>        1,772
>>   hamilton/version.py
>>          807
>>
>>
>> ================================================================================
>>   Verifying Wheel Metadata with Twine
>>
>> ================================================================================
>>
>>
>> Checking apache_hamilton-1.90.0-py3-none-any.whl...
>>   ✓ apache_hamilton-1.90.0-py3-none-any.whl metadata is valid
>>
>> ✅ All wheels passed twine validation
>>
>> ✅ Verification completed successfully!
>> ```
>>
>> Maybe for some of the things it is just me doing something stupid (but
>> not sure what since I copy-paste the readme commands and just fix the file
>> names).
>>
>> Best,
>> Jernej
>>
>> ________________________________
>> From: Elijah ben Izzy <el...@alumni.brown.edu>
>> Sent: 07 April 2026 05:37
>> To: dev@hamilton.apache.org <de...@hamilton.apache.org>
>> Subject: Re: [VOTE] Release Apache Hamilton - apache-hamilton
>> 1.90.0-incubating (release candidate 0)
>>
>> Nice work. Checks performed:
>>   [x] Verified GPG signature (Good signature, key
>> FE668E857E89A11C5E5C000CA8D3D15600545C61)
>>   [x] Verified SHA-512 checksums
>>   [x] "incubating" in source tarball filename
>>   [x] LICENSE, NOTICE, DISCLAIMER present and correct
>>   [x] ASF license headers present in source files
>>   [x] No unexpected binary files
>>   [x] Built and installed from source (Python 3.13)
>>   [x] Ran hello_world example successfully
>>
>> + 1 (binding)
>>
>> On Fri, Apr 3, 2026 at 10:31 PM Stefan Krawczyk <
>> stefan.krawczyk@gmail.com>
>> wrote:
>>
>> > Oh I forgot to link to it, but to hopefully make it faster to verify
>> > the verification
>> > script
>> > <
>> >
>> https://github.com/apache/hamilton/blob/main/scripts/verify_apache_artifacts.py
>> > >
>> > should help (see these instructions
>> > <
>> https://github.com/apache/hamilton/tree/main/scripts#verification-script
>> > >).
>> >
>> > Otherwise I have noticed the README instructions for verification have
>> some
>> > incorrect paths -- please adjust for that and you should be able to
>> follow
>> > the instructions.
>> >
>> > On Fri, Apr 3, 2026 at 10:20 PM Stefan Krawczyk <
>> stefan.krawczyk@gmail.com
>> > >
>> > wrote:
>> >
>> > > Hi all,
>> > >
>> > > This is a call for a vote on releasing Apache Hamilton apache-hamilton
>> > > 1.90.0-incubating, release candidate 0.
>> > >
>> > > This release includes the following changes (see CHANGELOG for
>> details):
>> > >
>> > > Features:
>> > >> - While loop DFS implementation (#1483)
>> > >> - Async data validator support
>> > >> - Add `unpack_fields` annotation for unpacking structured fields
>> (#1305)
>> > >> - Expose DAG validation as LLM tools via MCP (#1490)
>> > >> - Add NDJSON support in polars (#1431)
>> > >> - Enhance visualization with display_name tag support
>> > >
>> > >
>> > > Bug fixes:
>> > >> - Fix `@resolve` decorator not calling `validate()` on returned
>> > >> decorators (#1524)
>> > >> - Fix is_submodule substring match causing spurious DAG nodes (#1485)
>> > >> - Fix pandas 2.2+ compatibility in pandas_extensions.py
>> > >> - Fix spark failures on Python 3.14
>> > >> - Fix local (Windows) tests (#1302)
>> > >> - Fix typer version requirement for click 8.3 help compatibility
>> > >
>> > >
>> > > Performance:
>> > >> - Use deque for BFS queue in graph traversal (#1494)
>> > >
>> > >
>> > > Platform changes:
>> > >> - Drop Python 3.8 and 3.9 support
>> > >> - Add Python 3.13 and 3.14 support
>> > >> - Remove usage telemetry (PostHog) (#1512)
>> > >> - Remove RayWorkflows (#1359)
>> > >> - Update `dlt` plugin with changes to `loader_file_format`
>> > >> - Package renamed from sf-hamilton to apache-hamilton
>> > >
>> > >
>> > >
>> > > The artifacts for this release candidate can be found at:
>> > >
>> > >
>> >
>> https://dist.apache.org/repos/dist/dev/incubator/hamilton/apache-hamilton/1.90.0-RC0
>> > >
>> > >
>> > > The Git tag to be voted upon is:
>> apache-hamilton-v1.90.0-incubating-RC0
>> > >
>> > >
>> > > The release hash is: bed5a272904bd7d68bc03167978f663e1906738c
>> > >
>> > > But the functional release is from this commit from main:
>> > > e84ed90b4428d777449b9bfc413ed86ee41a77c9
>> > >
>> > > Release artifacts are signed with the following key:
>> > >
>> > > FE668E857E89A11C5E5C000CA8D3D15600545C61
>> > >
>> > > The KEYS file is available at:
>> > > https://downloads.apache.org/incubator/hamilton/KEYS
>> > >
>> > > Please download, verify, and test the release candidate. You can find
>> the
>> > > instructions to do so here
>> > > <
>> >
>> https://github.com/apache/hamilton/tree/main/scripts#for-voters-verifying-a-release
>> >
>> > (and
>> > > if you're having issues following them please reply and I'll help).
>> > >
>> > > The vote will run for a minimum of 72 hours, likely much longer due to
>> > the
>> > > holiday.
>> > >
>> > > Please vote:
>> > >
>> > > [ ] +1 Release this package as Apache Hamilton apache-hamilton
>> > > 1.90.0-incubating
>> > > [ ] +0 No opinion
>> > > [ ] -1 Do not release this package because... (Please provide a
>> reason)
>> > >
>> > > Checklist for reference:
>> > >
>> > > [ ] Incubating in name.
>> > > [ ] Download links are valid.
>> > > [ ] Checksums and signatures.
>> > > [ ] LICENSE/NOTICE/DISCLAIMER files exist
>> > > [ ] No unexpected binary files
>> > > [ ] All source files have ASF headers
>> > > [ ] Can compile from source
>> > >
>> > >
>> > > On behalf of the Apache Hamilton PPMC,
>> > >
>> > > Stefan Krawczyk
>> > >
>> >
>>
>

Re: [VOTE] Release Apache Hamilton - apache-hamilton 1.90.0-incubating (release candidate 0)

Posted by Stefan Krawczyk <st...@gmail.com>.
in a fresh directory (not repo)*.

On Sat, Apr 11, 2026 at 2:02 PM Stefan Krawczyk <st...@gmail.com>
wrote:

> @jernej, do you want to try again? I created this gist that is a script
> that walks through the process:
> https://gist.github.com/skrawcz/a091951d8da1c9d2eb0b880e1da725bc.
>
> You don't need to use the scripts to validate -- and that's not what we're
> voting on. If you use the above script, it should set everything up fresh
> if you do it in a fresh repo and have `uv` installed.
>
> On Sat, Apr 11, 2026 at 2:28 AM Jernej Frank <
> jernej.frank@physics.ox.ac.uk> wrote:
>
>> Hey, I tried following the verification readme and use the scripts:
>> https://github.com/apache/hamilton/tree/main/scripts#verification-script
>> and could not get a lot of things working out of the box.
>>
>> -1
>>
>> Checklist for reference:
>>
>> [x] Incubating in name.
>> [x] Download links are valid.
>> The actual link is fine but the readme is wrong
>> ```
>> svn export
>> https://dist.apache.org/repos/dist/dev/incubator/hamilton/${PACKAGE}-${VERSION}-incubating-RC${RC}/
>> hamilton-rc${RC}
>>
>> svn: E170000: URL '
>> https://dist.apache.org/repos/dist/dev/incubator/hamilton/apache-hamilton-1.90.0-incubating-RC0'
>> doesn't exist
>> ```
>> [ ] Checksums and signatures.
>> I can verify gpg keys but the readme is missing a -src in the name for
>> the source.
>> ```
>> gpg --verify ${PACKAGE}-${VERSION}-incubating.tar.gz.asc
>> ${PACKAGE}-${VERSION}-incubating.tar.gz
>> gpg: can't open 'apache-hamilton-1.90.0-incubating.tar.gz.asc': No such
>> file or directory
>> gpg: verify signatures failed: No such file or directory
>> ```
>>
>> The wheel gpg keys worked.
>> I could not get sha verification working:
>> ```
>> shasum -a 512 -c ${PACKAGE}-${VERSION}-incubating.tar.gz.sha512
>> shasum: apache-hamilton-1.90.0-incubating.tar.gz.sha512: No such file or
>> directory
>>
>> shasum -a 512 -c ${PACKAGE}-${VERSION}-incubating-src.tar.gz.sha512
>> shasum: apache-hamilton-1.90.0-incubating-src.tar.gz.sha512: no properly
>> formatted SHA checksum lines found
>>
>> shasum -a 512 -c ${WHEEL_NAME}.sha512
>> shasum: apache_hamilton-1.90.0-py3-none-any.whl.sha512: no properly
>> formatted SHA checksum lines found
>> ```
>>
>> Similarly,  in case of using the script at the end:
>> ```
>> # Run from the extracted source directory
>> (${PACKAGE}-${VERSION}-incubating/)
>> # Verify GPG signatures and SHA512 checksums
>> uv run python scripts/verify_apache_artifacts.py signatures
>>
>> ================================================================================
>>   Verifying Signatures and Checksums
>>
>> ================================================================================
>>
>> Found 2 artifact(s) to verify:
>>
>> Verifying: apache_hamilton-1.90.0.tar.gz
>>
>> --------------------------------------------------------------------------------
>>   ✓ Artifact exists: apache_hamilton-1.90.0.tar.gz (3,655,569 bytes)
>>   Verifying GPG signature: apache_hamilton-1.90.0.tar.gz.asc
>>     ✗ Signature file not found
>>   Verifying SHA512 checksum: apache_hamilton-1.90.0.tar.gz.sha512
>>     ✗ Checksum file not found
>>   Checking archive readability: apache_hamilton-1.90.0.tar.gz
>>     ✓ Archive is readable and contains 706 files
>>
>> Verifying: apache_hamilton-1.90.0-py3-none-any.whl
>>
>> --------------------------------------------------------------------------------
>>   ✓ Artifact exists: apache_hamilton-1.90.0-py3-none-any.whl (475,199
>> bytes)
>>   Verifying GPG signature: apache_hamilton-1.90.0-py3-none-any.whl.asc
>>     ✗ Signature file not found
>>   Verifying SHA512 checksum:
>> apache_hamilton-1.90.0-py3-none-any.whl.sha512
>>     ✗ Checksum file not found
>>   Checking wheel readability: apache_hamilton-1.90.0-py3-none-any.whl
>>     ✓ Wheel is readable and contains 151 files
>>
>>
>> ❌ Verification failed.
>> ```
>> [ ] LICENSE/NOTICE/DISCLAIMER files exist
>> See above and below, there's some files in the examples that don't have
>> licenceses but are part of the source package.
>> [x] No unexpected binary files
>> [ ] All source files have ASF headers
>> I ran the provided script, but rat-excludes seems not to be found. Some
>> of these files admit comments so they could have licence headers
>> ```
>> # Verify license headers (requires Apache RAT)
>> uv run python scripts/verify_apache_artifacts.py licenses --rat-jar
>> apache-rat-0.15.jar
>> Running Apache RAT on: apache_hamilton-1.90.0.tar.gz
>>
>> --------------------------------------------------------------------------------
>>   Extracting archive...
>>     ✓ Extracted to temp directory
>>     ⚠️  Warning: .rat-excludes not found, running without excludes
>>   Running Apache RAT (XML format for parsing)...
>>     ✓ RAT XML report: dist/rat-report-apache_hamilton-1-90-0.xml
>>   Running Apache RAT (text format for review)...
>>     ✓ RAT text report: dist/rat-report-apache_hamilton-1-90-0.txt
>>   Parsing RAT report...
>>     ✓ Scanned 706 files
>>     ✓ Found 33 files with license issues
>>
>>   ⚠️  License Issues Found:
>>
>>     Unapproved Licenses (33 files):
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/Absenteeism_at_work.csv
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-dask.txt
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-ray.txt
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-spark.txt
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements.txt
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/hello_world/requirements.txt
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/pandas/materialization/requirements.txt
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/requirements.txt
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/valid_configs.jsonl
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/hamilton/experimental/databackend.py
>>       ... and 23 more
>>
>>     📄 Reports saved:
>>        - dist/rat-report-apache_hamilton-1-90-0.xml (structured)
>>        - dist/rat-report-apache_hamilton-1-90-0.txt (human-readable)
>>
>>   ❌ License check failed!
>>
>> ❌ Verification failed.
>> ```
>> [x] Can compile from source
>>
>>   *
>> the tar extracts into `apache_hamilton-1.90.0` so `cd
>> ${PACKAGE}-${VERSION}-incubating/` doesn't work.
>>   *
>> `uv venv --python 3.11 --clean` doesn't work: `error: unexpected argument
>> '--clean' found`
>>   *
>> flit worked and could install wheel
>>   *
>> cannot install test dependencies: `error: Distribution `lancedb==0.30.2 @
>> registry+https://pypi.org/simple` <https://pypi.org/simple> can't be
>> installed because it doesn't have a source distribution or wheel for the
>> current platform` — seems like uv cannot resolve lance db. I am on `hint:
>> You're on macOS (`macosx_15_0_x86_64`), but `lancedb` (v0.30.2)`
>>   *
>> hello_world runs -ish: only constructing the dag at the end fais if you
>> don't have graphviz: `ERROR:hamilton.graph: graphviz is required for
>> visualizing the function graph. Install it with: pip install
>> "sf-hamilton[visualization]" or pip install graphviz`
>>
>>
>> Complete verification output:
>> ```
>> # Verify everything
>> uv run python scripts/verify_apache_artifacts.py all --rat-jar
>> apache-rat-0.15.jar
>>
>> # Inspect artifact contents
>> uv run python scripts/verify_apache_artifacts.py list-contents
>> dist/apache-hamilton-1.90.0-incubating.tar.gz
>> uv run python scripts/verify_apache_artifacts.py list-contents
>> dist/apache_hamilton-1.90.0-py3-none-any.whl
>>
>> # Validate wheel metadata
>> uv run python scripts/verify_apache_artifacts.py twine-check
>>
>>
>> ================================================================================
>>   Complete Apache Artifacts Verification
>>
>> ================================================================================
>>
>>
>> [1/2] Verifying signatures and checksums...
>>
>>
>> ================================================================================
>>   Verifying Signatures and Checksums
>>
>> ================================================================================
>>
>> Found 4 artifact(s) to verify:
>>
>> Verifying: rat-report-apache_hamilton-1-90-0.xml
>>
>> --------------------------------------------------------------------------------
>>   ✓ Artifact exists: rat-report-apache_hamilton-1-90-0.xml (236,467 bytes)
>>   Verifying GPG signature: rat-report-apache_hamilton-1-90-0.xml.asc
>>     ✗ Signature file not found
>>   Verifying SHA512 checksum: rat-report-apache_hamilton-1-90-0.xml.sha512
>>     ✗ Checksum file not found
>>
>> Verifying: apache_hamilton-1.90.0.tar.gz
>>
>> --------------------------------------------------------------------------------
>>   ✓ Artifact exists: apache_hamilton-1.90.0.tar.gz (3,655,569 bytes)
>>   Verifying GPG signature: apache_hamilton-1.90.0.tar.gz.asc
>>     ✗ Signature file not found
>>   Verifying SHA512 checksum: apache_hamilton-1.90.0.tar.gz.sha512
>>     ✗ Checksum file not found
>>   Checking archive readability: apache_hamilton-1.90.0.tar.gz
>>     ✓ Archive is readable and contains 706 files
>>
>> Verifying: rat-report-apache_hamilton-1-90-0.txt
>>
>> --------------------------------------------------------------------------------
>>   ✓ Artifact exists: rat-report-apache_hamilton-1-90-0.txt (128,073 bytes)
>>   Verifying GPG signature: rat-report-apache_hamilton-1-90-0.txt.asc
>>     ✗ Signature file not found
>>   Verifying SHA512 checksum: rat-report-apache_hamilton-1-90-0.txt.sha512
>>     ✗ Checksum file not found
>>
>> Verifying: apache_hamilton-1.90.0-py3-none-any.whl
>>
>> --------------------------------------------------------------------------------
>>   ✓ Artifact exists: apache_hamilton-1.90.0-py3-none-any.whl (475,199
>> bytes)
>>   Verifying GPG signature: apache_hamilton-1.90.0-py3-none-any.whl.asc
>>     ✗ Signature file not found
>>   Verifying SHA512 checksum:
>> apache_hamilton-1.90.0-py3-none-any.whl.sha512
>>     ✗ Checksum file not found
>>   Checking wheel readability: apache_hamilton-1.90.0-py3-none-any.whl
>>     ✓ Wheel is readable and contains 151 files
>>
>>
>> [2/2] Verifying licenses with Apache RAT...
>>
>>
>> ================================================================================
>>   Verifying Licenses with Apache RAT
>>
>> ================================================================================
>>
>> Found 1 tar.gz artifact(s) to check:
>>
>>
>> Running Apache RAT on: apache_hamilton-1.90.0.tar.gz
>>
>> --------------------------------------------------------------------------------
>>   Extracting archive...
>>     ✓ Extracted to temp directory
>>     ⚠️  Warning: .rat-excludes not found, running without excludes
>>   Running Apache RAT (XML format for parsing)...
>>     ✓ RAT XML report: dist/rat-report-apache_hamilton-1-90-0.xml
>>   Running Apache RAT (text format for review)...
>>     ✓ RAT text report: dist/rat-report-apache_hamilton-1-90-0.txt
>>   Parsing RAT report...
>>     ✓ Scanned 706 files
>>     ✓ Found 33 files with license issues
>>
>>   ⚠️  License Issues Found:
>>
>>     Unapproved Licenses (33 files):
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/Absenteeism_at_work.csv
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-dask.txt
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-ray.txt
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-spark.txt
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements.txt
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/hello_world/requirements.txt
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/pandas/materialization/requirements.txt
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/requirements.txt
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/valid_configs.jsonl
>>       -
>> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/hamilton/experimental/databackend.py
>>       ... and 23 more
>>
>>     📄 Reports saved:
>>        - dist/rat-report-apache_hamilton-1-90-0.xml (structured)
>>        - dist/rat-report-apache_hamilton-1-90-0.txt (human-readable)
>>
>>   ❌ License check failed!
>>
>>
>> ================================================================================
>>   Verification Summary
>>
>> ================================================================================
>>
>> Results:
>>   Signatures & Checksums: ❌ FAIL
>>   License Compliance:     ❌ FAIL
>>
>> ❌ Verification failed.
>>
>>
>> ================================================================================
>>   Listing Artifact Contents
>>
>> ================================================================================
>>
>>
>> ❌ Artifact not found: dist/apache-hamilton-1.90.0-incubating.tar.gz
>>
>>
>> ================================================================================
>>   Listing Artifact Contents
>>
>> ================================================================================
>>
>>
>> Contents of: apache_hamilton-1.90.0-py3-none-any.whl
>>
>> ================================================================================
>> Total files: 151
>>
>> Top-level structure:
>>   apache_hamilton-1.90.0.dist-info                   (7 files)
>>   hamilton                                           (144 files)
>>
>> Files:
>>
>>   apache_hamilton-1.90.0.dist-info/METADATA
>>       22,665
>>   apache_hamilton-1.90.0.dist-info/RECORD
>>       13,565
>>   apache_hamilton-1.90.0.dist-info/WHEEL
>>          82
>>   apache_hamilton-1.90.0.dist-info/entry_points.txt
>>          421
>>   apache_hamilton-1.90.0.dist-info/licenses/DISCLAIMER
>>         554
>>   apache_hamilton-1.90.0.dist-info/licenses/LICENSE
>>       12,602
>>   apache_hamilton-1.90.0.dist-info/licenses/NOTICE
>>         182
>>   hamilton/__init__.py
>>       1,086
>>   hamilton/ad_hoc_utils.py
>>       5,677
>>   hamilton/async_driver.py
>>      19,548
>>   hamilton/base.py
>>      19,860
>>   hamilton/caching/__init__.py
>>         785
>>   hamilton/caching/adapter.py
>>       61,482
>>   hamilton/caching/cache_key.py
>>        2,497
>>   hamilton/caching/fingerprinting.py
>>       9,986
>>   hamilton/caching/stores/__init__.py
>>          785
>>   hamilton/caching/stores/base.py
>>        8,529
>>   hamilton/caching/stores/file.py
>>        5,229
>>   hamilton/caching/stores/memory.py
>>       11,159
>>   hamilton/caching/stores/sqlite.py
>>        9,965
>>   hamilton/caching/stores/utils.py
>>       1,370
>>   hamilton/cli/__init__.py
>>         785
>>   hamilton/cli/__main__.py
>>       9,202
>>   hamilton/cli/commands.py
>>       4,446
>>   hamilton/cli/logic.py
>>       10,338
>>   hamilton/common/__init__.py
>>        3,075
>>   hamilton/contrib/__init__.py
>>       1,644
>>   hamilton/data_quality/__init__.py
>>          785
>>   hamilton/data_quality/base.py
>>        6,890
>>   hamilton/data_quality/default_validators.py
>>       21,184
>>   hamilton/data_quality/pandera_validators.py
>>        4,493
>>   hamilton/dataflows/__init__.py
>>      27,999
>>   hamilton/dataflows/template/README.md
>>          958
>>   hamilton/dataflows/template/__init__.py
>>        1,721
>>   hamilton/dataflows/template/author.md
>>          940
>>   hamilton/dataflows/template/requirements.txt
>>           0
>>   hamilton/dataflows/template/tags.json
>>           98
>>   hamilton/dataflows/template/valid_configs.jsonl
>>            3
>>   hamilton/dev_utils/__init__.py
>>         785
>>   hamilton/dev_utils/deprecation.py
>>        7,774
>>   hamilton/driver.py
>>      95,686
>>   hamilton/execution/__init__.py
>>         785
>>   hamilton/execution/debugging_utils.py
>>        2,041
>>   hamilton/execution/executors.py
>>       18,833
>>   hamilton/execution/graph_functions.py
>>       16,527
>>   hamilton/execution/grouping.py
>>      17,480
>>   hamilton/execution/state.py
>>       23,957
>>   hamilton/experimental/__init__.py
>>        1,100
>>   hamilton/experimental/databackend.py
>>       1,397
>>   hamilton/experimental/decorators/__init__.py
>>         785
>>   hamilton/experimental/decorators/parameterize_frame.py
>>       8,684
>>   hamilton/experimental/h_async.py
>>       1,057
>>   hamilton/experimental/h_cache.py
>>      15,259
>>   hamilton/experimental/h_dask.py
>>        1,166
>>   hamilton/experimental/h_databackends.py
>>        5,075
>>   hamilton/experimental/h_ray.py
>>       1,124
>>   hamilton/experimental/h_spark.py
>>       1,223
>>   hamilton/function_modifiers/README
>>       2,672
>>   hamilton/function_modifiers/__init__.py
>>        3,812
>>   hamilton/function_modifiers/adapters.py
>>       38,908
>>   hamilton/function_modifiers/base.py
>>       33,403
>>   hamilton/function_modifiers/configuration.py
>>      13,422
>>   hamilton/function_modifiers/delayed.py
>>       9,448
>>   hamilton/function_modifiers/dependencies.py
>>       10,014
>>   hamilton/function_modifiers/expanders.py
>>      56,117
>>   hamilton/function_modifiers/macros.py
>>       73,755
>>   hamilton/function_modifiers/metadata.py
>>       17,253
>>   hamilton/function_modifiers/recursive.py
>>      40,426
>>   hamilton/function_modifiers/validation.py
>>       12,484
>>   hamilton/function_modifiers_base.py
>>        1,462
>>   hamilton/graph.py
>>       50,459
>>   hamilton/graph_types.py
>>       10,478
>>   hamilton/graph_utils.py
>>        1,656
>>   hamilton/htypes.py
>>      17,746
>>   hamilton/io/__init__.py
>>        1,183
>>   hamilton/io/data_adapters.py
>>       7,987
>>   hamilton/io/default_data_loaders.py
>>        5,617
>>   hamilton/io/materialization.py
>>      21,578
>>   hamilton/io/utils.py
>>       5,073
>>   hamilton/lifecycle/__init__.py
>>       2,053
>>   hamilton/lifecycle/api.py
>>       31,981
>>   hamilton/lifecycle/base.py
>>      44,599
>>   hamilton/lifecycle/default.py
>>       32,890
>>   hamilton/log_setup.py
>>        1,714
>>   hamilton/models.py
>>       3,265
>>   hamilton/node.py
>>      17,153
>>   hamilton/plugins/README.md
>>       2,659
>>   hamilton/plugins/__init__.py
>>         785
>>   hamilton/plugins/dask_extensions.py
>>        1,518
>>   hamilton/plugins/dlt_extensions.py
>>       5,585
>>   hamilton/plugins/geopandas_extensions.py
>>       1,572
>>   hamilton/plugins/h_dask.py
>>      15,566
>>   hamilton/plugins/h_ddog.py
>>      22,392
>>   hamilton/plugins/h_diskcache.py
>>        6,683
>>   hamilton/plugins/h_experiments/__init__.py
>>         892
>>   hamilton/plugins/h_experiments/__main__.py
>>       2,181
>>   hamilton/plugins/h_experiments/cache.py
>>        1,395
>>   hamilton/plugins/h_experiments/data_model.py
>>       2,180
>>   hamilton/plugins/h_experiments/hook.py
>>       7,240
>>   hamilton/plugins/h_experiments/server.py
>>      12,493
>>   hamilton/plugins/h_kedro.py
>>        5,583
>>   hamilton/plugins/h_logging.py
>>       15,225
>>   hamilton/plugins/h_mcp/__init__.py
>>       1,068
>>   hamilton/plugins/h_mcp/__main__.py
>>       1,137
>>   hamilton/plugins/h_mcp/_helpers.py
>>       4,152
>>   hamilton/plugins/h_mcp/_templates.py
>>      13,528
>>   hamilton/plugins/h_mcp/server.py
>>      12,392
>>   hamilton/plugins/h_mlflow.py
>>      14,442
>>   hamilton/plugins/h_narwhals.py
>>       4,677
>>   hamilton/plugins/h_openlineage.py
>>       13,129
>>   hamilton/plugins/h_opentelemetry.py
>>        5,928
>>   hamilton/plugins/h_pandas.py
>>      10,633
>>   hamilton/plugins/h_pandera.py
>>        4,952
>>   hamilton/plugins/h_polars.py
>>      12,507
>>   hamilton/plugins/h_polars_lazyframe.py
>>      11,561
>>   hamilton/plugins/h_pyarrow.py
>>        2,177
>>   hamilton/plugins/h_pydantic.py
>>       4,962
>>   hamilton/plugins/h_ray.py
>>        9,130
>>   hamilton/plugins/h_rich.py
>>       5,181
>>   hamilton/plugins/h_schema.py
>>      18,307
>>   hamilton/plugins/h_slack.py
>>        3,634
>>   hamilton/plugins/h_spark.py
>>       63,268
>>   hamilton/plugins/h_threadpool.py
>>       5,036
>>   hamilton/plugins/h_tqdm.py
>>       4,665
>>   hamilton/plugins/h_vaex.py
>>       5,034
>>   hamilton/plugins/huggingface_extensions.py
>>       7,839
>>   hamilton/plugins/ibis_extensions.py
>>        2,970
>>   hamilton/plugins/jupyter_magic.py
>>       24,929
>>   hamilton/plugins/kedro_extensions.py
>>       3,267
>>   hamilton/plugins/lightgbm_extensions.py
>>        2,961
>>   hamilton/plugins/matplotlib_extensions.py
>>        3,738
>>   hamilton/plugins/mlflow_extensions.py
>>        8,856
>>   hamilton/plugins/numpy_extensions.py
>>       3,221
>>   hamilton/plugins/pandas_extensions.py
>>       66,288
>>   hamilton/plugins/plotly_extensions.py
>>        5,010
>>   hamilton/plugins/polars_extensions.py
>>        2,345
>>   hamilton/plugins/polars_implementations.py
>>       1,028
>>   hamilton/plugins/polars_lazyframe_extensions.py
>>       10,889
>>   hamilton/plugins/polars_post_1_0_0_extensions.py
>>      30,733
>>   hamilton/plugins/polars_pre_1_0_0_extension.py
>>      29,649
>>   hamilton/plugins/pydantic_extensions.py
>>        3,840
>>   hamilton/plugins/pyspark_pandas_extensions.py
>>        1,551
>>   hamilton/plugins/sklearn_plot_extensions.py
>>        4,326
>>   hamilton/plugins/spark_extensions.py
>>       3,236
>>   hamilton/plugins/vaex_extensions.py
>>        1,673
>>   hamilton/plugins/xgboost_extensions.py
>>       2,762
>>   hamilton/plugins/yaml_extensions.py
>>        2,554
>>   hamilton/registry.py
>>       8,588
>>   hamilton/settings.py
>>         845
>>   hamilton/telemetry.py
>>        1,772
>>   hamilton/version.py
>>          807
>>
>>
>> ================================================================================
>>   Verifying Wheel Metadata with Twine
>>
>> ================================================================================
>>
>>
>> Checking apache_hamilton-1.90.0-py3-none-any.whl...
>>   ✓ apache_hamilton-1.90.0-py3-none-any.whl metadata is valid
>>
>> ✅ All wheels passed twine validation
>>
>> ✅ Verification completed successfully!
>> ```
>>
>> Maybe for some of the things it is just me doing something stupid (but
>> not sure what since I copy-paste the readme commands and just fix the file
>> names).
>>
>> Best,
>> Jernej
>>
>> ________________________________
>> From: Elijah ben Izzy <el...@alumni.brown.edu>
>> Sent: 07 April 2026 05:37
>> To: dev@hamilton.apache.org <de...@hamilton.apache.org>
>> Subject: Re: [VOTE] Release Apache Hamilton - apache-hamilton
>> 1.90.0-incubating (release candidate 0)
>>
>> Nice work. Checks performed:
>>   [x] Verified GPG signature (Good signature, key
>> FE668E857E89A11C5E5C000CA8D3D15600545C61)
>>   [x] Verified SHA-512 checksums
>>   [x] "incubating" in source tarball filename
>>   [x] LICENSE, NOTICE, DISCLAIMER present and correct
>>   [x] ASF license headers present in source files
>>   [x] No unexpected binary files
>>   [x] Built and installed from source (Python 3.13)
>>   [x] Ran hello_world example successfully
>>
>> + 1 (binding)
>>
>> On Fri, Apr 3, 2026 at 10:31 PM Stefan Krawczyk <
>> stefan.krawczyk@gmail.com>
>> wrote:
>>
>> > Oh I forgot to link to it, but to hopefully make it faster to verify
>> > the verification
>> > script
>> > <
>> >
>> https://github.com/apache/hamilton/blob/main/scripts/verify_apache_artifacts.py
>> > >
>> > should help (see these instructions
>> > <
>> https://github.com/apache/hamilton/tree/main/scripts#verification-script
>> > >).
>> >
>> > Otherwise I have noticed the README instructions for verification have
>> some
>> > incorrect paths -- please adjust for that and you should be able to
>> follow
>> > the instructions.
>> >
>> > On Fri, Apr 3, 2026 at 10:20 PM Stefan Krawczyk <
>> stefan.krawczyk@gmail.com
>> > >
>> > wrote:
>> >
>> > > Hi all,
>> > >
>> > > This is a call for a vote on releasing Apache Hamilton apache-hamilton
>> > > 1.90.0-incubating, release candidate 0.
>> > >
>> > > This release includes the following changes (see CHANGELOG for
>> details):
>> > >
>> > > Features:
>> > >> - While loop DFS implementation (#1483)
>> > >> - Async data validator support
>> > >> - Add `unpack_fields` annotation for unpacking structured fields
>> (#1305)
>> > >> - Expose DAG validation as LLM tools via MCP (#1490)
>> > >> - Add NDJSON support in polars (#1431)
>> > >> - Enhance visualization with display_name tag support
>> > >
>> > >
>> > > Bug fixes:
>> > >> - Fix `@resolve` decorator not calling `validate()` on returned
>> > >> decorators (#1524)
>> > >> - Fix is_submodule substring match causing spurious DAG nodes (#1485)
>> > >> - Fix pandas 2.2+ compatibility in pandas_extensions.py
>> > >> - Fix spark failures on Python 3.14
>> > >> - Fix local (Windows) tests (#1302)
>> > >> - Fix typer version requirement for click 8.3 help compatibility
>> > >
>> > >
>> > > Performance:
>> > >> - Use deque for BFS queue in graph traversal (#1494)
>> > >
>> > >
>> > > Platform changes:
>> > >> - Drop Python 3.8 and 3.9 support
>> > >> - Add Python 3.13 and 3.14 support
>> > >> - Remove usage telemetry (PostHog) (#1512)
>> > >> - Remove RayWorkflows (#1359)
>> > >> - Update `dlt` plugin with changes to `loader_file_format`
>> > >> - Package renamed from sf-hamilton to apache-hamilton
>> > >
>> > >
>> > >
>> > > The artifacts for this release candidate can be found at:
>> > >
>> > >
>> >
>> https://dist.apache.org/repos/dist/dev/incubator/hamilton/apache-hamilton/1.90.0-RC0
>> > >
>> > >
>> > > The Git tag to be voted upon is:
>> apache-hamilton-v1.90.0-incubating-RC0
>> > >
>> > >
>> > > The release hash is: bed5a272904bd7d68bc03167978f663e1906738c
>> > >
>> > > But the functional release is from this commit from main:
>> > > e84ed90b4428d777449b9bfc413ed86ee41a77c9
>> > >
>> > > Release artifacts are signed with the following key:
>> > >
>> > > FE668E857E89A11C5E5C000CA8D3D15600545C61
>> > >
>> > > The KEYS file is available at:
>> > > https://downloads.apache.org/incubator/hamilton/KEYS
>> > >
>> > > Please download, verify, and test the release candidate. You can find
>> the
>> > > instructions to do so here
>> > > <
>> >
>> https://github.com/apache/hamilton/tree/main/scripts#for-voters-verifying-a-release
>> >
>> > (and
>> > > if you're having issues following them please reply and I'll help).
>> > >
>> > > The vote will run for a minimum of 72 hours, likely much longer due to
>> > the
>> > > holiday.
>> > >
>> > > Please vote:
>> > >
>> > > [ ] +1 Release this package as Apache Hamilton apache-hamilton
>> > > 1.90.0-incubating
>> > > [ ] +0 No opinion
>> > > [ ] -1 Do not release this package because... (Please provide a
>> reason)
>> > >
>> > > Checklist for reference:
>> > >
>> > > [ ] Incubating in name.
>> > > [ ] Download links are valid.
>> > > [ ] Checksums and signatures.
>> > > [ ] LICENSE/NOTICE/DISCLAIMER files exist
>> > > [ ] No unexpected binary files
>> > > [ ] All source files have ASF headers
>> > > [ ] Can compile from source
>> > >
>> > >
>> > > On behalf of the Apache Hamilton PPMC,
>> > >
>> > > Stefan Krawczyk
>> > >
>> >
>>
>

Re: [VOTE] Release Apache Hamilton - apache-hamilton 1.90.0-incubating (release candidate 0)

Posted by Stefan Krawczyk <st...@gmail.com>.
@jernej, do you want to try again? I created this gist that is a script
that walks through the process:
https://gist.github.com/skrawcz/a091951d8da1c9d2eb0b880e1da725bc.

You don't need to use the scripts to validate -- and that's not what we're
voting on. If you use the above script, it should set everything up fresh
if you do it in a fresh repo and have `uv` installed.

On Sat, Apr 11, 2026 at 2:28 AM Jernej Frank <je...@physics.ox.ac.uk>
wrote:

> Hey, I tried following the verification readme and use the scripts:
> https://github.com/apache/hamilton/tree/main/scripts#verification-script
> and could not get a lot of things working out of the box.
>
> -1
>
> Checklist for reference:
>
> [x] Incubating in name.
> [x] Download links are valid.
> The actual link is fine but the readme is wrong
> ```
> svn export
> https://dist.apache.org/repos/dist/dev/incubator/hamilton/${PACKAGE}-${VERSION}-incubating-RC${RC}/
> hamilton-rc${RC}
>
> svn: E170000: URL '
> https://dist.apache.org/repos/dist/dev/incubator/hamilton/apache-hamilton-1.90.0-incubating-RC0'
> doesn't exist
> ```
> [ ] Checksums and signatures.
> I can verify gpg keys but the readme is missing a -src in the name for the
> source.
> ```
> gpg --verify ${PACKAGE}-${VERSION}-incubating.tar.gz.asc
> ${PACKAGE}-${VERSION}-incubating.tar.gz
> gpg: can't open 'apache-hamilton-1.90.0-incubating.tar.gz.asc': No such
> file or directory
> gpg: verify signatures failed: No such file or directory
> ```
>
> The wheel gpg keys worked.
> I could not get sha verification working:
> ```
> shasum -a 512 -c ${PACKAGE}-${VERSION}-incubating.tar.gz.sha512
> shasum: apache-hamilton-1.90.0-incubating.tar.gz.sha512: No such file or
> directory
>
> shasum -a 512 -c ${PACKAGE}-${VERSION}-incubating-src.tar.gz.sha512
> shasum: apache-hamilton-1.90.0-incubating-src.tar.gz.sha512: no properly
> formatted SHA checksum lines found
>
> shasum -a 512 -c ${WHEEL_NAME}.sha512
> shasum: apache_hamilton-1.90.0-py3-none-any.whl.sha512: no properly
> formatted SHA checksum lines found
> ```
>
> Similarly,  in case of using the script at the end:
> ```
> # Run from the extracted source directory
> (${PACKAGE}-${VERSION}-incubating/)
> # Verify GPG signatures and SHA512 checksums
> uv run python scripts/verify_apache_artifacts.py signatures
>
> ================================================================================
>   Verifying Signatures and Checksums
>
> ================================================================================
>
> Found 2 artifact(s) to verify:
>
> Verifying: apache_hamilton-1.90.0.tar.gz
>
> --------------------------------------------------------------------------------
>   ✓ Artifact exists: apache_hamilton-1.90.0.tar.gz (3,655,569 bytes)
>   Verifying GPG signature: apache_hamilton-1.90.0.tar.gz.asc
>     ✗ Signature file not found
>   Verifying SHA512 checksum: apache_hamilton-1.90.0.tar.gz.sha512
>     ✗ Checksum file not found
>   Checking archive readability: apache_hamilton-1.90.0.tar.gz
>     ✓ Archive is readable and contains 706 files
>
> Verifying: apache_hamilton-1.90.0-py3-none-any.whl
>
> --------------------------------------------------------------------------------
>   ✓ Artifact exists: apache_hamilton-1.90.0-py3-none-any.whl (475,199
> bytes)
>   Verifying GPG signature: apache_hamilton-1.90.0-py3-none-any.whl.asc
>     ✗ Signature file not found
>   Verifying SHA512 checksum: apache_hamilton-1.90.0-py3-none-any.whl.sha512
>     ✗ Checksum file not found
>   Checking wheel readability: apache_hamilton-1.90.0-py3-none-any.whl
>     ✓ Wheel is readable and contains 151 files
>
>
> ❌ Verification failed.
> ```
> [ ] LICENSE/NOTICE/DISCLAIMER files exist
> See above and below, there's some files in the examples that don't have
> licenceses but are part of the source package.
> [x] No unexpected binary files
> [ ] All source files have ASF headers
> I ran the provided script, but rat-excludes seems not to be found. Some of
> these files admit comments so they could have licence headers
> ```
> # Verify license headers (requires Apache RAT)
> uv run python scripts/verify_apache_artifacts.py licenses --rat-jar
> apache-rat-0.15.jar
> Running Apache RAT on: apache_hamilton-1.90.0.tar.gz
>
> --------------------------------------------------------------------------------
>   Extracting archive...
>     ✓ Extracted to temp directory
>     ⚠️  Warning: .rat-excludes not found, running without excludes
>   Running Apache RAT (XML format for parsing)...
>     ✓ RAT XML report: dist/rat-report-apache_hamilton-1-90-0.xml
>   Running Apache RAT (text format for review)...
>     ✓ RAT text report: dist/rat-report-apache_hamilton-1-90-0.txt
>   Parsing RAT report...
>     ✓ Scanned 706 files
>     ✓ Found 33 files with license issues
>
>   ⚠️  License Issues Found:
>
>     Unapproved Licenses (33 files):
>       -
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/Absenteeism_at_work.csv
>       -
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-dask.txt
>       -
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-ray.txt
>       -
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-spark.txt
>       -
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements.txt
>       -
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/hello_world/requirements.txt
>       -
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/pandas/materialization/requirements.txt
>       -
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/requirements.txt
>       -
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/valid_configs.jsonl
>       -
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/hamilton/experimental/databackend.py
>       ... and 23 more
>
>     📄 Reports saved:
>        - dist/rat-report-apache_hamilton-1-90-0.xml (structured)
>        - dist/rat-report-apache_hamilton-1-90-0.txt (human-readable)
>
>   ❌ License check failed!
>
> ❌ Verification failed.
> ```
> [x] Can compile from source
>
>   *
> the tar extracts into `apache_hamilton-1.90.0` so `cd
> ${PACKAGE}-${VERSION}-incubating/` doesn't work.
>   *
> `uv venv --python 3.11 --clean` doesn't work: `error: unexpected argument
> '--clean' found`
>   *
> flit worked and could install wheel
>   *
> cannot install test dependencies: `error: Distribution `lancedb==0.30.2 @
> registry+https://pypi.org/simple` <https://pypi.org/simple> can't be
> installed because it doesn't have a source distribution or wheel for the
> current platform` — seems like uv cannot resolve lance db. I am on `hint:
> You're on macOS (`macosx_15_0_x86_64`), but `lancedb` (v0.30.2)`
>   *
> hello_world runs -ish: only constructing the dag at the end fais if you
> don't have graphviz: `ERROR:hamilton.graph: graphviz is required for
> visualizing the function graph. Install it with: pip install
> "sf-hamilton[visualization]" or pip install graphviz`
>
>
> Complete verification output:
> ```
> # Verify everything
> uv run python scripts/verify_apache_artifacts.py all --rat-jar
> apache-rat-0.15.jar
>
> # Inspect artifact contents
> uv run python scripts/verify_apache_artifacts.py list-contents
> dist/apache-hamilton-1.90.0-incubating.tar.gz
> uv run python scripts/verify_apache_artifacts.py list-contents
> dist/apache_hamilton-1.90.0-py3-none-any.whl
>
> # Validate wheel metadata
> uv run python scripts/verify_apache_artifacts.py twine-check
>
>
> ================================================================================
>   Complete Apache Artifacts Verification
>
> ================================================================================
>
>
> [1/2] Verifying signatures and checksums...
>
>
> ================================================================================
>   Verifying Signatures and Checksums
>
> ================================================================================
>
> Found 4 artifact(s) to verify:
>
> Verifying: rat-report-apache_hamilton-1-90-0.xml
>
> --------------------------------------------------------------------------------
>   ✓ Artifact exists: rat-report-apache_hamilton-1-90-0.xml (236,467 bytes)
>   Verifying GPG signature: rat-report-apache_hamilton-1-90-0.xml.asc
>     ✗ Signature file not found
>   Verifying SHA512 checksum: rat-report-apache_hamilton-1-90-0.xml.sha512
>     ✗ Checksum file not found
>
> Verifying: apache_hamilton-1.90.0.tar.gz
>
> --------------------------------------------------------------------------------
>   ✓ Artifact exists: apache_hamilton-1.90.0.tar.gz (3,655,569 bytes)
>   Verifying GPG signature: apache_hamilton-1.90.0.tar.gz.asc
>     ✗ Signature file not found
>   Verifying SHA512 checksum: apache_hamilton-1.90.0.tar.gz.sha512
>     ✗ Checksum file not found
>   Checking archive readability: apache_hamilton-1.90.0.tar.gz
>     ✓ Archive is readable and contains 706 files
>
> Verifying: rat-report-apache_hamilton-1-90-0.txt
>
> --------------------------------------------------------------------------------
>   ✓ Artifact exists: rat-report-apache_hamilton-1-90-0.txt (128,073 bytes)
>   Verifying GPG signature: rat-report-apache_hamilton-1-90-0.txt.asc
>     ✗ Signature file not found
>   Verifying SHA512 checksum: rat-report-apache_hamilton-1-90-0.txt.sha512
>     ✗ Checksum file not found
>
> Verifying: apache_hamilton-1.90.0-py3-none-any.whl
>
> --------------------------------------------------------------------------------
>   ✓ Artifact exists: apache_hamilton-1.90.0-py3-none-any.whl (475,199
> bytes)
>   Verifying GPG signature: apache_hamilton-1.90.0-py3-none-any.whl.asc
>     ✗ Signature file not found
>   Verifying SHA512 checksum: apache_hamilton-1.90.0-py3-none-any.whl.sha512
>     ✗ Checksum file not found
>   Checking wheel readability: apache_hamilton-1.90.0-py3-none-any.whl
>     ✓ Wheel is readable and contains 151 files
>
>
> [2/2] Verifying licenses with Apache RAT...
>
>
> ================================================================================
>   Verifying Licenses with Apache RAT
>
> ================================================================================
>
> Found 1 tar.gz artifact(s) to check:
>
>
> Running Apache RAT on: apache_hamilton-1.90.0.tar.gz
>
> --------------------------------------------------------------------------------
>   Extracting archive...
>     ✓ Extracted to temp directory
>     ⚠️  Warning: .rat-excludes not found, running without excludes
>   Running Apache RAT (XML format for parsing)...
>     ✓ RAT XML report: dist/rat-report-apache_hamilton-1-90-0.xml
>   Running Apache RAT (text format for review)...
>     ✓ RAT text report: dist/rat-report-apache_hamilton-1-90-0.txt
>   Parsing RAT report...
>     ✓ Scanned 706 files
>     ✓ Found 33 files with license issues
>
>   ⚠️  License Issues Found:
>
>     Unapproved Licenses (33 files):
>       -
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/Absenteeism_at_work.csv
>       -
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-dask.txt
>       -
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-ray.txt
>       -
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-spark.txt
>       -
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements.txt
>       -
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/hello_world/requirements.txt
>       -
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/pandas/materialization/requirements.txt
>       -
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/requirements.txt
>       -
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/valid_configs.jsonl
>       -
> /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/hamilton/experimental/databackend.py
>       ... and 23 more
>
>     📄 Reports saved:
>        - dist/rat-report-apache_hamilton-1-90-0.xml (structured)
>        - dist/rat-report-apache_hamilton-1-90-0.txt (human-readable)
>
>   ❌ License check failed!
>
>
> ================================================================================
>   Verification Summary
>
> ================================================================================
>
> Results:
>   Signatures & Checksums: ❌ FAIL
>   License Compliance:     ❌ FAIL
>
> ❌ Verification failed.
>
>
> ================================================================================
>   Listing Artifact Contents
>
> ================================================================================
>
>
> ❌ Artifact not found: dist/apache-hamilton-1.90.0-incubating.tar.gz
>
>
> ================================================================================
>   Listing Artifact Contents
>
> ================================================================================
>
>
> Contents of: apache_hamilton-1.90.0-py3-none-any.whl
>
> ================================================================================
> Total files: 151
>
> Top-level structure:
>   apache_hamilton-1.90.0.dist-info                   (7 files)
>   hamilton                                           (144 files)
>
> Files:
>
>   apache_hamilton-1.90.0.dist-info/METADATA
>     22,665
>   apache_hamilton-1.90.0.dist-info/RECORD
>     13,565
>   apache_hamilton-1.90.0.dist-info/WHEEL
>          82
>   apache_hamilton-1.90.0.dist-info/entry_points.txt
>        421
>   apache_hamilton-1.90.0.dist-info/licenses/DISCLAIMER
>         554
>   apache_hamilton-1.90.0.dist-info/licenses/LICENSE
>     12,602
>   apache_hamilton-1.90.0.dist-info/licenses/NOTICE
>         182
>   hamilton/__init__.py
>       1,086
>   hamilton/ad_hoc_utils.py
>       5,677
>   hamilton/async_driver.py
>      19,548
>   hamilton/base.py
>      19,860
>   hamilton/caching/__init__.py
>         785
>   hamilton/caching/adapter.py
>     61,482
>   hamilton/caching/cache_key.py
>      2,497
>   hamilton/caching/fingerprinting.py
>       9,986
>   hamilton/caching/stores/__init__.py
>        785
>   hamilton/caching/stores/base.py
>      8,529
>   hamilton/caching/stores/file.py
>      5,229
>   hamilton/caching/stores/memory.py
>     11,159
>   hamilton/caching/stores/sqlite.py
>      9,965
>   hamilton/caching/stores/utils.py
>       1,370
>   hamilton/cli/__init__.py
>         785
>   hamilton/cli/__main__.py
>       9,202
>   hamilton/cli/commands.py
>       4,446
>   hamilton/cli/logic.py
>     10,338
>   hamilton/common/__init__.py
>      3,075
>   hamilton/contrib/__init__.py
>       1,644
>   hamilton/data_quality/__init__.py
>        785
>   hamilton/data_quality/base.py
>      6,890
>   hamilton/data_quality/default_validators.py
>     21,184
>   hamilton/data_quality/pandera_validators.py
>      4,493
>   hamilton/dataflows/__init__.py
>      27,999
>   hamilton/dataflows/template/README.md
>        958
>   hamilton/dataflows/template/__init__.py
>      1,721
>   hamilton/dataflows/template/author.md
>        940
>   hamilton/dataflows/template/requirements.txt
>           0
>   hamilton/dataflows/template/tags.json
>         98
>   hamilton/dataflows/template/valid_configs.jsonl
>          3
>   hamilton/dev_utils/__init__.py
>         785
>   hamilton/dev_utils/deprecation.py
>      7,774
>   hamilton/driver.py
>      95,686
>   hamilton/execution/__init__.py
>         785
>   hamilton/execution/debugging_utils.py
>      2,041
>   hamilton/execution/executors.py
>     18,833
>   hamilton/execution/graph_functions.py
>     16,527
>   hamilton/execution/grouping.py
>      17,480
>   hamilton/execution/state.py
>     23,957
>   hamilton/experimental/__init__.py
>      1,100
>   hamilton/experimental/databackend.py
>       1,397
>   hamilton/experimental/decorators/__init__.py
>         785
>   hamilton/experimental/decorators/parameterize_frame.py
>       8,684
>   hamilton/experimental/h_async.py
>       1,057
>   hamilton/experimental/h_cache.py
>      15,259
>   hamilton/experimental/h_dask.py
>      1,166
>   hamilton/experimental/h_databackends.py
>      5,075
>   hamilton/experimental/h_ray.py
>       1,124
>   hamilton/experimental/h_spark.py
>       1,223
>   hamilton/function_modifiers/README
>       2,672
>   hamilton/function_modifiers/__init__.py
>      3,812
>   hamilton/function_modifiers/adapters.py
>     38,908
>   hamilton/function_modifiers/base.py
>     33,403
>   hamilton/function_modifiers/configuration.py
>      13,422
>   hamilton/function_modifiers/delayed.py
>       9,448
>   hamilton/function_modifiers/dependencies.py
>     10,014
>   hamilton/function_modifiers/expanders.py
>      56,117
>   hamilton/function_modifiers/macros.py
>     73,755
>   hamilton/function_modifiers/metadata.py
>     17,253
>   hamilton/function_modifiers/recursive.py
>      40,426
>   hamilton/function_modifiers/validation.py
>     12,484
>   hamilton/function_modifiers_base.py
>      1,462
>   hamilton/graph.py
>     50,459
>   hamilton/graph_types.py
>     10,478
>   hamilton/graph_utils.py
>      1,656
>   hamilton/htypes.py
>      17,746
>   hamilton/io/__init__.py
>      1,183
>   hamilton/io/data_adapters.py
>       7,987
>   hamilton/io/default_data_loaders.py
>      5,617
>   hamilton/io/materialization.py
>      21,578
>   hamilton/io/utils.py
>       5,073
>   hamilton/lifecycle/__init__.py
>       2,053
>   hamilton/lifecycle/api.py
>     31,981
>   hamilton/lifecycle/base.py
>      44,599
>   hamilton/lifecycle/default.py
>     32,890
>   hamilton/log_setup.py
>      1,714
>   hamilton/models.py
>       3,265
>   hamilton/node.py
>      17,153
>   hamilton/plugins/README.md
>       2,659
>   hamilton/plugins/__init__.py
>         785
>   hamilton/plugins/dask_extensions.py
>      1,518
>   hamilton/plugins/dlt_extensions.py
>       5,585
>   hamilton/plugins/geopandas_extensions.py
>       1,572
>   hamilton/plugins/h_dask.py
>      15,566
>   hamilton/plugins/h_ddog.py
>      22,392
>   hamilton/plugins/h_diskcache.py
>      6,683
>   hamilton/plugins/h_experiments/__init__.py
>         892
>   hamilton/plugins/h_experiments/__main__.py
>       2,181
>   hamilton/plugins/h_experiments/cache.py
>      1,395
>   hamilton/plugins/h_experiments/data_model.py
>       2,180
>   hamilton/plugins/h_experiments/hook.py
>       7,240
>   hamilton/plugins/h_experiments/server.py
>      12,493
>   hamilton/plugins/h_kedro.py
>      5,583
>   hamilton/plugins/h_logging.py
>     15,225
>   hamilton/plugins/h_mcp/__init__.py
>       1,068
>   hamilton/plugins/h_mcp/__main__.py
>       1,137
>   hamilton/plugins/h_mcp/_helpers.py
>       4,152
>   hamilton/plugins/h_mcp/_templates.py
>      13,528
>   hamilton/plugins/h_mcp/server.py
>      12,392
>   hamilton/plugins/h_mlflow.py
>      14,442
>   hamilton/plugins/h_narwhals.py
>       4,677
>   hamilton/plugins/h_openlineage.py
>     13,129
>   hamilton/plugins/h_opentelemetry.py
>      5,928
>   hamilton/plugins/h_pandas.py
>      10,633
>   hamilton/plugins/h_pandera.py
>      4,952
>   hamilton/plugins/h_polars.py
>      12,507
>   hamilton/plugins/h_polars_lazyframe.py
>      11,561
>   hamilton/plugins/h_pyarrow.py
>      2,177
>   hamilton/plugins/h_pydantic.py
>       4,962
>   hamilton/plugins/h_ray.py
>      9,130
>   hamilton/plugins/h_rich.py
>       5,181
>   hamilton/plugins/h_schema.py
>      18,307
>   hamilton/plugins/h_slack.py
>      3,634
>   hamilton/plugins/h_spark.py
>     63,268
>   hamilton/plugins/h_threadpool.py
>       5,036
>   hamilton/plugins/h_tqdm.py
>       4,665
>   hamilton/plugins/h_vaex.py
>       5,034
>   hamilton/plugins/huggingface_extensions.py
>       7,839
>   hamilton/plugins/ibis_extensions.py
>      2,970
>   hamilton/plugins/jupyter_magic.py
>     24,929
>   hamilton/plugins/kedro_extensions.py
>       3,267
>   hamilton/plugins/lightgbm_extensions.py
>      2,961
>   hamilton/plugins/matplotlib_extensions.py
>      3,738
>   hamilton/plugins/mlflow_extensions.py
>      8,856
>   hamilton/plugins/numpy_extensions.py
>       3,221
>   hamilton/plugins/pandas_extensions.py
>     66,288
>   hamilton/plugins/plotly_extensions.py
>      5,010
>   hamilton/plugins/polars_extensions.py
>      2,345
>   hamilton/plugins/polars_implementations.py
>       1,028
>   hamilton/plugins/polars_lazyframe_extensions.py
>     10,889
>   hamilton/plugins/polars_post_1_0_0_extensions.py
>      30,733
>   hamilton/plugins/polars_pre_1_0_0_extension.py
>      29,649
>   hamilton/plugins/pydantic_extensions.py
>      3,840
>   hamilton/plugins/pyspark_pandas_extensions.py
>      1,551
>   hamilton/plugins/sklearn_plot_extensions.py
>      4,326
>   hamilton/plugins/spark_extensions.py
>       3,236
>   hamilton/plugins/vaex_extensions.py
>      1,673
>   hamilton/plugins/xgboost_extensions.py
>       2,762
>   hamilton/plugins/yaml_extensions.py
>      2,554
>   hamilton/registry.py
>       8,588
>   hamilton/settings.py
>         845
>   hamilton/telemetry.py
>      1,772
>   hamilton/version.py
>        807
>
>
> ================================================================================
>   Verifying Wheel Metadata with Twine
>
> ================================================================================
>
>
> Checking apache_hamilton-1.90.0-py3-none-any.whl...
>   ✓ apache_hamilton-1.90.0-py3-none-any.whl metadata is valid
>
> ✅ All wheels passed twine validation
>
> ✅ Verification completed successfully!
> ```
>
> Maybe for some of the things it is just me doing something stupid (but not
> sure what since I copy-paste the readme commands and just fix the file
> names).
>
> Best,
> Jernej
>
> ________________________________
> From: Elijah ben Izzy <el...@alumni.brown.edu>
> Sent: 07 April 2026 05:37
> To: dev@hamilton.apache.org <de...@hamilton.apache.org>
> Subject: Re: [VOTE] Release Apache Hamilton - apache-hamilton
> 1.90.0-incubating (release candidate 0)
>
> Nice work. Checks performed:
>   [x] Verified GPG signature (Good signature, key
> FE668E857E89A11C5E5C000CA8D3D15600545C61)
>   [x] Verified SHA-512 checksums
>   [x] "incubating" in source tarball filename
>   [x] LICENSE, NOTICE, DISCLAIMER present and correct
>   [x] ASF license headers present in source files
>   [x] No unexpected binary files
>   [x] Built and installed from source (Python 3.13)
>   [x] Ran hello_world example successfully
>
> + 1 (binding)
>
> On Fri, Apr 3, 2026 at 10:31 PM Stefan Krawczyk <stefan.krawczyk@gmail.com
> >
> wrote:
>
> > Oh I forgot to link to it, but to hopefully make it faster to verify
> > the verification
> > script
> > <
> >
> https://github.com/apache/hamilton/blob/main/scripts/verify_apache_artifacts.py
> > >
> > should help (see these instructions
> > <
> https://github.com/apache/hamilton/tree/main/scripts#verification-script
> > >).
> >
> > Otherwise I have noticed the README instructions for verification have
> some
> > incorrect paths -- please adjust for that and you should be able to
> follow
> > the instructions.
> >
> > On Fri, Apr 3, 2026 at 10:20 PM Stefan Krawczyk <
> stefan.krawczyk@gmail.com
> > >
> > wrote:
> >
> > > Hi all,
> > >
> > > This is a call for a vote on releasing Apache Hamilton apache-hamilton
> > > 1.90.0-incubating, release candidate 0.
> > >
> > > This release includes the following changes (see CHANGELOG for
> details):
> > >
> > > Features:
> > >> - While loop DFS implementation (#1483)
> > >> - Async data validator support
> > >> - Add `unpack_fields` annotation for unpacking structured fields
> (#1305)
> > >> - Expose DAG validation as LLM tools via MCP (#1490)
> > >> - Add NDJSON support in polars (#1431)
> > >> - Enhance visualization with display_name tag support
> > >
> > >
> > > Bug fixes:
> > >> - Fix `@resolve` decorator not calling `validate()` on returned
> > >> decorators (#1524)
> > >> - Fix is_submodule substring match causing spurious DAG nodes (#1485)
> > >> - Fix pandas 2.2+ compatibility in pandas_extensions.py
> > >> - Fix spark failures on Python 3.14
> > >> - Fix local (Windows) tests (#1302)
> > >> - Fix typer version requirement for click 8.3 help compatibility
> > >
> > >
> > > Performance:
> > >> - Use deque for BFS queue in graph traversal (#1494)
> > >
> > >
> > > Platform changes:
> > >> - Drop Python 3.8 and 3.9 support
> > >> - Add Python 3.13 and 3.14 support
> > >> - Remove usage telemetry (PostHog) (#1512)
> > >> - Remove RayWorkflows (#1359)
> > >> - Update `dlt` plugin with changes to `loader_file_format`
> > >> - Package renamed from sf-hamilton to apache-hamilton
> > >
> > >
> > >
> > > The artifacts for this release candidate can be found at:
> > >
> > >
> >
> https://dist.apache.org/repos/dist/dev/incubator/hamilton/apache-hamilton/1.90.0-RC0
> > >
> > >
> > > The Git tag to be voted upon is: apache-hamilton-v1.90.0-incubating-RC0
> > >
> > >
> > > The release hash is: bed5a272904bd7d68bc03167978f663e1906738c
> > >
> > > But the functional release is from this commit from main:
> > > e84ed90b4428d777449b9bfc413ed86ee41a77c9
> > >
> > > Release artifacts are signed with the following key:
> > >
> > > FE668E857E89A11C5E5C000CA8D3D15600545C61
> > >
> > > The KEYS file is available at:
> > > https://downloads.apache.org/incubator/hamilton/KEYS
> > >
> > > Please download, verify, and test the release candidate. You can find
> the
> > > instructions to do so here
> > > <
> >
> https://github.com/apache/hamilton/tree/main/scripts#for-voters-verifying-a-release
> >
> > (and
> > > if you're having issues following them please reply and I'll help).
> > >
> > > The vote will run for a minimum of 72 hours, likely much longer due to
> > the
> > > holiday.
> > >
> > > Please vote:
> > >
> > > [ ] +1 Release this package as Apache Hamilton apache-hamilton
> > > 1.90.0-incubating
> > > [ ] +0 No opinion
> > > [ ] -1 Do not release this package because... (Please provide a reason)
> > >
> > > Checklist for reference:
> > >
> > > [ ] Incubating in name.
> > > [ ] Download links are valid.
> > > [ ] Checksums and signatures.
> > > [ ] LICENSE/NOTICE/DISCLAIMER files exist
> > > [ ] No unexpected binary files
> > > [ ] All source files have ASF headers
> > > [ ] Can compile from source
> > >
> > >
> > > On behalf of the Apache Hamilton PPMC,
> > >
> > > Stefan Krawczyk
> > >
> >
>

Re: [VOTE] Release Apache Hamilton - apache-hamilton 1.90.0-incubating (release candidate 0)

Posted by Jernej Frank <je...@physics.ox.ac.uk>.
Hey, I tried following the verification readme and use the scripts: https://github.com/apache/hamilton/tree/main/scripts#verification-script and could not get a lot of things working out of the box.

-1

Checklist for reference:

[x] Incubating in name.
[x] Download links are valid.
The actual link is fine but the readme is wrong
```
svn export https://dist.apache.org/repos/dist/dev/incubator/hamilton/${PACKAGE}-${VERSION}-incubating-RC${RC}/ hamilton-rc${RC}

svn: E170000: URL 'https://dist.apache.org/repos/dist/dev/incubator/hamilton/apache-hamilton-1.90.0-incubating-RC0' doesn't exist
```
[ ] Checksums and signatures.
I can verify gpg keys but the readme is missing a -src in the name for the source.
```
gpg --verify ${PACKAGE}-${VERSION}-incubating.tar.gz.asc ${PACKAGE}-${VERSION}-incubating.tar.gz
gpg: can't open 'apache-hamilton-1.90.0-incubating.tar.gz.asc': No such file or directory
gpg: verify signatures failed: No such file or directory
```

The wheel gpg keys worked.
I could not get sha verification working:
```
shasum -a 512 -c ${PACKAGE}-${VERSION}-incubating.tar.gz.sha512
shasum: apache-hamilton-1.90.0-incubating.tar.gz.sha512: No such file or directory

shasum -a 512 -c ${PACKAGE}-${VERSION}-incubating-src.tar.gz.sha512
shasum: apache-hamilton-1.90.0-incubating-src.tar.gz.sha512: no properly formatted SHA checksum lines found

shasum -a 512 -c ${WHEEL_NAME}.sha512
shasum: apache_hamilton-1.90.0-py3-none-any.whl.sha512: no properly formatted SHA checksum lines found
```

Similarly,  in case of using the script at the end:
```
# Run from the extracted source directory (${PACKAGE}-${VERSION}-incubating/)
# Verify GPG signatures and SHA512 checksums
uv run python scripts/verify_apache_artifacts.py signatures
================================================================================
  Verifying Signatures and Checksums
================================================================================

Found 2 artifact(s) to verify:

Verifying: apache_hamilton-1.90.0.tar.gz
--------------------------------------------------------------------------------
  ✓ Artifact exists: apache_hamilton-1.90.0.tar.gz (3,655,569 bytes)
  Verifying GPG signature: apache_hamilton-1.90.0.tar.gz.asc
    ✗ Signature file not found
  Verifying SHA512 checksum: apache_hamilton-1.90.0.tar.gz.sha512
    ✗ Checksum file not found
  Checking archive readability: apache_hamilton-1.90.0.tar.gz
    ✓ Archive is readable and contains 706 files

Verifying: apache_hamilton-1.90.0-py3-none-any.whl
--------------------------------------------------------------------------------
  ✓ Artifact exists: apache_hamilton-1.90.0-py3-none-any.whl (475,199 bytes)
  Verifying GPG signature: apache_hamilton-1.90.0-py3-none-any.whl.asc
    ✗ Signature file not found
  Verifying SHA512 checksum: apache_hamilton-1.90.0-py3-none-any.whl.sha512
    ✗ Checksum file not found
  Checking wheel readability: apache_hamilton-1.90.0-py3-none-any.whl
    ✓ Wheel is readable and contains 151 files


❌ Verification failed.
```
[ ] LICENSE/NOTICE/DISCLAIMER files exist
See above and below, there's some files in the examples that don't have licenceses but are part of the source package.
[x] No unexpected binary files
[ ] All source files have ASF headers
I ran the provided script, but rat-excludes seems not to be found. Some of these files admit comments so they could have licence headers
```
# Verify license headers (requires Apache RAT)
uv run python scripts/verify_apache_artifacts.py licenses --rat-jar apache-rat-0.15.jar
Running Apache RAT on: apache_hamilton-1.90.0.tar.gz
--------------------------------------------------------------------------------
  Extracting archive...
    ✓ Extracted to temp directory
    ⚠️  Warning: .rat-excludes not found, running without excludes
  Running Apache RAT (XML format for parsing)...
    ✓ RAT XML report: dist/rat-report-apache_hamilton-1-90-0.xml
  Running Apache RAT (text format for review)...
    ✓ RAT text report: dist/rat-report-apache_hamilton-1-90-0.txt
  Parsing RAT report...
    ✓ Scanned 706 files
    ✓ Found 33 files with license issues

  ⚠️  License Issues Found:

    Unapproved Licenses (33 files):
      - /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/Absenteeism_at_work.csv
      - /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-dask.txt
      - /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-ray.txt
      - /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-spark.txt
      - /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements.txt
      - /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/hello_world/requirements.txt
      - /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/examples/pandas/materialization/requirements.txt
      - /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/requirements.txt
      - /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/valid_configs.jsonl
      - /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmpeajq4ddw/extracted/apache_hamilton-1.90.0/hamilton/experimental/databackend.py
      ... and 23 more

    📄 Reports saved:
       - dist/rat-report-apache_hamilton-1-90-0.xml (structured)
       - dist/rat-report-apache_hamilton-1-90-0.txt (human-readable)

  ❌ License check failed!

❌ Verification failed.
```
[x] Can compile from source

  *
the tar extracts into `apache_hamilton-1.90.0` so `cd ${PACKAGE}-${VERSION}-incubating/` doesn't work.
  *
`uv venv --python 3.11 --clean` doesn't work: `error: unexpected argument '--clean' found`
  *
flit worked and could install wheel
  *
cannot install test dependencies: `error: Distribution `lancedb==0.30.2 @ registry+https://pypi.org/simple` can't be installed because it doesn't have a source distribution or wheel for the current platform` — seems like uv cannot resolve lance db. I am on `hint: You're on macOS (`macosx_15_0_x86_64`), but `lancedb` (v0.30.2)`
  *
hello_world runs -ish: only constructing the dag at the end fais if you don't have graphviz: `ERROR:hamilton.graph: graphviz is required for visualizing the function graph. Install it with: pip install "sf-hamilton[visualization]" or pip install graphviz`


Complete verification output:
```
# Verify everything
uv run python scripts/verify_apache_artifacts.py all --rat-jar apache-rat-0.15.jar

# Inspect artifact contents
uv run python scripts/verify_apache_artifacts.py list-contents dist/apache-hamilton-1.90.0-incubating.tar.gz
uv run python scripts/verify_apache_artifacts.py list-contents dist/apache_hamilton-1.90.0-py3-none-any.whl

# Validate wheel metadata
uv run python scripts/verify_apache_artifacts.py twine-check

================================================================================
  Complete Apache Artifacts Verification
================================================================================


[1/2] Verifying signatures and checksums...

================================================================================
  Verifying Signatures and Checksums
================================================================================

Found 4 artifact(s) to verify:

Verifying: rat-report-apache_hamilton-1-90-0.xml
--------------------------------------------------------------------------------
  ✓ Artifact exists: rat-report-apache_hamilton-1-90-0.xml (236,467 bytes)
  Verifying GPG signature: rat-report-apache_hamilton-1-90-0.xml.asc
    ✗ Signature file not found
  Verifying SHA512 checksum: rat-report-apache_hamilton-1-90-0.xml.sha512
    ✗ Checksum file not found

Verifying: apache_hamilton-1.90.0.tar.gz
--------------------------------------------------------------------------------
  ✓ Artifact exists: apache_hamilton-1.90.0.tar.gz (3,655,569 bytes)
  Verifying GPG signature: apache_hamilton-1.90.0.tar.gz.asc
    ✗ Signature file not found
  Verifying SHA512 checksum: apache_hamilton-1.90.0.tar.gz.sha512
    ✗ Checksum file not found
  Checking archive readability: apache_hamilton-1.90.0.tar.gz
    ✓ Archive is readable and contains 706 files

Verifying: rat-report-apache_hamilton-1-90-0.txt
--------------------------------------------------------------------------------
  ✓ Artifact exists: rat-report-apache_hamilton-1-90-0.txt (128,073 bytes)
  Verifying GPG signature: rat-report-apache_hamilton-1-90-0.txt.asc
    ✗ Signature file not found
  Verifying SHA512 checksum: rat-report-apache_hamilton-1-90-0.txt.sha512
    ✗ Checksum file not found

Verifying: apache_hamilton-1.90.0-py3-none-any.whl
--------------------------------------------------------------------------------
  ✓ Artifact exists: apache_hamilton-1.90.0-py3-none-any.whl (475,199 bytes)
  Verifying GPG signature: apache_hamilton-1.90.0-py3-none-any.whl.asc
    ✗ Signature file not found
  Verifying SHA512 checksum: apache_hamilton-1.90.0-py3-none-any.whl.sha512
    ✗ Checksum file not found
  Checking wheel readability: apache_hamilton-1.90.0-py3-none-any.whl
    ✓ Wheel is readable and contains 151 files


[2/2] Verifying licenses with Apache RAT...

================================================================================
  Verifying Licenses with Apache RAT
================================================================================

Found 1 tar.gz artifact(s) to check:


Running Apache RAT on: apache_hamilton-1.90.0.tar.gz
--------------------------------------------------------------------------------
  Extracting archive...
    ✓ Extracted to temp directory
    ⚠️  Warning: .rat-excludes not found, running without excludes
  Running Apache RAT (XML format for parsing)...
    ✓ RAT XML report: dist/rat-report-apache_hamilton-1-90-0.xml
  Running Apache RAT (text format for review)...
    ✓ RAT text report: dist/rat-report-apache_hamilton-1-90-0.txt
  Parsing RAT report...
    ✓ Scanned 706 files
    ✓ Found 33 files with license issues

  ⚠️  License Issues Found:

    Unapproved Licenses (33 files):
      - /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/Absenteeism_at_work.csv
      - /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-dask.txt
      - /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-ray.txt
      - /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements-spark.txt
      - /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/data_quality/simple/requirements.txt
      - /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/hello_world/requirements.txt
      - /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/examples/pandas/materialization/requirements.txt
      - /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/requirements.txt
      - /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/hamilton/dataflows/template/valid_configs.jsonl
      - /var/folders/_5/qn4m8hy526b4gsrvq_fc20x00000gn/T/tmppdvooszr/extracted/apache_hamilton-1.90.0/hamilton/experimental/databackend.py
      ... and 23 more

    📄 Reports saved:
       - dist/rat-report-apache_hamilton-1-90-0.xml (structured)
       - dist/rat-report-apache_hamilton-1-90-0.txt (human-readable)

  ❌ License check failed!

================================================================================
  Verification Summary
================================================================================

Results:
  Signatures & Checksums: ❌ FAIL
  License Compliance:     ❌ FAIL

❌ Verification failed.

================================================================================
  Listing Artifact Contents
================================================================================


❌ Artifact not found: dist/apache-hamilton-1.90.0-incubating.tar.gz

================================================================================
  Listing Artifact Contents
================================================================================


Contents of: apache_hamilton-1.90.0-py3-none-any.whl
================================================================================
Total files: 151

Top-level structure:
  apache_hamilton-1.90.0.dist-info                   (7 files)
  hamilton                                           (144 files)

Files:

  apache_hamilton-1.90.0.dist-info/METADATA                                    22,665
  apache_hamilton-1.90.0.dist-info/RECORD                                      13,565
  apache_hamilton-1.90.0.dist-info/WHEEL                                           82
  apache_hamilton-1.90.0.dist-info/entry_points.txt                               421
  apache_hamilton-1.90.0.dist-info/licenses/DISCLAIMER                            554
  apache_hamilton-1.90.0.dist-info/licenses/LICENSE                            12,602
  apache_hamilton-1.90.0.dist-info/licenses/NOTICE                                182
  hamilton/__init__.py                                                          1,086
  hamilton/ad_hoc_utils.py                                                      5,677
  hamilton/async_driver.py                                                     19,548
  hamilton/base.py                                                             19,860
  hamilton/caching/__init__.py                                                    785
  hamilton/caching/adapter.py                                                  61,482
  hamilton/caching/cache_key.py                                                 2,497
  hamilton/caching/fingerprinting.py                                            9,986
  hamilton/caching/stores/__init__.py                                             785
  hamilton/caching/stores/base.py                                               8,529
  hamilton/caching/stores/file.py                                               5,229
  hamilton/caching/stores/memory.py                                            11,159
  hamilton/caching/stores/sqlite.py                                             9,965
  hamilton/caching/stores/utils.py                                              1,370
  hamilton/cli/__init__.py                                                        785
  hamilton/cli/__main__.py                                                      9,202
  hamilton/cli/commands.py                                                      4,446
  hamilton/cli/logic.py                                                        10,338
  hamilton/common/__init__.py                                                   3,075
  hamilton/contrib/__init__.py                                                  1,644
  hamilton/data_quality/__init__.py                                               785
  hamilton/data_quality/base.py                                                 6,890
  hamilton/data_quality/default_validators.py                                  21,184
  hamilton/data_quality/pandera_validators.py                                   4,493
  hamilton/dataflows/__init__.py                                               27,999
  hamilton/dataflows/template/README.md                                           958
  hamilton/dataflows/template/__init__.py                                       1,721
  hamilton/dataflows/template/author.md                                           940
  hamilton/dataflows/template/requirements.txt                                      0
  hamilton/dataflows/template/tags.json                                            98
  hamilton/dataflows/template/valid_configs.jsonl                                   3
  hamilton/dev_utils/__init__.py                                                  785
  hamilton/dev_utils/deprecation.py                                             7,774
  hamilton/driver.py                                                           95,686
  hamilton/execution/__init__.py                                                  785
  hamilton/execution/debugging_utils.py                                         2,041
  hamilton/execution/executors.py                                              18,833
  hamilton/execution/graph_functions.py                                        16,527
  hamilton/execution/grouping.py                                               17,480
  hamilton/execution/state.py                                                  23,957
  hamilton/experimental/__init__.py                                             1,100
  hamilton/experimental/databackend.py                                          1,397
  hamilton/experimental/decorators/__init__.py                                    785
  hamilton/experimental/decorators/parameterize_frame.py                        8,684
  hamilton/experimental/h_async.py                                              1,057
  hamilton/experimental/h_cache.py                                             15,259
  hamilton/experimental/h_dask.py                                               1,166
  hamilton/experimental/h_databackends.py                                       5,075
  hamilton/experimental/h_ray.py                                                1,124
  hamilton/experimental/h_spark.py                                              1,223
  hamilton/function_modifiers/README                                            2,672
  hamilton/function_modifiers/__init__.py                                       3,812
  hamilton/function_modifiers/adapters.py                                      38,908
  hamilton/function_modifiers/base.py                                          33,403
  hamilton/function_modifiers/configuration.py                                 13,422
  hamilton/function_modifiers/delayed.py                                        9,448
  hamilton/function_modifiers/dependencies.py                                  10,014
  hamilton/function_modifiers/expanders.py                                     56,117
  hamilton/function_modifiers/macros.py                                        73,755
  hamilton/function_modifiers/metadata.py                                      17,253
  hamilton/function_modifiers/recursive.py                                     40,426
  hamilton/function_modifiers/validation.py                                    12,484
  hamilton/function_modifiers_base.py                                           1,462
  hamilton/graph.py                                                            50,459
  hamilton/graph_types.py                                                      10,478
  hamilton/graph_utils.py                                                       1,656
  hamilton/htypes.py                                                           17,746
  hamilton/io/__init__.py                                                       1,183
  hamilton/io/data_adapters.py                                                  7,987
  hamilton/io/default_data_loaders.py                                           5,617
  hamilton/io/materialization.py                                               21,578
  hamilton/io/utils.py                                                          5,073
  hamilton/lifecycle/__init__.py                                                2,053
  hamilton/lifecycle/api.py                                                    31,981
  hamilton/lifecycle/base.py                                                   44,599
  hamilton/lifecycle/default.py                                                32,890
  hamilton/log_setup.py                                                         1,714
  hamilton/models.py                                                            3,265
  hamilton/node.py                                                             17,153
  hamilton/plugins/README.md                                                    2,659
  hamilton/plugins/__init__.py                                                    785
  hamilton/plugins/dask_extensions.py                                           1,518
  hamilton/plugins/dlt_extensions.py                                            5,585
  hamilton/plugins/geopandas_extensions.py                                      1,572
  hamilton/plugins/h_dask.py                                                   15,566
  hamilton/plugins/h_ddog.py                                                   22,392
  hamilton/plugins/h_diskcache.py                                               6,683
  hamilton/plugins/h_experiments/__init__.py                                      892
  hamilton/plugins/h_experiments/__main__.py                                    2,181
  hamilton/plugins/h_experiments/cache.py                                       1,395
  hamilton/plugins/h_experiments/data_model.py                                  2,180
  hamilton/plugins/h_experiments/hook.py                                        7,240
  hamilton/plugins/h_experiments/server.py                                     12,493
  hamilton/plugins/h_kedro.py                                                   5,583
  hamilton/plugins/h_logging.py                                                15,225
  hamilton/plugins/h_mcp/__init__.py                                            1,068
  hamilton/plugins/h_mcp/__main__.py                                            1,137
  hamilton/plugins/h_mcp/_helpers.py                                            4,152
  hamilton/plugins/h_mcp/_templates.py                                         13,528
  hamilton/plugins/h_mcp/server.py                                             12,392
  hamilton/plugins/h_mlflow.py                                                 14,442
  hamilton/plugins/h_narwhals.py                                                4,677
  hamilton/plugins/h_openlineage.py                                            13,129
  hamilton/plugins/h_opentelemetry.py                                           5,928
  hamilton/plugins/h_pandas.py                                                 10,633
  hamilton/plugins/h_pandera.py                                                 4,952
  hamilton/plugins/h_polars.py                                                 12,507
  hamilton/plugins/h_polars_lazyframe.py                                       11,561
  hamilton/plugins/h_pyarrow.py                                                 2,177
  hamilton/plugins/h_pydantic.py                                                4,962
  hamilton/plugins/h_ray.py                                                     9,130
  hamilton/plugins/h_rich.py                                                    5,181
  hamilton/plugins/h_schema.py                                                 18,307
  hamilton/plugins/h_slack.py                                                   3,634
  hamilton/plugins/h_spark.py                                                  63,268
  hamilton/plugins/h_threadpool.py                                              5,036
  hamilton/plugins/h_tqdm.py                                                    4,665
  hamilton/plugins/h_vaex.py                                                    5,034
  hamilton/plugins/huggingface_extensions.py                                    7,839
  hamilton/plugins/ibis_extensions.py                                           2,970
  hamilton/plugins/jupyter_magic.py                                            24,929
  hamilton/plugins/kedro_extensions.py                                          3,267
  hamilton/plugins/lightgbm_extensions.py                                       2,961
  hamilton/plugins/matplotlib_extensions.py                                     3,738
  hamilton/plugins/mlflow_extensions.py                                         8,856
  hamilton/plugins/numpy_extensions.py                                          3,221
  hamilton/plugins/pandas_extensions.py                                        66,288
  hamilton/plugins/plotly_extensions.py                                         5,010
  hamilton/plugins/polars_extensions.py                                         2,345
  hamilton/plugins/polars_implementations.py                                    1,028
  hamilton/plugins/polars_lazyframe_extensions.py                              10,889
  hamilton/plugins/polars_post_1_0_0_extensions.py                             30,733
  hamilton/plugins/polars_pre_1_0_0_extension.py                               29,649
  hamilton/plugins/pydantic_extensions.py                                       3,840
  hamilton/plugins/pyspark_pandas_extensions.py                                 1,551
  hamilton/plugins/sklearn_plot_extensions.py                                   4,326
  hamilton/plugins/spark_extensions.py                                          3,236
  hamilton/plugins/vaex_extensions.py                                           1,673
  hamilton/plugins/xgboost_extensions.py                                        2,762
  hamilton/plugins/yaml_extensions.py                                           2,554
  hamilton/registry.py                                                          8,588
  hamilton/settings.py                                                            845
  hamilton/telemetry.py                                                         1,772
  hamilton/version.py                                                             807

================================================================================
  Verifying Wheel Metadata with Twine
================================================================================


Checking apache_hamilton-1.90.0-py3-none-any.whl...
  ✓ apache_hamilton-1.90.0-py3-none-any.whl metadata is valid

✅ All wheels passed twine validation

✅ Verification completed successfully!
```

Maybe for some of the things it is just me doing something stupid (but not sure what since I copy-paste the readme commands and just fix the file names).

Best,
Jernej

________________________________
From: Elijah ben Izzy <el...@alumni.brown.edu>
Sent: 07 April 2026 05:37
To: dev@hamilton.apache.org <de...@hamilton.apache.org>
Subject: Re: [VOTE] Release Apache Hamilton - apache-hamilton 1.90.0-incubating (release candidate 0)

Nice work. Checks performed:
  [x] Verified GPG signature (Good signature, key
FE668E857E89A11C5E5C000CA8D3D15600545C61)
  [x] Verified SHA-512 checksums
  [x] "incubating" in source tarball filename
  [x] LICENSE, NOTICE, DISCLAIMER present and correct
  [x] ASF license headers present in source files
  [x] No unexpected binary files
  [x] Built and installed from source (Python 3.13)
  [x] Ran hello_world example successfully

+ 1 (binding)

On Fri, Apr 3, 2026 at 10:31 PM Stefan Krawczyk <st...@gmail.com>
wrote:

> Oh I forgot to link to it, but to hopefully make it faster to verify
> the verification
> script
> <
> https://github.com/apache/hamilton/blob/main/scripts/verify_apache_artifacts.py
> >
> should help (see these instructions
> <https://github.com/apache/hamilton/tree/main/scripts#verification-script
> >).
>
> Otherwise I have noticed the README instructions for verification have some
> incorrect paths -- please adjust for that and you should be able to follow
> the instructions.
>
> On Fri, Apr 3, 2026 at 10:20 PM Stefan Krawczyk <stefan.krawczyk@gmail.com
> >
> wrote:
>
> > Hi all,
> >
> > This is a call for a vote on releasing Apache Hamilton apache-hamilton
> > 1.90.0-incubating, release candidate 0.
> >
> > This release includes the following changes (see CHANGELOG for details):
> >
> > Features:
> >> - While loop DFS implementation (#1483)
> >> - Async data validator support
> >> - Add `unpack_fields` annotation for unpacking structured fields (#1305)
> >> - Expose DAG validation as LLM tools via MCP (#1490)
> >> - Add NDJSON support in polars (#1431)
> >> - Enhance visualization with display_name tag support
> >
> >
> > Bug fixes:
> >> - Fix `@resolve` decorator not calling `validate()` on returned
> >> decorators (#1524)
> >> - Fix is_submodule substring match causing spurious DAG nodes (#1485)
> >> - Fix pandas 2.2+ compatibility in pandas_extensions.py
> >> - Fix spark failures on Python 3.14
> >> - Fix local (Windows) tests (#1302)
> >> - Fix typer version requirement for click 8.3 help compatibility
> >
> >
> > Performance:
> >> - Use deque for BFS queue in graph traversal (#1494)
> >
> >
> > Platform changes:
> >> - Drop Python 3.8 and 3.9 support
> >> - Add Python 3.13 and 3.14 support
> >> - Remove usage telemetry (PostHog) (#1512)
> >> - Remove RayWorkflows (#1359)
> >> - Update `dlt` plugin with changes to `loader_file_format`
> >> - Package renamed from sf-hamilton to apache-hamilton
> >
> >
> >
> > The artifacts for this release candidate can be found at:
> >
> >
> https://dist.apache.org/repos/dist/dev/incubator/hamilton/apache-hamilton/1.90.0-RC0
> >
> >
> > The Git tag to be voted upon is: apache-hamilton-v1.90.0-incubating-RC0
> >
> >
> > The release hash is: bed5a272904bd7d68bc03167978f663e1906738c
> >
> > But the functional release is from this commit from main:
> > e84ed90b4428d777449b9bfc413ed86ee41a77c9
> >
> > Release artifacts are signed with the following key:
> >
> > FE668E857E89A11C5E5C000CA8D3D15600545C61
> >
> > The KEYS file is available at:
> > https://downloads.apache.org/incubator/hamilton/KEYS
> >
> > Please download, verify, and test the release candidate. You can find the
> > instructions to do so here
> > <
> https://github.com/apache/hamilton/tree/main/scripts#for-voters-verifying-a-release>
> (and
> > if you're having issues following them please reply and I'll help).
> >
> > The vote will run for a minimum of 72 hours, likely much longer due to
> the
> > holiday.
> >
> > Please vote:
> >
> > [ ] +1 Release this package as Apache Hamilton apache-hamilton
> > 1.90.0-incubating
> > [ ] +0 No opinion
> > [ ] -1 Do not release this package because... (Please provide a reason)
> >
> > Checklist for reference:
> >
> > [ ] Incubating in name.
> > [ ] Download links are valid.
> > [ ] Checksums and signatures.
> > [ ] LICENSE/NOTICE/DISCLAIMER files exist
> > [ ] No unexpected binary files
> > [ ] All source files have ASF headers
> > [ ] Can compile from source
> >
> >
> > On behalf of the Apache Hamilton PPMC,
> >
> > Stefan Krawczyk
> >
>

Re: [VOTE] Release Apache Hamilton - apache-hamilton 1.90.0-incubating (release candidate 0)

Posted by Elijah ben Izzy <el...@alumni.brown.edu>.
Nice work. Checks performed:
  [x] Verified GPG signature (Good signature, key
FE668E857E89A11C5E5C000CA8D3D15600545C61)
  [x] Verified SHA-512 checksums
  [x] "incubating" in source tarball filename
  [x] LICENSE, NOTICE, DISCLAIMER present and correct
  [x] ASF license headers present in source files
  [x] No unexpected binary files
  [x] Built and installed from source (Python 3.13)
  [x] Ran hello_world example successfully

+ 1 (binding)

On Fri, Apr 3, 2026 at 10:31 PM Stefan Krawczyk <st...@gmail.com>
wrote:

> Oh I forgot to link to it, but to hopefully make it faster to verify
> the verification
> script
> <
> https://github.com/apache/hamilton/blob/main/scripts/verify_apache_artifacts.py
> >
> should help (see these instructions
> <https://github.com/apache/hamilton/tree/main/scripts#verification-script
> >).
>
> Otherwise I have noticed the README instructions for verification have some
> incorrect paths -- please adjust for that and you should be able to follow
> the instructions.
>
> On Fri, Apr 3, 2026 at 10:20 PM Stefan Krawczyk <stefan.krawczyk@gmail.com
> >
> wrote:
>
> > Hi all,
> >
> > This is a call for a vote on releasing Apache Hamilton apache-hamilton
> > 1.90.0-incubating, release candidate 0.
> >
> > This release includes the following changes (see CHANGELOG for details):
> >
> > Features:
> >> - While loop DFS implementation (#1483)
> >> - Async data validator support
> >> - Add `unpack_fields` annotation for unpacking structured fields (#1305)
> >> - Expose DAG validation as LLM tools via MCP (#1490)
> >> - Add NDJSON support in polars (#1431)
> >> - Enhance visualization with display_name tag support
> >
> >
> > Bug fixes:
> >> - Fix `@resolve` decorator not calling `validate()` on returned
> >> decorators (#1524)
> >> - Fix is_submodule substring match causing spurious DAG nodes (#1485)
> >> - Fix pandas 2.2+ compatibility in pandas_extensions.py
> >> - Fix spark failures on Python 3.14
> >> - Fix local (Windows) tests (#1302)
> >> - Fix typer version requirement for click 8.3 help compatibility
> >
> >
> > Performance:
> >> - Use deque for BFS queue in graph traversal (#1494)
> >
> >
> > Platform changes:
> >> - Drop Python 3.8 and 3.9 support
> >> - Add Python 3.13 and 3.14 support
> >> - Remove usage telemetry (PostHog) (#1512)
> >> - Remove RayWorkflows (#1359)
> >> - Update `dlt` plugin with changes to `loader_file_format`
> >> - Package renamed from sf-hamilton to apache-hamilton
> >
> >
> >
> > The artifacts for this release candidate can be found at:
> >
> >
> https://dist.apache.org/repos/dist/dev/incubator/hamilton/apache-hamilton/1.90.0-RC0
> >
> >
> > The Git tag to be voted upon is: apache-hamilton-v1.90.0-incubating-RC0
> >
> >
> > The release hash is: bed5a272904bd7d68bc03167978f663e1906738c
> >
> > But the functional release is from this commit from main:
> > e84ed90b4428d777449b9bfc413ed86ee41a77c9
> >
> > Release artifacts are signed with the following key:
> >
> > FE668E857E89A11C5E5C000CA8D3D15600545C61
> >
> > The KEYS file is available at:
> > https://downloads.apache.org/incubator/hamilton/KEYS
> >
> > Please download, verify, and test the release candidate. You can find the
> > instructions to do so here
> > <
> https://github.com/apache/hamilton/tree/main/scripts#for-voters-verifying-a-release>
> (and
> > if you're having issues following them please reply and I'll help).
> >
> > The vote will run for a minimum of 72 hours, likely much longer due to
> the
> > holiday.
> >
> > Please vote:
> >
> > [ ] +1 Release this package as Apache Hamilton apache-hamilton
> > 1.90.0-incubating
> > [ ] +0 No opinion
> > [ ] -1 Do not release this package because... (Please provide a reason)
> >
> > Checklist for reference:
> >
> > [ ] Incubating in name.
> > [ ] Download links are valid.
> > [ ] Checksums and signatures.
> > [ ] LICENSE/NOTICE/DISCLAIMER files exist
> > [ ] No unexpected binary files
> > [ ] All source files have ASF headers
> > [ ] Can compile from source
> >
> >
> > On behalf of the Apache Hamilton PPMC,
> >
> > Stefan Krawczyk
> >
>

Re: [VOTE] Release Apache Hamilton - apache-hamilton 1.90.0-incubating (release candidate 0)

Posted by Stefan Krawczyk <st...@gmail.com>.
Oh I forgot to link to it, but to hopefully make it faster to verify
the verification
script
<https://github.com/apache/hamilton/blob/main/scripts/verify_apache_artifacts.py>
should help (see these instructions
<https://github.com/apache/hamilton/tree/main/scripts#verification-script>).

Otherwise I have noticed the README instructions for verification have some
incorrect paths -- please adjust for that and you should be able to follow
the instructions.

On Fri, Apr 3, 2026 at 10:20 PM Stefan Krawczyk <st...@gmail.com>
wrote:

> Hi all,
>
> This is a call for a vote on releasing Apache Hamilton apache-hamilton
> 1.90.0-incubating, release candidate 0.
>
> This release includes the following changes (see CHANGELOG for details):
>
> Features:
>> - While loop DFS implementation (#1483)
>> - Async data validator support
>> - Add `unpack_fields` annotation for unpacking structured fields (#1305)
>> - Expose DAG validation as LLM tools via MCP (#1490)
>> - Add NDJSON support in polars (#1431)
>> - Enhance visualization with display_name tag support
>
>
> Bug fixes:
>> - Fix `@resolve` decorator not calling `validate()` on returned
>> decorators (#1524)
>> - Fix is_submodule substring match causing spurious DAG nodes (#1485)
>> - Fix pandas 2.2+ compatibility in pandas_extensions.py
>> - Fix spark failures on Python 3.14
>> - Fix local (Windows) tests (#1302)
>> - Fix typer version requirement for click 8.3 help compatibility
>
>
> Performance:
>> - Use deque for BFS queue in graph traversal (#1494)
>
>
> Platform changes:
>> - Drop Python 3.8 and 3.9 support
>> - Add Python 3.13 and 3.14 support
>> - Remove usage telemetry (PostHog) (#1512)
>> - Remove RayWorkflows (#1359)
>> - Update `dlt` plugin with changes to `loader_file_format`
>> - Package renamed from sf-hamilton to apache-hamilton
>
>
>
> The artifacts for this release candidate can be found at:
>
> https://dist.apache.org/repos/dist/dev/incubator/hamilton/apache-hamilton/1.90.0-RC0
>
>
> The Git tag to be voted upon is: apache-hamilton-v1.90.0-incubating-RC0
>
>
> The release hash is: bed5a272904bd7d68bc03167978f663e1906738c
>
> But the functional release is from this commit from main:
> e84ed90b4428d777449b9bfc413ed86ee41a77c9
>
> Release artifacts are signed with the following key:
>
> FE668E857E89A11C5E5C000CA8D3D15600545C61
>
> The KEYS file is available at:
> https://downloads.apache.org/incubator/hamilton/KEYS
>
> Please download, verify, and test the release candidate. You can find the
> instructions to do so here
> <https://github.com/apache/hamilton/tree/main/scripts#for-voters-verifying-a-release> (and
> if you're having issues following them please reply and I'll help).
>
> The vote will run for a minimum of 72 hours, likely much longer due to the
> holiday.
>
> Please vote:
>
> [ ] +1 Release this package as Apache Hamilton apache-hamilton
> 1.90.0-incubating
> [ ] +0 No opinion
> [ ] -1 Do not release this package because... (Please provide a reason)
>
> Checklist for reference:
>
> [ ] Incubating in name.
> [ ] Download links are valid.
> [ ] Checksums and signatures.
> [ ] LICENSE/NOTICE/DISCLAIMER files exist
> [ ] No unexpected binary files
> [ ] All source files have ASF headers
> [ ] Can compile from source
>
>
> On behalf of the Apache Hamilton PPMC,
>
> Stefan Krawczyk
>