windmill-api 1.456.0__py3-none-any.whl → 1.457.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.

Potentially problematic release.


This version of windmill-api might be problematic. Click here for more details.

@@ -0,0 +1,14 @@
1
+ from enum import Enum
2
+
3
+
4
+ class AIProvider(str, Enum):
5
+ ANTHROPIC = "anthropic"
6
+ CUSTOMAI = "customai"
7
+ DEEPSEEK = "deepseek"
8
+ GROQ = "groq"
9
+ MISTRAL = "mistral"
10
+ OPENAI = "openai"
11
+ OPENROUTER = "openrouter"
12
+
13
+ def __str__(self) -> str:
14
+ return str(self.value)
@@ -3,24 +3,26 @@ from typing import Any, Dict, List, Type, TypeVar
3
3
  from attrs import define as _attrs_define
4
4
  from attrs import field as _attrs_field
5
5
 
6
- T = TypeVar("T", bound="AiResource")
6
+ from ..models.ai_resource_provider import AIResourceProvider
7
+
8
+ T = TypeVar("T", bound="AIResource")
7
9
 
8
10
 
9
11
  @_attrs_define
10
- class AiResource:
12
+ class AIResource:
11
13
  """
12
14
  Attributes:
13
15
  path (str):
14
- provider (str):
16
+ provider (AIResourceProvider):
15
17
  """
16
18
 
17
19
  path: str
18
- provider: str
20
+ provider: AIResourceProvider
19
21
  additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
20
22
 
21
23
  def to_dict(self) -> Dict[str, Any]:
22
24
  path = self.path
23
- provider = self.provider
25
+ provider = self.provider.value
24
26
 
25
27
  field_dict: Dict[str, Any] = {}
26
28
  field_dict.update(self.additional_properties)
@@ -38,7 +40,7 @@ class AiResource:
38
40
  d = src_dict.copy()
39
41
  path = d.pop("path")
40
42
 
41
- provider = d.pop("provider")
43
+ provider = AIResourceProvider(d.pop("provider"))
42
44
 
43
45
  ai_resource = cls(
44
46
  path=path,
@@ -0,0 +1,14 @@
1
+ from enum import Enum
2
+
3
+
4
+ class AIResourceProvider(str, Enum):
5
+ ANTHROPIC = "anthropic"
6
+ CUSTOMAI = "customai"
7
+ DEEPSEEK = "deepseek"
8
+ GROQ = "groq"
9
+ MISTRAL = "mistral"
10
+ OPENAI = "openai"
11
+ OPENROUTER = "openrouter"
12
+
13
+ def __str__(self) -> str:
14
+ return str(self.value)
@@ -1,4 +1,4 @@
1
- from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar, Union
1
+ from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar, Union, cast
2
2
 
3
3
  from attrs import define as _attrs_define
4
4
  from attrs import field as _attrs_field
@@ -16,29 +16,36 @@ T = TypeVar("T", bound="EditCopilotConfigJsonBody")
16
16
  class EditCopilotConfigJsonBody:
17
17
  """
18
18
  Attributes:
19
- code_completion_enabled (bool):
19
+ ai_models (List[str]):
20
20
  ai_resource (Union[Unset, EditCopilotConfigJsonBodyAiResource]):
21
+ code_completion_model (Union[Unset, str]):
21
22
  """
22
23
 
23
- code_completion_enabled: bool
24
+ ai_models: List[str]
24
25
  ai_resource: Union[Unset, "EditCopilotConfigJsonBodyAiResource"] = UNSET
26
+ code_completion_model: Union[Unset, str] = UNSET
25
27
  additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
26
28
 
27
29
  def to_dict(self) -> Dict[str, Any]:
28
- code_completion_enabled = self.code_completion_enabled
30
+ ai_models = self.ai_models
31
+
29
32
  ai_resource: Union[Unset, Dict[str, Any]] = UNSET
30
33
  if not isinstance(self.ai_resource, Unset):
31
34
  ai_resource = self.ai_resource.to_dict()
32
35
 
36
+ code_completion_model = self.code_completion_model
37
+
33
38
  field_dict: Dict[str, Any] = {}
34
39
  field_dict.update(self.additional_properties)
35
40
  field_dict.update(
36
41
  {
37
- "code_completion_enabled": code_completion_enabled,
42
+ "ai_models": ai_models,
38
43
  }
39
44
  )
40
45
  if ai_resource is not UNSET:
41
46
  field_dict["ai_resource"] = ai_resource
47
+ if code_completion_model is not UNSET:
48
+ field_dict["code_completion_model"] = code_completion_model
42
49
 
43
50
  return field_dict
44
51
 
@@ -47,7 +54,7 @@ class EditCopilotConfigJsonBody:
47
54
  from ..models.edit_copilot_config_json_body_ai_resource import EditCopilotConfigJsonBodyAiResource
48
55
 
49
56
  d = src_dict.copy()
50
- code_completion_enabled = d.pop("code_completion_enabled")
57
+ ai_models = cast(List[str], d.pop("ai_models"))
51
58
 
52
59
  _ai_resource = d.pop("ai_resource", UNSET)
53
60
  ai_resource: Union[Unset, EditCopilotConfigJsonBodyAiResource]
@@ -56,9 +63,12 @@ class EditCopilotConfigJsonBody:
56
63
  else:
57
64
  ai_resource = EditCopilotConfigJsonBodyAiResource.from_dict(_ai_resource)
58
65
 
66
+ code_completion_model = d.pop("code_completion_model", UNSET)
67
+
59
68
  edit_copilot_config_json_body = cls(
60
- code_completion_enabled=code_completion_enabled,
69
+ ai_models=ai_models,
61
70
  ai_resource=ai_resource,
71
+ code_completion_model=code_completion_model,
62
72
  )
63
73
 
64
74
  edit_copilot_config_json_body.additional_properties = d
@@ -3,6 +3,8 @@ from typing import Any, Dict, List, Type, TypeVar
3
3
  from attrs import define as _attrs_define
4
4
  from attrs import field as _attrs_field
5
5
 
6
+ from ..models.edit_copilot_config_json_body_ai_resource_provider import EditCopilotConfigJsonBodyAiResourceProvider
7
+
6
8
  T = TypeVar("T", bound="EditCopilotConfigJsonBodyAiResource")
7
9
 
8
10
 
@@ -11,16 +13,16 @@ class EditCopilotConfigJsonBodyAiResource:
11
13
  """
12
14
  Attributes:
13
15
  path (str):
14
- provider (str):
16
+ provider (EditCopilotConfigJsonBodyAiResourceProvider):
15
17
  """
16
18
 
17
19
  path: str
18
- provider: str
20
+ provider: EditCopilotConfigJsonBodyAiResourceProvider
19
21
  additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
20
22
 
21
23
  def to_dict(self) -> Dict[str, Any]:
22
24
  path = self.path
23
- provider = self.provider
25
+ provider = self.provider.value
24
26
 
25
27
  field_dict: Dict[str, Any] = {}
26
28
  field_dict.update(self.additional_properties)
@@ -38,7 +40,7 @@ class EditCopilotConfigJsonBodyAiResource:
38
40
  d = src_dict.copy()
39
41
  path = d.pop("path")
40
42
 
41
- provider = d.pop("provider")
43
+ provider = EditCopilotConfigJsonBodyAiResourceProvider(d.pop("provider"))
42
44
 
43
45
  edit_copilot_config_json_body_ai_resource = cls(
44
46
  path=path,
@@ -0,0 +1,14 @@
1
+ from enum import Enum
2
+
3
+
4
+ class EditCopilotConfigJsonBodyAiResourceProvider(str, Enum):
5
+ ANTHROPIC = "anthropic"
6
+ CUSTOMAI = "customai"
7
+ DEEPSEEK = "deepseek"
8
+ GROQ = "groq"
9
+ MISTRAL = "mistral"
10
+ OPENAI = "openai"
11
+ OPENROUTER = "openrouter"
12
+
13
+ def __str__(self) -> str:
14
+ return str(self.value)
@@ -1,4 +1,4 @@
1
- from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar, Union
1
+ from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar, Union, cast
2
2
 
3
3
  from attrs import define as _attrs_define
4
4
  from attrs import field as _attrs_field
@@ -23,7 +23,7 @@ class GetSettingsResponse200:
23
23
  """
24
24
  Attributes:
25
25
  automatic_billing (bool):
26
- code_completion_enabled (bool):
26
+ ai_models (List[str]):
27
27
  error_handler_muted_on_cancel (bool):
28
28
  workspace_id (Union[Unset, str]):
29
29
  slack_name (Union[Unset, str]):
@@ -37,6 +37,7 @@ class GetSettingsResponse200:
37
37
  webhook (Union[Unset, str]):
38
38
  deploy_to (Union[Unset, str]):
39
39
  ai_resource (Union[Unset, GetSettingsResponse200AiResource]):
40
+ code_completion_model (Union[Unset, str]):
40
41
  error_handler (Union[Unset, str]):
41
42
  error_handler_extra_args (Union[Unset, GetSettingsResponse200ErrorHandlerExtraArgs]):
42
43
  large_file_storage (Union[Unset, GetSettingsResponse200LargeFileStorage]):
@@ -50,7 +51,7 @@ class GetSettingsResponse200:
50
51
  """
51
52
 
52
53
  automatic_billing: bool
53
- code_completion_enabled: bool
54
+ ai_models: List[str]
54
55
  error_handler_muted_on_cancel: bool
55
56
  workspace_id: Union[Unset, str] = UNSET
56
57
  slack_name: Union[Unset, str] = UNSET
@@ -64,6 +65,7 @@ class GetSettingsResponse200:
64
65
  webhook: Union[Unset, str] = UNSET
65
66
  deploy_to: Union[Unset, str] = UNSET
66
67
  ai_resource: Union[Unset, "GetSettingsResponse200AiResource"] = UNSET
68
+ code_completion_model: Union[Unset, str] = UNSET
67
69
  error_handler: Union[Unset, str] = UNSET
68
70
  error_handler_extra_args: Union[Unset, "GetSettingsResponse200ErrorHandlerExtraArgs"] = UNSET
69
71
  large_file_storage: Union[Unset, "GetSettingsResponse200LargeFileStorage"] = UNSET
@@ -78,7 +80,8 @@ class GetSettingsResponse200:
78
80
 
79
81
  def to_dict(self) -> Dict[str, Any]:
80
82
  automatic_billing = self.automatic_billing
81
- code_completion_enabled = self.code_completion_enabled
83
+ ai_models = self.ai_models
84
+
82
85
  error_handler_muted_on_cancel = self.error_handler_muted_on_cancel
83
86
  workspace_id = self.workspace_id
84
87
  slack_name = self.slack_name
@@ -95,6 +98,7 @@ class GetSettingsResponse200:
95
98
  if not isinstance(self.ai_resource, Unset):
96
99
  ai_resource = self.ai_resource.to_dict()
97
100
 
101
+ code_completion_model = self.code_completion_model
98
102
  error_handler = self.error_handler
99
103
  error_handler_extra_args: Union[Unset, Dict[str, Any]] = UNSET
100
104
  if not isinstance(self.error_handler_extra_args, Unset):
@@ -128,7 +132,7 @@ class GetSettingsResponse200:
128
132
  field_dict.update(
129
133
  {
130
134
  "automatic_billing": automatic_billing,
131
- "code_completion_enabled": code_completion_enabled,
135
+ "ai_models": ai_models,
132
136
  "error_handler_muted_on_cancel": error_handler_muted_on_cancel,
133
137
  }
134
138
  )
@@ -156,6 +160,8 @@ class GetSettingsResponse200:
156
160
  field_dict["deploy_to"] = deploy_to
157
161
  if ai_resource is not UNSET:
158
162
  field_dict["ai_resource"] = ai_resource
163
+ if code_completion_model is not UNSET:
164
+ field_dict["code_completion_model"] = code_completion_model
159
165
  if error_handler is not UNSET:
160
166
  field_dict["error_handler"] = error_handler
161
167
  if error_handler_extra_args is not UNSET:
@@ -194,7 +200,7 @@ class GetSettingsResponse200:
194
200
  d = src_dict.copy()
195
201
  automatic_billing = d.pop("automatic_billing")
196
202
 
197
- code_completion_enabled = d.pop("code_completion_enabled")
203
+ ai_models = cast(List[str], d.pop("ai_models"))
198
204
 
199
205
  error_handler_muted_on_cancel = d.pop("error_handler_muted_on_cancel")
200
206
 
@@ -227,6 +233,8 @@ class GetSettingsResponse200:
227
233
  else:
228
234
  ai_resource = GetSettingsResponse200AiResource.from_dict(_ai_resource)
229
235
 
236
+ code_completion_model = d.pop("code_completion_model", UNSET)
237
+
230
238
  error_handler = d.pop("error_handler", UNSET)
231
239
 
232
240
  _error_handler_extra_args = d.pop("error_handler_extra_args", UNSET)
@@ -281,7 +289,7 @@ class GetSettingsResponse200:
281
289
 
282
290
  get_settings_response_200 = cls(
283
291
  automatic_billing=automatic_billing,
284
- code_completion_enabled=code_completion_enabled,
292
+ ai_models=ai_models,
285
293
  error_handler_muted_on_cancel=error_handler_muted_on_cancel,
286
294
  workspace_id=workspace_id,
287
295
  slack_name=slack_name,
@@ -295,6 +303,7 @@ class GetSettingsResponse200:
295
303
  webhook=webhook,
296
304
  deploy_to=deploy_to,
297
305
  ai_resource=ai_resource,
306
+ code_completion_model=code_completion_model,
298
307
  error_handler=error_handler,
299
308
  error_handler_extra_args=error_handler_extra_args,
300
309
  large_file_storage=large_file_storage,
@@ -3,6 +3,8 @@ from typing import Any, Dict, List, Type, TypeVar
3
3
  from attrs import define as _attrs_define
4
4
  from attrs import field as _attrs_field
5
5
 
6
+ from ..models.get_settings_response_200_ai_resource_provider import GetSettingsResponse200AiResourceProvider
7
+
6
8
  T = TypeVar("T", bound="GetSettingsResponse200AiResource")
7
9
 
8
10
 
@@ -11,16 +13,16 @@ class GetSettingsResponse200AiResource:
11
13
  """
12
14
  Attributes:
13
15
  path (str):
14
- provider (str):
16
+ provider (GetSettingsResponse200AiResourceProvider):
15
17
  """
16
18
 
17
19
  path: str
18
- provider: str
20
+ provider: GetSettingsResponse200AiResourceProvider
19
21
  additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
20
22
 
21
23
  def to_dict(self) -> Dict[str, Any]:
22
24
  path = self.path
23
- provider = self.provider
25
+ provider = self.provider.value
24
26
 
25
27
  field_dict: Dict[str, Any] = {}
26
28
  field_dict.update(self.additional_properties)
@@ -38,7 +40,7 @@ class GetSettingsResponse200AiResource:
38
40
  d = src_dict.copy()
39
41
  path = d.pop("path")
40
42
 
41
- provider = d.pop("provider")
43
+ provider = GetSettingsResponse200AiResourceProvider(d.pop("provider"))
42
44
 
43
45
  get_settings_response_200_ai_resource = cls(
44
46
  path=path,
@@ -0,0 +1,14 @@
1
+ from enum import Enum
2
+
3
+
4
+ class GetSettingsResponse200AiResourceProvider(str, Enum):
5
+ ANTHROPIC = "anthropic"
6
+ CUSTOMAI = "customai"
7
+ DEEPSEEK = "deepseek"
8
+ GROQ = "groq"
9
+ MISTRAL = "mistral"
10
+ OPENAI = "openai"
11
+ OPENROUTER = "openrouter"
12
+
13
+ def __str__(self) -> str:
14
+ return str(self.value)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: windmill-api
3
- Version: 1.456.0
3
+ Version: 1.457.0
4
4
  Summary: A client library for accessing Windmill API
5
5
  License: Apache-2.0
6
6
  Author: Ruben Fiszel
@@ -470,7 +470,9 @@ windmill_api/models/add_owner_to_folder_json_body.py,sha256=x6l4UjRcnCFhiIGWeWZA
470
470
  windmill_api/models/add_user_json_body.py,sha256=kz8N_62Ll9o0TpJIVGshzhrVrupE83ADg4n54e2Ev6g,2129
471
471
  windmill_api/models/add_user_to_group_json_body.py,sha256=SFC52GuyKnAuVNmTxkntgLR8-juA7EFufaQQxRhHbbI,1615
472
472
  windmill_api/models/add_user_to_instance_group_json_body.py,sha256=V69z1wJycENQ_bzm7gyl2LkC-Mc4SIJHYpHiXzjo8AU,1537
473
- windmill_api/models/ai_resource.py,sha256=IPu4iv6mfrKTTRbpMQN11ZqYcA7id9F-Jl0MV0OsWH0,1594
473
+ windmill_api/models/ai_provider.py,sha256=AncS3Y5zSjLm3KZUFJOp8BN88FX1HZYlZU4j3_XCss0,289
474
+ windmill_api/models/ai_resource.py,sha256=EQmm9wY2TH5Qkw24AiTqFCawqf5MTrybBbl02QiHk5k,1712
475
+ windmill_api/models/ai_resource_provider.py,sha256=f9MLeRw2gE1BmUVnlu-a9Wc1Eoq-7_Eu_u1IsE0Nal8,297
474
476
  windmill_api/models/app_history.py,sha256=Zi_The8LlMR_uMAAFW5S9kDuxRIYOy5xNda7gHamDfQ,1816
475
477
  windmill_api/models/app_with_last_version.py,sha256=5kZfAbK4XlaKZ4rWKJLY2qL19B_vtSQJgoLzEhWfokU,4813
476
478
  windmill_api/models/app_with_last_version_execution_mode.py,sha256=qIImxSIPQynbsACGBqIJhB-8bi-8xi4hMg_YyBAtb38,214
@@ -845,8 +847,9 @@ windmill_api/models/duckdb_connection_settings_response_200.py,sha256=08YV2mUekj
845
847
  windmill_api/models/duckdb_connection_settings_v2_json_body.py,sha256=PXHb4NxCEnvJwyUqUqnYEhz_O_3Qfnty0qkkLogTjk8,1763
846
848
  windmill_api/models/duckdb_connection_settings_v2_response_200.py,sha256=W9y1f8MP17zeVA8y5z8WFw6qCk8DKOLLcaG9P2cycT0,2189
847
849
  windmill_api/models/edit_auto_invite_json_body.py,sha256=j6RkvSzCakhMfuZrKLHw6KWr961KJwYdSAmuaakqKrI,2174
848
- windmill_api/models/edit_copilot_config_json_body.py,sha256=3U2L0Tn4ekz-lCrtlLhQbjMetjCcr95U-BHRWRzOQU0,2713
849
- windmill_api/models/edit_copilot_config_json_body_ai_resource.py,sha256=UmhYYrMGgYTfLA46tPUtVOlGEUeHZQsfBB7VrJZP3-8,1734
850
+ windmill_api/models/edit_copilot_config_json_body.py,sha256=ZHCpTDkfrKfh158Dn9xNgVwnBOeeebg6sj3A99LnN10,3018
851
+ windmill_api/models/edit_copilot_config_json_body_ai_resource.py,sha256=fJAqC28Non4_CIlq3hJNWg9jLkEtp82sXXVjjZQzwHI,1982
852
+ windmill_api/models/edit_copilot_config_json_body_ai_resource_provider.py,sha256=mA-Sb-d5ry4ulKP6JAy8IYHS9HWRBDmIapsB2tkSzQY,322
850
853
  windmill_api/models/edit_default_scripts_json_body.py,sha256=ZStD18RpNC3spa5hcVcIc_Fv0tsFlBnZ9sw85OOPGQk,2527
851
854
  windmill_api/models/edit_deploy_to_json_body.py,sha256=sLAkpLZdvhIu671Sz-AycSlpKfo1rSh4UM2JiZ_q9mA,1613
852
855
  windmill_api/models/edit_error_handler_json_body.py,sha256=01ZCafsbWj458_zacBteZJBuiAt3bio2G5FEYvF--jA,3552
@@ -2019,8 +2022,9 @@ windmill_api/models/get_script_by_path_with_draft_response_200_schema.py,sha256=
2019
2022
  windmill_api/models/get_script_deployment_status_response_200.py,sha256=xmVrdonWouCGM_3MdoVNSuaAWN8Qt7erpLpfhfauU5c,1985
2020
2023
  windmill_api/models/get_script_history_by_path_response_200_item.py,sha256=vc0iaH2j8BKXxXtjtEg7-lollyA5OxPLYoJsjSUiqc8,2009
2021
2024
  windmill_api/models/get_script_latest_version_response_200.py,sha256=tQENYMrpuFKHrllSdlpHe-P_EnWq74-07mDWIfDEres,1983
2022
- windmill_api/models/get_settings_response_200.py,sha256=13jgvnMDE3cxShsbsGnYJyFFBC0W4yUP6jfFaiuttns,14352
2023
- windmill_api/models/get_settings_response_200_ai_resource.py,sha256=nSn_PFUzUDWNJANgUl75by_lM2x_YbaFUZycC0SzZts,1716
2025
+ windmill_api/models/get_settings_response_200.py,sha256=_LrykWSZpn1EGx5ThZ2___sVDPxmUYyMH4AXF4EGQ8k,14656
2026
+ windmill_api/models/get_settings_response_200_ai_resource.py,sha256=IScOiVoZQ8WYgQE_ESVCagnh19Lj5AkHR03V3Vfmuc4,1948
2027
+ windmill_api/models/get_settings_response_200_ai_resource_provider.py,sha256=gsMt8ONlE8FHD-i2uH9fVBfp-z3QhRRp4y2WLteWaAc,319
2024
2028
  windmill_api/models/get_settings_response_200_default_scripts.py,sha256=Jj7LAapGLNObPcReGeCxbFSgHJ-0V8FJc8hPKVyrhME,2580
2025
2029
  windmill_api/models/get_settings_response_200_deploy_ui.py,sha256=ObNS_KBx9zQipqeKubJiNlzjBsVmNvpC0TZflBUkO2w,2892
2026
2030
  windmill_api/models/get_settings_response_200_deploy_ui_include_type_item.py,sha256=iHsKsTEN-KL9dB_F9uzx7UUsYoIPZy5aEQ_ZviWQSBo,280
@@ -3675,7 +3679,7 @@ windmill_api/models/workspace_invite.py,sha256=HnAJWGv5LwxWkz1T3fhgHKIccO7RFC1li
3675
3679
  windmill_api/models/workspace_mute_critical_alerts_ui_json_body.py,sha256=y8ZwkWEZgavVc-FgLuZZ4z8YPCLxjPcMfdGdKjGM6VQ,1883
3676
3680
  windmill_api/py.typed,sha256=8ZJUsxZiuOy1oJeVhsTWQhTG_6pTVHVXk5hJL79ebTk,25
3677
3681
  windmill_api/types.py,sha256=GoYub3t4hQP2Yn5tsvShsBfIY3vHUmblU0MXszDx_V0,968
3678
- windmill_api-1.456.0.dist-info/LICENSE,sha256=qJVFNTaOevCeSY6NoXeUG1SPOwQ1K-PxVQ2iEWJzX-A,11348
3679
- windmill_api-1.456.0.dist-info/METADATA,sha256=8KQ2Fz4lVNA6nr2KRo9cH4gej8N_6LF_Bj4m9rVDp_o,5023
3680
- windmill_api-1.456.0.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
3681
- windmill_api-1.456.0.dist-info/RECORD,,
3682
+ windmill_api-1.457.0.dist-info/LICENSE,sha256=qJVFNTaOevCeSY6NoXeUG1SPOwQ1K-PxVQ2iEWJzX-A,11348
3683
+ windmill_api-1.457.0.dist-info/METADATA,sha256=j-ytdXFAh_pCVjgFPn5zqF79jfjvFARM78FJgp9J0YU,5023
3684
+ windmill_api-1.457.0.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
3685
+ windmill_api-1.457.0.dist-info/RECORD,,