relationalai 0.12.1__py3-none-any.whl → 0.12.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -49,6 +49,11 @@ class DirectAccessClient:
49
49
  "suspend_engine": Endpoint(method="POST", endpoint="/v1alpha1/engines/{engine_type}/{engine_name}/suspend"),
50
50
  "resume_engine": Endpoint(method="POST", endpoint="/v1alpha1/engines/{engine_type}/{engine_name}/resume_async"),
51
51
  "prepare_index": Endpoint(method="POST", endpoint="/v1alpha1/index/prepare"),
52
+ "get_job": Endpoint(method="GET", endpoint="/v1alpha1/jobs/{job_type}/{job_id}"),
53
+ "list_jobs": Endpoint(method="GET", endpoint="/v1alpha1/jobs"),
54
+ "get_job_events": Endpoint(method="GET", endpoint="/v1alpha1/jobs/{job_type}/{job_id}/events/{stream_name}"),
55
+ "create_job": Endpoint(method="POST", endpoint="/v1alpha1/jobs"),
56
+ "cancel_job": Endpoint(method="POST", endpoint="/v1alpha1/jobs/{job_type}/{job_id}/cancel"),
52
57
  }
53
58
  self.http_session = self._create_retry_session()
54
59
 
@@ -761,13 +761,13 @@ Otherwise, remove it from your '{profile}' configuration profile.
761
761
  with debugging.span("create_model", name=name):
762
762
  self._exec(f"call {APP_NAME}.api.create_database('{name}', false, {debugging.gen_current_propagation_headers()});")
763
763
 
764
- def delete_graph(self, name:str, force=False):
764
+ def delete_graph(self, name:str, force=False, language:str="rel"):
765
765
  prop_hdrs = debugging.gen_current_propagation_headers()
766
766
  if self.config.get("use_graph_index", USE_GRAPH_INDEX):
767
767
  keep_database = not force and self.config.get("reuse_model", True)
768
- with debugging.span("release_index", name=name, keep_database=keep_database):
768
+ with debugging.span("release_index", name=name, keep_database=keep_database, language=language):
769
769
  #TODO add headers to release_index
770
- response = self._exec(f"call {APP_NAME}.api.release_index('{name}', OBJECT_CONSTRUCT('keep_database', {keep_database}));")
770
+ response = self._exec(f"call {APP_NAME}.api.release_index('{name}', OBJECT_CONSTRUCT('keep_database', {keep_database}, 'language', '{language}'));")
771
771
  if response:
772
772
  result = next(iter(response))
773
773
  obj = json.loads(result["RELEASE_INDEX"])
@@ -795,6 +795,7 @@ Otherwise, remove it from your '{profile}' configuration profile.
795
795
  model: str,
796
796
  engine_name: str,
797
797
  engine_size: str | None = None,
798
+ language: str = "rel",
798
799
  program_span_id: str | None = None,
799
800
  headers: Dict | None = None,
800
801
  ):
@@ -805,6 +806,7 @@ Otherwise, remove it from your '{profile}' configuration profile.
805
806
  model,
806
807
  engine_name,
807
808
  engine_size,
809
+ language,
808
810
  program_span_id,
809
811
  headers,
810
812
  self.generation
@@ -2970,7 +2972,16 @@ class SnowflakeClient(Client):
2970
2972
 
2971
2973
  query_attrs_dict = json.loads(headers.get("X-Query-Attributes", "{}")) if headers else {}
2972
2974
  with debugging.span("poll_use_index", sources=self.resources.sources, model=model, engine=engine_name, **query_attrs_dict):
2973
- self.poll_use_index(app_name, self.resources.sources, model, engine_name, engine_size, program_span_id, headers=headers)
2975
+ self.poll_use_index(
2976
+ app_name=app_name,
2977
+ sources=self.resources.sources,
2978
+ model=model,
2979
+ engine_name=engine_name,
2980
+ engine_size=engine_size,
2981
+ language="rel",
2982
+ program_span_id=program_span_id,
2983
+ headers=headers
2984
+ )
2974
2985
 
2975
2986
  self.last_database_version = len(self.resources.sources)
2976
2987
  self._manage_packages()
@@ -2989,12 +3000,20 @@ class SnowflakeClient(Client):
2989
3000
  model: str,
2990
3001
  engine_name: str,
2991
3002
  engine_size: str | None = None,
3003
+ language: str = "rel",
2992
3004
  program_span_id: str | None = None,
2993
3005
  headers: Dict | None = None,
2994
3006
  ):
2995
3007
  assert isinstance(self.resources, Resources)
2996
3008
  return self.resources.poll_use_index(
2997
- app_name, sources, model, engine_name, engine_size, program_span_id, headers=headers
3009
+ app_name=app_name,
3010
+ sources=sources,
3011
+ model=model,
3012
+ engine_name=engine_name,
3013
+ engine_size=engine_size,
3014
+ language=language,
3015
+ program_span_id=program_span_id,
3016
+ headers=headers
2998
3017
  )
2999
3018
 
3000
3019
 
@@ -3302,6 +3321,7 @@ class DirectAccessResources(Resources):
3302
3321
  model: str,
3303
3322
  engine_name: str,
3304
3323
  engine_size: str = "",
3324
+ language: str = "rel",
3305
3325
  rai_relations: List[str] | None = None,
3306
3326
  pyrel_program_id: str | None = None,
3307
3327
  skip_pull_relations: bool = False,
@@ -3317,6 +3337,7 @@ class DirectAccessResources(Resources):
3317
3337
  payload = {
3318
3338
  "model_name": model,
3319
3339
  "caller_engine_name": engine_name,
3340
+ "language": language,
3320
3341
  "pyrel_program_id": pyrel_program_id,
3321
3342
  "skip_pull_relations": skip_pull_relations,
3322
3343
  "rai_relations": rai_relations or [],
@@ -3342,6 +3363,7 @@ class DirectAccessResources(Resources):
3342
3363
  model: str,
3343
3364
  engine_name: str,
3344
3365
  engine_size: str | None = None,
3366
+ language: str = "rel",
3345
3367
  program_span_id: str | None = None,
3346
3368
  headers: Dict | None = None,
3347
3369
  ):
@@ -3352,6 +3374,7 @@ class DirectAccessResources(Resources):
3352
3374
  model=model,
3353
3375
  engine_name=engine_name,
3354
3376
  engine_size=engine_size,
3377
+ language=language,
3355
3378
  program_span_id=program_span_id,
3356
3379
  headers=headers,
3357
3380
  generation=self.generation,
@@ -3492,14 +3515,14 @@ class DirectAccessResources(Resources):
3492
3515
  with debugging.span("create_model", dbname=name):
3493
3516
  return self._create_database(name,"")
3494
3517
 
3495
- def delete_graph(self, name:str, force=False):
3518
+ def delete_graph(self, name:str, force=False, language: str = "rel"):
3496
3519
  prop_hdrs = debugging.gen_current_propagation_headers()
3497
3520
  if self.config.get("use_graph_index", USE_GRAPH_INDEX):
3498
3521
  keep_database = not force and self.config.get("reuse_model", True)
3499
- with debugging.span("release_index", name=name, keep_database=keep_database):
3522
+ with debugging.span("release_index", name=name, keep_database=keep_database, language=language):
3500
3523
  response = self.request(
3501
3524
  "release_index",
3502
- payload={"model_name": name, "keep_database": keep_database},
3525
+ payload={"model_name": name, "keep_database": keep_database, "language": language},
3503
3526
  headers=prop_hdrs,
3504
3527
  )
3505
3528
  if (
@@ -161,8 +161,9 @@ class UseIndexPoller:
161
161
  model: str,
162
162
  engine_name: str,
163
163
  engine_size: Optional[str],
164
- program_span_id: Optional[str],
165
- headers: Optional[Dict],
164
+ language: str = "rel",
165
+ program_span_id: Optional[str] = None,
166
+ headers: Optional[Dict] = None,
166
167
  generation: Optional[Generation] = None,
167
168
  ):
168
169
  self.res = resource
@@ -171,6 +172,7 @@ class UseIndexPoller:
171
172
  self.model = model
172
173
  self.engine_name = engine_name
173
174
  self.engine_size = engine_size or self.res.config.get_default_engine_size()
175
+ self.language = language
174
176
  self.program_span_id = program_span_id
175
177
  self.headers = headers or {}
176
178
  self.counter = 1
@@ -190,8 +192,8 @@ class UseIndexPoller:
190
192
  )
191
193
  current_user = self.res.get_sf_session().get_current_user()
192
194
  assert current_user is not None, "current_user must be set"
193
- data_freshness = self.res.config.get_data_freshness_mins()
194
- self.cache = GraphIndexCache(current_user, model, data_freshness, self.sources)
195
+ self.data_freshness = self.res.config.get_data_freshness_mins()
196
+ self.cache = GraphIndexCache(current_user, model, self.data_freshness, self.sources)
195
197
  self.sources = self.cache.choose_sources()
196
198
  # execution_id is allowed to group use_index call, which belongs to the same loop iteration
197
199
  self.execution_id = str(uuid.uuid4())
@@ -486,6 +488,8 @@ class UseIndexPoller:
486
488
  "wait_for_stream_sync": self.wait_for_stream_sync,
487
489
  "should_check_cdc": self.should_check_cdc,
488
490
  "init_engine_async": self.init_engine_async,
491
+ "language": self.language,
492
+ "data_freshness_mins": self.data_freshness,
489
493
  })
490
494
 
491
495
  request_headers = debugging.add_current_propagation_headers(self.headers)
@@ -853,11 +857,23 @@ class DirectUseIndexPoller(UseIndexPoller):
853
857
  model: str,
854
858
  engine_name: str,
855
859
  engine_size: Optional[str],
856
- program_span_id: Optional[str],
857
- headers: Optional[Dict],
860
+ language: str = "rel",
861
+ program_span_id: Optional[str] = None,
862
+ headers: Optional[Dict] = None,
858
863
  generation: Optional[Generation] = None,
859
864
  ):
860
- super().__init__(resource, app_name, sources, model, engine_name, engine_size, program_span_id, headers, generation)
865
+ super().__init__(
866
+ resource=resource,
867
+ app_name=app_name,
868
+ sources=sources,
869
+ model=model,
870
+ engine_name=engine_name,
871
+ engine_size=engine_size,
872
+ language=language,
873
+ program_span_id=program_span_id,
874
+ headers=headers,
875
+ generation=generation,
876
+ )
861
877
  from relationalai.clients.snowflake import DirectAccessResources
862
878
  self.res: DirectAccessResources = cast(DirectAccessResources, self.res)
863
879
 
@@ -878,6 +894,7 @@ class DirectUseIndexPoller(UseIndexPoller):
878
894
  model=self.model,
879
895
  engine_name=self.engine_name,
880
896
  engine_size=self.engine_size,
897
+ language=self.language,
881
898
  rai_relations=[],
882
899
  pyrel_program_id=self.program_span_id,
883
900
  skip_pull_relations=True,