1- from apipod import CONSTS
2- from apipod .settings import APIPOD_ORCHESTRATOR , APIPOD_COMPUTE , APIPOD_PROVIDER
3- from apipod .core . routers . _socaity_router import _SocaityRouter
4- from apipod .core . routers . _runpod_router import SocaityRunpodRouter
5- from apipod .core . routers . _fastapi_router import SocaityFastAPIRouter
6- from apipod .core . job_queues .job_queue_interface import JobQueueInterface
1+ from apipod . common import constants
2+ from apipod .common . settings import APIPOD_ORCHESTRATOR , APIPOD_COMPUTE , APIPOD_PROVIDER
3+ from apipod .engine . base_backend import _BaseBackend
4+ from apipod .engine . backend . runpod . router import SocaityRunpodRouter
5+ from apipod .engine . backend . fastapi . router import SocaityFastAPIRouter
6+ from apipod .engine . queue .job_queue_interface import JobQueueInterface
77
88from typing import Union
99
1010
1111def APIPod (
12- orchestrator : Union [CONSTS .ORCHESTRATOR , str , None ] = None ,
13- compute : Union [CONSTS .COMPUTE , str , None ] = None ,
14- provider : Union [CONSTS .PROVIDER , str , None ] = None ,
12+ orchestrator : Union [constants .ORCHESTRATOR , str , None ] = None ,
13+ compute : Union [constants .COMPUTE , str , None ] = None ,
14+ provider : Union [constants .PROVIDER , str , None ] = None ,
1515 * args , ** kwargs
16- ) -> Union [_SocaityRouter , SocaityRunpodRouter , SocaityFastAPIRouter ]:
16+ ) -> Union [_BaseBackend , SocaityRunpodRouter , SocaityFastAPIRouter ]:
1717 """
1818 Initialize an APIPod router with the appropriate backend based on the deployment configuration.
1919
@@ -42,9 +42,9 @@ def APIPod(
4242 compute: "dedicated" or "serverless" (default from env / dedicated).
4343 provider: "auto", "localhost", "runpod", "scaleway", "azure" (default from env / localhost).
4444 """
45- orchestrator = _resolve_enum (orchestrator , CONSTS .ORCHESTRATOR , APIPOD_ORCHESTRATOR , CONSTS .ORCHESTRATOR .LOCAL )
46- compute = _resolve_enum (compute , CONSTS .COMPUTE , APIPOD_COMPUTE , CONSTS .COMPUTE .DEDICATED )
47- provider = _resolve_enum (provider , CONSTS .PROVIDER , APIPOD_PROVIDER , CONSTS .PROVIDER .LOCALHOST )
45+ orchestrator = _resolve_enum (orchestrator , constants .ORCHESTRATOR , APIPOD_ORCHESTRATOR , constants .ORCHESTRATOR .LOCAL )
46+ compute = _resolve_enum (compute , constants .COMPUTE , APIPOD_COMPUTE , constants .COMPUTE .DEDICATED )
47+ provider = _resolve_enum (provider , constants .PROVIDER , APIPOD_PROVIDER , constants .PROVIDER .LOCALHOST )
4848
4949 backend_class , use_job_queue = _resolve_backend (orchestrator , compute , provider )
5050
@@ -71,26 +71,26 @@ def _resolve_enum(value, enum_cls, env_default, fallback):
7171
7272
7373def _resolve_backend (
74- orchestrator : CONSTS .ORCHESTRATOR ,
75- compute : CONSTS .COMPUTE ,
76- provider : CONSTS .PROVIDER ,
74+ orchestrator : constants .ORCHESTRATOR ,
75+ compute : constants .COMPUTE ,
76+ provider : constants .PROVIDER ,
7777) -> tuple :
7878 """
7979 Apply the configuration matrix and return (backend_class, use_job_queue).
8080 Raises for unsupported or not-yet-implemented combinations.
8181 """
8282 _raise_if_unsupported (compute , provider )
8383
84- if orchestrator == CONSTS .ORCHESTRATOR .SOCAITY :
84+ if orchestrator == constants .ORCHESTRATOR .SOCAITY :
8585 return _resolve_socaity (compute , provider )
8686
8787 return _resolve_local (compute , provider )
8888
8989
90- def _raise_if_unsupported (compute : CONSTS .COMPUTE , provider : CONSTS .PROVIDER ):
90+ def _raise_if_unsupported (compute : constants .COMPUTE , provider : constants .PROVIDER ):
9191 unsupported = {
92- (CONSTS .COMPUTE .SERVERLESS , CONSTS .PROVIDER .SCALEWAY ),
93- (CONSTS .COMPUTE .SERVERLESS , CONSTS .PROVIDER .AZURE ),
92+ (constants .COMPUTE .SERVERLESS , constants .PROVIDER .SCALEWAY ),
93+ (constants .COMPUTE .SERVERLESS , constants .PROVIDER .AZURE ),
9494 }
9595 if (compute , provider ) in unsupported :
9696 raise NotImplementedError (
@@ -99,40 +99,40 @@ def _raise_if_unsupported(compute: CONSTS.COMPUTE, provider: CONSTS.PROVIDER):
9999 )
100100
101101
102- def _resolve_socaity (compute : CONSTS .COMPUTE , provider : CONSTS .PROVIDER ) -> tuple :
103- if compute == CONSTS .COMPUTE .DEDICATED :
104- if provider in (CONSTS .PROVIDER .RUNPOD , CONSTS .PROVIDER .SCALEWAY , CONSTS .PROVIDER .AZURE ):
102+ def _resolve_socaity (compute : constants .COMPUTE , provider : constants .PROVIDER ) -> tuple :
103+ if compute == constants .COMPUTE .DEDICATED :
104+ if provider in (constants .PROVIDER .RUNPOD , constants .PROVIDER .SCALEWAY , constants .PROVIDER .AZURE ):
105105 raise NotImplementedError (
106106 f"Celery backend for socaity + dedicated + { provider .value } is planned but not yet available."
107107 )
108- if provider == CONSTS .PROVIDER .LOCALHOST :
108+ if provider == constants .PROVIDER .LOCALHOST :
109109 return SocaityFastAPIRouter , True
110110 # auto or any other -> FastAPI without queue
111111 return SocaityFastAPIRouter , False
112112
113113 # serverless
114- if provider == CONSTS .PROVIDER .LOCALHOST :
114+ if provider == constants .PROVIDER .LOCALHOST :
115115 return SocaityFastAPIRouter , True
116116 # auto or runpod -> RunPod router
117117 return SocaityRunpodRouter , False
118118
119119
120- def _resolve_local (compute : CONSTS .COMPUTE , provider : CONSTS .PROVIDER ) -> tuple :
121- if compute == CONSTS .COMPUTE .DEDICATED :
120+ def _resolve_local (compute : constants .COMPUTE , provider : constants .PROVIDER ) -> tuple :
121+ if compute == constants .COMPUTE .DEDICATED :
122122 return SocaityFastAPIRouter , False
123123
124124 # serverless
125- if provider == CONSTS .PROVIDER .LOCALHOST :
125+ if provider == constants .PROVIDER .LOCALHOST :
126126 return SocaityFastAPIRouter , True
127- if provider == CONSTS .PROVIDER .RUNPOD :
127+ if provider == constants .PROVIDER .RUNPOD :
128128 return SocaityRunpodRouter , False
129129 # auto -> RunPod router (same default as socaity serverless auto)
130- if provider == CONSTS .PROVIDER .AUTO :
130+ if provider == constants .PROVIDER .AUTO :
131131 return SocaityRunpodRouter , False
132132
133133 raise NotImplementedError (f"Unsupported configuration: local + serverless + { provider .value } " )
134134
135135
136136def _create_job_queue () -> JobQueueInterface :
137- from apipod .core . job_queues .job_queue import JobQueue
137+ from apipod .engine . queue .job_queue import JobQueue
138138 return JobQueue ()
0 commit comments