automizor 0.4.16__py3-none-any.whl → 0.4.17__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.
- automizor/__init__.py +18 -1
- automizor/action/_action.py +5 -12
- automizor/datastore/_datastore.py +11 -21
- automizor/exceptions.py +59 -10
- automizor/job/_job.py +5 -12
- automizor/storage/_storage.py +47 -91
- automizor/vault/_vault.py +17 -36
- automizor/workflow/_workflow.py +11 -17
- {automizor-0.4.16.dist-info → automizor-0.4.17.dist-info}/METADATA +11 -2
- automizor-0.4.17.dist-info/RECORD +22 -0
- {automizor-0.4.16.dist-info → automizor-0.4.17.dist-info}/WHEEL +1 -1
- automizor-0.4.16.dist-info/RECORD +0 -22
- {automizor-0.4.16.dist-info → automizor-0.4.17.dist-info/licenses}/LICENSE +0 -0
- {automizor-0.4.16.dist-info → automizor-0.4.17.dist-info}/top_level.txt +0 -0
automizor/__init__.py
CHANGED
@@ -1 +1,18 @@
|
|
1
|
-
|
1
|
+
import requests
|
2
|
+
from requests.adapters import HTTPAdapter
|
3
|
+
from urllib3.util.retry import Retry
|
4
|
+
|
5
|
+
retry_strategy = Retry(
|
6
|
+
total=6,
|
7
|
+
backoff_factor=1,
|
8
|
+
status_forcelist=[429, 500, 502, 503, 504, 520, 521, 522, 523, 524],
|
9
|
+
allowed_methods=["GET", "POST", "PUT", "DELETE", "HEAD", "OPTIONS"],
|
10
|
+
raise_on_status=False,
|
11
|
+
)
|
12
|
+
|
13
|
+
adapter = HTTPAdapter(max_retries=retry_strategy)
|
14
|
+
session = requests.Session()
|
15
|
+
session.mount("https://", adapter)
|
16
|
+
session.mount("http://", adapter)
|
17
|
+
|
18
|
+
version = "0.4.17"
|
automizor/action/_action.py
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
from typing import Optional
|
2
2
|
|
3
|
-
import
|
4
|
-
|
3
|
+
from automizor import session
|
5
4
|
from automizor.exceptions import AutomizorError
|
6
5
|
from automizor.utils import JSON, get_api_config, get_headers
|
7
6
|
|
@@ -79,13 +78,7 @@ class Action:
|
|
79
78
|
AutomizorError: If there is an error executing the action.
|
80
79
|
"""
|
81
80
|
url = f"https://{self.url}/api/v2/action/{name}/execute?workspace={workspace}"
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
except requests.HTTPError as exc:
|
87
|
-
raise AutomizorError.from_response(
|
88
|
-
exc.response, "Failed to execute action"
|
89
|
-
) from exc
|
90
|
-
except Exception as exc:
|
91
|
-
raise AutomizorError(f"Failed to execute action: {exc}") from exc
|
81
|
+
response = session.put(url, headers=self.headers, data=payload, timeout=90)
|
82
|
+
if response.status_code >= 400:
|
83
|
+
raise AutomizorError.from_response(response, "Failed to execute action")
|
84
|
+
return response.json()
|
@@ -1,7 +1,6 @@
|
|
1
1
|
from typing import Optional
|
2
2
|
|
3
|
-
import
|
4
|
-
|
3
|
+
from automizor import session
|
5
4
|
from automizor.exceptions import AutomizorError
|
6
5
|
from automizor.utils import JSON, get_api_config, get_headers
|
7
6
|
|
@@ -76,27 +75,18 @@ class DataStore:
|
|
76
75
|
else {}
|
77
76
|
)
|
78
77
|
url = f"https://{self.url}/api/v1/workflow/datastore/{name}/values/"
|
79
|
-
|
80
|
-
|
81
|
-
url, headers=self.headers, params=params, timeout=10
|
82
|
-
)
|
83
|
-
response.raise_for_status()
|
84
|
-
return response.json()
|
85
|
-
except requests.HTTPError as exc:
|
78
|
+
response = session.get(url, headers=self.headers, params=params, timeout=10)
|
79
|
+
if response.status_code >= 400:
|
86
80
|
raise AutomizorError.from_response(
|
87
|
-
|
88
|
-
)
|
89
|
-
|
90
|
-
|
81
|
+
response, "Failed to get datastore values"
|
82
|
+
)
|
83
|
+
|
84
|
+
return response.json()
|
91
85
|
|
92
86
|
def _set_values(self, name: str, values: JSON) -> None:
|
93
87
|
url = f"https://{self.url}/api/v1/workflow/datastore/{name}/values/"
|
94
|
-
|
95
|
-
|
96
|
-
response.raise_for_status()
|
97
|
-
except requests.HTTPError as exc:
|
88
|
+
response = session.post(url, headers=self.headers, json=values, timeout=10)
|
89
|
+
if response.status_code >= 400:
|
98
90
|
raise AutomizorError.from_response(
|
99
|
-
|
100
|
-
)
|
101
|
-
except Exception as exc:
|
102
|
-
raise AutomizorError(f"Failed to set datastore values: {exc}") from exc
|
91
|
+
response, "Failed to set datastore values"
|
92
|
+
)
|
automizor/exceptions.py
CHANGED
@@ -2,13 +2,18 @@ from requests import Response
|
|
2
2
|
|
3
3
|
|
4
4
|
class AutomizorError(Exception):
|
5
|
-
def __init__(self, message,
|
6
|
-
|
7
|
-
|
5
|
+
def __init__(self, message: str, *, status_code=None, url=None):
|
6
|
+
self.status_code = status_code
|
7
|
+
self.url = url
|
8
8
|
super().__init__(message)
|
9
9
|
|
10
10
|
def __str__(self):
|
11
|
-
|
11
|
+
base = f"{self.args[0]}"
|
12
|
+
if self.status_code:
|
13
|
+
base += f" (status {self.status_code})"
|
14
|
+
if self.url:
|
15
|
+
base += f" → {self.url}"
|
16
|
+
return base
|
12
17
|
|
13
18
|
@classmethod
|
14
19
|
def from_response(cls, response: Response, message: str):
|
@@ -21,15 +26,23 @@ class AutomizorError(Exception):
|
|
21
26
|
500: InternalServerError,
|
22
27
|
502: BadGateway,
|
23
28
|
503: ServiceUnavailable,
|
29
|
+
504: GatewayTimeout,
|
30
|
+
520: OriginError,
|
31
|
+
521: OriginDown,
|
32
|
+
522: ConnectionTimedOut,
|
33
|
+
523: OriginUnreachable,
|
34
|
+
524: TimeoutOccurred,
|
35
|
+
525: SSLHandshakeFailed,
|
36
|
+
526: InvalidSSLCertificate,
|
37
|
+
530: OriginDNSError,
|
24
38
|
}
|
25
39
|
|
26
|
-
|
27
|
-
error = dict(response.json()).get("detail", "Unknown error.")
|
28
|
-
except Exception: # pylint: disable=broad-except
|
29
|
-
error = response.text
|
40
|
+
exc_class = _STATUS_EXCEPTION_MAP.get(response.status_code, UnexpectedError)
|
30
41
|
|
31
|
-
return
|
32
|
-
message,
|
42
|
+
return exc_class(
|
43
|
+
message,
|
44
|
+
status_code=response.status_code,
|
45
|
+
url=response.url,
|
33
46
|
)
|
34
47
|
|
35
48
|
|
@@ -37,10 +50,18 @@ class BadGateway(AutomizorError):
|
|
37
50
|
pass
|
38
51
|
|
39
52
|
|
53
|
+
class ConnectionTimedOut(AutomizorError):
|
54
|
+
pass
|
55
|
+
|
56
|
+
|
40
57
|
class Forbidden(AutomizorError):
|
41
58
|
pass
|
42
59
|
|
43
60
|
|
61
|
+
class GatewayTimeout(AutomizorError):
|
62
|
+
pass
|
63
|
+
|
64
|
+
|
44
65
|
class InternalServerError(AutomizorError):
|
45
66
|
pass
|
46
67
|
|
@@ -49,18 +70,46 @@ class InvalidRequest(AutomizorError):
|
|
49
70
|
pass
|
50
71
|
|
51
72
|
|
73
|
+
class InvalidSSLCertificate(AutomizorError):
|
74
|
+
pass
|
75
|
+
|
76
|
+
|
52
77
|
class NotFound(AutomizorError):
|
53
78
|
pass
|
54
79
|
|
55
80
|
|
81
|
+
class OriginDNSError(AutomizorError):
|
82
|
+
pass
|
83
|
+
|
84
|
+
|
85
|
+
class OriginDown(AutomizorError):
|
86
|
+
pass
|
87
|
+
|
88
|
+
|
89
|
+
class OriginError(AutomizorError):
|
90
|
+
pass
|
91
|
+
|
92
|
+
|
93
|
+
class OriginUnreachable(AutomizorError):
|
94
|
+
pass
|
95
|
+
|
96
|
+
|
56
97
|
class RateLimitExceeded(AutomizorError):
|
57
98
|
pass
|
58
99
|
|
59
100
|
|
101
|
+
class SSLHandshakeFailed(AutomizorError):
|
102
|
+
pass
|
103
|
+
|
104
|
+
|
60
105
|
class ServiceUnavailable(AutomizorError):
|
61
106
|
pass
|
62
107
|
|
63
108
|
|
109
|
+
class TimeoutOccurred(AutomizorError):
|
110
|
+
pass
|
111
|
+
|
112
|
+
|
64
113
|
class Unauthorized(AutomizorError):
|
65
114
|
pass
|
66
115
|
|
automizor/job/_job.py
CHANGED
@@ -2,8 +2,7 @@ import json
|
|
2
2
|
import os
|
3
3
|
from typing import Optional
|
4
4
|
|
5
|
-
import
|
6
|
-
|
5
|
+
from automizor import session
|
7
6
|
from automizor.exceptions import AutomizorError
|
8
7
|
from automizor.utils import JSON, get_api_config, get_headers
|
9
8
|
|
@@ -128,13 +127,7 @@ class Job:
|
|
128
127
|
|
129
128
|
def _read_job_context(self) -> dict:
|
130
129
|
url = f"https://{self.url}/api/v1/rpa/job/{self._job_id}/"
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
except requests.HTTPError as exc:
|
136
|
-
raise AutomizorError.from_response(
|
137
|
-
exc.response, "Failed to get job context"
|
138
|
-
) from exc
|
139
|
-
except Exception as exc:
|
140
|
-
raise AutomizorError(f"Failed to get job context: {exc}") from exc
|
130
|
+
response = session.get(url, headers=self.headers, timeout=10)
|
131
|
+
if response.status_code >= 400:
|
132
|
+
raise AutomizorError.from_response(response, "Failed to get job context")
|
133
|
+
return response.json().get("context", {})
|
automizor/storage/_storage.py
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
from typing import List, Optional
|
2
2
|
|
3
|
-
import
|
4
|
-
|
3
|
+
from automizor import session
|
5
4
|
from automizor.exceptions import AutomizorError, NotFound
|
6
5
|
from automizor.utils import JSON, get_api_config, get_headers
|
7
6
|
|
@@ -77,21 +76,15 @@ class Storage:
|
|
77
76
|
url = f"https://{self.url}/api/v1/storage/asset/"
|
78
77
|
asset_names = []
|
79
78
|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
except requests.HTTPError as exc:
|
90
|
-
raise AutomizorError.from_response(
|
91
|
-
exc.response, "Failed to list assets"
|
92
|
-
) from exc
|
93
|
-
except Exception as exc:
|
94
|
-
raise AutomizorError(f"Failed to list assets: {exc}") from exc
|
79
|
+
while url:
|
80
|
+
response = session.get(url, headers=self.headers, timeout=10)
|
81
|
+
if response.status_code >= 400:
|
82
|
+
raise AutomizorError.from_response(response, "Failed to list assets")
|
83
|
+
data = response.json()
|
84
|
+
|
85
|
+
for asset in data["results"]:
|
86
|
+
asset_names.append(asset["name"])
|
87
|
+
url = data["next"]
|
95
88
|
return asset_names
|
96
89
|
|
97
90
|
def delete_asset(self, name: str):
|
@@ -107,15 +100,9 @@ class Storage:
|
|
107
100
|
"""
|
108
101
|
|
109
102
|
url = f"https://{self.url}/api/v1/storage/asset/{name}/"
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
except requests.HTTPError as exc:
|
114
|
-
raise AutomizorError.from_response(
|
115
|
-
exc.response, "Failed to delete asset"
|
116
|
-
) from exc
|
117
|
-
except Exception as exc:
|
118
|
-
raise AutomizorError(f"Failed to delete asset: {exc}") from exc
|
103
|
+
response = session.delete(url, headers=self.headers, timeout=10)
|
104
|
+
if response.status_code >= 400:
|
105
|
+
raise AutomizorError.from_response(response, "Failed to delete asset")
|
119
106
|
|
120
107
|
def get_bytes(self, name: str) -> bytes:
|
121
108
|
"""
|
@@ -224,61 +211,39 @@ class Storage:
|
|
224
211
|
"""
|
225
212
|
|
226
213
|
url = f"https://{self.url}/api/v1/storage/asset/"
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
response
|
234
|
-
url, headers=self.headers, files=files, data=data, timeout=10
|
235
|
-
)
|
236
|
-
response.raise_for_status()
|
237
|
-
except requests.HTTPError as exc:
|
238
|
-
raise AutomizorError.from_response(
|
239
|
-
exc.response, "Failed to create asset"
|
240
|
-
) from exc
|
241
|
-
except Exception as exc:
|
242
|
-
raise AutomizorError(f"Failed to create asset: {exc}") from exc
|
214
|
+
data = {"content_type": content_type, "name": name}
|
215
|
+
files = {"file": ("text.txt", content, content_type)}
|
216
|
+
response = session.post(
|
217
|
+
url, headers=self.headers, files=files, data=data, timeout=10
|
218
|
+
)
|
219
|
+
if response.status_code >= 400:
|
220
|
+
raise AutomizorError.from_response(response, "Failed to create asset")
|
243
221
|
|
244
222
|
def _download_file(self, name: str, mode: str = "content"):
|
245
223
|
url = self._get_asset_url(name)
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
raise RuntimeError(f"Invalid mode {mode}")
|
259
|
-
except requests.HTTPError as exc:
|
260
|
-
raise AutomizorError.from_response(
|
261
|
-
exc.response, "Failed to download asset"
|
262
|
-
) from exc
|
263
|
-
except Exception as exc:
|
264
|
-
raise AutomizorError(f"Failed to download asset: {exc}") from exc
|
224
|
+
response = session.get(url=url, timeout=10)
|
225
|
+
if response.status_code >= 400:
|
226
|
+
raise AutomizorError.from_response(response, "Failed to download asset")
|
227
|
+
|
228
|
+
match mode:
|
229
|
+
case "content":
|
230
|
+
return response.content
|
231
|
+
case "json":
|
232
|
+
return response.json()
|
233
|
+
case "text":
|
234
|
+
return response.text
|
235
|
+
raise RuntimeError(f"Invalid mode {mode}")
|
265
236
|
|
266
237
|
def _get_asset_url(self, name: str) -> str:
|
267
238
|
url = f"https://{self.url}/api/v1/storage/asset/{name}/"
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
except requests.HTTPError as exc:
|
277
|
-
raise AutomizorError.from_response(
|
278
|
-
exc.response, "Failed to get asset URL"
|
279
|
-
) from exc
|
280
|
-
except Exception as exc:
|
281
|
-
raise AutomizorError(f"Failed to get asset URL: {exc}") from exc
|
239
|
+
response = session.get(url, headers=self.headers, timeout=10)
|
240
|
+
if response.status_code >= 400:
|
241
|
+
raise AutomizorError.from_response(response, "Failed to get asset URL")
|
242
|
+
|
243
|
+
url = response.json().get("file")
|
244
|
+
if url:
|
245
|
+
return url
|
246
|
+
raise RuntimeError("Url not found")
|
282
247
|
|
283
248
|
def _update_asset(self, name: str, content: bytes, content_type: str):
|
284
249
|
"""
|
@@ -295,19 +260,10 @@ class Storage:
|
|
295
260
|
"""
|
296
261
|
|
297
262
|
url = f"https://{self.url}/api/v1/storage/asset/{name}/"
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
response
|
305
|
-
url, headers=self.headers, files=files, data=data, timeout=10
|
306
|
-
)
|
307
|
-
response.raise_for_status()
|
308
|
-
except requests.HTTPError as exc:
|
309
|
-
raise AutomizorError.from_response(
|
310
|
-
exc.response, "Failed to update asset"
|
311
|
-
) from exc
|
312
|
-
except Exception as exc:
|
313
|
-
raise AutomizorError(f"Failed to update asset: {exc}") from exc
|
263
|
+
data = {"content_type": content_type, "name": name}
|
264
|
+
files = {"file": ("text.txt", content, content_type)}
|
265
|
+
response = session.put(
|
266
|
+
url, headers=self.headers, files=files, data=data, timeout=10
|
267
|
+
)
|
268
|
+
if response.status_code >= 400:
|
269
|
+
raise AutomizorError.from_response(response, "Failed to update asset")
|
automizor/vault/_vault.py
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
from dataclasses import asdict
|
2
2
|
from typing import Optional
|
3
3
|
|
4
|
-
import
|
5
|
-
|
4
|
+
from automizor import session
|
6
5
|
from automizor.exceptions import AutomizorError, NotFound
|
7
6
|
from automizor.utils import get_api_config, get_headers
|
8
7
|
|
@@ -113,43 +112,25 @@ class Vault:
|
|
113
112
|
|
114
113
|
def _create_secret(self, secret: SecretContainer) -> SecretContainer:
|
115
114
|
url = f"https://{self.url}/api/v1/vault/secret/"
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
except requests.HTTPError as exc:
|
123
|
-
raise AutomizorError.from_response(
|
124
|
-
exc.response, "Failed to create secret"
|
125
|
-
) from exc
|
126
|
-
except Exception as exc:
|
127
|
-
raise AutomizorError(f"Failed to create secret: {exc}") from exc
|
115
|
+
response = session.post(
|
116
|
+
url, headers=self.headers, timeout=10, json=asdict(secret)
|
117
|
+
)
|
118
|
+
if response.status_code >= 400:
|
119
|
+
raise AutomizorError.from_response(response, "Failed to create secret")
|
120
|
+
return SecretContainer(**response.json())
|
128
121
|
|
129
122
|
def _get_secret(self, name: str) -> SecretContainer:
|
130
123
|
url = f"https://{self.url}/api/v1/vault/secret/{name}/"
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
except requests.HTTPError as exc:
|
136
|
-
raise AutomizorError.from_response(
|
137
|
-
exc.response, "Failed to get secret"
|
138
|
-
) from exc
|
139
|
-
except Exception as exc:
|
140
|
-
raise AutomizorError(f"Failed to get secret: {exc}") from exc
|
124
|
+
response = session.get(url, headers=self.headers, timeout=10)
|
125
|
+
if response.status_code >= 400:
|
126
|
+
raise AutomizorError.from_response(response, "Failed to get secret")
|
127
|
+
return SecretContainer(**response.json())
|
141
128
|
|
142
129
|
def _update_secret(self, secret: SecretContainer) -> SecretContainer:
|
143
130
|
url = f"https://{self.url}/api/v1/vault/secret/{secret.name}/"
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
except requests.HTTPError as exc:
|
151
|
-
raise AutomizorError.from_response(
|
152
|
-
exc.response, "Failed to update secret"
|
153
|
-
) from exc
|
154
|
-
except Exception as exc:
|
155
|
-
raise AutomizorError(f"Failed to update secret: {exc}") from exc
|
131
|
+
response = session.put(
|
132
|
+
url, headers=self.headers, timeout=10, json=asdict(secret)
|
133
|
+
)
|
134
|
+
if response.status_code >= 400:
|
135
|
+
raise AutomizorError.from_response(response, "Failed to update secret")
|
136
|
+
return SecretContainer(**response.json())
|
automizor/workflow/_workflow.py
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
from typing import Optional
|
2
2
|
|
3
|
-
import
|
4
|
-
|
3
|
+
from automizor import session
|
5
4
|
from automizor.exceptions import AutomizorError
|
6
5
|
from automizor.utils import get_api_config, get_headers
|
7
6
|
|
@@ -85,18 +84,13 @@ class Workflow:
|
|
85
84
|
AutomizorError: If there is an error in creating the instance.
|
86
85
|
"""
|
87
86
|
url = f"https://{self.url}/api/v1/workflow/instance/"
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
raise AutomizorError.from_response(
|
99
|
-
exc.response, "Failed to create instance"
|
100
|
-
) from exc
|
101
|
-
except Exception as exc:
|
102
|
-
raise AutomizorError(f"Failed to create instance: {exc}") from exc
|
87
|
+
|
88
|
+
data = {
|
89
|
+
"business_key": business_key,
|
90
|
+
"initial_data": payload,
|
91
|
+
"process_model": process_model,
|
92
|
+
"workspace": workspace,
|
93
|
+
}
|
94
|
+
response = session.post(url, headers=self.headers, data=data, timeout=10)
|
95
|
+
if response.status_code >= 400:
|
96
|
+
raise AutomizorError.from_response(response, "Failed to create instance")
|
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.4
|
2
2
|
Name: automizor
|
3
|
-
Version: 0.4.
|
3
|
+
Version: 0.4.17
|
4
4
|
Summary: Python Automizor framework
|
5
5
|
Home-page: https://github.com/automizor/automizor-python
|
6
6
|
Author: Christian Fischer
|
@@ -16,3 +16,12 @@ Classifier: Programming Language :: Python :: 3.11
|
|
16
16
|
Classifier: Programming Language :: Python :: 3.12
|
17
17
|
License-File: LICENSE
|
18
18
|
Requires-Dist: requests
|
19
|
+
Dynamic: author
|
20
|
+
Dynamic: author-email
|
21
|
+
Dynamic: classifier
|
22
|
+
Dynamic: home-page
|
23
|
+
Dynamic: keywords
|
24
|
+
Dynamic: license
|
25
|
+
Dynamic: license-file
|
26
|
+
Dynamic: requires-dist
|
27
|
+
Dynamic: summary
|
@@ -0,0 +1,22 @@
|
|
1
|
+
automizor/__init__.py,sha256=CvJ_KPR1GztiZ4yeQO6VZtWddeQqrIrQZrFk6zTJ81w,499
|
2
|
+
automizor/exceptions.py,sha256=f3dHiW6Tb7jU4Fy1xmNuhLEUvnuZFVSa40sgu1nL4o4,2250
|
3
|
+
automizor/utils.py,sha256=UDYuSERa3IrS_1NreBTNBYf6j25ga2AiwRdq0c3kfvM,965
|
4
|
+
automizor/action/__init__.py,sha256=nZinP2WYc8Da3rxE10Ul0V31GbEFXRgCYXtBOQ-0LwQ,767
|
5
|
+
automizor/action/_action.py,sha256=Yy-11BmIPuP4lhlNxhjfJYgcOqjhxrXCNesNfWht6WI,2692
|
6
|
+
automizor/datastore/__init__.py,sha256=_rAdRfKnTa4SuSLl9GkAYziBPPLsy6yGfS0HprgokOk,2418
|
7
|
+
automizor/datastore/_container.py,sha256=rHRkSWaRgy2rk6Qy-7ADFKvuET_COZ2i9VD7gvRDnlM,745
|
8
|
+
automizor/datastore/_datastore.py,sha256=vksJ7NwOz-9D_elnyiOCvmhI0nnnEs1GkOkKOwRZEzw,2996
|
9
|
+
automizor/job/__init__.py,sha256=pDqSfR4lAyJNCi-fpG6byUPidHz8sntBs0bB2lJFVAY,1118
|
10
|
+
automizor/job/_job.py,sha256=nk_CzoKRuXnPF9cRdhwrf_oqcwvbPaP_DkFKOSKIrqE,5234
|
11
|
+
automizor/storage/__init__.py,sha256=vCez0LucHQeRZDfX5xZulxf06i3ezVyFl4vL3-EYXXU,4160
|
12
|
+
automizor/storage/_storage.py,sha256=xaTRC6A5QpFNdKcqNFAWQqIAaCnqcSk1NHzFcBV5_MY,9929
|
13
|
+
automizor/vault/__init__.py,sha256=21Ag2zQk7x27Bh0yt_kSO2MkgT3eafbdlKe0NuQEqr8,1796
|
14
|
+
automizor/vault/_container.py,sha256=-2y7kASigoIVAebuQBk-0R_sI4gfmvjsMLuMg_tR1xA,1945
|
15
|
+
automizor/vault/_vault.py,sha256=-7ZHvf-JJSbs5bP6EF6Dpzqv2iy4_Qh1fWFyXi2A8vg,4453
|
16
|
+
automizor/workflow/__init__.py,sha256=J1K_ogAvbeREPbAmVxsAI1SOVHi_5DXnO9JuEKOMdt8,958
|
17
|
+
automizor/workflow/_workflow.py,sha256=QxvMMtTT-NEkjHxRyOr1BSDlmnKnas6oMtDVFcG1g1w,3342
|
18
|
+
automizor-0.4.17.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
19
|
+
automizor-0.4.17.dist-info/METADATA,sha256=zBW-d2P0-Y9iVmhp6tWhQLDpMBw4kM6VG6Zqc2kaIpQ,842
|
20
|
+
automizor-0.4.17.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
21
|
+
automizor-0.4.17.dist-info/top_level.txt,sha256=gScDy4I3tP6BMYAsTAlBXrxVh3E00zV0UioxwXJOI3Y,10
|
22
|
+
automizor-0.4.17.dist-info/RECORD,,
|
@@ -1,22 +0,0 @@
|
|
1
|
-
automizor/__init__.py,sha256=O7b18uPS1SLiY9Wi-TKn2X2Hx_5j8a4A_4MZLAQFg10,19
|
2
|
-
automizor/exceptions.py,sha256=P5imySIOtG3ZIk2kh41Yod4RnlgTj7Vf0P3M-RuxQJs,1382
|
3
|
-
automizor/utils.py,sha256=UDYuSERa3IrS_1NreBTNBYf6j25ga2AiwRdq0c3kfvM,965
|
4
|
-
automizor/action/__init__.py,sha256=nZinP2WYc8Da3rxE10Ul0V31GbEFXRgCYXtBOQ-0LwQ,767
|
5
|
-
automizor/action/_action.py,sha256=Gh_S5EAHApKFtDeJuN5K_tbPJSxy4z7MUmUIb9YVcSI,2897
|
6
|
-
automizor/datastore/__init__.py,sha256=_rAdRfKnTa4SuSLl9GkAYziBPPLsy6yGfS0HprgokOk,2418
|
7
|
-
automizor/datastore/_container.py,sha256=rHRkSWaRgy2rk6Qy-7ADFKvuET_COZ2i9VD7gvRDnlM,745
|
8
|
-
automizor/datastore/_datastore.py,sha256=Tv0vRjIyeUfVy3V8pcZVN1dX7q7v8JbJ9L3SCIxX8aM,3396
|
9
|
-
automizor/job/__init__.py,sha256=pDqSfR4lAyJNCi-fpG6byUPidHz8sntBs0bB2lJFVAY,1118
|
10
|
-
automizor/job/_job.py,sha256=XJX9Q7GeOErb7U9Wb01Wv1twIlBqNnJePb0Epc8NdTs,5440
|
11
|
-
automizor/storage/__init__.py,sha256=vCez0LucHQeRZDfX5xZulxf06i3ezVyFl4vL3-EYXXU,4160
|
12
|
-
automizor/storage/_storage.py,sha256=x5gPxGkzQe21wDDnCLtmVWU0g9JeklPu9iIYVlPDRnk,11381
|
13
|
-
automizor/vault/__init__.py,sha256=21Ag2zQk7x27Bh0yt_kSO2MkgT3eafbdlKe0NuQEqr8,1796
|
14
|
-
automizor/vault/_container.py,sha256=-2y7kASigoIVAebuQBk-0R_sI4gfmvjsMLuMg_tR1xA,1945
|
15
|
-
automizor/vault/_vault.py,sha256=pXS1Qcltjh48n9R0NX4q7PSpXT_XFjifRy9Hu4aQnUQ,5104
|
16
|
-
automizor/workflow/__init__.py,sha256=J1K_ogAvbeREPbAmVxsAI1SOVHi_5DXnO9JuEKOMdt8,958
|
17
|
-
automizor/workflow/_workflow.py,sha256=XhcDNBmORdqErj25sO1yb2koKObAFXVkgXrV7xx3EtI,3567
|
18
|
-
automizor-0.4.16.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
19
|
-
automizor-0.4.16.dist-info/METADATA,sha256=-2IldzFlFJgApP0sH4ndITwcmjldY0z8_eleqY-SZrQ,668
|
20
|
-
automizor-0.4.16.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
21
|
-
automizor-0.4.16.dist-info/top_level.txt,sha256=gScDy4I3tP6BMYAsTAlBXrxVh3E00zV0UioxwXJOI3Y,10
|
22
|
-
automizor-0.4.16.dist-info/RECORD,,
|
File without changes
|
File without changes
|