|
1 | 1 | import importlib
|
2 | 2 | import json
|
3 | 3 | import logging
|
4 |
| -from typing import Any, List, Optional, Set |
| 4 | +from typing import TYPE_CHECKING, Any, List, Optional, Set |
5 | 5 |
|
6 | 6 | from colorama import Fore, Style
|
7 | 7 | from fastapi import status as HttpStatusCode
|
8 |
| -from grpc import StatusCode as GrpcStatusCode |
| 8 | + |
| 9 | +if TYPE_CHECKING: |
| 10 | + from grpc import StatusCode as GrpcStatusCode |
9 | 11 |
|
10 | 12 | from feast.field import Field
|
11 | 13 |
|
|
15 | 17 | class FeastError(Exception):
|
16 | 18 | pass
|
17 | 19 |
|
18 |
| - def grpc_status_code(self) -> GrpcStatusCode: |
| 20 | + def grpc_status_code(self) -> "GrpcStatusCode": |
| 21 | + from grpc import StatusCode as GrpcStatusCode |
| 22 | + |
19 | 23 | return GrpcStatusCode.INTERNAL
|
20 | 24 |
|
21 | 25 | def http_status_code(self) -> int:
|
@@ -89,7 +93,9 @@ def __init__(self, ds_name: str):
|
89 | 93 | class FeastObjectNotFoundException(FeastError):
|
90 | 94 | pass
|
91 | 95 |
|
92 |
| - def grpc_status_code(self) -> GrpcStatusCode: |
| 96 | + def grpc_status_code(self) -> "GrpcStatusCode": |
| 97 | + from grpc import StatusCode as GrpcStatusCode |
| 98 | + |
93 | 99 | return GrpcStatusCode.NOT_FOUND
|
94 | 100 |
|
95 | 101 | def http_status_code(self) -> int:
|
@@ -504,7 +510,9 @@ class FeastPermissionError(FeastError, PermissionError):
|
504 | 510 | def __init__(self, details: str):
|
505 | 511 | super().__init__(f"Permission error:\n{details}")
|
506 | 512 |
|
507 |
| - def grpc_status_code(self) -> GrpcStatusCode: |
| 513 | + def grpc_status_code(self) -> "GrpcStatusCode": |
| 514 | + from grpc import StatusCode as GrpcStatusCode |
| 515 | + |
508 | 516 | return GrpcStatusCode.PERMISSION_DENIED
|
509 | 517 |
|
510 | 518 | def http_status_code(self) -> int:
|
|
0 commit comments