Commit 6bc8a94e authored by Jan Reimes's avatar Jan Reimes
Browse files

refactor(console): replace Console instantiation with singleton pattern

- Introduced a singleton Console instance in a new console.py module.
- Updated app.py, fetching.py, helpers.py, and printing.py to use the singleton.
- Improved consistency and performance by avoiding multiple Console instantiations.
parent bc31f193
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -13,7 +13,6 @@ from typing import Annotated
import typer
import yaml
from dotenv import load_dotenv
from rich.console import Console
from rich.progress import BarColumn, MofNCompleteColumn, Progress, SpinnerColumn, TextColumn
from rich.table import Table

@@ -22,6 +21,7 @@ from tdoc_crawler.crawlers import MeetingCrawler, TDocCrawler
from tdoc_crawler.database import TDocDatabase
from tdoc_crawler.models import MeetingCrawlConfig, MeetingQueryConfig, OutputFormat, QueryConfig, SortOrder, TDocCrawlConfig

from .console import get_console
from .fetching import maybe_fetch_missing_tdocs
from .helpers import build_limits, database_path, launch_file, parse_subgroups, parse_working_groups, prepare_tdoc_file, resolve_credentials
from .printing import meeting_to_dict, print_meeting_table, print_tdoc_table, tdoc_to_dict
@@ -29,7 +29,7 @@ from .printing import meeting_to_dict, print_meeting_table, print_tdoc_table, td
load_dotenv()

app = typer.Typer(help="TDoc crawler - crawl and query structured 3GPP metadata")
console = Console()
console = get_console()

DEFAULT_CACHE_DIR = Path.home() / ".tdoc-crawler"

+21 −0
Original line number Diff line number Diff line
"""Singleton Console instance for CLI output.

This module provides a cached Console instance to avoid multiple
instantiations across the CLI module.
"""

from __future__ import annotations

from functools import cache

from rich.console import Console


@cache
def get_console() -> Console:
    """Get the singleton Console instance.

    Returns:
        Cached Console instance for consistent CLI output.
    """
    return Console()
+2 −3
Original line number Diff line number Diff line
@@ -5,15 +5,14 @@ from __future__ import annotations
import logging
from pathlib import Path

from rich.console import Console

from tdoc_crawler.crawlers import TDocCrawlResult, fetch_tdoc_metadata
from tdoc_crawler.database import TDocDatabase
from tdoc_crawler.models import PortalCredentials, QueryConfig, TDocMetadata

from .console import get_console
from .helpers import resolve_meeting_id

console = Console()
console = get_console()
_logger = logging.getLogger(__name__)


+3 −2
Original line number Diff line number Diff line
@@ -16,13 +16,14 @@ from urllib.parse import urlparse

import requests
import typer
from rich.console import Console

from tdoc_crawler.crawlers import normalize_subgroup_alias, normalize_working_group_alias
from tdoc_crawler.database import TDocDatabase
from tdoc_crawler.models import CrawlLimits, HttpCacheConfig, MeetingQueryConfig, PortalCredentials, SortOrder, TDocMetadata, WorkingGroup

console = Console()
from .console import get_console

console = get_console()
_logger = logging.getLogger(__name__)

DEFAULT_DATABASE_FILENAME = "tdoc_crawler.db"
+3 −2
Original line number Diff line number Diff line
@@ -4,12 +4,13 @@ from __future__ import annotations

from typing import Any

from rich.console import Console
from rich.table import Table

from tdoc_crawler.models import MeetingMetadata, TDocMetadata

console = Console()
from .console import get_console

console = get_console()


def tdoc_to_dict(result: TDocMetadata) -> dict[str, Any]:
Loading