Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion src/fastapi_toolsets/cli/commands/fixtures.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from rich.console import Console
from rich.table import Table

from ...fixtures import Context, LoadStrategy, load_fixtures_by_context
from ...fixtures import Context, LoadStrategy
from ...logger import get_logger
from ..config import get_db_context, get_fixtures_registry
from ..utils import async_command
Expand Down Expand Up @@ -71,6 +71,8 @@ async def load(
] = False,
) -> None:
"""Load fixtures into the database."""
from ...fixtures import load_fixtures_by_context

registry = get_fixtures_registry()
db_context = get_db_context()

Expand Down
3 changes: 2 additions & 1 deletion src/fastapi_toolsets/cli/utils.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
"""CLI utility functions."""

import asyncio
import functools
from collections.abc import Callable, Coroutine
from typing import Any, ParamSpec, TypeVar
Expand All @@ -24,6 +23,8 @@ async def load(ctx: typer.Context) -> None:

@functools.wraps(func)
def wrapper(*args: P.args, **kwargs: P.kwargs) -> T:
import asyncio

return asyncio.run(func(*args, **kwargs))

return wrapper
21 changes: 18 additions & 3 deletions src/fastapi_toolsets/fixtures/__init__.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
"""Fixture system for seeding databases with dependency resolution."""

from .enum import LoadStrategy
from .registry import Context, FixtureRegistry
from .utils import load_fixtures, load_fixtures_by_context
from .enum import Context, LoadStrategy

__all__ = [
"Context",
Expand All @@ -11,3 +9,20 @@
"load_fixtures",
"load_fixtures_by_context",
]

_LAZY = {
"FixtureRegistry": ".registry",
"load_fixtures": ".utils",
"load_fixtures_by_context": ".utils",
}


def __getattr__(name: str):
module_name = _LAZY.get(name)
if module_name is None:
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")

import importlib

module = importlib.import_module(module_name, __name__)
return getattr(module, name)