Summary
The documentation currently has two separate problems:
- The Sphinx build is blocked by stale path assumptions in
docs/source/conf.py and by invoking make -C docs html outside the uv environment.
- The published documentation content has drifted from the current numpy-backed public API after the project-structure move, the packaged-calendar migration from
.cal to .json, and the newer Calendar.load signature.
Findings
make -C docs html fails in the current shell because docs/Makefile calls sphinx-build directly instead of going through uv.
uv run make -C docs html fails immediately in docs/source/conf.py because it still copies notebooks from repo-root paths like ../../pandas.ipynb, but those notebooks were moved out of the root in 9f9679a (Organized project structure).
- After temporarily supplying the expected notebook paths, Sphinx completes but emits warnings/errors that show API drift:
docs/source/api.rst still documents getdate and getbizdays, but the public bizdays.Calendar no longer has those members.
bizdays/calendar.py docstrings currently emit docutils errors for numpy.int_ / numpy.bool_.
docs/source/_static is referenced but missing.
- The docs content is materially stale:
- notebooks and docs still use
Calendar.load("ANBIMA") and Calendar.load("PMC/NYSE") positionally, but the current public API is keyword-only (name= / filename=).
- notebooks still use
Calendar.load(filename='ANBIMA.cal'), but packaged calendars were migrated to JSON in 3aa16d3; that example now fails.
set_option('mode', 'pandas') still exists, but it no longer changes the return type of the top-level numpy-backed Calendar methods.
index.md, quick.ipynb, getdate.ipynb, pandas.ipynb, and SITE.ipynb still teach getdate / getbizdays, which are legacy-only now.
Review tracks
1. Build pipeline and source layout
- Decide the canonical way to build docs (
uv run make -C docs html or a Makefile wrapper that is environment-aware).
- Remove the stale copy-from-root behavior in
docs/source/conf.py.
- Choose one notebook source of truth:
notebooks/ or docs/source/, then eliminate the duplicated copy flow.
- Audit static asset paths such as
_static.
2. Public API documentation alignment
- Re-document the current top-level
bizdays.Calendar as the numpy-backed implementation.
- Remove or clearly separate legacy-only members (
getdate, getbizdays, pandas-mode behavior).
- Update signatures and examples for
Calendar.load(name=...), Calendar.load(filename=...), and PMC/....
- Fix docstrings/types that currently generate Sphinx parsing errors.
3. Example and notebook migration
- Audit every notebook and Markdown example for:
- keyword-only
Calendar.load
.cal vs JSON/custom-file loading
- current return types (
numpy.datetime64 / arrays) instead of legacy datetime.date expectations
- removed legacy methods
- Decide whether notebooks should be executable documentation or archival examples.
- If executable, define which examples must run in CI and which may stay illustrative.
4. Legacy story and migration guidance
- Decide what remains supported as legacy compatibility (
get_option / set_option) versus what should be called out as historical behavior.
- Add an explicit migration guide from legacy docs/examples to the numpy-backed API.
- Link that migration guidance from README, docs index, and API reference.
5. Validation strategy
- Add a reliable docs build command to CI after the content update is complete.
- Consider a lightweight example-validation pass for the examples that are intended to stay current.
Suggested execution order
- Stabilize the docs build path and notebook source layout.
- Define the public-vs-legacy documentation boundary.
- Update API reference and top-level README/index pages.
- Migrate notebooks/examples in batches.
- Add docs validation in CI once the content is aligned.
Notes
- The current docs build does not protect against stale notebook code because
nbsphinx is rendering existing notebook content rather than failing on outdated examples.
- The docs review should cover both
docs/source/** and the parallel notebook/Markdown surfaces (notebooks/**, index.md, README.md).
Summary
The documentation currently has two separate problems:
docs/source/conf.pyand by invokingmake -C docs htmloutside theuvenvironment..calto.json, and the newerCalendar.loadsignature.Findings
make -C docs htmlfails in the current shell becausedocs/Makefilecallssphinx-builddirectly instead of going throughuv.uv run make -C docs htmlfails immediately indocs/source/conf.pybecause it still copies notebooks from repo-root paths like../../pandas.ipynb, but those notebooks were moved out of the root in9f9679a(Organized project structure).docs/source/api.rststill documentsgetdateandgetbizdays, but the publicbizdays.Calendarno longer has those members.bizdays/calendar.pydocstrings currently emit docutils errors fornumpy.int_/numpy.bool_.docs/source/_staticis referenced but missing.Calendar.load("ANBIMA")andCalendar.load("PMC/NYSE")positionally, but the current public API is keyword-only (name=/filename=).Calendar.load(filename='ANBIMA.cal'), but packaged calendars were migrated to JSON in3aa16d3; that example now fails.set_option('mode', 'pandas')still exists, but it no longer changes the return type of the top-level numpy-backedCalendarmethods.index.md,quick.ipynb,getdate.ipynb,pandas.ipynb, andSITE.ipynbstill teachgetdate/getbizdays, which are legacy-only now.Review tracks
1. Build pipeline and source layout
uv run make -C docs htmlor a Makefile wrapper that is environment-aware).docs/source/conf.py.notebooks/ordocs/source/, then eliminate the duplicated copy flow._static.2. Public API documentation alignment
bizdays.Calendaras the numpy-backed implementation.getdate,getbizdays, pandas-mode behavior).Calendar.load(name=...),Calendar.load(filename=...), andPMC/....3. Example and notebook migration
Calendar.load.calvs JSON/custom-file loadingnumpy.datetime64/ arrays) instead of legacydatetime.dateexpectations4. Legacy story and migration guidance
get_option/set_option) versus what should be called out as historical behavior.5. Validation strategy
Suggested execution order
Notes
nbsphinxis rendering existing notebook content rather than failing on outdated examples.docs/source/**and the parallel notebook/Markdown surfaces (notebooks/**,index.md,README.md).