|
1 | 1 | """Helper functions for handling optional FastAPI package imports."""
|
2 | 2 |
|
3 |
| -try: |
| 3 | +import sys |
| 4 | + |
| 5 | + |
| 6 | +_FASTAPI_INSTALLED = 'fastapi' in sys.modules |
| 7 | + |
| 8 | +if _FASTAPI_INSTALLED: |
4 | 9 | from fastapi import FastAPI, Request, Response
|
5 |
| -except ImportError: |
| 10 | +else: |
6 | 11 | _FASTAPI_DEPENDENCY_ERROR_MSG = """
|
7 | 12 | The A2A Python SDK FastAPI app requires the FastAPI package, which
|
8 | 13 | is an optional dependency. To fix this issue, please add the fastapi
|
|
15 | 20 | uv add a2a-sdk[fastapi]
|
16 | 21 | """
|
17 | 22 |
|
18 |
| - class _DummyFastAPIClasses: |
19 |
| - """Parent class for dummy fastapi.* class declarations.""" |
| 23 | + class _OptionalDependencyPlaceholder: |
| 24 | + """Base class for placeholder fastapi.* declarations.""" |
20 | 25 |
|
21 |
| - def __init__(self) -> None: |
22 |
| - """Raises ImportError when initiating a dummy fastapi.* instance.""" |
| 26 | + def __init__(self, *args, **kwargs): |
| 27 | + """Raises ImportError when an instance is created.""" |
23 | 28 | raise ImportError(_FASTAPI_DEPENDENCY_ERROR_MSG)
|
24 | 29 |
|
25 |
| - class FastAPI(_DummyFastAPIClasses): # type: ignore[no-redef] |
26 |
| - """A dummy fastapi.FastAPI declaration.""" |
| 30 | + class FastAPI(_OptionalDependencyPlaceholder): |
| 31 | + """A placeholder for fastapi.FastAPI.""" |
27 | 32 |
|
28 |
| - class Request(_DummyFastAPIClasses): # type: ignore[no-redef] |
29 |
| - """A dummy fastapi.Request declaration.""" |
| 33 | + class Request(_OptionalDependencyPlaceholder): |
| 34 | + """A placeholder for fastapi.Request.""" |
30 | 35 |
|
31 |
| - class Response(_DummyFastAPIClasses): # type: ignore[no-redef] |
32 |
| - """A dummy fastapi.Response declaration.""" |
| 36 | + class Response(_OptionalDependencyPlaceholder): |
| 37 | + """A placeholder for fastapi.Response.""" |
0 commit comments