agilicus 1.260.2__py3-none-any.whl → 1.261.1__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.
- agilicus/agilicus_api/api_client.py +1 -1
- agilicus/agilicus_api/configuration.py +1 -1
- agilicus/agilicus_api_README.md +1 -1
- agilicus/connectors.py +34 -4
- agilicus/main.py +1 -0
- agilicus/output/table.py +29 -0
- agilicus/policy/policies.py +37 -14
- agilicus/policy/policy_main.py +2 -0
- {agilicus-1.260.2.dist-info → agilicus-1.261.1.dist-info}/METADATA +1 -1
- {agilicus-1.260.2.dist-info → agilicus-1.261.1.dist-info}/RECORD +13 -13
- {agilicus-1.260.2.dist-info → agilicus-1.261.1.dist-info}/LICENSE.txt +0 -0
- {agilicus-1.260.2.dist-info → agilicus-1.261.1.dist-info}/WHEEL +0 -0
- {agilicus-1.260.2.dist-info → agilicus-1.261.1.dist-info}/entry_points.txt +0 -0
@@ -77,7 +77,7 @@ class ApiClient(object):
|
|
77
77
|
self.default_headers[header_name] = header_value
|
78
78
|
self.cookie = cookie
|
79
79
|
# Set default User-Agent.
|
80
|
-
self.user_agent = 'OpenAPI-Generator/1.
|
80
|
+
self.user_agent = 'OpenAPI-Generator/1.261.1/python'
|
81
81
|
|
82
82
|
def __enter__(self):
|
83
83
|
return self
|
@@ -387,7 +387,7 @@ class Configuration(object):
|
|
387
387
|
"OS: {env}\n"\
|
388
388
|
"Python Version: {pyversion}\n"\
|
389
389
|
"Version of the API: 2024.06.21\n"\
|
390
|
-
"SDK Package Version: 1.
|
390
|
+
"SDK Package Version: 1.261.1".\
|
391
391
|
format(env=sys.platform, pyversion=sys.version)
|
392
392
|
|
393
393
|
def get_host_settings(self):
|
agilicus/agilicus_api_README.md
CHANGED
@@ -4,7 +4,7 @@ Agilicus is API-first. Modern software is controlled by other software, is open,
|
|
4
4
|
The `agilicus_api` package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
|
5
5
|
|
6
6
|
- API version: 2024.06.21
|
7
|
-
- Package version: 1.
|
7
|
+
- Package version: 1.261.1
|
8
8
|
- Build package: org.openapitools.codegen.languages.PythonClientCodegen
|
9
9
|
For more information, please visit [https://www.agilicus.com/api](https://www.agilicus.com/api)
|
10
10
|
|
agilicus/connectors.py
CHANGED
@@ -49,17 +49,44 @@ def _filter_version(connector, not_version=None):
|
|
49
49
|
return filter_out
|
50
50
|
|
51
51
|
|
52
|
-
def
|
52
|
+
def _filter_os_version(connector, os_version_regex):
|
53
|
+
if not os_version_regex:
|
54
|
+
return False
|
55
|
+
|
56
|
+
filter_out = True
|
57
|
+
for instance in connector["status"].get("instances", []):
|
58
|
+
try:
|
59
|
+
if os_version_regex.match(_get_os_version(instance, "")):
|
60
|
+
filter_out = False
|
61
|
+
except Exception:
|
62
|
+
pass
|
63
|
+
return filter_out
|
64
|
+
|
65
|
+
|
66
|
+
def do_filter(
|
67
|
+
ctx,
|
68
|
+
no_down,
|
69
|
+
connectors,
|
70
|
+
not_version=None,
|
71
|
+
sort_by=None,
|
72
|
+
filter_os_version=None,
|
73
|
+
**kwargs,
|
74
|
+
):
|
53
75
|
if sort_by:
|
54
76
|
connectors = sorted(connectors, key=lambda k: (operator.attrgetter(*sort_by)(k)))
|
55
77
|
|
56
|
-
|
57
|
-
|
78
|
+
os_version_regex = None
|
79
|
+
if filter_os_version:
|
80
|
+
os_version_regex = re.compile(filter_os_version)
|
58
81
|
filtered_connectors = []
|
59
82
|
for connector in connectors:
|
60
83
|
if _filter_version(connector, not_version):
|
61
84
|
continue
|
62
|
-
if connector
|
85
|
+
if _filter_os_version(connector, os_version_regex):
|
86
|
+
continue
|
87
|
+
if not no_down:
|
88
|
+
filtered_connectors.append(connector)
|
89
|
+
elif connector["status"]["operational_status"]["status"] != "down":
|
63
90
|
filtered_connectors.append(connector)
|
64
91
|
return filtered_connectors
|
65
92
|
|
@@ -71,6 +98,7 @@ def query(
|
|
71
98
|
sort_by=None,
|
72
99
|
page_at_id=None,
|
73
100
|
page_size=500,
|
101
|
+
filter_os_version=None,
|
74
102
|
**kwargs,
|
75
103
|
):
|
76
104
|
token = context.get_token(ctx)
|
@@ -96,6 +124,7 @@ def query(
|
|
96
124
|
query_results,
|
97
125
|
not_version=not_version,
|
98
126
|
sort_by=sort_by,
|
127
|
+
filter_os_version=filter_os_version,
|
99
128
|
**kwargs,
|
100
129
|
)
|
101
130
|
|
@@ -170,6 +199,7 @@ def _instances_table():
|
|
170
199
|
status_column("instance_number"),
|
171
200
|
column("status", newname="status", getter=_get_oper_status, optional=True),
|
172
201
|
column("hostname", getter=_get_hostname, optional=True),
|
202
|
+
column("os_version", getter=_get_os_version, optional=True),
|
173
203
|
column("version", getter=_get_version, optional=True),
|
174
204
|
column(
|
175
205
|
"stats",
|
agilicus/main.py
CHANGED
@@ -5189,6 +5189,7 @@ def show_api_key_introspection(ctx, email, api_key, include_suborgs=False, **kwa
|
|
5189
5189
|
@click.option("--no-down", is_flag=True, type=bool, default=False)
|
5190
5190
|
@click.option("--page-at-id", default=None)
|
5191
5191
|
@click.option("--page-size", default=500, type=int)
|
5192
|
+
@click.option("--filter-os-version", default=None)
|
5192
5193
|
@click.option(
|
5193
5194
|
"--sort-by",
|
5194
5195
|
type=click.Choice(["metadata.created", "status.operational_status.status"]),
|
agilicus/output/table.py
CHANGED
@@ -221,12 +221,41 @@ def _dump_json(ctx, to_dump):
|
|
221
221
|
return convert_to_json(ctx, to_dump_as_dict)
|
222
222
|
|
223
223
|
|
224
|
+
def get_table_style(ctx):
|
225
|
+
table_style_str = context.get_value(ctx, "output_format")
|
226
|
+
table_style = None
|
227
|
+
if table_style_str and table_style_str != "console":
|
228
|
+
from prettytable import (
|
229
|
+
DEFAULT,
|
230
|
+
MARKDOWN,
|
231
|
+
PLAIN_COLUMNS,
|
232
|
+
MSWORD_FRIENDLY,
|
233
|
+
)
|
234
|
+
|
235
|
+
if table_style_str == "default":
|
236
|
+
table_style = DEFAULT
|
237
|
+
elif table_style_str == "markdown":
|
238
|
+
table_style = MARKDOWN
|
239
|
+
elif table_style_str == "plain":
|
240
|
+
table_style = PLAIN_COLUMNS
|
241
|
+
elif table_style_str == "msword":
|
242
|
+
table_style = MSWORD_FRIENDLY
|
243
|
+
else:
|
244
|
+
raise Exception(f"invalid table style {table_style_str}")
|
245
|
+
return table_style
|
246
|
+
|
247
|
+
|
224
248
|
def format_table(
|
225
249
|
ctx, records, columns, getter=short_circuit_attrgetter, row_filter=None
|
226
250
|
):
|
227
251
|
if context.output_json(ctx):
|
228
252
|
return _dump_json(ctx, records)
|
229
253
|
table = PrettyTable([column.out_name for column in columns])
|
254
|
+
|
255
|
+
table_style = get_table_style(ctx)
|
256
|
+
if table_style:
|
257
|
+
table.set_style(table_style)
|
258
|
+
|
230
259
|
if not records:
|
231
260
|
return table
|
232
261
|
|
agilicus/policy/policies.py
CHANGED
@@ -1,4 +1,7 @@
|
|
1
1
|
import copy
|
2
|
+
import datetime
|
3
|
+
import json
|
4
|
+
import os
|
2
5
|
from ..input_helpers import (
|
3
6
|
get_org_from_input_or_ctx,
|
4
7
|
model_from_dict,
|
@@ -18,6 +21,9 @@ from agilicus import (
|
|
18
21
|
SimpleResourcePolicyTemplateStructure,
|
19
22
|
SimpleResourcePolicyTemplate,
|
20
23
|
StandaloneRuleName,
|
24
|
+
RuleAction,
|
25
|
+
ResourceConfig,
|
26
|
+
RulesConfig,
|
21
27
|
RuleCondition,
|
22
28
|
HttpRuleCondition,
|
23
29
|
EmptiableObjectType,
|
@@ -197,7 +203,7 @@ def set_source_info_policy(
|
|
197
203
|
return resp
|
198
204
|
|
199
205
|
|
200
|
-
def migrate_policy_rules(ctx, org_id=None, **kwargs):
|
206
|
+
def migrate_policy_rules(ctx, org_id=None, dump_dir=None, **kwargs):
|
201
207
|
org_id = get_org_from_input_or_ctx(ctx, org_id=org_id)
|
202
208
|
kwargs = strip_none(kwargs)
|
203
209
|
if not kwargs.get("resource_id"):
|
@@ -205,20 +211,19 @@ def migrate_policy_rules(ctx, org_id=None, **kwargs):
|
|
205
211
|
for res in query_resources(
|
206
212
|
ctx, resource_type="application", org_id=org_id, **kwargs
|
207
213
|
):
|
208
|
-
migrate_resource(ctx, res)
|
214
|
+
migrate_resource(ctx, res, dump_dir=dump_dir)
|
209
215
|
|
210
216
|
|
211
|
-
def migrate_resource(ctx, resource):
|
217
|
+
def migrate_resource(ctx, resource, dump_dir=None):
|
212
218
|
print(f" migrating resource: {resource.spec.name}")
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
return
|
219
|
+
resource.spec.config = resource.spec.config or ResourceConfig()
|
220
|
+
resource.spec.config.rules_config = (
|
221
|
+
resource.spec.config.rules_config or RulesConfig()
|
222
|
+
)
|
223
|
+
|
224
|
+
rules = resource.spec.config.rules_config.rules or []
|
220
225
|
policy_structures = []
|
221
|
-
for rule in
|
226
|
+
for rule in rules:
|
222
227
|
node = SimpleResourcePolicyTemplateStructureNode(
|
223
228
|
priority=rule.priority or 0,
|
224
229
|
rule_name=StandaloneRuleName(rule.name),
|
@@ -231,9 +236,7 @@ def migrate_resource(ctx, resource):
|
|
231
236
|
)
|
232
237
|
)
|
233
238
|
template = SimpleResourcePolicyTemplate(
|
234
|
-
rules=[
|
235
|
-
_migrate_http_rule(rule) for rule in resource.spec.config.rules_config.rules
|
236
|
-
],
|
239
|
+
rules=[_migrate_http_rule(rule) for rule in rules],
|
237
240
|
policy_structure=policy_structures,
|
238
241
|
template_type="simple_resource",
|
239
242
|
)
|
@@ -264,14 +267,34 @@ def migrate_resource(ctx, resource):
|
|
264
267
|
),
|
265
268
|
to_dict=False,
|
266
269
|
)
|
270
|
+
|
271
|
+
_clear_old_rules(apiclient, resource, dump_dir)
|
272
|
+
|
267
273
|
return resp
|
268
274
|
|
269
275
|
|
276
|
+
def _dump_resource_rules(resource, dump_dir):
|
277
|
+
now = datetime.datetime.now().strftime("%Y-%m-%dT%H-%M-%S")
|
278
|
+
file_name = f"{resource.spec.org_id}-{resource.spec.name}-{now}.json"
|
279
|
+
with open(os.path.join(dump_dir, file_name), "w") as f:
|
280
|
+
json.dump(resource.spec.config.rules_config.to_dict(), f)
|
281
|
+
|
282
|
+
|
283
|
+
def _clear_old_rules(apiclient, resource, dump_dir):
|
284
|
+
if dump_dir:
|
285
|
+
_dump_resource_rules(resource, dump_dir)
|
286
|
+
|
287
|
+
resource.spec.config.rules_config = RulesConfig(rules=[])
|
288
|
+
|
289
|
+
apiclient.resources_api.replace_resource(resource.metadata.id, resource=resource)
|
290
|
+
|
291
|
+
|
270
292
|
def _migrate_http_rule(input_rule):
|
271
293
|
if input_rule.extended_condition is not None:
|
272
294
|
return input_rule
|
273
295
|
|
274
296
|
new_rule = copy.deepcopy(input_rule)
|
297
|
+
new_rule.actions = new_rule.actions or [RuleAction(action="allow")]
|
275
298
|
input_cond = new_rule.condition.to_dict()
|
276
299
|
input_cond["condition_type"] = "http_rule_condition"
|
277
300
|
cond = model_from_dict(HttpRuleCondition, input_cond)
|
agilicus/policy/policy_main.py
CHANGED
@@ -42,6 +42,7 @@ def cli_command_list_multifactor_policies(ctx, **kwargs):
|
|
42
42
|
@click.command(name="list-policy-templates", help="shows all policy templates")
|
43
43
|
@click.option("--org-id", default=None)
|
44
44
|
@click.option("--template-type", default=None)
|
45
|
+
@click.option("--include-invalid", type=bool, default=None)
|
45
46
|
@click.option("--name", default=None)
|
46
47
|
@click.pass_context
|
47
48
|
def cli_command_list_policy_templates(ctx, **kwargs):
|
@@ -93,6 +94,7 @@ def cli_command_delete_policy_template(ctx, **kwargs):
|
|
93
94
|
@click.command(name="migrate-policy-rules")
|
94
95
|
@click.option("--org-id", default=None)
|
95
96
|
@click.option("--resource-id", default=None)
|
97
|
+
@click.option("--dump-dir", default=None, help="A directory to cache migrated rules")
|
96
98
|
@click.pass_context
|
97
99
|
def cli_command_migrate_policy_rules(ctx, **kwargs):
|
98
100
|
policies.migrate_policy_rules(ctx, **kwargs)
|
@@ -71,9 +71,9 @@ agilicus/agilicus_api/api/users_api.py,sha256=xhcIheRgjfMpQ3RbekgnOp3ODUUm6deY1H
|
|
71
71
|
agilicus/agilicus_api/api/users_api_mock.py,sha256=wA_xiqL3Pz3KjljKlsmf5NveLZS1FpbaKJHBp7QvarY,15411
|
72
72
|
agilicus/agilicus_api/api/whoami_api.py,sha256=c95A5Rfll7idVIb09yTzUjqAVDpyVlRugUjprI5JBbo,7941
|
73
73
|
agilicus/agilicus_api/api/whoami_api_mock.py,sha256=rlvZoWnMCqORMZBg7SOv6d3xp52kELdh6wXcCaIZ93w,346
|
74
|
-
agilicus/agilicus_api/api_client.py,sha256=
|
74
|
+
agilicus/agilicus_api/api_client.py,sha256=RVJTXA-4mbwXbSvCumsLf7m8OQCsNp884Z3xv-k4QD4,38845
|
75
75
|
agilicus/agilicus_api/apis/__init__.py,sha256=aJZD7x-umdSni6ZBr4XxzpH8pwtU9hA5LlCDxcqa1Q8,2224
|
76
|
-
agilicus/agilicus_api/configuration.py,sha256
|
76
|
+
agilicus/agilicus_api/configuration.py,sha256=TWEJOapz7-160xzekTqWMwneET6iP1oLavW1WtHG4ko,18447
|
77
77
|
agilicus/agilicus_api/docs/APIKey.md,sha256=4cKuz4_l9HcEDnUrLwYbEnn9C2WoDayrjfrY1Ixgaf4,1747
|
78
78
|
agilicus/agilicus_api/docs/APIKeyIntrospect.md,sha256=nJ-zkuFm3JMbWFDYYN_vYyQk1snGBtBvIxtCQxamhAU,1019
|
79
79
|
agilicus/agilicus_api/docs/APIKeyIntrospectAuthorizationInfo.md,sha256=7RApOOLjvWQs5sw2jb25g7i3Kta1BiEY-s8VRXfppH8,725
|
@@ -2508,7 +2508,7 @@ agilicus/agilicus_api/test/test_x509_root_certificate.py,sha256=H82JE5XkABLdxrdI
|
|
2508
2508
|
agilicus/agilicus_api/test/test_x509_root_certificate_spec.py,sha256=Avjjv9atO5hYlSmAJU1CzS7M0l-0bPs6q4N5iXSoMcs,2832
|
2509
2509
|
agilicus/agilicus_api/test/test_x509_root_certificate_status.py,sha256=6Iw5aUxT4lNJnOHK0ehotwh-niT9tuSCJIjRe1DKlRg,2846
|
2510
2510
|
agilicus/agilicus_api/test/test_xss_settings.py,sha256=Stf0gqkOTrsfpeYF22QDlz85_Nny56SSwv5dpFZoNQU,2746
|
2511
|
-
agilicus/agilicus_api_README.md,sha256=
|
2511
|
+
agilicus/agilicus_api_README.md,sha256=QzlQVNUXHUOjBUddcrdX0VRLieBD_oKbI_mOTioE3ms,161008
|
2512
2512
|
agilicus/aliases.ini,sha256=MxqiVo2f2xdUDVF1YDkNW36AIqN8hrYjlTVfraEUZXY,455
|
2513
2513
|
agilicus/amq.py,sha256=yxi-YTbJPVl10s78Hlr1dmrQR63iaSIoROGVILzFPmE,1775
|
2514
2514
|
agilicus/apps.py,sha256=uYNUNy5rCYjx90KnR_X_aESof9xzSuLYT5w8myN_VVE,52091
|
@@ -2520,7 +2520,7 @@ agilicus/certificate.py,sha256=iXC4iT3EGISyEezrvMgfic_lSCx2_JMSWevTLyGekR8,2739
|
|
2520
2520
|
agilicus/challenges.py,sha256=Ig9888pHGMigBxI_e8m2T_HZiqbU6TxsBXT2EKZoIUY,6968
|
2521
2521
|
agilicus/click_extension.py,sha256=uE57TjMqJxO9VFPBJO5-bTo9UrQiHPjIdI_iwKSaw6Q,224
|
2522
2522
|
agilicus/client_secrets.json,sha256=eyPFVzziH48RuwWl66cfi0JE4jpmoec0Vo_F2TzYOeI,414
|
2523
|
-
agilicus/connectors.py,sha256=
|
2523
|
+
agilicus/connectors.py,sha256=4RLQEJ5s4QpKYZo6ZkVi2lWtRxToCBEtEh5wdbQ41nc,42016
|
2524
2524
|
agilicus/context.py,sha256=tlmtUK5B1G-gBqfmljaPKPhLKur92jgAi5xC9SA7AVs,8128
|
2525
2525
|
agilicus/create.py,sha256=ndMbOxQasyyUY7aW4U2TU8EKGcUla72xCjAwAwfTBVA,3270
|
2526
2526
|
agilicus/credentials.py,sha256=F3yPAwoMcziP1OLmzeJ8jIz1W-91-HXu4zcymyMp1E4,4730
|
@@ -2558,7 +2558,7 @@ agilicus/labels/labels_main.py,sha256=ptJ34mf-iVaf8ezf3RWLcpeP2O0ntezS4tqJ0ks0el
|
|
2558
2558
|
agilicus/launchers.py,sha256=r4nctnVtfP-Ho_HXEfAiMaMqJI0u7pbieHSS3Vd0QBE,11361
|
2559
2559
|
agilicus/logs.py,sha256=tS8c_sdre1Dncrl59GVGQ0L3d2jtwlVjvIMl3SHJraY,766
|
2560
2560
|
agilicus/lookups.py,sha256=MNmNsKpP7Fq_poLAnL9xo_iptFilKM9ziGLyIe8VKaw,669
|
2561
|
-
agilicus/main.py,sha256=
|
2561
|
+
agilicus/main.py,sha256=SvAbc6FXAKb38YdfQaBe9Az7qZnUcv_iPSdpPAqzvaU,269933
|
2562
2562
|
agilicus/messages.py,sha256=Ydm-VhAsK23UnYdstv_HsOybBODfui5ubKc7F8R_dsw,5187
|
2563
2563
|
agilicus/metrics.py,sha256=v4rwpvqDzeNG5GKNoZ7t34X5qUgly5IW2s-kXlS2vQM,2315
|
2564
2564
|
agilicus/orgs.py,sha256=THcm1Me58PJ7Lai4LHptBitaymH0TXVXapFd7WZ3Mpg,14399
|
@@ -2566,14 +2566,14 @@ agilicus/output/__init__.py,sha256=UKZbHS4t15vazJuN46FN-3HHqkxMXU0p3df2VcsSLcY,1
|
|
2566
2566
|
agilicus/output/column_builder.py,sha256=TWo4t8ygaTUv7qjD_moDroD1bKzzyTIao0FmLy5gs4o,4284
|
2567
2567
|
agilicus/output/console.py,sha256=xBURxlA7H1kmQ7zIKuifs_aQJq1cvmCJ5CtQVSo3_Ns,400
|
2568
2568
|
agilicus/output/json.py,sha256=-5bX7ud1hIxux4l3P-K2gJXrE2gdZ0Ua1hfUOCX9MUM,899
|
2569
|
-
agilicus/output/table.py,sha256=
|
2569
|
+
agilicus/output/table.py,sha256=o5kYgAtIAhei4ex7YZrTK9tDVarJQHzF2Yj42TXt21g,8744
|
2570
2570
|
agilicus/output/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2571
2571
|
agilicus/output/tests/column_builder_test.py,sha256=fKP4V5sqXtmEIr-Q0gWVSFdBqCUtugZkP6G5gML_T7I,2130
|
2572
2572
|
agilicus/pagination/pagination.py,sha256=hC7eLHxXKe4Iv7LdOZK3Dh8R_fKQIr9PPiWKJVyP4Nk,1672
|
2573
2573
|
agilicus/patches.py,sha256=qTqLOgCAcFZPcPOkgfqMnK9bnqTXMvj_0ERsjRFcZug,1384
|
2574
2574
|
agilicus/permissions.py,sha256=uB65yuDFICp1N10m0cdUjgizx9MQzAbLbAsBSTw1Rcc,2117
|
2575
|
-
agilicus/policy/policies.py,sha256=
|
2576
|
-
agilicus/policy/policy_main.py,sha256=
|
2575
|
+
agilicus/policy/policies.py,sha256=LrteEsXjou_RyW_PcqijBhtN2jaIomXFXQIfNArUP6I,9625
|
2576
|
+
agilicus/policy/policy_main.py,sha256=CSg7cFHlZo12eu9T-ugTM1U_sp7QWOXtQN14jbe7KyQ,3878
|
2577
2577
|
agilicus/policy/templates.py,sha256=EUvAhOhSjDuLAe2UKIFEzBp5pNpOT5y1r7uyV_GG6uI,5638
|
2578
2578
|
agilicus/policy_config/policy_config.py,sha256=s1GwbBI5wuLINcViTKE8NdfcntLEegwpUEi7pqmdKkY,627
|
2579
2579
|
agilicus/policy_config/policy_config_main.py,sha256=ReiOziCvPShjunCt3ohrEMGq0IaP0eNyIXEvEg_WD1M,788
|
@@ -2599,8 +2599,8 @@ agilicus/trusted_certs/trusted_certs_main.py,sha256=6dHHWXvNIcUa_nA9ptigL4Vibe4n
|
|
2599
2599
|
agilicus/users.py,sha256=JT7TIiUOtSFXPOdxmIVFm7ygZTH1FjsIkD9j-vjLuMM,38474
|
2600
2600
|
agilicus/version.py,sha256=G9OFdL1v_4dLDfk6I6taDNypM5bbO-JHAwilsu9LYgg,23
|
2601
2601
|
agilicus/whoami.py,sha256=kqghtWMgZOd2rhKmfguDwCTm6A3gNS8Kj-S2IBxBtl0,206
|
2602
|
-
agilicus-1.
|
2603
|
-
agilicus-1.
|
2604
|
-
agilicus-1.
|
2605
|
-
agilicus-1.
|
2606
|
-
agilicus-1.
|
2602
|
+
agilicus-1.261.1.dist-info/LICENSE.txt,sha256=Zq4tqiCroC2CVrBB_PWjapRdvpae23nljdiaSkOzUho,1061
|
2603
|
+
agilicus-1.261.1.dist-info/METADATA,sha256=5embCylX3QnDGxRgMGo8sfYEEGEB88y0EjoX6mCHyHk,3822
|
2604
|
+
agilicus-1.261.1.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
|
2605
|
+
agilicus-1.261.1.dist-info/entry_points.txt,sha256=a66hGozzLkHu0IewFzIMbSAhMTNTddUaA2T3_16Gb_s,51
|
2606
|
+
agilicus-1.261.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|