relaxai 0.2.1__py3-none-any.whl → 0.3.0__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.
@@ -0,0 +1,165 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ import httpx
6
+
7
+ from ..types import tool_execute_code_params
8
+ from .._types import Body, Query, Headers, NoneType, NotGiven, not_given
9
+ from .._utils import maybe_transform, async_maybe_transform
10
+ from .._compat import cached_property
11
+ from .._resource import SyncAPIResource, AsyncAPIResource
12
+ from .._response import (
13
+ to_raw_response_wrapper,
14
+ to_streamed_response_wrapper,
15
+ async_to_raw_response_wrapper,
16
+ async_to_streamed_response_wrapper,
17
+ )
18
+ from .._base_client import make_request_options
19
+ from ..types.tool_request_param import ToolRequestParam
20
+
21
+ __all__ = ["ToolsResource", "AsyncToolsResource"]
22
+
23
+
24
+ class ToolsResource(SyncAPIResource):
25
+ @cached_property
26
+ def with_raw_response(self) -> ToolsResourceWithRawResponse:
27
+ """
28
+ This property can be used as a prefix for any HTTP method call to return
29
+ the raw response object instead of the parsed content.
30
+
31
+ For more information, see https://www.github.com/relax-ai/python-sdk#accessing-raw-response-data-eg-headers
32
+ """
33
+ return ToolsResourceWithRawResponse(self)
34
+
35
+ @cached_property
36
+ def with_streaming_response(self) -> ToolsResourceWithStreamingResponse:
37
+ """
38
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
39
+
40
+ For more information, see https://www.github.com/relax-ai/python-sdk#with_streaming_response
41
+ """
42
+ return ToolsResourceWithStreamingResponse(self)
43
+
44
+ def execute_code(
45
+ self,
46
+ *,
47
+ body: ToolRequestParam,
48
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
49
+ # The extra values given here take precedence over values defined on the client or passed to this method.
50
+ extra_headers: Headers | None = None,
51
+ extra_query: Query | None = None,
52
+ extra_body: Body | None = None,
53
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
54
+ ) -> None:
55
+ """
56
+ Run the given code in a secure environment and return the output.
57
+
58
+ Args:
59
+ extra_headers: Send extra headers
60
+
61
+ extra_query: Add additional query parameters to the request
62
+
63
+ extra_body: Add additional JSON properties to the request
64
+
65
+ timeout: Override the client-level default timeout for this request, in seconds
66
+ """
67
+ extra_headers = {"Accept": "*/*", **(extra_headers or {})}
68
+ return self._post(
69
+ "/v1/tools/code",
70
+ body=maybe_transform({"body": body}, tool_execute_code_params.ToolExecuteCodeParams),
71
+ options=make_request_options(
72
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
73
+ ),
74
+ cast_to=NoneType,
75
+ )
76
+
77
+
78
+ class AsyncToolsResource(AsyncAPIResource):
79
+ @cached_property
80
+ def with_raw_response(self) -> AsyncToolsResourceWithRawResponse:
81
+ """
82
+ This property can be used as a prefix for any HTTP method call to return
83
+ the raw response object instead of the parsed content.
84
+
85
+ For more information, see https://www.github.com/relax-ai/python-sdk#accessing-raw-response-data-eg-headers
86
+ """
87
+ return AsyncToolsResourceWithRawResponse(self)
88
+
89
+ @cached_property
90
+ def with_streaming_response(self) -> AsyncToolsResourceWithStreamingResponse:
91
+ """
92
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
93
+
94
+ For more information, see https://www.github.com/relax-ai/python-sdk#with_streaming_response
95
+ """
96
+ return AsyncToolsResourceWithStreamingResponse(self)
97
+
98
+ async def execute_code(
99
+ self,
100
+ *,
101
+ body: ToolRequestParam,
102
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
103
+ # The extra values given here take precedence over values defined on the client or passed to this method.
104
+ extra_headers: Headers | None = None,
105
+ extra_query: Query | None = None,
106
+ extra_body: Body | None = None,
107
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
108
+ ) -> None:
109
+ """
110
+ Run the given code in a secure environment and return the output.
111
+
112
+ Args:
113
+ extra_headers: Send extra headers
114
+
115
+ extra_query: Add additional query parameters to the request
116
+
117
+ extra_body: Add additional JSON properties to the request
118
+
119
+ timeout: Override the client-level default timeout for this request, in seconds
120
+ """
121
+ extra_headers = {"Accept": "*/*", **(extra_headers or {})}
122
+ return await self._post(
123
+ "/v1/tools/code",
124
+ body=await async_maybe_transform({"body": body}, tool_execute_code_params.ToolExecuteCodeParams),
125
+ options=make_request_options(
126
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
127
+ ),
128
+ cast_to=NoneType,
129
+ )
130
+
131
+
132
+ class ToolsResourceWithRawResponse:
133
+ def __init__(self, tools: ToolsResource) -> None:
134
+ self._tools = tools
135
+
136
+ self.execute_code = to_raw_response_wrapper(
137
+ tools.execute_code,
138
+ )
139
+
140
+
141
+ class AsyncToolsResourceWithRawResponse:
142
+ def __init__(self, tools: AsyncToolsResource) -> None:
143
+ self._tools = tools
144
+
145
+ self.execute_code = async_to_raw_response_wrapper(
146
+ tools.execute_code,
147
+ )
148
+
149
+
150
+ class ToolsResourceWithStreamingResponse:
151
+ def __init__(self, tools: ToolsResource) -> None:
152
+ self._tools = tools
153
+
154
+ self.execute_code = to_streamed_response_wrapper(
155
+ tools.execute_code,
156
+ )
157
+
158
+
159
+ class AsyncToolsResourceWithStreamingResponse:
160
+ def __init__(self, tools: AsyncToolsResource) -> None:
161
+ self._tools = tools
162
+
163
+ self.execute_code = async_to_streamed_response_wrapper(
164
+ tools.execute_code,
165
+ )
relaxai/types/__init__.py CHANGED
@@ -12,12 +12,16 @@ from .model_list import ModelList as ModelList
12
12
  from .function_call import FunctionCall as FunctionCall
13
13
  from .health_response import HealthResponse as HealthResponse
14
14
  from .embedding_response import EmbeddingResponse as EmbeddingResponse
15
+ from .tool_request_param import ToolRequestParam as ToolRequestParam
15
16
  from .function_call_param import FunctionCallParam as FunctionCallParam
16
17
  from .stream_options_param import StreamOptionsParam as StreamOptionsParam
17
18
  from .content_filter_results import ContentFilterResults as ContentFilterResults
18
19
  from .chat_completion_message import ChatCompletionMessage as ChatCompletionMessage
19
20
  from .chat_completion_response import ChatCompletionResponse as ChatCompletionResponse
21
+ from .tool_execute_code_params import ToolExecuteCodeParams as ToolExecuteCodeParams
20
22
  from .function_definition_param import FunctionDefinitionParam as FunctionDefinitionParam
23
+ from .deepresearch_request_param import DeepresearchRequestParam as DeepresearchRequestParam
24
+ from .deep_research_create_params import DeepResearchCreateParams as DeepResearchCreateParams
21
25
  from .chat_completion_message_param import ChatCompletionMessageParam as ChatCompletionMessageParam
22
26
  from .chat_create_completion_params import ChatCreateCompletionParams as ChatCreateCompletionParams
23
27
  from .embedding_create_embedding_params import EmbeddingCreateEmbeddingParams as EmbeddingCreateEmbeddingParams
@@ -2,9 +2,10 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import Dict, List, Iterable
5
+ from typing import Dict, Iterable
6
6
  from typing_extensions import Required, Annotated, TypedDict
7
7
 
8
+ from .._types import SequenceNotStr
8
9
  from .._utils import PropertyInfo
9
10
  from .stream_options_param import StreamOptionsParam
10
11
  from .function_definition_param import FunctionDefinitionParam
@@ -69,7 +70,7 @@ class ChatCreateCompletionParams(TypedDict, total=False):
69
70
 
70
71
  seed: int
71
72
 
72
- stop: List[str]
73
+ stop: SequenceNotStr[str]
73
74
 
74
75
  store: bool
75
76
 
@@ -0,0 +1,13 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import Required, TypedDict
6
+
7
+ from .deepresearch_request_param import DeepresearchRequestParam
8
+
9
+ __all__ = ["DeepResearchCreateParams"]
10
+
11
+
12
+ class DeepResearchCreateParams(TypedDict, total=False):
13
+ body: Required[DeepresearchRequestParam]
@@ -0,0 +1,59 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Iterable
6
+ from typing_extensions import Required, TypedDict
7
+
8
+ from .._types import SequenceNotStr
9
+ from .stream_options_param import StreamOptionsParam
10
+ from .function_definition_param import FunctionDefinitionParam
11
+ from .chat_completion_message_param import ChatCompletionMessageParam
12
+
13
+ __all__ = ["DeepresearchRequestParam", "ResponseFormat", "ResponseFormatJsonSchema", "Tool"]
14
+
15
+
16
+ class ResponseFormatJsonSchema(TypedDict, total=False):
17
+ description: str
18
+
19
+ name: str
20
+
21
+ schema: str
22
+
23
+ strict: bool
24
+
25
+
26
+ class ResponseFormat(TypedDict, total=False):
27
+ json_schema: ResponseFormatJsonSchema
28
+
29
+ type: str
30
+
31
+
32
+ class Tool(TypedDict, total=False):
33
+ type: Required[str]
34
+
35
+ function: FunctionDefinitionParam
36
+
37
+
38
+ class DeepresearchRequestParam(TypedDict, total=False):
39
+ messages: Required[Iterable[ChatCompletionMessageParam]]
40
+
41
+ model: Required[str]
42
+
43
+ max_tokens: int
44
+
45
+ response_format: ResponseFormat
46
+
47
+ stop: SequenceNotStr[str]
48
+
49
+ stream: bool
50
+
51
+ stream_options: StreamOptionsParam
52
+
53
+ temperature: float
54
+
55
+ tool_choice: object
56
+
57
+ tools: Iterable[Tool]
58
+
59
+ top_p: float
@@ -0,0 +1,13 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import Required, TypedDict
6
+
7
+ from .tool_request_param import ToolRequestParam
8
+
9
+ __all__ = ["ToolExecuteCodeParams"]
10
+
11
+
12
+ class ToolExecuteCodeParams(TypedDict, total=False):
13
+ body: Required[ToolRequestParam]
@@ -0,0 +1,17 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import Required, TypedDict
6
+
7
+ from .._types import SequenceNotStr
8
+
9
+ __all__ = ["ToolRequestParam"]
10
+
11
+
12
+ class ToolRequestParam(TypedDict, total=False):
13
+ code: Required[str]
14
+
15
+ lang: Required[str]
16
+
17
+ libraries: SequenceNotStr[str]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: relaxai
3
- Version: 0.2.1
3
+ Version: 0.3.0
4
4
  Summary: The official Python library for the relaxai API
5
5
  Project-URL: Homepage, https://github.com/relax-ai/python-sdk
6
6
  Project-URL: Repository, https://github.com/relax-ai/python-sdk
@@ -1,39 +1,45 @@
1
- relaxai/__init__.py,sha256=jawpphZN3cZd39n6_t5JS-ypY59otlavNWnrP--HOHU,2587
2
- relaxai/_base_client.py,sha256=XSTrjOWzbSPTZAECGywIeNj9dtHx3nUf9vUf5uEyxK8,67036
3
- relaxai/_client.py,sha256=t4e0GFc6ooxAbPTlw4h4LxFfG3woednjoHScsKYyyIU,18179
4
- relaxai/_compat.py,sha256=VWemUKbj6DDkQ-O4baSpHVLJafotzeXmCQGJugfVTIw,6580
1
+ relaxai/__init__.py,sha256=PP7FLDR2D0eLsutcPjuRsLKZyLK9-5vuM7StI2QVq50,2633
2
+ relaxai/_base_client.py,sha256=6V7y6e2OpQJDo0gf-FA4TXyGwb1C_gzccB9dD5-DIs0,67048
3
+ relaxai/_client.py,sha256=Dk6i9LBAiJAys24XplUl2AvdL8yjhRHa0lcnFM6BDFE,19338
4
+ relaxai/_compat.py,sha256=DQBVORjFb33zch24jzkhM14msvnzY7mmSmgDLaVFUM8,6562
5
5
  relaxai/_constants.py,sha256=S14PFzyN9-I31wiV7SmIlL5Ga0MLHxdvegInGdXH7tM,462
6
6
  relaxai/_exceptions.py,sha256=CPRCoUcv5nQ7_hkZu9WvAFxQM0Mf6_ZCGU8JPY81zpY,3222
7
7
  relaxai/_files.py,sha256=KnEzGi_O756MvKyJ4fOCW_u3JhOeWPQ4RsmDvqihDQU,3545
8
- relaxai/_models.py,sha256=6rDtUmk6jhjGN1q96CUICYfBunNXNhhEk_AqztTm3uE,30012
9
- relaxai/_qs.py,sha256=AOkSz4rHtK4YI3ZU_kzea-zpwBUgEY8WniGmTPyEimc,4846
8
+ relaxai/_models.py,sha256=lKnskYPONAWDvWo8tmbbVk7HmG7UOsI0Nve0vSMmkRc,30452
9
+ relaxai/_qs.py,sha256=craIKyvPktJ94cvf9zn8j8ekG9dWJzhWv0ob34lIOv4,4828
10
10
  relaxai/_resource.py,sha256=v7qxjafEaUaEfecj54WhuhW2hupVzM8Os0EIHVRmbkc,1106
11
11
  relaxai/_response.py,sha256=URFVS4ivxSoLsvosTN0Rc3f5vbBBb0DIB4Eh2XPGa_Q,28794
12
12
  relaxai/_streaming.py,sha256=Nr4O_q1hh35alNVqo46KKf9ZTbRp-IoXjGFCCNJC1fA,10104
13
- relaxai/_types.py,sha256=hzXV2igITH7hq2g4zoT8DOcWoTygjpuzRT2OUh1-V1w,6198
14
- relaxai/_version.py,sha256=W5Y49_wJqFbQ5Yn6umNMFdLYXnE_MLtQ1xV5PVLuJSs,159
13
+ relaxai/_types.py,sha256=v5coMcqP3kIeECx9ks-aaxiodh2l0UEKv6UI4creii4,7237
14
+ relaxai/_version.py,sha256=kscsDvq0tEERfrzxIdtoXkxo5J5QtJ4Zg9KKMc574hk,159
15
15
  relaxai/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
- relaxai/_utils/__init__.py,sha256=PNZ_QJuzZEgyYXqkO1HVhGkj5IU9bglVUcw7H-Knjzw,2062
16
+ relaxai/_utils/__init__.py,sha256=7fch0GT9zpNnErbciSpUNa-SjTxxjY6kxHxKMOM4AGs,2305
17
+ relaxai/_utils/_compat.py,sha256=D8gtAvjJQrDWt9upS0XaG9Rr5l1QhiAx_I_1utT_tt0,1195
18
+ relaxai/_utils/_datetime_parse.py,sha256=bABTs0Bc6rabdFvnIwXjEhWL15TcRgWZ_6XGTqN8xUk,4204
17
19
  relaxai/_utils/_logs.py,sha256=JN6s4kBek7yKmmZ_YwCsGFuRdVLEaxfgdkCgnJWcFN0,777
18
20
  relaxai/_utils/_proxy.py,sha256=aglnj2yBTDyGX9Akk2crZHrl10oqRmceUy2Zp008XEs,1975
19
21
  relaxai/_utils/_reflection.py,sha256=ZmGkIgT_PuwedyNBrrKGbxoWtkpytJNU1uU4QHnmEMU,1364
20
22
  relaxai/_utils/_resources_proxy.py,sha256=9_EObM8JvNkCjrPt8cs1fv4Zitbzv6UQjJJA-GKm4Tw,594
21
23
  relaxai/_utils/_streams.py,sha256=SMC90diFFecpEg_zgDRVbdR3hSEIgVVij4taD-noMLM,289
22
24
  relaxai/_utils/_sync.py,sha256=TpGLrrhRNWTJtODNE6Fup3_k7zrWm1j2RlirzBwre-0,2862
23
- relaxai/_utils/_transform.py,sha256=n7kskEWz6o__aoNvhFoGVyDoalNe6mJwp-g7BWkdj88,15617
24
- relaxai/_utils/_typing.py,sha256=D0DbbNu8GnYQTSICnTSHDGsYXj8TcAKyhejb0XcnjtY,4602
25
- relaxai/_utils/_utils.py,sha256=ts4CiiuNpFiGB6YMdkQRh2SZvYvsl7mAF-JWHCcLDf4,12312
25
+ relaxai/_utils/_transform.py,sha256=NjCzmnfqYrsAikUHQig6N9QfuTVbKipuP3ur9mcNF-E,15951
26
+ relaxai/_utils/_typing.py,sha256=N_5PPuFNsaygbtA_npZd98SVN1LQQvFTKL6bkWPBZGU,4786
27
+ relaxai/_utils/_utils.py,sha256=0dDqauUbVZEXV0NVl7Bwu904Wwo5eyFCZpQThhFNhyA,12253
26
28
  relaxai/lib/.keep,sha256=wuNrz-5SXo3jJaJOJgz4vFHM41YH_g20F5cRQo0vLes,224
27
- relaxai/resources/__init__.py,sha256=5FOvNOOZuqlSuikZSCGuw_hSbh_uxDu5n-ABdfAr-eQ,1478
28
- relaxai/resources/chat.py,sha256=rzG_U3jolLfArwLOVz0zu7nOD6c13MDNra1BFwRJDlU,13515
29
- relaxai/resources/embeddings.py,sha256=V4yeTPCGwbaJC8xUndpVaqobq6KzvmeiV9TJuq5gSkU,7040
30
- relaxai/resources/models.py,sha256=zID8M-GHv596jrwYKg22uvxH6Z79uGqwvF4krsO9-Z4,7856
31
- relaxai/types/__init__.py,sha256=0pxpDpZGPpN1xX8gflH_elHCQOP_njSBGUSDPRRDNDo,1378
29
+ relaxai/resources/__init__.py,sha256=PN55gCB7h9TokDnEC4NT3jPj17828geZDkMh6wv9uKE,2444
30
+ relaxai/resources/chat.py,sha256=yeDuAAJk3dW1ysw7nvO2euzPzcjeHAxT-Y-9BI5l40Y,13053
31
+ relaxai/resources/deep_research.py,sha256=KYix_2o_c4HAkBwxRv9TQoXPMV8-VoXDR94JE0d6jdI,6335
32
+ relaxai/resources/embeddings.py,sha256=BpG5jmG2O-hVnRawd834JQLvKeC7rzvfaOAyxXapGbg,6998
33
+ relaxai/resources/models.py,sha256=Zkp7vxtB5xp2vDHOsWB2XQhcj-52AAusvFQAiS2aVWE,7856
34
+ relaxai/resources/tools.py,sha256=QxwMc2vzAGk1KGq5TAHf8XeTTKjlD4P1ZeCIbEB7Ah0,6064
35
+ relaxai/types/__init__.py,sha256=4-UDrMjU9_pU2ZANwsmjmf7v93iuyIbWfCMjQTjCNn4,1719
32
36
  relaxai/types/chat_completion_message.py,sha256=t-dKQxWfqUr8UsX5Fs3NpN9YfRJ5oJvozfZtWn3JF8M,1544
33
37
  relaxai/types/chat_completion_message_param.py,sha256=X4oAp6FQwue-SEibwr3KcxhJNQZiaiBhz2Q9mMHY5_M,1485
34
38
  relaxai/types/chat_completion_response.py,sha256=II4PjVfW60aa9aX5mApsseDerQVieTlt9BLim2fY_RE,1564
35
- relaxai/types/chat_create_completion_params.py,sha256=eJk0Pvtk8AkbyPoDQVxuE4b5VD7lN3Xu3vE32wjU5ps,3015
39
+ relaxai/types/chat_create_completion_params.py,sha256=q8c31zNDMfjYr5Ai0k-EfDXqRTfXyLGbf2DiuNgZtN8,3055
36
40
  relaxai/types/content_filter_results.py,sha256=vOaHu4jdGKVX4vqqCZohTYDsKDXlvfh57Ozb_95-c2U,999
41
+ relaxai/types/deep_research_create_params.py,sha256=kEBYdZviAbnQNvS2tW8P0nKGe2mB9RIoarAu4tqKjsg,382
42
+ relaxai/types/deepresearch_request_param.py,sha256=oVP2mtQ4fl4zlvA7pCO86gmsuoJPPtV54MIo-CC2yic,1239
37
43
  relaxai/types/embedding_create_embedding_params.py,sha256=76aUOwC4LMjfMesJTjrjUh_FzVkDcRe_2rRzMTcdaag,399
38
44
  relaxai/types/embedding_response.py,sha256=N7SS9DhAbG5kEWF6RxYc8gl_rUvY9c1mSoT8v4vwahA,549
39
45
  relaxai/types/function_call.py,sha256=n_agCO6Vrh5YZH1SZ6GWOV4mk2IFPeHJA_WkZrPGPMw,277
@@ -43,11 +49,13 @@ relaxai/types/health_response.py,sha256=1c2L7g4f7lqwcXgE3rHtGoWfWgZuLPUF8IcEpKzn
43
49
  relaxai/types/model.py,sha256=Du9lb9dn846N1fPrKtDsPSLczkqnzxVAJPb8GMqyVJ8,764
44
50
  relaxai/types/model_list.py,sha256=9lvzYRTBYTVudP9_28Ai0lUfc82eXOmz0qZ_rwCzxIU,364
45
51
  relaxai/types/stream_options_param.py,sha256=JEom-Fs3ORSTD86NTan-9ZjlKYfPEvSYXViUhOXPCb0,273
52
+ relaxai/types/tool_execute_code_params.py,sha256=kCVqZhBevxHRpXFnFP-ZkY1OmVBaLhMzb2eBYC52nW8,352
53
+ relaxai/types/tool_request_param.py,sha256=yT25DMuiyr9J_EzEEJJOQhkOCSO1daXS6HZB3vRjumE,377
46
54
  relaxai/types/shared/__init__.py,sha256=rVHWDutDMA_BYQSHahIzfwcaDAwE3zyBvTiPRI1lSFo,346
47
55
  relaxai/types/shared/openai_completion_tokens_details.py,sha256=kjDBsTKvzhw-8UA3t7CQ6qvAo4Lmnup5VEFU2QzBynw,338
48
56
  relaxai/types/shared/openai_prompt_tokens_details.py,sha256=wdPCsobx-VBw3MgfSCY4HXrGnMtw6YXiepKpXw1kZAE,253
49
57
  relaxai/types/shared/openai_usage.py,sha256=W-mht7UXuWne_eFXCBXHpf2HEsjzfXo2jPXOdKNEdbQ,513
50
- relaxai-0.2.1.dist-info/METADATA,sha256=YhJ8nUNNGf9BaixRVkM4elxXi3LHnUe1re2SPSpvL7k,15480
51
- relaxai-0.2.1.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
52
- relaxai-0.2.1.dist-info/licenses/LICENSE,sha256=B0u5zBqmaNCfIZooH665f2J7yFqMmSjQxZtnJhCuID8,11337
53
- relaxai-0.2.1.dist-info/RECORD,,
58
+ relaxai-0.3.0.dist-info/METADATA,sha256=bJKZmh0DKc0eKSRwEXjI-8yzI3XEdlTDyu2GQngOJvA,15480
59
+ relaxai-0.3.0.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
60
+ relaxai-0.3.0.dist-info/licenses/LICENSE,sha256=B0u5zBqmaNCfIZooH665f2J7yFqMmSjQxZtnJhCuID8,11337
61
+ relaxai-0.3.0.dist-info/RECORD,,