Source code for stellium.visualization.atlas.config

"""
Configuration dataclasses for atlas generation.
"""

from dataclasses import dataclass, field
from typing import Any

from stellium.core.native import Native


[docs] @dataclass class AtlasEntry: """ Single entry in the atlas. Each entry represents one chart page in the PDF. Attributes: native: The Native (birth data) for this chart chart_type: Type of chart to render ("wheel" or "dial") chart_options: Additional options for the chart type - For "dial": {"degrees": 90} (90, 45, or 360) """ native: Native chart_type: str = "wheel" chart_options: dict[str, Any] = field(default_factory=dict)
[docs] @dataclass class AtlasConfig: """ Configuration for atlas PDF generation. Attributes: entries: List of AtlasEntry objects (charts to include) page_size: Paper size ("letter", "a4", "half-letter") theme: Visual theme for charts (e.g., "classic", "midnight") zodiac_palette: Zodiac ring color palette (default: "rainbow") show_header: Whether to show native info header on each chart show_aspects: Whether to show aspect lines on charts show_extended_tables: Whether to show extended tables (enables landscape) show_aspect_counts: Whether to show aspect counts corner show_element_modality: Whether to show element/modality table corner title: Optional title for title page (None = no title page) filename: Output PDF filename """ entries: list[AtlasEntry] = field(default_factory=list) page_size: str = "letter" theme: str = "classic" zodiac_palette: str = "rainbow" show_header: bool = True show_aspects: bool = True show_extended_tables: bool = False show_aspect_counts: bool = True show_element_modality: bool = True title: str | None = None filename: str = "atlas.pdf"