Skip to content

chore(release): cut v1.2.0#150

Merged
JohnnyWilson16 merged 1 commit into
mainfrom
release/1.2.0-jwd
Jul 18, 2026
Merged

chore(release): cut v1.2.0#150
JohnnyWilson16 merged 1 commit into
mainfrom
release/1.2.0-jwd

Conversation

@JohnnyWilson16

@JohnnyWilson16 JohnnyWilson16 commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Release 1.2.0

Cuts the next release from main (9b459b4) after a full release-blocking verification pass. Everything below was executed locally at that commit in a clean Python 3.12 environment and is reproducible with the quoted commands.

What's in this PR

  • Version bump 1.1.1 → 1.2.0 in pyproject.toml and freshdata.__version__ (the two canonical locations per RELEASE.md). MINOR is correct: the Unreleased notes add features (TruthBench runner, Validation Gauntlet, sensitive-column masking, …), the Removed section contains only dead config, and the public API surface has no removals vs the published 1.1.1 (31 additions, verified by diffing the import surface against a fresh pip install freshdata-cleaner==1.1.1).
  • Changelog cut: Unreleased## [1.2.0] - 2026-07-18, keeping an empty Unreleased heading.
  • Fix — shadowed lazy export: "Action" was listed in _ENTERPRISE_EXPORTS, but PEP 562 __getattr__ never fires for names that resolve eagerly, so fd.Action was always freshdata.report.Action and the privacy-policy Action enum was unreachable through that entry; the only visible symptom was dir(freshdata) listing Action twice. The dead entry is removed (with a comment explaining why), freshdata.enterprise.Action remains the documented path for the enum, and a new regression test (test_lazy_exports_are_not_shadowed_by_eager_exports) guards all four lazy export tables against eager shadowing plus dir() uniqueness. No documented API changes behavior.

Verification at this commit

Gate Result
pytest -m "not online and not large" (py3.12, .[dev,ml], numpy<2.5) 3980 passed, 5 skipped, 0 failed; coverage 93.15% (gate ≥93%)
ruff check . / mypy src/freshdata clean / clean (201 files)
mkdocs build --strict pass
python -m benchmarks.gauntlet run --rows 300 --check all gates passed
python -m benchmarks.cleanbench --tracks T1,T2,T3,T4,T5 --check-gates ALL RELEASE GATES PASSED
make truthbench-release (pandas+polars+duckdb, fail-closed) overall PASS — 4 formerly baseline-red gates now green
python -m build + twine check dist/* pass; wheel 720,059 B (< 2 MB wheel-size gate)
Clean-venv wheel install + behavior smoke pass at 1.2.0 (fd.clean, report audit trail, enterprise.Action)
pip-audit on the wheel's runtime env no known vulnerabilities
All 19 examples/*.py pass
Secret / unsafe-deserialization scan of src/ clean

After merge (deliberately not done here)

Publishing stays tag-driven per RELEASE.md: tag the merge commit v1.2.0 and push the tag; release.yml re-runs every gate fail-closed and publishes via Trusted Publishing. No tag is created by this PR.


Prepared with AI-assisted tooling; verification evidence reviewed before submission.

Summary by CodeRabbit

  • Bug Fixes

    • Removed the duplicate Action entry from dir(freshdata).
    • Clarified that the privacy enum is available at freshdata.enterprise.Action.
  • Release

    • Updated the package to version 1.2.0.
  • Tests

    • Added regression coverage to prevent duplicate or conflicting exported names.

- Bump version to 1.2.0 in pyproject.toml and freshdata.__version__.
- Move the Unreleased changelog notes under [1.2.0] - 2026-07-18.
- Remove the dead "Action" entry from the lazy enterprise exports: it was
  silently shadowed by the eager freshdata.report.Action, so the
  privacy-policy Action enum was never reachable as fd.Action and
  dir(freshdata) listed the name twice. The enum stays available at
  freshdata.enterprise.Action. Adds a regression test guarding every lazy
  export table against eager shadowing.

Release verification: full fast lane (3980 passed, 93.15% cov), ruff,
mypy, mkdocs --strict, Gauntlet, CleanBench T1-T5, TruthBench release
gates, build + twine + clean-env wheel smoke all green at this commit.
@strix-security

Copy link
Copy Markdown
Contributor

Strix is installed on this repository, but we couldn't run this PR security review because this workspace's trial has ended. Add a card to resume code reviews here.

@coderabbitai

coderabbitai Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 6b4cc144-f5cc-4fc2-bac8-7a453cb4f84f

📥 Commits

Reviewing files that changed from the base of the PR and between 9b459b4 and 3bf5431.

📒 Files selected for processing (4)
  • CHANGELOG.md
  • pyproject.toml
  • src/freshdata/__init__.py
  • tests/test_api.py

📝 Walkthrough

Walkthrough

The release bumps the package to 1.2.0, removes Action from the top-level lazy enterprise exports, adds regression coverage for duplicate exports, and documents the correction in the changelog.

Changes

Lazy export collision fix

Layer / File(s) Summary
Prevent duplicate lazy exports
src/freshdata/__init__.py, tests/test_api.py
The enterprise lazy export list no longer includes Action; tests verify lazy names do not overlap eager exports and that dir(freshdata) has unique names.

Release metadata

Layer / File(s) Summary
Publish version 1.2.0
pyproject.toml, src/freshdata/__init__.py, CHANGELOG.md
Package version declarations are updated to 1.2.0, and the changelog records the release and freshdata.enterprise.Action usage.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

Suggested reviewers: johnnywilson-portfolio, kevincostner17

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description is detailed, but it does not follow the required template or include the Type of Change and Checklist sections. Add the template sections: Description, Type of Change, and Checklist, and fill in any applicable issue reference.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title is concise and accurately summarizes the release cut to v1.2.0.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch release/1.2.0-jwd

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown

FreshData benchmark report — performance

  • freshdata: ?
  • python: ?
  • platform: ?
fixture n_rows n_cols p50 s p95 s peak MB repair % false-repair % preserve % trust monotonic export %

Authored-code reduction (Metric 6)

@JohnnyWilson16
JohnnyWilson16 merged commit 497c2f6 into main Jul 18, 2026
17 checks passed
@coderabbitai coderabbitai Bot mentioned this pull request Jul 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant