mirror of
https://github.com/kennethreitz/pytheory.git
synced 2026-07-21 18:19:30 +00:00
33b0636cc4
A full freshness + quality pass across the documentation, with every code example verified by actually running it against v0.57.8. Content / accuracy: - Fixed stale and broken examples throughout: SymPy-based "symbolic pitch" (SymPy was removed), the case-sensitive progression parser (I/V/vi/IV vs i/iv), analog_drift -> analog, Key.relative/parallel returning Key objects, Tone.from_string validation needing a system, stale tab()/scale_diagram() output, and many counts (74 drum sounds, 100 patterns, 37 fills, 19 chord types, 16 systems, 25 fretboard instruments, 56 waveforms, 83 presets). - Documented major recent features that were missing: Maqam (quarter-tone Arabic maqamat) and Raga (Hindustani + Carnatic, shruti just intonation) in the systems guide and the CLI; SVG/PNG diagram export; progression / cadence / secondary-dominant analysis and reharmonization; notation export to LilyPond/MusicXML/ABC incl. lyrics; from_wav transcription; render_scores batch rendering; CLI raga/maqam and `analyze song.mid`. Navigation / presentation: - Added sphinx-design + sphinx-copybutton to the docs deps and conf. - Rebuilt the homepage "Why would I want this?" into a sphinx-design persona card grid with CTA buttons and a badge row; wired the brand logo into the sidebar (and suppressed the now-redundant project-name text). - Added API-reference pages for the public Raga and Maqam classes. Also: removed a duplicate `jati` attribute line from the Raga docstring so autodoc no longer double-documents it. Sphinx build is clean (0 warnings).
65 lines
1.6 KiB
Python
65 lines
1.6 KiB
Python
import os
|
|
import sys
|
|
from unittest.mock import MagicMock
|
|
|
|
sys.path.insert(0, os.path.abspath(".."))
|
|
|
|
# Mock sounddevice so Sphinx can import pytheory.play without PortAudio
|
|
sys.modules["sounddevice"] = MagicMock()
|
|
|
|
project = "PyTheory"
|
|
copyright = "2026, Kenneth Reitz"
|
|
author = "Kenneth Reitz"
|
|
import pytheory
|
|
release = pytheory.__version__
|
|
version = pytheory.__version__
|
|
|
|
extensions = [
|
|
"sphinx.ext.autodoc",
|
|
"sphinx.ext.napoleon",
|
|
"sphinx.ext.viewcode",
|
|
"sphinx.ext.intersphinx",
|
|
"myst_parser",
|
|
"sphinx_design",
|
|
"sphinx_copybutton",
|
|
]
|
|
|
|
# Copybutton: strip REPL / shell prompts so copied code is runnable.
|
|
copybutton_prompt_text = r">>> |\.\.\. |\$ "
|
|
copybutton_prompt_is_regexp = True
|
|
copybutton_remove_prompts = True
|
|
|
|
autodoc_member_order = "bysource"
|
|
autodoc_default_options = {
|
|
"members": True,
|
|
"undoc-members": True,
|
|
"show-inheritance": True,
|
|
}
|
|
|
|
intersphinx_mapping = {
|
|
"python": ("https://docs.python.org/3", None),
|
|
}
|
|
|
|
templates_path = ["_templates"]
|
|
exclude_patterns = ["_build"]
|
|
|
|
html_theme = "alabaster"
|
|
html_theme_options = {
|
|
"logo": "logo.png",
|
|
"logo_name": False, # the logo image already contains the wordmark
|
|
"github_user": "kennethreitz",
|
|
"github_repo": "pytheory",
|
|
"github_banner": True,
|
|
"github_button": True,
|
|
"github_type": "star",
|
|
"github_count": True,
|
|
"description": "Music Theory for Humans",
|
|
"extra_nav_links": {
|
|
"▶ Try the playground": "https://playground.pytheory.org",
|
|
f"v{pytheory.__version__}": "https://pypi.org/project/pytheory/",
|
|
},
|
|
"show_powered_by": False,
|
|
}
|
|
html_static_path = ["_static"]
|
|
html_extra_path = ["CNAME"]
|