|
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