Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Copyright 2017 laughingman7743
Copyright 2017 The PyAthena authors

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Independent review (relayed): CLEAN

  • Reviewer: OpenAI Codex CLI 0.156.0 (codex exec --sandbox read-only, reasoning effort high), session 01a0d0de-9089-78c3-84e0-dc64e3d93f51.
  • Scope: static review of 82e88f4ebbd89a4dad8b3b57ac412012601f0c45..0fac3b9d6115df96608e5dafda11614883094eea, run in a detached snapshot at the head. The prompt excluded the PR number, description, and prior findings. The reviewer made no edits, builds, or test runs.

Reviewer result, summarized:

  • Hatchling 1.27.0 produces core metadata 2.4 with License-Expression: MIT and both license files.
  • LICENSE and NOTICE are included in the sdist despite only-include, and in the wheel's license directory, including when the wheel is rebuilt from the sdist.
  • Attribution and documentation text are consistent.

Non-blocking suggestion: benchmarks/tests/test_packaging.py:25 allows LICENSE/NOTICE but doesn't assert their presence or the metadata fields. Deferred: that test guards the exclusion of benchmark packaging from the main sdist. This PR's metadata was verified by building (see the round one record).


Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
Expand Down
4 changes: 2 additions & 2 deletions docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,8 +99,8 @@ def setup(app):
# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information

project = "PyAthena"
copyright = f"{datetime.now(timezone.utc).year}, laughingman7743"
author = "laughingman7743"
copyright = f"2017-{datetime.now(timezone.utc).year}, The PyAthena authors"
author = "The PyAthena authors"
# Version will be set dynamically in setup() function
version = ""
release = ""
Expand Down
2 changes: 1 addition & 1 deletion docs/contributing.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ The short notice and license reference follow [Google's MIT header example](http
Identify any third-party material included in a new contribution and preserve its applicable copyright and license notices.
Do not replace upstream notices with the original-file template above.

This policy does not require adding headers to existing files or changing existing notices, including the root `LICENSE`.
This policy does not require adding headers to existing files or changing their existing notices.
Existing non-empty files that contain only the maintainer's original work carry the header above, dated with the year of their earliest surviving content other than import statements.
The pull request template is an exception because its content is copied into each pull request.
Other existing files keep their current notices.
Expand Down
9 changes: 6 additions & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
name = "PyAthena"
description = "Python DB API 2.0 (PEP 249) client for Amazon Athena"
authors = [
{name = "The PyAthena authors"},
]
maintainers = [

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Maintainer-requested change: authors / maintainers, with independent follow-up (relayed)

At the maintainer's request, 10bb29e6e3d25c8c22038ba9b534da2277c05d99 sets authors to The PyAthena authors (no email) and moves the maintainer's name and email to maintainers. The branch was rebased onto master (#811, #813) first; git range-diff shows the earlier commit is patch-identical to 0fac3b9.

Self-review of the change:

  • uv build: METADATA and PKG-INFO have Author: The PyAthena authors and Maintainer-email: laughingman7743 <…>, with no Author-email.
  • twine check passed for both artifacts.
  • uv lock --check, just lint, and just benchmark test (80 passed, 1 skipped) pass.
  • Consumer effect: tools that read the author email now find it in Maintainer-email. The PR body's metadata table records this.

Independent follow-up — Codex CLI 0.156.0, read-only, effort high, session 01a0d42b-1907-7361-b4a9-97c0bf0669ca. Static review of HEAD~1..HEAD at 10bb29e. Result: CLEAN.

  • These are valid PEP 621 fields, and they map to the intended core metadata.
  • The benchmarks workspace member doesn't override the root metadata.
  • No repository statement contradicts the attribution.
  • The rebased earlier commit is patch-equivalent to 0fac3b9.

Non-blocking suggestion, deferred as before: assert the metadata fields in benchmarks/tests/test_packaging.py. That test guards benchmark packaging, and this PR's metadata was verified by building.

{name = "laughingman7743", email = "laughingman7743@gmail.com"},
]
dependencies = [
Expand All @@ -13,11 +16,11 @@ dependencies = [
]
requires-python = ">=3.10"
readme = "README.md"
license = {file = "LICENSE"}
license = "MIT"

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Self-review round one (implementation behavior): CLEAN

Base 82e88f4ebbd89a4dad8b3b57ac412012601f0c45, head 0fac3b9d6115df96608e5dafda11614883094eea.

Covered:

  • uv build output: wheel and sdist METADATA (License-Expression: MIT, License-File LICENSE/NOTICE, no License: field or classifier);
  • NOTICE still ships in the sdist despite only-include;
  • twine check on both artifacts;
  • uv lock --check;
  • benchmarks/tests/test_packaging.py via just benchmark test;
  • the docs/conf.py copyright/author usage (defined only there) and the rendered footer;
  • the README license badge: shields.io pypi/l renders license_expression, checked against hatchling and uv, which publish only an expression.

license-files = ["LICENSE", "NOTICE"]
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Topic :: Database :: Front-Ends",
"Programming Language :: Python :: 3",
Expand Down Expand Up @@ -94,7 +97,7 @@ dev = [
]

[build-system]
requires = ["hatchling", "hatch-vcs"]
requires = ["hatchling>=1.27", "hatch-vcs"]

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Self-review round two (claims and operational behavior): FINDINGS, repaired in the PR description

Claims checked:

  • hatchling>=1.27: the hatchling changelog shows 1.26.0 adopted the array form of license-files, and 1.27.0 made core metadata 2.4 the default.
  • The twine check claim matches what gh-action-pypi-publish runs.
  • The Sphinx footer text matches the rendered HTML.

Findings and repairs:

  1. The PR body's before/after table (following Revisit LICENSE attribution and package license metadata #807's premise) said the old wheel had only License-File: NOTICE. The prior METADATA (built at the Add MIT headers to existing files written solely by the maintainer #805 head) already had License-File: LICENSE and NOTICE. The table and WHY are corrected.
  2. "PEP 639 replaces license classifiers" is reworded to "deprecates".
  3. A consumer-impact section was added for license scanners that read only License: or classifiers, and for the build-time hatchling lower bound.

No code change; the head remains 0fac3b9.

build-backend = "hatchling.build"

[tool.hatch.metadata]
Expand Down
Loading