|
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