You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The versioning policy said "documented non-underscore names are public", while
Sphinx ran with undoc-members, so any helper that happened to have a docstring
became part of the permanent 1.x surface. Each module now declares __all__ --
the curated set of names psycodict actually promises -- and the API reference
documents exactly those (undoc-members is off). A non-__all__ name, docstring
or not, is implementation: still importable, so nothing downstream breaks, but
not promised.
tests/test_public_api.py freezes every module's __all__, checks each exported
name resolves, checks `from psycodict import *` binds exactly the root set, and
checks the specific names LMFDB and seminars import still resolve -- including
private ones (seminars' _counts_cols, _meta_*_cols) and a couple kept
importable but unpromised (range_formatter, KeyedDefaultDict), since __all__
governs `import *` and the docs, not explicit imports.
Versioning.md is rewritten around this: public = the __all__ names and their
documented behavior; db[name] is the canonical table lookup while db.<name> is
convenience a real database attribute wins over, so adding a method in a minor
release never makes a table unreachable through db[name].
0 commit comments