site_name: PyCharter
site_description: Data Contract Management, ETL Pipelines, and Quality Assurance for Python
site_url: https://optophi.github.io/pycharter/
repo_url: https://github.com/optophi/pycharter
repo_name: optophi/pycharter
edit_uri: edit/main/docs/

theme:
  name: material
  palette:
    - scheme: default
      primary: indigo
      accent: indigo
      toggle:
        icon: material/brightness-7
        name: Switch to dark mode
    - scheme: slate
      primary: indigo
      accent: indigo
      toggle:
        icon: material/brightness-4
        name: Switch to light mode
  features:
    - navigation.instant
    - navigation.tracking
    - navigation.tabs
    - navigation.tabs.sticky
    - navigation.sections
    - navigation.expand
    - navigation.path
    - navigation.top
    - navigation.footer
    - search.suggest
    - search.highlight
    - content.tabs.link
    - content.code.copy
    - content.code.annotate
    - content.action.edit
    - toc.follow
  icon:
    repo: fontawesome/brands/github
  logo: assets/logo.png
  favicon: assets/favicon.ico

plugins:
  - search
  - mkdocstrings:
      default_handler: python
      handlers:
        python:
          paths: [src]
          options:
            docstring_style: google
            docstring_options:
              ignore_init_summary: true
            show_source: true
            show_root_heading: true
            show_root_full_path: false
            show_symbol_type_heading: true
            show_symbol_type_toc: true
            members_order: source
            heading_level: 2
            merge_init_into_class: true
            separate_signature: true
            show_signature_annotations: true
            signature_crossrefs: true
            inherited_members: true
            filters:
              - "!^_"
              - "^__init__$"

markdown_extensions:
  - abbr
  - admonition
  - attr_list
  - def_list
  - footnotes
  - md_in_html
  - tables
  - toc:
      permalink: true
  - pymdownx.arithmatex:
      generic: true
  - pymdownx.betterem:
      smart_enable: all
  - pymdownx.caret
  - pymdownx.details
  - pymdownx.emoji:
      emoji_index: !!python/name:material.extensions.emoji.twemoji
      emoji_generator: !!python/name:material.extensions.emoji.to_svg
  - pymdownx.highlight:
      anchor_linenums: true
      line_spans: __span
      pygments_lang_class: true
  - pymdownx.inlinehilite
  - pymdownx.keys
  - pymdownx.magiclink:
      repo_url_shorthand: true
      user: optophi
      repo: pycharter
  - pymdownx.mark
  - pymdownx.smartsymbols
  - pymdownx.superfences:
      custom_fences:
        - name: mermaid
          class: mermaid
          format: !!python/name:pymdownx.superfences.fence_code_format
  - pymdownx.tabbed:
      alternate_style: true
  - pymdownx.tasklist:
      custom_checkbox: true
  - pymdownx.tilde

extra:
  social:
    - icon: fontawesome/brands/github
      link: https://github.com/optophi/pycharter
    - icon: fontawesome/brands/python
      link: https://pypi.org/project/pycharter/
  version:
    provider: mike
  analytics:
    provider: google
    property: G-XXXXXXXXXX

extra_css:
  - stylesheets/extra.css

nav:
  - Home: index.md
  - Getting Started:
    - Installation: getting-started/installation.md
    - Quick Start: getting-started/quickstart.md
    - Concepts: getting-started/concepts.md
    - Contract vs Pipeline Quality: getting-started/data-quality.md
  - Tutorials:
    - Overview: tutorials/index.md
    - Building ETL Pipelines: tutorials/etl-pipelines.md
    - Data Contracts & Validation: tutorials/contracts-validation.md
    - Data Quality Monitoring: tutorials/quality-monitoring.md
    - Metadata Store & Schema Registry: tutorials/metadata-store.md
    - REST API & Web UI: tutorials/api-and-ui.md
  - How-To Guides:
    - Overview: guides/index.md
    - ETL:
      - ETL Transformations: guides/etl-transformations.md
      - Streaming and Messaging: guides/streaming-and-messaging.md
      - Incremental Extraction: guides/incremental-extraction.md
      - Custom Extractors: guides/custom-extractors.md
      - Custom Transformers: guides/custom-transformers.md
      - Async Execution Model: guides/async-execution.md
      - Testing Pipelines: guides/testing-pipelines.md
      - Pipeline Quality Checks: guides/pipeline-quality.md
    - Contracts & Quality:
      - Custom Validators: guides/custom-validators.md
      - Data Profiling: guides/data-profiling.md
      - Domain Models and Lifecycle: guides/domain-models-and-lifecycle.md
      - Wiki & Ontology: guides/wiki.md
    - Infrastructure:
      - Configuration & Database Setup: guides/configuration.md
      - Database Configuration: guides/database-config.md
      - Database ERD: guides/database-erd.md
      - Database Operations: guides/database-operations.md
      - Validation Worker: guides/worker.md
      - Production Deployment: guides/production.md
      - Building the Package: guides/building.md
    - Data Journey: guides/data-journey.md
  - API Reference:
    - Overview: api/index.md
    - Core:
      - Pipeline: api/pipeline.md
      - Validator: api/validator.md
      - QualityCheck: api/quality-check.md
    - ETL:
      - Extractors: api/extractors.md
      - Transformers: api/transformers.md
      - Loaders: api/loaders.md
      - Testing Framework: api/testing.md
    - Contracts:
      - Contract Parser: api/contract-parser.md
      - Contract Builder: api/contract-builder.md
    - Storage:
      - Metadata Store: api/metadata-store.md
      - Schema Evolution: api/schema-evolution.md
    - Extensions:
      - Pydantic Generator: api/pydantic-generator.md
      - JSON Schema Converter: api/json-schema-converter.md
      - Docs Generator: api/docs-generator.md
      - Domain: api/domain.md
      - Wiki & Ontology: api/wiki.md
    - Errors: api/errors.md
    - REST API: api/rest-api.md
  - Examples & Notebooks:
    - Overview: examples-and-notebooks.md
    - Notebooks: notebooks/README.md
  - Reference: reference.md
  - Migration Guide: MIGRATION_GUIDE.md
  - Changelog: changelog.md
  - Contributing:
    - Overview: contributing.md
    - Publishing to PyPI: contributing/publishing.md
    - Release Workflow: contributing/release-workflow.md
