airia 0.1.10__py3-none-any.whl → 0.1.11__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.
@@ -1,22 +1,26 @@
1
1
  import asyncio
2
2
  import weakref
3
3
  from typing import Any, AsyncIterator, Dict, List, Literal, Optional, overload
4
- from urllib.parse import urljoin
5
4
 
6
5
  import aiohttp
7
6
  import loguru
8
7
 
9
- from ..constants import DEFAULT_ANTHROPIC_GATEWAY_URL, DEFAULT_BASE_URL, DEFAULT_OPENAI_GATEWAY_URL, DEFAULT_TIMEOUT
8
+ from ..constants import (
9
+ DEFAULT_ANTHROPIC_GATEWAY_URL,
10
+ DEFAULT_BASE_URL,
11
+ DEFAULT_OPENAI_GATEWAY_URL,
12
+ DEFAULT_TIMEOUT,
13
+ )
10
14
  from ..exceptions import AiriaAPIError
11
- from ..types import (
12
- ApiVersion,
15
+ from ..types._api_version import ApiVersion
16
+ from ..types._request_data import RequestData
17
+ from ..types.api import (
18
+ CreateConversationResponse,
13
19
  GetPipelineConfigResponse,
20
+ PipelineExecutionAsyncStreamedResponse,
14
21
  PipelineExecutionDebugResponse,
15
22
  PipelineExecutionResponse,
16
- PipelineExecutionV1StreamedResponse,
17
- PipelineExecutionV2AsyncStreamedResponse,
18
23
  ProjectItem,
19
- RequestData,
20
24
  )
21
25
  from ..utils.sse_parser import async_parse_sse_stream_chunked
22
26
  from .base_client import AiriaBaseClient
@@ -106,7 +110,13 @@ class AiriaAsyncClient(AiriaBaseClient):
106
110
  """
107
111
  from openai import AsyncOpenAI
108
112
 
109
- client = cls(base_url=base_url, api_key=api_key, timeout=timeout, log_requests=log_requests, custom_logger=custom_logger)
113
+ client = cls(
114
+ base_url=base_url,
115
+ api_key=api_key,
116
+ timeout=timeout,
117
+ log_requests=log_requests,
118
+ custom_logger=custom_logger,
119
+ )
110
120
  cls.openai = AsyncOpenAI(
111
121
  api_key=client.api_key,
112
122
  base_url=gateway_url,
@@ -140,7 +150,13 @@ class AiriaAsyncClient(AiriaBaseClient):
140
150
  """
141
151
  from anthropic import AsyncAnthropic
142
152
 
143
- client = cls(base_url=base_url, api_key=api_key, timeout=timeout, log_requests=log_requests, custom_logger=custom_logger)
153
+ client = cls(
154
+ base_url=base_url,
155
+ api_key=api_key,
156
+ timeout=timeout,
157
+ log_requests=log_requests,
158
+ custom_logger=custom_logger,
159
+ )
144
160
  cls.anthropic = AsyncAnthropic(
145
161
  api_key=client.api_key,
146
162
  base_url=gateway_url,
@@ -195,7 +211,9 @@ class AiriaAsyncClient(AiriaBaseClient):
195
211
  if self.api_key and self.api_key in sanitized_message:
196
212
  sanitized_message = sanitized_message.replace(self.api_key, "[REDACTED]")
197
213
  if self.bearer_token and self.bearer_token in sanitized_message:
198
- sanitized_message = sanitized_message.replace(self.bearer_token, "[REDACTED]")
214
+ sanitized_message = sanitized_message.replace(
215
+ self.bearer_token, "[REDACTED]"
216
+ )
199
217
 
200
218
  # Raise custom exception with status code and sanitized message
201
219
  raise AiriaAPIError(status_code=e.status, message=sanitized_message) from e
@@ -328,7 +346,6 @@ class AiriaAsyncClient(AiriaBaseClient):
328
346
  additional_info: Optional[List[Any]] = None,
329
347
  prompt_variables: Optional[Dict[str, Any]] = None,
330
348
  correlation_id: Optional[str] = None,
331
- api_version: str = ApiVersion.V2.value,
332
349
  ) -> PipelineExecutionResponse: ...
333
350
 
334
351
  @overload
@@ -351,7 +368,6 @@ class AiriaAsyncClient(AiriaBaseClient):
351
368
  additional_info: Optional[List[Any]] = None,
352
369
  prompt_variables: Optional[Dict[str, Any]] = None,
353
370
  correlation_id: Optional[str] = None,
354
- api_version: str = ApiVersion.V2.value,
355
371
  ) -> PipelineExecutionDebugResponse: ...
356
372
 
357
373
  @overload
@@ -374,31 +390,7 @@ class AiriaAsyncClient(AiriaBaseClient):
374
390
  additional_info: Optional[List[Any]] = None,
375
391
  prompt_variables: Optional[Dict[str, Any]] = None,
376
392
  correlation_id: Optional[str] = None,
377
- api_version: Literal["v2"] = ApiVersion.V2.value,
378
- ) -> PipelineExecutionV2AsyncStreamedResponse: ...
379
-
380
- @overload
381
- async def execute_pipeline(
382
- self,
383
- pipeline_id: str,
384
- user_input: str,
385
- debug: bool = False,
386
- user_id: Optional[str] = None,
387
- conversation_id: Optional[str] = None,
388
- async_output: Literal[True] = True,
389
- include_tools_response: bool = False,
390
- images: Optional[List[str]] = None,
391
- files: Optional[List[str]] = None,
392
- data_source_folders: Optional[Dict[str, Any]] = None,
393
- data_source_files: Optional[Dict[str, Any]] = None,
394
- in_memory_messages: Optional[List[Dict[str, str]]] = None,
395
- current_date_time: Optional[str] = None,
396
- save_history: bool = True,
397
- additional_info: Optional[List[Any]] = None,
398
- prompt_variables: Optional[Dict[str, Any]] = None,
399
- correlation_id: Optional[str] = None,
400
- api_version: Literal["v1"] = ApiVersion.V1.value,
401
- ) -> PipelineExecutionV1StreamedResponse: ...
393
+ ) -> PipelineExecutionAsyncStreamedResponse: ...
402
394
 
403
395
  async def execute_pipeline(
404
396
  self,
@@ -419,7 +411,6 @@ class AiriaAsyncClient(AiriaBaseClient):
419
411
  additional_info: Optional[List[Any]] = None,
420
412
  prompt_variables: Optional[Dict[str, Any]] = None,
421
413
  correlation_id: Optional[str] = None,
422
- api_version: str = ApiVersion.V2.value,
423
414
  ) -> Dict[str, Any]:
424
415
  """
425
416
  Execute a pipeline with the provided input asynchronously.
@@ -443,7 +434,6 @@ class AiriaAsyncClient(AiriaBaseClient):
443
434
  prompt_variables: Optional variables to be used in the prompt.
444
435
  correlation_id: Optional correlation ID for request tracing. If not provided,
445
436
  one will be generated automatically.
446
- api_version: API version to use. Default is `v2`
447
437
 
448
438
  Returns:
449
439
  The API response as a dictionary.
@@ -478,38 +468,23 @@ class AiriaAsyncClient(AiriaBaseClient):
478
468
  additional_info=additional_info,
479
469
  prompt_variables=prompt_variables,
480
470
  correlation_id=correlation_id,
481
- api_version=api_version,
471
+ api_version=ApiVersion.V2.value,
472
+ )
473
+ resp = (
474
+ self._make_request_stream(method="POST", request_data=request_data)
475
+ if async_output
476
+ else await self._make_request("POST", request_data=request_data)
482
477
  )
483
- stream = async_output and api_version == ApiVersion.V2.value
484
- if stream:
485
- resp = self._make_request_stream(method="POST", request_data=request_data)
486
- else:
487
- resp = await self._make_request("POST", request_data)
488
478
 
489
479
  if not async_output:
490
480
  if not debug:
491
481
  return PipelineExecutionResponse(**resp)
492
482
  return PipelineExecutionDebugResponse(**resp)
493
483
 
494
- if api_version == ApiVersion.V1.value:
495
- url = urljoin(
496
- self.base_url, f"{api_version}/StreamSocketConfig/GenerateUrl"
497
- )
498
- request_data = self._prepare_request(
499
- url=url,
500
- payload={"socketIdentifier": resp},
501
- correlation_id=request_data.headers["X-Correlation-ID"],
502
- )
503
- resp = await self._make_request("POST", request_data)
504
-
505
- return PipelineExecutionV1StreamedResponse(**resp)
506
-
507
- return PipelineExecutionV2AsyncStreamedResponse(stream=resp)
484
+ return PipelineExecutionAsyncStreamedResponse(stream=resp)
508
485
 
509
486
  async def get_projects(
510
- self,
511
- correlation_id: Optional[str] = None,
512
- api_version: str = ApiVersion.V1.value,
487
+ self, correlation_id: Optional[str] = None
513
488
  ) -> List[ProjectItem]:
514
489
  """
515
490
  Retrieve a list of all projects accessible to the authenticated user.
@@ -521,8 +496,6 @@ class AiriaAsyncClient(AiriaBaseClient):
521
496
  Args:
522
497
  correlation_id (str, optional): A unique identifier for request tracing
523
498
  and logging. If not provided, one will be automatically generated.
524
- api_version (str, optional): The API version to use for the request.
525
- Defaults to "v1". Valid versions are defined in ApiVersion enum.
526
499
 
527
500
  Returns:
528
501
  List[ProjectItem]: A list of ProjectItem objects containing project
@@ -530,7 +503,6 @@ class AiriaAsyncClient(AiriaBaseClient):
530
503
  or found.
531
504
 
532
505
  Raises:
533
- ValueError: If the provided api_version is not valid.
534
506
  AiriaAPIError: If the API request fails, including cases where:
535
507
  - Authentication fails (401)
536
508
  - Access is forbidden (403)
@@ -559,7 +531,7 @@ class AiriaAsyncClient(AiriaBaseClient):
559
531
  access to.
560
532
  """
561
533
  request_data = self._pre_get_projects(
562
- correlation_id=correlation_id, api_version=api_version
534
+ correlation_id=correlation_id, api_version=ApiVersion.V1.value
563
535
  )
564
536
  resp = await self._make_request("GET", request_data)
565
537
 
@@ -569,10 +541,7 @@ class AiriaAsyncClient(AiriaBaseClient):
569
541
  return [ProjectItem(**item) for item in resp["items"]]
570
542
 
571
543
  async def get_active_pipelines_ids(
572
- self,
573
- project_id: Optional[str] = None,
574
- correlation_id: Optional[str] = None,
575
- api_version: str = ApiVersion.V1.value,
544
+ self, project_id: Optional[str] = None, correlation_id: Optional[str] = None
576
545
  ) -> List[str]:
577
546
  """
578
547
  Retrieve a list of active pipeline IDs.
@@ -586,15 +555,12 @@ class AiriaAsyncClient(AiriaBaseClient):
586
555
  accessible to the authenticated user.
587
556
  correlation_id (str, optional): A unique identifier for request tracing
588
557
  and logging. If not provided, one will be automatically generated.
589
- api_version (str, optional): The API version to use for the request.
590
- Defaults to "v1". Valid versions are defined in ApiVersion enum.
591
558
 
592
559
  Returns:
593
560
  List[str]: A list of pipeline IDs that are currently active. Returns an
594
561
  empty list if no active pipelines are found.
595
562
 
596
563
  Raises:
597
- ValueError: If the provided api_version is not valid.
598
564
  AiriaAPIError: If the API request fails, including cases where:
599
565
  - The project_id doesn't exist (404)
600
566
  - Authentication fails (401)
@@ -625,7 +591,7 @@ class AiriaAsyncClient(AiriaBaseClient):
625
591
  request_data = self._pre_get_active_pipelines_ids(
626
592
  project_id=project_id,
627
593
  correlation_id=correlation_id,
628
- api_version=api_version,
594
+ api_version=ApiVersion.V1.value,
629
595
  )
630
596
  resp = await self._make_request("GET", request_data)
631
597
 
@@ -637,10 +603,7 @@ class AiriaAsyncClient(AiriaBaseClient):
637
603
  return pipeline_ids
638
604
 
639
605
  async def get_pipeline_config(
640
- self,
641
- pipeline_id: str,
642
- correlation_id: Optional[str] = None,
643
- api_version: str = ApiVersion.V1.value,
606
+ self, pipeline_id: str, correlation_id: Optional[str] = None
644
607
  ) -> GetPipelineConfigResponse:
645
608
  """
646
609
  Retrieve configuration details for a specific pipeline.
@@ -651,8 +614,6 @@ class AiriaAsyncClient(AiriaBaseClient):
651
614
  Args:
652
615
  pipeline_id (str): The unique identifier of the pipeline to retrieve
653
616
  configuration for.
654
- api_version (str, optional): The API version to use for the request.
655
- Defaults to "v1". Valid versions are defined in ApiVersion enum.
656
617
  correlation_id (str, optional): A unique identifier for request tracing
657
618
  and logging. If not provided, one will be automatically generated.
658
619
 
@@ -661,7 +622,6 @@ class AiriaAsyncClient(AiriaBaseClient):
661
622
  configuration.
662
623
 
663
624
  Raises:
664
- ValueError: If the provided api_version is not valid.
665
625
  AiriaAPIError: If the API request fails, including cases where:
666
626
  - The pipeline_id doesn't exist (404)
667
627
  - Authentication fails (401)
@@ -692,8 +652,88 @@ class AiriaAsyncClient(AiriaBaseClient):
692
652
  request_data = self._pre_get_pipeline_config(
693
653
  pipeline_id=pipeline_id,
694
654
  correlation_id=correlation_id,
695
- api_version=api_version,
655
+ api_version=ApiVersion.V1.value,
696
656
  )
697
657
  resp = await self._make_request("GET", request_data)
698
658
 
699
659
  return GetPipelineConfigResponse(**resp)
660
+
661
+ async def create_conversation(
662
+ self,
663
+ user_id: str,
664
+ title: Optional[str] = None,
665
+ deployment_id: Optional[str] = None,
666
+ data_source_files: Dict[str, Any] = {},
667
+ is_bookmarked: bool = False,
668
+ correlation_id: Optional[str] = None,
669
+ ) -> CreateConversationResponse:
670
+ """
671
+ Create a new conversation.
672
+
673
+ Args:
674
+ user_id (str): The unique identifier of the user creating the conversation.
675
+ title (str, optional): The title for the conversation. If not provided,
676
+ the conversation will be created without a title.
677
+ deployment_id (str, optional): The unique identifier of the deployment
678
+ to associate with the conversation. If not provided, the conversation
679
+ will not be associated with any specific deployment.
680
+ data_source_files (dict): Configuration for data source files
681
+ to be associated with the conversation. If not provided, no data
682
+ source files will be associated.
683
+ is_bookmarked (bool): Whether the conversation should be bookmarked.
684
+ Defaults to False.
685
+ correlation_id (str, optional): A unique identifier for request tracing
686
+ and logging. If not provided, one will be automatically generated.
687
+
688
+ Returns:
689
+ CreateConversationResponse: A response object containing the created
690
+ conversation details including its ID, creation timestamp, and
691
+ all provided parameters.
692
+
693
+ Raises:
694
+ AiriaAPIError: If the API request fails, including cases where:
695
+ - The user_id doesn't exist (404)
696
+ - The deployment_id is invalid (404)
697
+ - Authentication fails (401)
698
+ - Access is forbidden (403)
699
+ - Server errors (5xx)
700
+
701
+ Example:
702
+ ```python
703
+ from airia import AiriaAsyncClient
704
+
705
+ client = AiriaAsyncClient(api_key="your_api_key")
706
+
707
+ # Create a basic conversation
708
+ conversation = await client.create_conversation(
709
+ user_id="user_123"
710
+ )
711
+ print(f"Created conversation: {conversation.conversation_id}")
712
+
713
+ # Create a conversation with all options
714
+ conversation = await client.create_conversation(
715
+ user_id="user_123",
716
+ title="My Research Session",
717
+ deployment_id="deployment_456",
718
+ data_source_files={"documents": ["doc1.pdf", "doc2.txt"]},
719
+ is_bookmarked=True
720
+ )
721
+ print(f"Created bookmarked conversation: {conversation.conversation_id}")
722
+ ```
723
+
724
+ Note:
725
+ The user_id is required and must correspond to a valid user in the system.
726
+ All other parameters are optional and can be set to None or their default values.
727
+ """
728
+ request_data = self._pre_create_conversation(
729
+ user_id=user_id,
730
+ title=title,
731
+ deployment_id=deployment_id,
732
+ data_source_files=data_source_files,
733
+ is_bookmarked=is_bookmarked,
734
+ correlation_id=correlation_id,
735
+ api_version=ApiVersion.V1.value,
736
+ )
737
+ resp = await self._make_request("POST", request_data)
738
+
739
+ return CreateConversationResponse(**resp)
@@ -7,7 +7,8 @@ import loguru
7
7
 
8
8
  from ..constants import DEFAULT_BASE_URL, DEFAULT_TIMEOUT
9
9
  from ..logs import configure_logging, set_correlation_id
10
- from ..types import ApiVersion, RequestData
10
+ from ..types._api_version import ApiVersion
11
+ from ..types._request_data import RequestData
11
12
 
12
13
 
13
14
  class AiriaBaseClient:
@@ -36,7 +37,9 @@ class AiriaBaseClient:
36
37
  custom_logger: Optional custom logger object to use for logging. If not provided, will use a default logger when `log_requests` is True.
37
38
  """
38
39
  # Resolve authentication credentials
39
- self.api_key, self.bearer_token = self.__class__._resolve_auth_credentials(api_key, bearer_token)
40
+ self.api_key, self.bearer_token = self.__class__._resolve_auth_credentials(
41
+ api_key, bearer_token
42
+ )
40
43
 
41
44
  # Store configuration
42
45
  self.base_url = base_url
@@ -47,7 +50,9 @@ class AiriaBaseClient:
47
50
  self.logger = configure_logging() if custom_logger is None else custom_logger
48
51
 
49
52
  @staticmethod
50
- def _resolve_auth_credentials(api_key: Optional[str] = None, bearer_token: Optional[str] = None):
53
+ def _resolve_auth_credentials(
54
+ api_key: Optional[str] = None, bearer_token: Optional[str] = None
55
+ ):
51
56
  """
52
57
  Resolve authentication credentials from parameters and environment variables.
53
58
 
@@ -66,20 +71,20 @@ class AiriaBaseClient:
66
71
  raise ValueError(
67
72
  "Cannot provide both api_key and bearer_token. Please use only one authentication method."
68
73
  )
69
-
74
+
70
75
  # If bearer token is explicitly provided, use it exclusively
71
76
  if bearer_token:
72
77
  return None, bearer_token
73
-
78
+
74
79
  # If API key is explicitly provided, use it exclusively
75
80
  if api_key:
76
81
  return api_key, None
77
-
82
+
78
83
  # If neither is provided explicitly, fall back to environment variable
79
84
  resolved_api_key = os.environ.get("AIRIA_API_KEY")
80
85
  if resolved_api_key:
81
86
  return resolved_api_key, None
82
-
87
+
83
88
  # No authentication method found
84
89
  raise ValueError(
85
90
  "Authentication required. Provide either api_key (or set AIRIA_API_KEY environment variable) or bearer_token."
@@ -244,6 +249,36 @@ class AiriaBaseClient:
244
249
 
245
250
  return request_data
246
251
 
252
+ def _pre_create_conversation(
253
+ self,
254
+ user_id: str,
255
+ title: Optional[str] = None,
256
+ deployment_id: Optional[str] = None,
257
+ data_source_files: Dict[str, Any] = {},
258
+ is_bookmarked: bool = False,
259
+ correlation_id: Optional[str] = None,
260
+ api_version: str = ApiVersion.V1.value,
261
+ ):
262
+ if api_version not in ApiVersion.as_list():
263
+ raise ValueError(
264
+ f"Invalid API version: {api_version}. Valid versions are: {', '.join(ApiVersion.as_list())}"
265
+ )
266
+ url = urljoin(self.base_url, f"{api_version}/Conversations")
267
+
268
+ payload = {
269
+ "userId": user_id,
270
+ "title": title,
271
+ "deploymentId": deployment_id,
272
+ "dataSourceFiles": data_source_files,
273
+ "isBookmarked": is_bookmarked,
274
+ }
275
+
276
+ request_data = self._prepare_request(
277
+ url=url, payload=payload, correlation_id=correlation_id
278
+ )
279
+
280
+ return request_data
281
+
247
282
  def _pre_get_projects(
248
283
  self,
249
284
  correlation_id: Optional[str] = None,
@@ -1,20 +1,24 @@
1
1
  from typing import Any, Dict, List, Literal, Optional, overload
2
- from urllib.parse import urljoin
3
2
 
4
3
  import loguru
5
4
  import requests
6
5
 
7
- from ..constants import DEFAULT_ANTHROPIC_GATEWAY_URL, DEFAULT_BASE_URL, DEFAULT_OPENAI_GATEWAY_URL, DEFAULT_TIMEOUT
6
+ from ..constants import (
7
+ DEFAULT_ANTHROPIC_GATEWAY_URL,
8
+ DEFAULT_BASE_URL,
9
+ DEFAULT_OPENAI_GATEWAY_URL,
10
+ DEFAULT_TIMEOUT,
11
+ )
8
12
  from ..exceptions import AiriaAPIError
9
- from ..types import (
10
- ApiVersion,
13
+ from ..types._api_version import ApiVersion
14
+ from ..types._request_data import RequestData
15
+ from ..types.api import (
16
+ CreateConversationResponse,
11
17
  GetPipelineConfigResponse,
12
18
  PipelineExecutionDebugResponse,
13
19
  PipelineExecutionResponse,
14
- PipelineExecutionV1StreamedResponse,
15
- PipelineExecutionV2StreamedResponse,
20
+ PipelineExecutionStreamedResponse,
16
21
  ProjectItem,
17
- RequestData,
18
22
  )
19
23
  from ..utils.sse_parser import parse_sse_stream_chunked
20
24
  from .base_client import AiriaBaseClient
@@ -81,7 +85,13 @@ class AiriaClient(AiriaBaseClient):
81
85
  """
82
86
  from openai import OpenAI
83
87
 
84
- client = cls(base_url=base_url, api_key=api_key, timeout=timeout, log_requests=log_requests, custom_logger=custom_logger)
88
+ client = cls(
89
+ base_url=base_url,
90
+ api_key=api_key,
91
+ timeout=timeout,
92
+ log_requests=log_requests,
93
+ custom_logger=custom_logger,
94
+ )
85
95
  cls.openai = OpenAI(
86
96
  api_key=client.api_key,
87
97
  base_url=gateway_url,
@@ -115,7 +125,13 @@ class AiriaClient(AiriaBaseClient):
115
125
  """
116
126
  from anthropic import Anthropic
117
127
 
118
- client = cls(base_url=base_url, api_key=api_key, timeout=timeout, log_requests=log_requests, custom_logger=custom_logger)
128
+ client = cls(
129
+ base_url=base_url,
130
+ api_key=api_key,
131
+ timeout=timeout,
132
+ log_requests=log_requests,
133
+ custom_logger=custom_logger,
134
+ )
119
135
  cls.anthropic = Anthropic(
120
136
  api_key=client.api_key,
121
137
  base_url=gateway_url,
@@ -177,7 +193,9 @@ class AiriaClient(AiriaBaseClient):
177
193
  if self.api_key and self.api_key in sanitized_message:
178
194
  sanitized_message = sanitized_message.replace(self.api_key, "[REDACTED]")
179
195
  if self.bearer_token and self.bearer_token in sanitized_message:
180
- sanitized_message = sanitized_message.replace(self.bearer_token, "[REDACTED]")
196
+ sanitized_message = sanitized_message.replace(
197
+ self.bearer_token, "[REDACTED]"
198
+ )
181
199
 
182
200
  # Raise custom exception with status code and sanitized message
183
201
  raise AiriaAPIError(
@@ -309,7 +327,6 @@ class AiriaClient(AiriaBaseClient):
309
327
  additional_info: Optional[List[Any]] = None,
310
328
  prompt_variables: Optional[Dict[str, Any]] = None,
311
329
  correlation_id: Optional[str] = None,
312
- api_version: str = ApiVersion.V2.value,
313
330
  ) -> PipelineExecutionResponse: ...
314
331
 
315
332
  @overload
@@ -332,7 +349,6 @@ class AiriaClient(AiriaBaseClient):
332
349
  additional_info: Optional[List[Any]] = None,
333
350
  prompt_variables: Optional[Dict[str, Any]] = None,
334
351
  correlation_id: Optional[str] = None,
335
- api_version: str = ApiVersion.V2.value,
336
352
  ) -> PipelineExecutionDebugResponse: ...
337
353
 
338
354
  @overload
@@ -355,31 +371,7 @@ class AiriaClient(AiriaBaseClient):
355
371
  additional_info: Optional[List[Any]] = None,
356
372
  prompt_variables: Optional[Dict[str, Any]] = None,
357
373
  correlation_id: Optional[str] = None,
358
- api_version: Literal["v2"] = ApiVersion.V2.value,
359
- ) -> PipelineExecutionV2StreamedResponse: ...
360
-
361
- @overload
362
- def execute_pipeline(
363
- self,
364
- pipeline_id: str,
365
- user_input: str,
366
- debug: bool = False,
367
- user_id: Optional[str] = None,
368
- conversation_id: Optional[str] = None,
369
- async_output: Literal[True] = True,
370
- include_tools_response: bool = False,
371
- images: Optional[List[str]] = None,
372
- files: Optional[List[str]] = None,
373
- data_source_folders: Optional[Dict[str, Any]] = None,
374
- data_source_files: Optional[Dict[str, Any]] = None,
375
- in_memory_messages: Optional[List[Dict[str, str]]] = None,
376
- current_date_time: Optional[str] = None,
377
- save_history: bool = True,
378
- additional_info: Optional[List[Any]] = None,
379
- prompt_variables: Optional[Dict[str, Any]] = None,
380
- correlation_id: Optional[str] = None,
381
- api_version: Literal["v1"] = ApiVersion.V1.value,
382
- ) -> PipelineExecutionV1StreamedResponse: ...
374
+ ) -> PipelineExecutionStreamedResponse: ...
383
375
 
384
376
  def execute_pipeline(
385
377
  self,
@@ -400,7 +392,6 @@ class AiriaClient(AiriaBaseClient):
400
392
  additional_info: Optional[List[Any]] = None,
401
393
  prompt_variables: Optional[Dict[str, Any]] = None,
402
394
  correlation_id: Optional[str] = None,
403
- api_version: str = ApiVersion.V2.value,
404
395
  ):
405
396
  """
406
397
  Execute a pipeline with the provided input.
@@ -424,7 +415,6 @@ class AiriaClient(AiriaBaseClient):
424
415
  prompt_variables: Optional variables to be used in the prompt.
425
416
  correlation_id: Optional correlation ID for request tracing. If not provided,
426
417
  one will be generated automatically.
427
- api_version: API version to use. Default is `v2`
428
418
 
429
419
  Returns:
430
420
  The API response as a dictionary.
@@ -459,12 +449,11 @@ class AiriaClient(AiriaBaseClient):
459
449
  additional_info=additional_info,
460
450
  prompt_variables=prompt_variables,
461
451
  correlation_id=correlation_id,
462
- api_version=api_version,
452
+ api_version=ApiVersion.V2.value,
463
453
  )
464
- stream = async_output and api_version == ApiVersion.V2.value
465
454
  resp = (
466
455
  self._make_request_stream("POST", request_data)
467
- if stream
456
+ if async_output
468
457
  else self._make_request("POST", request_data)
469
458
  )
470
459
 
@@ -473,26 +462,9 @@ class AiriaClient(AiriaBaseClient):
473
462
  return PipelineExecutionResponse(**resp)
474
463
  return PipelineExecutionDebugResponse(**resp)
475
464
 
476
- if api_version == ApiVersion.V1.value:
477
- url = urljoin(
478
- self.base_url, f"{api_version}/StreamSocketConfig/GenerateUrl"
479
- )
480
- request_data = self._prepare_request(
481
- url,
482
- payload={"socketIdentifier": resp},
483
- correlation_id=request_data.headers["X-Correlation-ID"],
484
- )
485
- resp = self._make_request("POST", request_data)
486
-
487
- return PipelineExecutionV1StreamedResponse(**resp)
465
+ return PipelineExecutionStreamedResponse(stream=resp)
488
466
 
489
- return PipelineExecutionV2StreamedResponse(stream=resp)
490
-
491
- def get_projects(
492
- self,
493
- correlation_id: Optional[str] = None,
494
- api_version: str = ApiVersion.V1.value,
495
- ) -> List[ProjectItem]:
467
+ def get_projects(self, correlation_id: Optional[str] = None) -> List[ProjectItem]:
496
468
  """
497
469
  Retrieve a list of all projects accessible to the authenticated user.
498
470
 
@@ -503,8 +475,6 @@ class AiriaClient(AiriaBaseClient):
503
475
  Args:
504
476
  correlation_id (str, optional): A unique identifier for request tracing
505
477
  and logging. If not provided, one will be automatically generated.
506
- api_version (str, optional): The API version to use for the request.
507
- Defaults to "v1". Valid versions are defined in ApiVersion enum.
508
478
 
509
479
  Returns:
510
480
  List[ProjectItem]: A list of ProjectItem objects containing project
@@ -512,7 +482,6 @@ class AiriaClient(AiriaBaseClient):
512
482
  or found.
513
483
 
514
484
  Raises:
515
- ValueError: If the provided api_version is not valid.
516
485
  AiriaAPIError: If the API request fails, including cases where:
517
486
  - Authentication fails (401)
518
487
  - Access is forbidden (403)
@@ -541,7 +510,7 @@ class AiriaClient(AiriaBaseClient):
541
510
  access to.
542
511
  """
543
512
  request_data = self._pre_get_projects(
544
- correlation_id=correlation_id, api_version=api_version
513
+ correlation_id=correlation_id, api_version=ApiVersion.V1.value
545
514
  )
546
515
  resp = self._make_request("GET", request_data)
547
516
 
@@ -551,10 +520,7 @@ class AiriaClient(AiriaBaseClient):
551
520
  return [ProjectItem(**item) for item in resp["items"]]
552
521
 
553
522
  def get_active_pipelines_ids(
554
- self,
555
- project_id: Optional[str] = None,
556
- correlation_id: Optional[str] = None,
557
- api_version: str = ApiVersion.V1.value,
523
+ self, project_id: Optional[str] = None, correlation_id: Optional[str] = None
558
524
  ) -> List[str]:
559
525
  """
560
526
  Retrieve a list of active pipeline IDs.
@@ -568,15 +534,12 @@ class AiriaClient(AiriaBaseClient):
568
534
  accessible to the authenticated user.
569
535
  correlation_id (str, optional): A unique identifier for request tracing
570
536
  and logging. If not provided, one will be automatically generated.
571
- api_version (str, optional): The API version to use for the request.
572
- Defaults to "v1". Valid versions are defined in ApiVersion enum.
573
537
 
574
538
  Returns:
575
539
  List[str]: A list of pipeline IDs that are currently active. Returns an
576
540
  empty list if no active pipelines are found.
577
541
 
578
542
  Raises:
579
- ValueError: If the provided api_version is not valid.
580
543
  AiriaAPIError: If the API request fails, including cases where:
581
544
  - The project_id doesn't exist (404)
582
545
  - Authentication fails (401)
@@ -607,7 +570,7 @@ class AiriaClient(AiriaBaseClient):
607
570
  request_data = self._pre_get_active_pipelines_ids(
608
571
  project_id=project_id,
609
572
  correlation_id=correlation_id,
610
- api_version=api_version,
573
+ api_version=ApiVersion.V1.value,
611
574
  )
612
575
  resp = self._make_request("GET", request_data)
613
576
 
@@ -619,10 +582,7 @@ class AiriaClient(AiriaBaseClient):
619
582
  return pipeline_ids
620
583
 
621
584
  def get_pipeline_config(
622
- self,
623
- pipeline_id: str,
624
- correlation_id: Optional[str] = None,
625
- api_version: str = ApiVersion.V1.value,
585
+ self, pipeline_id: str, correlation_id: Optional[str] = None
626
586
  ) -> GetPipelineConfigResponse:
627
587
  """
628
588
  Retrieve configuration details for a specific pipeline.
@@ -633,8 +593,6 @@ class AiriaClient(AiriaBaseClient):
633
593
  Args:
634
594
  pipeline_id (str): The unique identifier of the pipeline to retrieve
635
595
  configuration for.
636
- api_version (str, optional): The API version to use for the request.
637
- Defaults to "v1". Valid versions are defined in ApiVersion enum.
638
596
  correlation_id (str, optional): A unique identifier for request tracing
639
597
  and logging. If not provided, one will be automatically generated.
640
598
 
@@ -643,7 +601,6 @@ class AiriaClient(AiriaBaseClient):
643
601
  configuration.
644
602
 
645
603
  Raises:
646
- ValueError: If the provided api_version is not valid.
647
604
  AiriaAPIError: If the API request fails, including cases where:
648
605
  - The pipeline_id doesn't exist (404)
649
606
  - Authentication fails (401)
@@ -674,8 +631,88 @@ class AiriaClient(AiriaBaseClient):
674
631
  request_data = self._pre_get_pipeline_config(
675
632
  pipeline_id=pipeline_id,
676
633
  correlation_id=correlation_id,
677
- api_version=api_version,
634
+ api_version=ApiVersion.V1.value,
678
635
  )
679
636
  resp = self._make_request("GET", request_data)
680
637
 
681
638
  return GetPipelineConfigResponse(**resp)
639
+
640
+ def create_conversation(
641
+ self,
642
+ user_id: str,
643
+ title: Optional[str] = None,
644
+ deployment_id: Optional[str] = None,
645
+ data_source_files: Dict[str, Any] = {},
646
+ is_bookmarked: bool = False,
647
+ correlation_id: Optional[str] = None,
648
+ ) -> CreateConversationResponse:
649
+ """
650
+ Create a new conversation.
651
+
652
+ Args:
653
+ user_id (str): The unique identifier of the user creating the conversation.
654
+ title (str, optional): The title for the conversation. If not provided,
655
+ the conversation will be created without a title.
656
+ deployment_id (str, optional): The unique identifier of the deployment
657
+ to associate with the conversation. If not provided, the conversation
658
+ will not be associated with any specific deployment.
659
+ data_source_files (dict): Configuration for data source files
660
+ to be associated with the conversation. If not provided, no data
661
+ source files will be associated.
662
+ is_bookmarked (bool): Whether the conversation should be bookmarked.
663
+ Defaults to False.
664
+ correlation_id (str, optional): A unique identifier for request tracing
665
+ and logging. If not provided, one will be automatically generated.
666
+
667
+ Returns:
668
+ CreateConversationResponse: A response object containing the created
669
+ conversation details including its ID, creation timestamp, and
670
+ all provided parameters.
671
+
672
+ Raises:
673
+ AiriaAPIError: If the API request fails, including cases where:
674
+ - The user_id doesn't exist (404)
675
+ - The deployment_id is invalid (404)
676
+ - Authentication fails (401)
677
+ - Access is forbidden (403)
678
+ - Server errors (5xx)
679
+
680
+ Example:
681
+ ```python
682
+ from airia import AiriaClient
683
+
684
+ client = AiriaClient(api_key="your_api_key")
685
+
686
+ # Create a basic conversation
687
+ conversation = client.create_conversation(
688
+ user_id="user_123"
689
+ )
690
+ print(f"Created conversation: {conversation.id}")
691
+
692
+ # Create a conversation with all options
693
+ conversation = client.create_conversation(
694
+ user_id="user_123",
695
+ title="My Research Session",
696
+ deployment_id="deployment_456",
697
+ data_source_files={"documents": ["doc1.pdf", "doc2.txt"]},
698
+ is_bookmarked=True
699
+ )
700
+ print(f"Created bookmarked conversation: {conversation.id}")
701
+ ```
702
+
703
+ Note:
704
+ The user_id is required and must correspond to a valid user in the system.
705
+ All other parameters are optional and can be set to None or their default values.
706
+ """
707
+ request_data = self._pre_create_conversation(
708
+ user_id=user_id,
709
+ title=title,
710
+ deployment_id=deployment_id,
711
+ data_source_files=data_source_files,
712
+ is_bookmarked=is_bookmarked,
713
+ correlation_id=correlation_id,
714
+ api_version=ApiVersion.V1.value,
715
+ )
716
+ resp = self._make_request("POST", request_data)
717
+
718
+ return CreateConversationResponse(**resp)
@@ -0,0 +1,19 @@
1
+ from .get_projects import ProjectItem
2
+ from .get_pipeline_config import GetPipelineConfigResponse
3
+ from .pipeline_execution import (
4
+ PipelineExecutionDebugResponse,
5
+ PipelineExecutionResponse,
6
+ PipelineExecutionAsyncStreamedResponse,
7
+ PipelineExecutionStreamedResponse,
8
+ )
9
+ from .conversations import CreateConversationResponse
10
+
11
+ __all__ = [
12
+ "PipelineExecutionDebugResponse",
13
+ "PipelineExecutionResponse",
14
+ "PipelineExecutionStreamedResponse",
15
+ "PipelineExecutionAsyncStreamedResponse",
16
+ "GetPipelineConfigResponse",
17
+ "ProjectItem",
18
+ "CreateConversationResponse",
19
+ ]
@@ -0,0 +1,14 @@
1
+ from typing import Optional
2
+
3
+ from pydantic import BaseModel, Field
4
+
5
+
6
+ class CreateConversationResponse(BaseModel):
7
+ user_id: str = Field(alias="userId")
8
+ conversation_id: str = Field(alias="conversationId")
9
+ websocket_url: str = Field(alias="websocketUrl")
10
+ deployment_id: str = Field(alias="deploymentId")
11
+ icon_id: Optional[str] = Field(None, alias="iconId")
12
+ icon_url: Optional[str] = Field(None, alias="iconUrl")
13
+ description: Optional[str] = None
14
+ space_name: Optional[str] = Field(None, alias="spaceName")
@@ -1,33 +1,29 @@
1
1
  from typing import Any, AsyncIterator, Dict, Iterator
2
2
 
3
- from pydantic import BaseModel, ConfigDict
3
+ from pydantic import BaseModel, ConfigDict, Field
4
4
 
5
- from ..sse_messages import SSEMessage
5
+ from ..sse import SSEMessage
6
6
 
7
7
 
8
8
  class PipelineExecutionResponse(BaseModel):
9
9
  result: str
10
10
  report: None
11
- isBackupPipeline: bool
11
+ is_backup_pipeline: bool = Field(alias="isBackupPipeline")
12
12
 
13
13
 
14
14
  class PipelineExecutionDebugResponse(BaseModel):
15
15
  result: str
16
16
  report: Dict[str, Any]
17
- isBackupPipeline: bool
17
+ is_backup_pipeline: bool = Field(alias="isBackupPipeline")
18
18
 
19
19
 
20
- class PipelineExecutionV1StreamedResponse(BaseModel):
21
- webSocketUrl: str
22
-
23
-
24
- class PipelineExecutionV2StreamedResponse(BaseModel):
20
+ class PipelineExecutionStreamedResponse(BaseModel):
25
21
  model_config = ConfigDict(arbitrary_types_allowed=True)
26
22
 
27
23
  stream: Iterator[SSEMessage]
28
24
 
29
25
 
30
- class PipelineExecutionV2AsyncStreamedResponse(BaseModel):
26
+ class PipelineExecutionAsyncStreamedResponse(BaseModel):
31
27
  model_config = ConfigDict(arbitrary_types_allowed=True)
32
28
 
33
29
  stream: AsyncIterator[SSEMessage]
@@ -1,15 +1,6 @@
1
- from .api.get_projects import ProjectItem
2
- from .api.get_pipeline_config import GetPipelineConfigResponse
3
- from .api.pipeline_execution import (
4
- PipelineExecutionDebugResponse,
5
- PipelineExecutionResponse,
6
- PipelineExecutionV1StreamedResponse,
7
- PipelineExecutionV2AsyncStreamedResponse,
8
- PipelineExecutionV2StreamedResponse,
9
- )
10
- from .api_version import ApiVersion
11
- from .request_data import RequestData
12
1
  from .sse_messages import (
2
+ SSEDict,
3
+ SSEMessage,
13
4
  AgentAgentCardMessage,
14
5
  AgentAgentCardStreamEndMessage,
15
6
  AgentAgentCardStreamErrorMessage,
@@ -37,15 +28,8 @@ from .sse_messages import (
37
28
  )
38
29
 
39
30
  __all__ = [
40
- "ApiVersion",
41
- "PipelineExecutionDebugResponse",
42
- "PipelineExecutionResponse",
43
- "PipelineExecutionV1StreamedResponse",
44
- "PipelineExecutionV2AsyncStreamedResponse",
45
- "PipelineExecutionV2StreamedResponse",
46
- "GetPipelineConfigResponse",
47
- "ProjectItem",
48
- "RequestData",
31
+ "SSEDict",
32
+ "SSEMessage",
49
33
  "AgentPingMessage",
50
34
  "AgentStartMessage",
51
35
  "AgentEndMessage",
airia/utils/sse_parser.py CHANGED
@@ -2,7 +2,7 @@ import json
2
2
  import re
3
3
  from typing import AsyncIterable, AsyncIterator, Iterable, Iterator
4
4
 
5
- from ..types.sse_messages import SSEDict, SSEMessage
5
+ from ..types.sse import SSEDict, SSEMessage
6
6
 
7
7
 
8
8
  def _to_snake_case(name: str):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: airia
3
- Version: 0.1.10
3
+ Version: 0.1.11
4
4
  Summary: Python SDK for Airia API
5
5
  Author-email: Airia LLC <support@airia.com>
6
6
  License: MIT
@@ -329,7 +329,7 @@ When using streaming mode (`async_output=True`), the API returns Server-Sent Eve
329
329
 
330
330
  ### Available Message Types
331
331
 
332
- The streaming response includes various message types defined in `airia.types`. Here are the key ones:
332
+ The streaming response includes various message types defined in `airia.types.sse`. Here are the key ones:
333
333
 
334
334
  - `AgentModelStreamFragmentMessage` - Contains actual LLM output chunks
335
335
  - `AgentModelStreamStartMessage` - Indicates LLM streaming has started
@@ -414,6 +414,88 @@ config = client.get_pipeline_config(pipeline_id="your_pipeline_id")
414
414
  print(f"Pipeline Name: {config.agent.name}")
415
415
  ```
416
416
 
417
+ ## Conversation Management
418
+
419
+ You can create and manage conversations using the `create_conversation` method. Conversations allow you to organize and persist interactions within the Airia platform.
420
+
421
+ ### Creating Conversations
422
+
423
+ #### Synchronous Usage
424
+
425
+ ```python
426
+ from airia import AiriaClient
427
+
428
+ client = AiriaClient(api_key="your_api_key")
429
+ # Or with bearer token: client = AiriaClient.with_bearer_token(bearer_token="your_bearer_token")
430
+
431
+ # Create a basic conversation
432
+ conversation = client.create_conversation(
433
+ user_id="user_123"
434
+ )
435
+ print(f"Created conversation: {conversation.conversation_id}")
436
+ print(f"WebSocket URL: {conversation.websocket_url}")
437
+
438
+ # Create a conversation with all options
439
+ conversation = client.create_conversation(
440
+ user_id="user_123",
441
+ title="My Research Session",
442
+ deployment_id="deployment_456",
443
+ data_source_files={"documents": ["doc1.pdf", "doc2.txt"]},
444
+ is_bookmarked=True
445
+ )
446
+ print(f"Created bookmarked conversation: {conversation.conversation_id}")
447
+ ```
448
+
449
+ #### Asynchronous Usage
450
+
451
+ ```python
452
+ import asyncio
453
+ from airia import AiriaAsyncClient
454
+
455
+ async def main():
456
+ client = AiriaAsyncClient(api_key="your_api_key")
457
+ # Or with bearer token: client = AiriaAsyncClient.with_bearer_token(bearer_token="your_bearer_token")
458
+
459
+ # Create a basic conversation
460
+ conversation = await client.create_conversation(
461
+ user_id="user_123"
462
+ )
463
+ print(f"Created conversation: {conversation.conversation_id}")
464
+
465
+ # Create a conversation with all options
466
+ conversation = await client.create_conversation(
467
+ user_id="user_123",
468
+ title="My Research Session",
469
+ deployment_id="deployment_456",
470
+ data_source_files={"documents": ["doc1.pdf", "doc2.txt"]},
471
+ is_bookmarked=True
472
+ )
473
+ print(f"Created bookmarked conversation: {conversation.conversation_id}")
474
+
475
+ asyncio.run(main())
476
+ ```
477
+
478
+ ### Conversation Parameters
479
+
480
+ - **user_id** (required): The unique identifier of the user creating the conversation
481
+ - **title** (optional): A descriptive title for the conversation
482
+ - **deployment_id** (optional): The unique identifier of the deployment to associate with the conversation
483
+ - **data_source_files** (optional): Configuration for data source files to be associated with the conversation
484
+ - **is_bookmarked** (optional): Whether the conversation should be bookmarked (defaults to False)
485
+ - **correlation_id** (optional): A unique identifier for request tracing and logging
486
+
487
+ ### Response Fields
488
+
489
+ The `create_conversation` method returns a `CreateConversationResponse` object containing:
490
+
491
+ - **conversation_id**: The unique identifier of the created conversation
492
+ - **user_id**: The user ID associated with the conversation
493
+ - **websocket_url**: The WebSocket URL for real-time communication
494
+ - **deployment_id**: The deployment ID associated with the conversation
495
+ - **icon_id** and **icon_url**: Optional conversation icon information
496
+ - **description**: Optional conversation description
497
+ - **space_name**: Optional workspace or space name
498
+
417
499
  ## Authentication Methods
418
500
 
419
501
  Airia supports two authentication methods:
@@ -0,0 +1,23 @@
1
+ airia/__init__.py,sha256=T39gO8E5T5zxlw-JP78ruxOu7-LeKOJCJzz6t40kdQo,231
2
+ airia/constants.py,sha256=fHZNUbvEP_x567uFI1qnA2DT8dOzQ07ojdawdPwIrIA,292
3
+ airia/exceptions.py,sha256=4Z55n-cRJrtTa5-pZBIK2oZD4-Z99aUtKx_kfTFYY5o,1146
4
+ airia/logs.py,sha256=17YZ4IuzOF0m5bgofj9-QYlJ2BYR2kRZbBVQfFSLFEk,5441
5
+ airia/client/__init__.py,sha256=6gSQ9bl7j79q1HPE0o5py3IRdkwWWuU_7J4h05Dd2o8,127
6
+ airia/client/async_client.py,sha256=7EOYRWT_DWTXKZuvWr3n9xkvws4DseiiCvhhpAWVKQs,29600
7
+ airia/client/base_client.py,sha256=qG78HclndjAGsn2DLEdvog-V7AR1yt7bEakSYDsi-xM,10898
8
+ airia/client/sync_client.py,sha256=AwJKBaKuJvo_2Z-0dfZva_9BvZ3lFUetwoRmuFGEw94,28579
9
+ airia/types/_api_version.py,sha256=Uzom6O2ZG92HN_Z2h-lTydmO2XYX9RVs4Yi4DJmXytE,255
10
+ airia/types/_request_data.py,sha256=WUvf7fixhBPWLxKbc2VY3Y32BOUbLmXktY58mINuq3A,243
11
+ airia/types/api/__init__.py,sha256=ay9ncmHuyfTZtwwUELcv1U2WalQQFqSBfL-XoRnGw04,596
12
+ airia/types/api/conversations.py,sha256=EYNp1XgydFSFk-f_FhDei41Gw155vUBUYI0Pwn9yDcU,535
13
+ airia/types/api/get_pipeline_config.py,sha256=BLz4HS94EYmdwq37KHda2XJ5KV7tJPP43jHmPbO8-NE,6647
14
+ airia/types/api/get_projects.py,sha256=kWmlN0VMgmQ9WP9ms245MAAEmsHhkpwWUQJ_XJrhIRI,1362
15
+ airia/types/api/pipeline_execution.py,sha256=TBtdpPX3bJnmML7wcrHBRZjN4zAHQXctdOjQCXBdyrU,740
16
+ airia/types/sse/__init__.py,sha256=BVrFyLdRI7-eeFLtbDIingLU5L6kQR1yyu4hXVRlEuE,1581
17
+ airia/types/sse/sse_messages.py,sha256=wSdowY07AjEO8R73SJrFPJtkfIBS4satUpNytjKQq2U,8305
18
+ airia/utils/sse_parser.py,sha256=Zij-BEBdNtc_RrSppeKCLX0pmiFNdgFGHDW7_KiDz50,2782
19
+ airia-0.1.11.dist-info/licenses/LICENSE,sha256=R3ClUMMKPRItIcZ0svzyj2taZZnFYw568YDNzN9KQ1Q,1066
20
+ airia-0.1.11.dist-info/METADATA,sha256=nwpvwFbP8VGNqpvnYr2OzHxUMGMFIiKV8VPwjxiw7Ic,19691
21
+ airia-0.1.11.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
22
+ airia-0.1.11.dist-info/top_level.txt,sha256=qUQEKfs_hdOYTwjKj1JZbRhS5YeXDNaKQaVTrzabS6w,6
23
+ airia-0.1.11.dist-info/RECORD,,
@@ -1,21 +0,0 @@
1
- airia/__init__.py,sha256=T39gO8E5T5zxlw-JP78ruxOu7-LeKOJCJzz6t40kdQo,231
2
- airia/constants.py,sha256=fHZNUbvEP_x567uFI1qnA2DT8dOzQ07ojdawdPwIrIA,292
3
- airia/exceptions.py,sha256=4Z55n-cRJrtTa5-pZBIK2oZD4-Z99aUtKx_kfTFYY5o,1146
4
- airia/logs.py,sha256=17YZ4IuzOF0m5bgofj9-QYlJ2BYR2kRZbBVQfFSLFEk,5441
5
- airia/client/__init__.py,sha256=6gSQ9bl7j79q1HPE0o5py3IRdkwWWuU_7J4h05Dd2o8,127
6
- airia/client/async_client.py,sha256=9MJI4wVwFOcXVaeGN_JQjqnUO0zE12kbXJLTVP1rOe0,28599
7
- airia/client/base_client.py,sha256=04l7qQ-pvcq6bFOEMPh0x_6izJGTl0VnAxcFQgcFhOk,9859
8
- airia/client/sync_client.py,sha256=RdCOyzxPoEsj_x3JibmU4yPIqs07b_izyJ5PmbAj6Uw,27656
9
- airia/types/__init__.py,sha256=Tr1xm5bQrE7yvw0Bo-goNmeh7Rl0QiXUabg7dsJ55dk,2227
10
- airia/types/api_version.py,sha256=Uzom6O2ZG92HN_Z2h-lTydmO2XYX9RVs4Yi4DJmXytE,255
11
- airia/types/request_data.py,sha256=WUvf7fixhBPWLxKbc2VY3Y32BOUbLmXktY58mINuq3A,243
12
- airia/types/sse_messages.py,sha256=wSdowY07AjEO8R73SJrFPJtkfIBS4satUpNytjKQq2U,8305
13
- airia/types/api/get_pipeline_config.py,sha256=BLz4HS94EYmdwq37KHda2XJ5KV7tJPP43jHmPbO8-NE,6647
14
- airia/types/api/get_projects.py,sha256=kWmlN0VMgmQ9WP9ms245MAAEmsHhkpwWUQJ_XJrhIRI,1362
15
- airia/types/api/pipeline_execution.py,sha256=4zGM5W4aXiAibAdgWQCIZBC_blW6QYAlAHoVUMbnCF0,752
16
- airia/utils/sse_parser.py,sha256=h3TcBvXqUIngTqgY6yYxZCGLnC1eI6meQzYr13aFAb8,2791
17
- airia-0.1.10.dist-info/licenses/LICENSE,sha256=R3ClUMMKPRItIcZ0svzyj2taZZnFYw568YDNzN9KQ1Q,1066
18
- airia-0.1.10.dist-info/METADATA,sha256=xh195iJ9x3GO3kv2tqX2A9yj5lzjsvvi5dJGymn9L1U,16682
19
- airia-0.1.10.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
20
- airia-0.1.10.dist-info/top_level.txt,sha256=qUQEKfs_hdOYTwjKj1JZbRhS5YeXDNaKQaVTrzabS6w,6
21
- airia-0.1.10.dist-info/RECORD,,
File without changes
File without changes
File without changes
File without changes