Skip to content

Add Versioning.md: what the 1.0 version number promises - #123

Merged
roed314 merged 1 commit into
roed314:mainfrom
roed-math:versioning-policy
Jul 22, 2026
Merged

Add Versioning.md: what the 1.0 version number promises#123
roed314 merged 1 commit into
roed314:mainfrom
roed-math:versioning-policy

Conversation

@roed-math

Copy link
Copy Markdown

With #92 having underscore-prefixed the private API and 1.0 approaching, this writes down what the version number actually promises, in the style of the existing spec documents (QueryLanguage.md, Searching.md, DataManagement.md, MetadataFormats.md).

Public and covered by semver: documented non-underscore names; the query language; the re-exported SQL composition classes (from psycodict import SQL, Identifier, ... — the re-export point is the stable name); the copy_to/copy_from export file format (any 1.x reads any 1.x); the meta_* layout via the metadata format protocol (meta_format / min_compat, format bumps only at major releases — deferring to MetadataFormats.md for the mechanics).

Explicitly not covered: underscore names, the exact SQL text emitted (only its semantics), performance, log contents, undocumented behavior — with an invitation to open an issue when undocumented behavior matters downstream.

Policies: deprecations warn for at least one minor release before a major-release removal (the test suite already promotes psycodict DeprecationWarnings to errors, so deprecated paths can't linger internally); dropping an EOL Python or PostgreSQL may happen in a minor release, never a patch.

One line added to the README's specs paragraph linking it — trivial to resolve against #113's README rewrite, and the Sphinx docs (in progress) can pull the file in via MyST like the other specs.

All factual claims cross-checked against the current master versions of the linked documents and psycodict/__init__.py.

🤖 Generated with Claude Code

Semantic versioning, made concrete for this package: public = documented
non-underscore names, the query language, the re-exported SQL composition
classes, the copy_to/copy_from export file format, and the meta_* layout
as governed by the metadata format protocol (format bumps only at major
releases). Explicitly not covered: underscore names, exact emitted SQL,
performance, and undocumented behavior. Deprecations spend a minor
release warning first; dropping an EOL Python or PostgreSQL is a minor-
release change, never a patch. Linked from the README's specs paragraph.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@roed314
roed314 merged commit 7d0fe89 into roed314:main Jul 22, 2026
16 checks passed
@roed-math

Copy link
Copy Markdown
Author

Note: #122 now contains this branch's commit (stacked, so the docs site carries Versioning.md and both merge orders stay green under sphinx -W). If #122 merges first, this PR's diff empties and it can be closed or merged as a no-op.

roed-math pushed a commit to roed-math/psycodict that referenced this pull request Jul 22, 2026
Rebased onto main, which absorbed everything this PR used to anticipate;
the reconciliation:

- Version: 1.0.0 is now set in psycodict.__init__.__version__, the single
  source of truth roed314#121 established -- pyproject keeps main's dynamic
  version, SPDX license string and >=3.9 floor, and this PR's classifiers
  drop the License:: entry (setuptools >= 77 rejects it next to an SPDX
  string) and the 3.8 entry.

- README: the rewrite now carries the Versioning.md pointer (roed314#123) in its
  Documentation list, which switches to relative links -- on the Sphinx
  site (roed314#122) those resolve to the copied guide pages, and they still
  render on GitHub; CHANGELOG and LICENSE stay absolute since neither is
  on the site.  Supported Python is 3.9+; blob/master URLs become
  blob/main.

- CHANGELOG: entries for the late wave -- sum/random honoring saving
  (roed314#118) and the 3.9 floor (roed314#121) under breaking changes; the docs site
  (roed314#122), Versioning.md/CONTRIBUTING/SECURITY and __version__ (roed314#121)
  under added; reload metafile+resort (roed314#114), update_from_file stats
  publication (roed314#115), copy_dumps delimiter escaping (roed314#116) under fixed;
  config.ini untracking (roed314#120), this release workflow and CITATION.cff
  (roed314#124) under infrastructure.

- release.yml: the flow notes now say bump __init__.__version__ and merge
  to main.

- Fixes the docs build on main, broken by the roed314#119 x roed314#122 crossing (roed314#119
  merged after roed314#122's last CI run): the Configuration docstring's nested
  defaults list needed blank lines to be valid RST under autodoc, and the
  README's relative LICENSE link had no target on the site.

Suite 857 passed / 36 skipped; ruff clean; sphinx -W clean; python -m
build + twine check --strict pass with Version 1.0.0,
License-Expression GPL-2.0-or-later, Requires-Python >=3.9 and no
License classifier in the wheel metadata.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.

2 participants