Welcome to the auto-generated documentation for the Kefer Astrology function-wrapper project.

Documentation Structure

  • Project Overview - Quickstart, runtime split, and high-level system view
  • Installation and Venvs - Environment setup and multi-venv workflow
  • Architecture - Backend responsibilities and storage model
  • Ephemeris files - BSP catalog, date range overlaps, de440s upgrade, asteroid limitations
  • FastAPI + React + Tauri - Recommended integration for the target desktop/web stack
  • Models Overview - Mermaid class diagram showing all dataclasses and their relationships
  • Enums Overview - Complete list of all enumerations and their members
  • User Interfaces
    • Streamlit UI - Web-based interface for interactive chart creation
    • Kivy UI - Desktop application for native chart rendering
  • Module Documentation - Detailed documentation for each module:
  • Engineering Notes

Model Class Diagram

The following diagram shows the relationships between all dataclasses in the models module:

%%{init: {'theme':'default', 'classDiagram': {'direction':'TB'}}}%%
classDiagram


class Annotation {
  str title
  str content
  datetime created
  str author
}


class Aspect {
  str type
  str source_id
  str target_id
  float angle
  float orb
}


class AspectDefinition {
  str id
  str glyph
  float angle
  float default_orb
  Dict~str,str~ i18n
  str color
  int importance
  str line_style
  float line_width
  bool show_label
  List~AspectContext(Enum)~ valid_contexts
}


class AspectSettings {
  str id
  bool enabled
  float orb
  str color
  int importance
  str line_style
  float line_width
  bool show_label
}


class AstroModel {
  str name
  List~BodyDefinition~ body_definitions
  List~AspectDefinition~ aspect_definitions
  List~Sign~ signs
  ModelSettings settings
  EngineType(Enum) engine
  ZodiacType(Enum) zodiac_type
  Ayanamsa(Enum) ayanamsa
}


class Attachment {
  str filename
  str url
  str type
}


class BodyDefinition {
  str id
  str glyph
  str formula
  Element(Enum) element
  float avg_speed
  float max_orb
  Dict~str,str~ i18n
  ObjectType(Enum) object_type
  Dict~str,str~ computation_map
  bool requires_location
  bool requires_house_system
}


class CelestialBody {
  str id
  str definition_id
  float degree
  str sign
  bool retrograde
  float speed
}


class ChartConfig {
  ChartMode(Enum) mode
  HouseSystem(Enum) house_system
  ZodiacType(Enum) zodiac_type
  List~str~ included_points
  Dict~str,float~ aspect_orbs
  str display_style
  str color_theme
  str override_ephemeris
  str model
  EngineType(Enum) engine
  Ayanamsa(Enum) ayanamsa
  List~str~ observable_objects
  TimeSystem(Enum) time_system
}


class ChartInstance {
  str id
  ChartSubject subject
  ChartConfig config
  Horoscope computed_chart
  List~str~ tags
}


class ChartPreset {
  str name
  ChartConfig config
}


class ChartRelation {
  RelationType(Enum) type
  str source
  str target
  str method
  DateRange time_span
}


class ChartSubject {
  str id
  str name
  datetime event_time
  Location location
}


class DateRange {
  datetime start
  datetime end
}


class ElementColorSettings {
  str fire
  str earth
  str air
  str water
}


class EphemerisSource {
  str name
  str backend
}


class Horoscope {
  datetime for_time
  Location location
  List~CelestialBody~ bodies
  List~House~ houses
  List~Aspect~ aspects
}


class House {
  int number
  float cusp_degree
  str sign
}


class Location {
  str name
  float latitude
  float longitude
  str timezone
}


class ModelOverrides {
  List~OverrideEntry~ points
  List~OverrideEntry~ aspects
  Dict~str,float~ override_orbs
}


class ModelSettings {
  HouseSystem(Enum) default_house_system
  List~str~ default_aspects
  List~str~ default_bodies
  float standard_orb
  List~str~ default_transit_aspects
  List~str~ default_direction_aspects
  List~str~ default_transit_bodies
  List~str~ default_direction_bodies
  float degrees_in_circle
  float obliquity_j2000
  float coordinate_tolerance
}


class OverrideEntry {
  str id
  str glyph
  float angle
  float default_orb
  List~str~ only_for
  Dict~str,str~ i18n
  bool computed
}


class RadixPointColorSettings {
  Dict~str,str~ colors
}


class Sign {
  str name
  str glyph
  str abbreviation
  Element(Enum) element
  Dict~str,str~ i18n
}


class ViewLayout {
  str name
  LayoutStyle(Enum) layout_style
  List~str~ chart_instances
  List~ChartRelation~ relations
  List~ViewModule~ modules
}


class ViewModule {
  ViewModuleType(Enum) type
  Dict~any,any~ config
}


class Workspace {
  str owner
  List~ChartSubject~ subjects
  List~ChartInstance~ charts
  List~ChartPreset~ chart_presets
  List~ViewLayout~ layouts
  List~Annotation~ annotations
  str active_model
  WorkspaceDefaults default
  List~str~ aspects
  List~str~ bodies
  Dict~str,AstroModel~ models
  ModelOverrides model_overrides
}


class WorkspaceDefaults {
  HouseSystem(Enum) default_house_system
  List~str~ default_bodies
  List~str~ default_aspects
  EngineType(Enum) ephemeris_engine
  str ephemeris_backend
  ElementColorSettings element_colors
  RadixPointColorSettings radix_point_colors
  Location default_location
  str language
  str theme
  TimeSystem(Enum) time_system
}

AstroModel --> AspectDefinition
AstroModel --> BodyDefinition
AstroModel --> ModelSettings
AstroModel --> Sign
ChartInstance --> ChartConfig
ChartInstance --> ChartSubject
ChartInstance --> Horoscope
ChartPreset --> ChartConfig
ChartRelation --> DateRange
ChartSubject --> Location
Horoscope --> Aspect
Horoscope --> CelestialBody
Horoscope --> House
Horoscope --> Location
ModelOverrides --> OverrideEntry
ViewLayout --> ChartRelation
ViewLayout --> ViewModule
Workspace --> Annotation
Workspace --> AstroModel
Workspace --> ChartInstance
Workspace --> ChartPreset
Workspace --> ChartSubject
Workspace --> ModelOverrides
Workspace --> ViewLayout
Workspace --> WorkspaceDefaults
WorkspaceDefaults --> ElementColorSettings
WorkspaceDefaults --> Location
WorkspaceDefaults --> RadixPointColorSettings