From 0a582a74305a162009f7892475848e10ee98b23c Mon Sep 17 00:00:00 2001 From: Nikhil Arora Date: Sat, 5 Sep 2026 17:21:31 +0530 Subject: [PATCH] Release 1.0.0 and fix sdist packaging This change marks the first stable 1.0.0 release by bumping the package version and updating the development status classifier to Production/Stable. It also fixes a packaging issue in the sdist build by replacing the implicit file inclusion with an explicit allowlist, preventing local machine-specific artifacts like .hypothesis from being bundled into releases. The changelog was updated to document the release and the packaging verification work. --- .gitignore | 1 + CHANGELOG.md | 26 +++++++++++++++++++++++++- logquill/__init__.py | 2 +- pyproject.toml | 19 +++++++++++++++++-- 4 files changed, 44 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 4b80b7c..7daa672 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,7 @@ build/ .pytest_cache/ .mypy_cache/ .ruff_cache/ +.hypothesis/ .coverage htmlcov/ diff --git a/CHANGELOG.md b/CHANGELOG.md index c629c4f..0bfad1f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,8 +2,32 @@ All notable changes to this project are documented in this file. -## Unreleased +## 1.0.0 - 2026-09-05 +- First stable release: bumped the `Development Status` classifier from + `3 - Alpha` to `5 - Production/Stable`, matching `1.0.0`. +- Packaging polish: + - Confirmed the `py.typed` marker ships correctly inside the built wheel + (verified by installing that wheel into a fresh virtualenv and running + `mypy --strict` against a script importing the installed package, not + the local checkout) and that `pyproject.toml`'s keywords, project + URLs, and optional-dependency extras were already complete. + - Fixed a real sdist-packaging bug found while verifying the above: the + sdist was bundling whatever untracked local files happened to sit in + the working tree at build time — including the local `hypothesis` + test cache (`.hypothesis/`, 145 files) and other per-machine tool + state — alongside the actual source, since `hatchling`'s default + sdist selection includes anything not explicitly `.gitignore`d, and + not every local artifact was. Replaced that with an explicit + `[tool.hatch.build.targets.sdist]` allowlist naming exactly the + paths the package needs (`logquill/`, `tests/`, docs, license, + `pyproject.toml`), so a sdist built from any contributor's machine + stays limited to actual project files regardless of what else is + sitting in the working tree. + - Verified `python -m build` produces a clean wheel and sdist, `twine + check dist/*` passes on both, and installing the built wheel into a + fresh virtualenv works end to end — import, logging calls, and the + `logquill` CLI entry point all function against the installed package. - Phase 9, docs, complete: - Every public class and function across the package now has a docstring explaining what it does and why you'd reach for it — not a restatement diff --git a/logquill/__init__.py b/logquill/__init__.py index 0bf8104..e356c33 100644 --- a/logquill/__init__.py +++ b/logquill/__init__.py @@ -47,7 +47,7 @@ from logquill.transports.transport import CollectingTransport, Transport from logquill.worker import AsyncWorker -__version__ = "0.5.0" +__version__ = "1.0.0" __all__ = [ "AlertingPlugin", diff --git a/pyproject.toml b/pyproject.toml index 8b6a042..a5ec3f2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "logquill" -version = "0.5.0" +version = "1.0.0" description = "A structured, leveled logging framework with pluggable transports and a plugin pipeline." readme = "README.md" license = "MIT" @@ -21,7 +21,7 @@ keywords = [ "plugins", ] classifiers = [ - "Development Status :: 3 - Alpha", + "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", @@ -89,6 +89,21 @@ Issues = "https://github.com/nikhilvdev/logquill-python/issues" [tool.hatch.build.targets.wheel] packages = ["logquill"] +[tool.hatch.build.targets.sdist] +# Explicit allowlist rather than an exclude list: keeps the sdist limited +# to what the package actually needs regardless of what local, untracked +# tool/editor state happens to sit in the working tree at build time. +include = [ + "/logquill", + "/tests", + "/README.md", + "/CHANGELOG.md", + "/CODE_OF_CONDUCT.md", + "/CONTRIBUTING.md", + "/LICENSE", + "/pyproject.toml", +] + [tool.ruff] line-length = 100 target-version = "py38"