or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

configuration-roles.mdcontent-creation.mdcore-utilities.mdenhanced-autodoc.mdenhanced-autosummary.mdgithub-integration.mdindex.mdlatex-support.mdtesting-utilities.mdtweaks-enhancements.md
tile.json

tessl/pypi-sphinx-toolbox

Box of handy tools for Sphinx providing comprehensive extensions and enhancements for documentation generation.

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
pypipkg:pypi/sphinx-toolbox@4.0.x

To install, run

npx @tessl/cli install tessl/pypi-sphinx-toolbox@4.0.0

index.mddocs/

Sphinx Toolbox

Sphinx Toolbox is a comprehensive collection of Sphinx extensions providing enhanced documentation capabilities. It offers 50+ modular extensions that enhance the core Sphinx documentation generator with advanced features including GitHub integration, enhanced autodoc capabilities, LaTeX improvements, specialized directives, and modern Python type support.

Package Information

  • Package Name: sphinx-toolbox
  • Language: Python
  • Installation: pip install sphinx-toolbox

Core Imports

import sphinx_toolbox

For individual extensions:

# Individual extension imports
from sphinx_toolbox import utils
from sphinx_toolbox import shields
from sphinx_toolbox.github import GitHubDomain
from sphinx_toolbox.more_autodoc import autoprotocol

Basic Usage

Sphinx Toolbox is primarily used by adding extensions to your Sphinx conf.py:

# Add the main extension (includes most sub-extensions)
extensions = [
    'sphinx_toolbox',
    # ... other extensions
]

# Or add individual extensions as needed
extensions = [
    'sphinx_toolbox.github',
    'sphinx_toolbox.shields',
    'sphinx_toolbox.more_autodoc.autoprotocol',
    'sphinx_toolbox.installation',
    # ... other extensions
]

# Configure GitHub integration (optional)
github_username = "your-username"
github_repository = "your-repo"

Example usage in reStructuredText documents:

.. installation:: package-name
   :pypi:
   :github: user/repo

.. shields:: 
   :pypi:
   :github:

.. confval:: my_config_value
   :type: str
   :default: "default value"
   
   Description of the configuration value.

:issue:`123` - Links to GitHub issue
:source:`path/to/file.py` - Links to source file

Architecture

Sphinx Toolbox follows a modular architecture with these main components:

  • Core Extensions: Individual Sphinx extensions that can be loaded separately
  • Utility Framework: Common utilities (utils, cache, config) shared across extensions
  • Domain System: Custom Sphinx domains (GitHub, LaTeX) with specialized roles and directives
  • Enhancement Layers: Tweaks and improvements to existing Sphinx functionality
  • Setup Integration: Coordinated setup system that manages extension dependencies and configuration

Each extension follows Sphinx's standard patterns with setup() functions returning SphinxExtMetadata for proper integration.

Capabilities

Core Utilities and Configuration

Essential utilities, caching, and configuration management used throughout the extension ecosystem.

def setup(app: Sphinx) -> SphinxExtMetadata:
    """Main setup function that registers all sphinx-toolbox extensions."""
    
# Core utility functions
def make_github_url(username: str, repository: str) -> RequestsURL
def flag(argument: Any) -> bool
def code_repr(obj: Any) -> str
def parse_parameters(lines: List[str], tab_size: int = 8) -> List[Param]

# Configuration classes
class ToolboxConfig(Config):
    """Extended Config class with type annotations for sphinx-toolbox settings."""

# HTTP cache
cache: HTTPCache

Core Utilities

Content Creation Extensions

Enhanced directives for creating rich documentation content including code blocks, examples, installation instructions, shields, and collapsible sections.

# Directives
class CodeBlock: ...  # Enhanced code-block with adjustable tab width
class CodeCell: ...   # Jupyter-style code cells
class InstallationDirective: ...  # Tabbed installation instructions
class CollapseDirective: ...      # Collapsible content sections
class reSTExampleDirective: ...   # Shows RST source and output

# Shield generation functions
def make_pypi_shield() -> str
def make_rtfd_shield() -> str
def make_github_shield() -> str

Content Creation

GitHub Integration

Comprehensive GitHub integration with custom domain, roles for issues/PRs/users/repos, and API-powered features.

class GitHubDomain(Domain):
    """Sphinx domain for GitHub.com integration."""

# GitHub roles
def issue_role() -> None  # :github:issue: role
def pull_role() -> None   # :github:pull: role  
def user_role() -> None   # :github:user: role
def repository_role() -> None  # :github:repo: role

# API functions
def get_issue_title(username: str, repository: str, issue_number: int) -> str

GitHub Integration

Enhanced Autodoc

Modern Python feature documentation including Protocol, TypedDict, namedtuple, generics, and enhanced type hint processing.

class ProtocolDocumenter(ClassDocumenter):
    """Autodocumenter for typing.Protocol classes."""

class TypedDictDocumenter(ClassDocumenter):
    """Autodocumenter for TypedDict classes."""

class NamedTupleDocumenter(ClassDocumenter):
    """Autodocumenter for namedtuple classes."""

class PrettyGenericAliasDocumenter(DataDocumenter):
    """Enhanced documentation for generic aliases."""

Enhanced Autodoc

Enhanced Autosummary

Improved automatic summary table generation with bug fixes, all support, and customizable column widths.

class PatchedAutosummary(Autosummary):
    """Enhanced autosummary directive with bug fixes."""

class PatchedAutoSummModuleDocumenter(ModuleDocumenter):
    """Module documenter with __all__ support."""

class AutosummaryWidths:
    """Configures autosummary table column widths."""

def get_documenter(app: Sphinx, obj: Any, parent: Any) -> Type[Documenter]

Enhanced Autosummary

LaTeX Support

Extensive LaTeX customization including custom directives, package management, layout improvements, and Unicode handling.

class LaTeXDomain(Domain):
    """Domain for LaTeX-specific directives."""

class SamepageDirective: ...     # Keeps content on same page
class ClearPageDirective: ...    # Starts new page  
class VSpaceDirective: ...       # Adds vertical space

def use_package(package: str, config: Config, *args, **kwargs) -> None
def better_header_layout(config: Config, space_before: str, space_after: str) -> None
def replace_unknown_unicode(app: Sphinx, exception: Exception) -> None

LaTeX Support

Configuration and Roles

Configuration value documentation, cross-referencing roles, and specialized formatting features.

class ConfigurationValue(SphinxDirective):
    """Directive for documenting configuration values."""

# Roles
def asset_role() -> Tuple[List[Node], List[system_message]]  # :asset: role
def source_role() -> Tuple[List[Node], List[system_message]]  # :source: role
def wikipedia_role() -> Tuple[List[Node], List[system_message]]  # :wikipedia: role

# Cross-reference support
class PyDecoXRefRole(XRefRole):
    """Cross-references for Python decorators."""

Configuration and Roles

Tweaks and Enhancements

Small but important improvements to Sphinx functionality including tab size handling, parameter formatting, footnote symbols, and compatibility fixes.

# Tab size handling
def setup_tabsize_support(app: Sphinx) -> None

# Parameter formatting  
def format_param_dash() -> None

# Footnote improvements
class FootnoteSymbols: ...

# LaTeX layout improvements
def configure_latex_tweaks() -> None

Tweaks and Enhancements

Common Configuration Values

Sphinx Toolbox adds numerous configuration values to control its behavior:

# GitHub integration
github_username = "username"
github_repository = "repository" 

# Asset handling
assets_dir = "_assets"

# Enhanced autodoc
all_typevars = True
no_unbound_typevars = False

# LaTeX customization  
latex_elements = {
    # Various LaTeX customizations applied automatically
}

# Autosummary
autosummary_col_type = "p{0.5\\linewidth}"
autodocsumm_member_order = "bysource"

Error Handling

Sphinx Toolbox provides several exception types for configuration and processing errors:

class MissingOptionError(SphinxError):
    """Raised when required configuration option is missing."""

class InvalidOptionError(SphinxError):  
    """Raised when configuration option has invalid value."""

class NoMatchError(Exception):
    """Raised when no matching values are found."""

Testing Support

Comprehensive testing framework for Sphinx extensions with HTML/LaTeX regression testing, fixtures, and development tools:

class SphinxBuilder:
    """Builder for testing Sphinx extensions."""

class HTMLRegressionFixture:
    """HTML regression testing utilities."""

class LaTeXRegressionFixture:
    """LaTeX regression testing utilities."""

def run_setup(app: Sphinx) -> None
def check_asset_copy() -> None
def remove_html_footer() -> None
def check_html_regression(test_output: str, expected_output: str) -> None

Testing Utilities