Home / Function/ main() — fastapi Function Reference

main() — fastapi Function Reference

Architecture documentation for the main() function in deploy_docs_status.py from the fastapi codebase.

Entity Profile

Dependency Diagram

graph TD
  e5db0993_b3e1_e881_6a7d_7410cb8543b9["main()"]
  8aae50f7_04c0_8084_bbfb_84dde926a81a["deploy_docs_status.py"]
  e5db0993_b3e1_e881_6a7d_7410cb8543b9 -->|defined in| 8aae50f7_04c0_8084_bbfb_84dde926a81a
  style e5db0993_b3e1_e881_6a7d_7410cb8543b9 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

scripts/deploy_docs_status.py lines 25–145

def main() -> None:
    logging.basicConfig(level=logging.INFO)
    settings = Settings()

    logging.info(f"Using config: {settings.model_dump_json()}")
    g = Github(auth=Auth.Token(settings.github_token.get_secret_value()))
    repo = g.get_repo(settings.github_repository)
    use_pr = next(
        (pr for pr in repo.get_pulls() if pr.head.sha == settings.commit_sha), None
    )
    if not use_pr:
        logging.error(f"No PR found for hash: {settings.commit_sha}")
        return
    commits = list(use_pr.get_commits())
    current_commit = [c for c in commits if c.sha == settings.commit_sha][0]
    run_url = f"https://github.com/{settings.github_repository}/actions/runs/{settings.run_id}"
    if settings.state == "pending":
        current_commit.create_status(
            state="pending",
            description="Deploying Docs",
            context="deploy-docs",
            target_url=run_url,
        )
        logging.info("No deploy URL available yet")
        return
    if settings.state == "error":
        current_commit.create_status(
            state="error",
            description="Error Deploying Docs",
            context="deploy-docs",
            target_url=run_url,
        )
        logging.info("Error deploying docs")
        return
    assert settings.state == "success"
    if not settings.deploy_url:
        current_commit.create_status(
            state="success",
            description="No Docs Changes",
            context="deploy-docs",
            target_url=run_url,
        )
        logging.info("No docs changes found")
        return
    assert settings.deploy_url
    current_commit.create_status(
        state="success",
        description="Docs Deployed",
        context="deploy-docs",
        target_url=run_url,
    )

    files = list(use_pr.get_files())
    docs_files = [f for f in files if f.filename.startswith("docs/")]

    deploy_url = settings.deploy_url.rstrip("/")
    lang_links: dict[str, list[LinkData]] = {}
    for f in docs_files:
        match = re.match(r"docs/([^/]+)/docs/(.*)", f.filename)
        if not match:
            continue
        lang = match.group(1)
        path = match.group(2)
        if path.endswith("index.md"):
            path = path.replace("index.md", "")
        else:
            path = path.replace(".md", "/")
        en_path = path
        if lang == "en":
            use_path = en_path
        else:
            use_path = f"{lang}/{path}"
        link = LinkData(
            previous_link=f"https://fastapi.tiangolo.com/{use_path}",
            preview_link=f"{deploy_url}/{use_path}",
        )
        if lang != "en":
            link.en_link = f"https://fastapi.tiangolo.com/{en_path}"
        lang_links.setdefault(lang, []).append(link)

    links: list[LinkData] = []

Domain

Subdomains

Frequently Asked Questions

What does main() do?
main() is a function in the fastapi codebase, defined in scripts/deploy_docs_status.py.
Where is main() defined?
main() is defined in scripts/deploy_docs_status.py at line 25.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free