sarvamai 0.1.4a0__py3-none-any.whl → 0.1.5a0__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.
- sarvamai/chat/raw_client.py +0 -2
- sarvamai/client.py +20 -3
- sarvamai/core/client_wrapper.py +18 -15
- sarvamai/environment.py +3 -10
- sarvamai/speech_to_text/raw_client.py +0 -4
- sarvamai/text/raw_client.py +0 -6
- sarvamai/text_to_speech/raw_client.py +0 -2
- {sarvamai-0.1.4a0.dist-info → sarvamai-0.1.5a0.dist-info}/METADATA +1 -1
- {sarvamai-0.1.4a0.dist-info → sarvamai-0.1.5a0.dist-info}/RECORD +10 -10
- {sarvamai-0.1.4a0.dist-info → sarvamai-0.1.5a0.dist-info}/WHEEL +0 -0
sarvamai/chat/raw_client.py
CHANGED
|
@@ -111,7 +111,6 @@ class RawChatClient:
|
|
|
111
111
|
"""
|
|
112
112
|
_response = self._client_wrapper.httpx_client.request(
|
|
113
113
|
"v1/chat/completions",
|
|
114
|
-
base_url=self._client_wrapper.get_environment().base,
|
|
115
114
|
method="POST",
|
|
116
115
|
json={
|
|
117
116
|
"messages": convert_and_respect_annotation_metadata(
|
|
@@ -292,7 +291,6 @@ class AsyncRawChatClient:
|
|
|
292
291
|
"""
|
|
293
292
|
_response = await self._client_wrapper.httpx_client.request(
|
|
294
293
|
"v1/chat/completions",
|
|
295
|
-
base_url=self._client_wrapper.get_environment().base,
|
|
296
294
|
method="POST",
|
|
297
295
|
json={
|
|
298
296
|
"messages": convert_and_respect_annotation_metadata(
|
sarvamai/client.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# This file was auto-generated by Fern from our API Definition.
|
|
2
2
|
|
|
3
|
-
from .environment import SarvamAIEnvironment
|
|
4
3
|
import typing
|
|
4
|
+
from .environment import SarvamAIEnvironment
|
|
5
5
|
import os
|
|
6
6
|
import httpx
|
|
7
7
|
from .core.api_error import ApiError
|
|
@@ -23,6 +23,9 @@ class SarvamAI:
|
|
|
23
23
|
|
|
24
24
|
Parameters
|
|
25
25
|
----------
|
|
26
|
+
base_url : typing.Optional[str]
|
|
27
|
+
The base url to use for requests from the client.
|
|
28
|
+
|
|
26
29
|
environment : SarvamAIEnvironment
|
|
27
30
|
The environment to use for requests from the client. from .environment import SarvamAIEnvironment
|
|
28
31
|
|
|
@@ -54,6 +57,7 @@ class SarvamAI:
|
|
|
54
57
|
def __init__(
|
|
55
58
|
self,
|
|
56
59
|
*,
|
|
60
|
+
base_url: typing.Optional[str] = None,
|
|
57
61
|
environment: SarvamAIEnvironment = SarvamAIEnvironment.PRODUCTION,
|
|
58
62
|
api_subscription_key: typing.Optional[str] = os.getenv("SARVAM_API_KEY"),
|
|
59
63
|
timeout: typing.Optional[float] = None,
|
|
@@ -68,7 +72,7 @@ class SarvamAI:
|
|
|
68
72
|
body="The client must be instantiated be either passing in api_subscription_key or setting SARVAM_API_KEY"
|
|
69
73
|
)
|
|
70
74
|
self._client_wrapper = SyncClientWrapper(
|
|
71
|
-
environment=environment,
|
|
75
|
+
base_url=_get_base_url(base_url=base_url, environment=environment),
|
|
72
76
|
api_subscription_key=api_subscription_key,
|
|
73
77
|
httpx_client=httpx_client
|
|
74
78
|
if httpx_client is not None
|
|
@@ -89,6 +93,9 @@ class AsyncSarvamAI:
|
|
|
89
93
|
|
|
90
94
|
Parameters
|
|
91
95
|
----------
|
|
96
|
+
base_url : typing.Optional[str]
|
|
97
|
+
The base url to use for requests from the client.
|
|
98
|
+
|
|
92
99
|
environment : SarvamAIEnvironment
|
|
93
100
|
The environment to use for requests from the client. from .environment import SarvamAIEnvironment
|
|
94
101
|
|
|
@@ -120,6 +127,7 @@ class AsyncSarvamAI:
|
|
|
120
127
|
def __init__(
|
|
121
128
|
self,
|
|
122
129
|
*,
|
|
130
|
+
base_url: typing.Optional[str] = None,
|
|
123
131
|
environment: SarvamAIEnvironment = SarvamAIEnvironment.PRODUCTION,
|
|
124
132
|
api_subscription_key: typing.Optional[str] = os.getenv("SARVAM_API_KEY"),
|
|
125
133
|
timeout: typing.Optional[float] = None,
|
|
@@ -134,7 +142,7 @@ class AsyncSarvamAI:
|
|
|
134
142
|
body="The client must be instantiated be either passing in api_subscription_key or setting SARVAM_API_KEY"
|
|
135
143
|
)
|
|
136
144
|
self._client_wrapper = AsyncClientWrapper(
|
|
137
|
-
environment=environment,
|
|
145
|
+
base_url=_get_base_url(base_url=base_url, environment=environment),
|
|
138
146
|
api_subscription_key=api_subscription_key,
|
|
139
147
|
httpx_client=httpx_client
|
|
140
148
|
if httpx_client is not None
|
|
@@ -147,3 +155,12 @@ class AsyncSarvamAI:
|
|
|
147
155
|
self.speech_to_text = AsyncSpeechToTextClient(client_wrapper=self._client_wrapper)
|
|
148
156
|
self.text_to_speech = AsyncTextToSpeechClient(client_wrapper=self._client_wrapper)
|
|
149
157
|
self.chat = AsyncChatClient(client_wrapper=self._client_wrapper)
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
def _get_base_url(*, base_url: typing.Optional[str] = None, environment: SarvamAIEnvironment) -> str:
|
|
161
|
+
if base_url is not None:
|
|
162
|
+
return base_url
|
|
163
|
+
elif environment is not None:
|
|
164
|
+
return environment.value
|
|
165
|
+
else:
|
|
166
|
+
raise Exception("Please pass in either base_url or environment to construct the client")
|
sarvamai/core/client_wrapper.py
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
# This file was auto-generated by Fern from our API Definition.
|
|
2
2
|
|
|
3
|
-
from ..environment import SarvamAIEnvironment
|
|
4
3
|
import typing
|
|
5
4
|
import httpx
|
|
6
5
|
from .http_client import HttpClient
|
|
@@ -8,25 +7,23 @@ from .http_client import AsyncHttpClient
|
|
|
8
7
|
|
|
9
8
|
|
|
10
9
|
class BaseClientWrapper:
|
|
11
|
-
def __init__(
|
|
12
|
-
self, *, api_subscription_key: str, environment: SarvamAIEnvironment, timeout: typing.Optional[float] = None
|
|
13
|
-
):
|
|
10
|
+
def __init__(self, *, api_subscription_key: str, base_url: str, timeout: typing.Optional[float] = None):
|
|
14
11
|
self.api_subscription_key = api_subscription_key
|
|
15
|
-
self.
|
|
12
|
+
self._base_url = base_url
|
|
16
13
|
self._timeout = timeout
|
|
17
14
|
|
|
18
15
|
def get_headers(self) -> typing.Dict[str, str]:
|
|
19
16
|
headers: typing.Dict[str, str] = {
|
|
20
|
-
"User-Agent": "sarvamai/0.1.
|
|
17
|
+
"User-Agent": "sarvamai/0.1.5a0",
|
|
21
18
|
"X-Fern-Language": "Python",
|
|
22
19
|
"X-Fern-SDK-Name": "sarvamai",
|
|
23
|
-
"X-Fern-SDK-Version": "0.1.
|
|
20
|
+
"X-Fern-SDK-Version": "0.1.5a0",
|
|
24
21
|
}
|
|
25
22
|
headers["api-subscription-key"] = self.api_subscription_key
|
|
26
23
|
return headers
|
|
27
24
|
|
|
28
|
-
def
|
|
29
|
-
return self.
|
|
25
|
+
def get_base_url(self) -> str:
|
|
26
|
+
return self._base_url
|
|
30
27
|
|
|
31
28
|
def get_timeout(self) -> typing.Optional[float]:
|
|
32
29
|
return self._timeout
|
|
@@ -37,13 +34,16 @@ class SyncClientWrapper(BaseClientWrapper):
|
|
|
37
34
|
self,
|
|
38
35
|
*,
|
|
39
36
|
api_subscription_key: str,
|
|
40
|
-
|
|
37
|
+
base_url: str,
|
|
41
38
|
timeout: typing.Optional[float] = None,
|
|
42
39
|
httpx_client: httpx.Client,
|
|
43
40
|
):
|
|
44
|
-
super().__init__(api_subscription_key=api_subscription_key,
|
|
41
|
+
super().__init__(api_subscription_key=api_subscription_key, base_url=base_url, timeout=timeout)
|
|
45
42
|
self.httpx_client = HttpClient(
|
|
46
|
-
httpx_client=httpx_client,
|
|
43
|
+
httpx_client=httpx_client,
|
|
44
|
+
base_headers=self.get_headers,
|
|
45
|
+
base_timeout=self.get_timeout,
|
|
46
|
+
base_url=self.get_base_url,
|
|
47
47
|
)
|
|
48
48
|
|
|
49
49
|
|
|
@@ -52,11 +52,14 @@ class AsyncClientWrapper(BaseClientWrapper):
|
|
|
52
52
|
self,
|
|
53
53
|
*,
|
|
54
54
|
api_subscription_key: str,
|
|
55
|
-
|
|
55
|
+
base_url: str,
|
|
56
56
|
timeout: typing.Optional[float] = None,
|
|
57
57
|
httpx_client: httpx.AsyncClient,
|
|
58
58
|
):
|
|
59
|
-
super().__init__(api_subscription_key=api_subscription_key,
|
|
59
|
+
super().__init__(api_subscription_key=api_subscription_key, base_url=base_url, timeout=timeout)
|
|
60
60
|
self.httpx_client = AsyncHttpClient(
|
|
61
|
-
httpx_client=httpx_client,
|
|
61
|
+
httpx_client=httpx_client,
|
|
62
|
+
base_headers=self.get_headers,
|
|
63
|
+
base_timeout=self.get_timeout,
|
|
64
|
+
base_url=self.get_base_url,
|
|
62
65
|
)
|
sarvamai/environment.py
CHANGED
|
@@ -1,14 +1,7 @@
|
|
|
1
1
|
# This file was auto-generated by Fern from our API Definition.
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import enum
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
class SarvamAIEnvironment:
|
|
7
|
-
PRODUCTION
|
|
8
|
-
|
|
9
|
-
def __init__(self, *, base: str, production: str):
|
|
10
|
-
self.base = base
|
|
11
|
-
self.production = production
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
SarvamAIEnvironment.PRODUCTION = SarvamAIEnvironment(base="https://api.sarvam.ai", production="wss://api.sarvam.ai")
|
|
6
|
+
class SarvamAIEnvironment(enum.Enum):
|
|
7
|
+
PRODUCTION = "https://api.sarvam.ai"
|
|
@@ -80,7 +80,6 @@ class RawSpeechToTextClient:
|
|
|
80
80
|
"""
|
|
81
81
|
_response = self._client_wrapper.httpx_client.request(
|
|
82
82
|
"speech-to-text",
|
|
83
|
-
base_url=self._client_wrapper.get_environment().base,
|
|
84
83
|
method="POST",
|
|
85
84
|
data={
|
|
86
85
|
"model": model,
|
|
@@ -211,7 +210,6 @@ class RawSpeechToTextClient:
|
|
|
211
210
|
"""
|
|
212
211
|
_response = self._client_wrapper.httpx_client.request(
|
|
213
212
|
"speech-to-text-translate",
|
|
214
|
-
base_url=self._client_wrapper.get_environment().base,
|
|
215
213
|
method="POST",
|
|
216
214
|
data={
|
|
217
215
|
"prompt": prompt,
|
|
@@ -352,7 +350,6 @@ class AsyncRawSpeechToTextClient:
|
|
|
352
350
|
"""
|
|
353
351
|
_response = await self._client_wrapper.httpx_client.request(
|
|
354
352
|
"speech-to-text",
|
|
355
|
-
base_url=self._client_wrapper.get_environment().base,
|
|
356
353
|
method="POST",
|
|
357
354
|
data={
|
|
358
355
|
"model": model,
|
|
@@ -483,7 +480,6 @@ class AsyncRawSpeechToTextClient:
|
|
|
483
480
|
"""
|
|
484
481
|
_response = await self._client_wrapper.httpx_client.request(
|
|
485
482
|
"speech-to-text-translate",
|
|
486
|
-
base_url=self._client_wrapper.get_environment().base,
|
|
487
483
|
method="POST",
|
|
488
484
|
data={
|
|
489
485
|
"prompt": prompt,
|
sarvamai/text/raw_client.py
CHANGED
|
@@ -145,7 +145,6 @@ class RawTextClient:
|
|
|
145
145
|
"""
|
|
146
146
|
_response = self._client_wrapper.httpx_client.request(
|
|
147
147
|
"translate",
|
|
148
|
-
base_url=self._client_wrapper.get_environment().base,
|
|
149
148
|
method="POST",
|
|
150
149
|
json={
|
|
151
150
|
"input": input,
|
|
@@ -250,7 +249,6 @@ class RawTextClient:
|
|
|
250
249
|
"""
|
|
251
250
|
_response = self._client_wrapper.httpx_client.request(
|
|
252
251
|
"text-lid",
|
|
253
|
-
base_url=self._client_wrapper.get_environment().base,
|
|
254
252
|
method="POST",
|
|
255
253
|
json={
|
|
256
254
|
"input": input,
|
|
@@ -424,7 +422,6 @@ class RawTextClient:
|
|
|
424
422
|
"""
|
|
425
423
|
_response = self._client_wrapper.httpx_client.request(
|
|
426
424
|
"transliterate",
|
|
427
|
-
base_url=self._client_wrapper.get_environment().base,
|
|
428
425
|
method="POST",
|
|
429
426
|
json={
|
|
430
427
|
"input": input,
|
|
@@ -619,7 +616,6 @@ class AsyncRawTextClient:
|
|
|
619
616
|
"""
|
|
620
617
|
_response = await self._client_wrapper.httpx_client.request(
|
|
621
618
|
"translate",
|
|
622
|
-
base_url=self._client_wrapper.get_environment().base,
|
|
623
619
|
method="POST",
|
|
624
620
|
json={
|
|
625
621
|
"input": input,
|
|
@@ -724,7 +720,6 @@ class AsyncRawTextClient:
|
|
|
724
720
|
"""
|
|
725
721
|
_response = await self._client_wrapper.httpx_client.request(
|
|
726
722
|
"text-lid",
|
|
727
|
-
base_url=self._client_wrapper.get_environment().base,
|
|
728
723
|
method="POST",
|
|
729
724
|
json={
|
|
730
725
|
"input": input,
|
|
@@ -898,7 +893,6 @@ class AsyncRawTextClient:
|
|
|
898
893
|
"""
|
|
899
894
|
_response = await self._client_wrapper.httpx_client.request(
|
|
900
895
|
"transliterate",
|
|
901
|
-
base_url=self._client_wrapper.get_environment().base,
|
|
902
896
|
method="POST",
|
|
903
897
|
json={
|
|
904
898
|
"input": input,
|
|
@@ -97,7 +97,6 @@ class RawTextToSpeechClient:
|
|
|
97
97
|
"""
|
|
98
98
|
_response = self._client_wrapper.httpx_client.request(
|
|
99
99
|
"text-to-speech",
|
|
100
|
-
base_url=self._client_wrapper.get_environment().base,
|
|
101
100
|
method="POST",
|
|
102
101
|
json={
|
|
103
102
|
"text": text,
|
|
@@ -255,7 +254,6 @@ class AsyncRawTextToSpeechClient:
|
|
|
255
254
|
"""
|
|
256
255
|
_response = await self._client_wrapper.httpx_client.request(
|
|
257
256
|
"text-to-speech",
|
|
258
|
-
base_url=self._client_wrapper.get_environment().base,
|
|
259
257
|
method="POST",
|
|
260
258
|
json={
|
|
261
259
|
"text": text,
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
sarvamai/__init__.py,sha256=j0eB2isvuZ1spRjp6coCb2mtTv45O636aYSoK79eddQ,5071
|
|
2
2
|
sarvamai/chat/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
|
3
3
|
sarvamai/chat/client.py,sha256=4ADAA7HC-aoD-fO3ZLd0iodBOzBc_Xyib4E-7NbDkik,11791
|
|
4
|
-
sarvamai/chat/raw_client.py,sha256=
|
|
5
|
-
sarvamai/client.py,sha256=
|
|
4
|
+
sarvamai/chat/raw_client.py,sha256=G7LVq-I0qZ6xsjoG_dJe2lAR_jAVU368eOn1MscYKbI,17825
|
|
5
|
+
sarvamai/client.py,sha256=NrpjDx6AusBR2AfUWUrFSfteIlYkUhv5ahjdlCBNPeM,6936
|
|
6
6
|
sarvamai/core/__init__.py,sha256=JZDozMOUlhvOLnOO6kGBxye5Ctfg_KDOjeUTSUoMmV8,1542
|
|
7
7
|
sarvamai/core/api_error.py,sha256=RE8LELok2QCjABadECTvtDp7qejA1VmINCh6TbqPwSE,426
|
|
8
|
-
sarvamai/core/client_wrapper.py,sha256=
|
|
8
|
+
sarvamai/core/client_wrapper.py,sha256=EbW-_PB6M6SvRkHTxRiBdKcfjiVWejX_afBkAB2cTqg,2074
|
|
9
9
|
sarvamai/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
|
|
10
10
|
sarvamai/core/file.py,sha256=d4NNbX8XvXP32z8KpK2Xovv33nFfruIrpz0QWxlgpZk,2663
|
|
11
11
|
sarvamai/core/http_client.py,sha256=cKs2w0ybDBk1wHQf-fTALm_MmvaMe3cZKcYJxqmCxkE,19539
|
|
@@ -16,7 +16,7 @@ sarvamai/core/query_encoder.py,sha256=ekulqNd0j8TgD7ox-Qbz7liqX8-KP9blvT9DsRCenY
|
|
|
16
16
|
sarvamai/core/remove_none_from_dict.py,sha256=EU9SGgYidWq7SexuJbNs4-PZ-5Bl3Vppd864mS6vQZw,342
|
|
17
17
|
sarvamai/core/request_options.py,sha256=h0QUNCFVdCW_7GclVySCAY2w4NhtXVBUCmHgmzaxpcg,1681
|
|
18
18
|
sarvamai/core/serialization.py,sha256=ECL3bvv_0i7U4uvPidZCNel--MUbA0iq0aGcNKi3kws,9818
|
|
19
|
-
sarvamai/environment.py,sha256=
|
|
19
|
+
sarvamai/environment.py,sha256=86s94KkJUHmMqmGiehN2SiNYxHoBFgIxCHH41T_BZNs,158
|
|
20
20
|
sarvamai/errors/__init__.py,sha256=Rjcid1bNnxJ95F5ACvzU2L5aYJNuJh4OpRG1JSyj8G0,575
|
|
21
21
|
sarvamai/errors/bad_request_error.py,sha256=_EbO8mWqN9kFZPvIap8qa1lL_EWkRcsZe1HKV9GDWJY,264
|
|
22
22
|
sarvamai/errors/forbidden_error.py,sha256=QO1kKlhClAPES6zsEK7g9pglWnxn3KWaOCAawWOg6Aw,263
|
|
@@ -49,13 +49,13 @@ sarvamai/requests/translation_response.py,sha256=zEL7LhnLIxwAz89NOkjkSDdnR1LaUa8
|
|
|
49
49
|
sarvamai/requests/transliteration_response.py,sha256=9ZYsJ-9MSjyRWatEbpsI69Hx86JVACCZCU3BEvN77M4,451
|
|
50
50
|
sarvamai/speech_to_text/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
|
51
51
|
sarvamai/speech_to_text/client.py,sha256=FnZnTi0XDOnVcD4pxcXmb5brVpU6kOmIM9-CwYyuaWM,11482
|
|
52
|
-
sarvamai/speech_to_text/raw_client.py,sha256=
|
|
52
|
+
sarvamai/speech_to_text/raw_client.py,sha256=k9J82zyF1oCHqkE_sGZUuxABPs1q6rVdLX3J-yByixE,23674
|
|
53
53
|
sarvamai/text/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
|
54
54
|
sarvamai/text/client.py,sha256=0D15RtAD5EvSFSLdzCZEBPQ5K4nGJv2jf0BI1Mlr2mg,28668
|
|
55
|
-
sarvamai/text/raw_client.py,sha256=
|
|
55
|
+
sarvamai/text/raw_client.py,sha256=LQT2yNlNxP7NVw7bKZ6vkUy1tkDs1-IXaf7sjFY5UkI,44227
|
|
56
56
|
sarvamai/text_to_speech/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
|
57
57
|
sarvamai/text_to_speech/client.py,sha256=1T_P7dpVmZBzUNPbKFGBDPXRwpDV-5zY6KcEOQoLrs8,9215
|
|
58
|
-
sarvamai/text_to_speech/raw_client.py,sha256=
|
|
58
|
+
sarvamai/text_to_speech/raw_client.py,sha256=VIgGQ8WKQOY9RTAEfboWeCe1zZM1l8wZ3jOUAnYrxxg,14312
|
|
59
59
|
sarvamai/types/__init__.py,sha256=K3_vaMlZnhW4W0tO5jUHZegxHpg_7wOyB1iDcnjJ2lo,4022
|
|
60
60
|
sarvamai/types/chat_completion_request_assistant_message.py,sha256=EUkQKNCaBvrL2PIOIN9Q4GXIV7uJ6C86k-BreA-83uE,660
|
|
61
61
|
sarvamai/types/chat_completion_request_message.py,sha256=4M8Rkc1kNHfORTNDFrc8wbq8eR37kq5nrsd-wNvL4kw,1673
|
|
@@ -101,6 +101,6 @@ sarvamai/types/translatiterate_target_language.py,sha256=S8yfYS-BtEvSdQw3sBbQckb
|
|
|
101
101
|
sarvamai/types/transliterate_source_language.py,sha256=6BVDfik4WSY40DiQPFH32SYjXJBMzrJCouxOJNd4f9A,283
|
|
102
102
|
sarvamai/types/transliteration_response.py,sha256=RZcsRP73Si24t4LF8MZCw_qZyVbX3gvMz88O41oMk8s,851
|
|
103
103
|
sarvamai/version.py,sha256=Qkp3Ee9YH-O9RTix90e0i7iNrFAGN-QDt2AFwGA4n8k,75
|
|
104
|
-
sarvamai-0.1.
|
|
105
|
-
sarvamai-0.1.
|
|
106
|
-
sarvamai-0.1.
|
|
104
|
+
sarvamai-0.1.5a0.dist-info/METADATA,sha256=j2wI-jSnp0cuLckrfhhnSkdQbM939oEuCIeWqbUsZrw,4792
|
|
105
|
+
sarvamai-0.1.5a0.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
|
|
106
|
+
sarvamai-0.1.5a0.dist-info/RECORD,,
|
|
File without changes
|