frogml-cli 0.0.3__py3-none-any.whl → 0.0.4__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.
- frogml_cli/__init__.py +1 -1
- frogml_cli/commands/audience/_logic/config/v1/audience_config.py +1 -0
- frogml_cli/commands/config/add/ui.py +1 -0
- frogml_cli/commands/models/delete/_logic.py +9 -7
- frogml_cli/commands/models/delete/ui.py +10 -3
- frogml_cli/commands/models/list/_logic.py +4 -3
- frogml_cli/commands/models/list/ui.py +13 -7
- frogml_cli/commands/models/list_models/_logic.py +8 -6
- frogml_cli/commands/models/list_models/ui.py +15 -7
- frogml_cli/commands/models/metadata/_logic.py +7 -6
- frogml_cli/commands/models/metadata/ui.py +8 -4
- {frogml_cli-0.0.3.dist-info → frogml_cli-0.0.4.dist-info}/METADATA +2 -2
- {frogml_cli-0.0.3.dist-info → frogml_cli-0.0.4.dist-info}/RECORD +15 -15
- {frogml_cli-0.0.3.dist-info → frogml_cli-0.0.4.dist-info}/WHEEL +0 -0
- {frogml_cli-0.0.3.dist-info → frogml_cli-0.0.4.dist-info}/entry_points.txt +0 -0
frogml_cli/__init__.py
CHANGED
@@ -20,6 +20,7 @@ class AudienceConfig:
|
|
20
20
|
def to_audience_route_entry(self, index: int = 0) -> AudienceRoutesEntry:
|
21
21
|
return AudienceRoutesEntry(
|
22
22
|
audience_id=self.id,
|
23
|
+
audience_name=self.name,
|
23
24
|
order=index + 1,
|
24
25
|
routes=[route.to_route_api() for route in self.routes],
|
25
26
|
)
|
@@ -1,18 +1,20 @@
|
|
1
|
+
from frogml._proto.qwak.models.models_pb2 import DeleteModelResponse
|
1
2
|
from frogml._proto.qwak.projects.projects_pb2 import GetProjectResponse
|
3
|
+
from frogml.core.clients.model_group_management import ModelGroupManagementClient
|
2
4
|
from frogml.core.clients.model_management import ModelsManagementClient
|
3
|
-
from frogml.core.clients.project.client import ProjectsManagementClient
|
4
5
|
from frogml.core.exceptions import FrogmlException
|
5
6
|
|
6
7
|
|
7
|
-
def execute_model_delete(project_key: str, model_id: str):
|
8
|
-
|
9
|
-
|
8
|
+
def execute_model_delete(project_key: str, model_id: str) -> DeleteModelResponse:
|
9
|
+
model_group_response: GetProjectResponse = (
|
10
|
+
ModelGroupManagementClient().get_model_group(model_group_name=project_key)
|
10
11
|
)
|
11
12
|
is_model_exists: bool = any(
|
12
|
-
m.model_id == model_id for m in
|
13
|
+
m.model_id == model_id for m in model_group_response.project.models
|
13
14
|
)
|
14
15
|
if not is_model_exists:
|
15
16
|
raise FrogmlException(f"No such model {model_id} for project {project_key}")
|
16
17
|
|
17
|
-
|
18
|
-
|
18
|
+
model_group_id: str = model_group_response.project.spec.project_id
|
19
|
+
|
20
|
+
return ModelsManagementClient().delete_model(model_group_id, model_id)
|
@@ -1,4 +1,7 @@
|
|
1
|
+
from typing import Literal
|
2
|
+
|
1
3
|
import click
|
4
|
+
from frogml._proto.qwak.models.models_pb2 import DeleteModelResponse
|
2
5
|
|
3
6
|
from frogml_cli.commands.models.delete._logic import execute_model_delete
|
4
7
|
from frogml_cli.commands.ui_tools import output_as_json
|
@@ -10,6 +13,7 @@ from frogml_cli.inner.tools.cli_tools import FrogMLCommand
|
|
10
13
|
@click.option("--model-id", metavar="NAME", required=True, help="Model name")
|
11
14
|
@click.option(
|
12
15
|
"--format",
|
16
|
+
"output_format",
|
13
17
|
default="text",
|
14
18
|
show_default=True,
|
15
19
|
type=click.Choice(["text", "json"], case_sensitive=True),
|
@@ -17,9 +21,12 @@ from frogml_cli.inner.tools.cli_tools import FrogMLCommand
|
|
17
21
|
required=False,
|
18
22
|
help="The formatting style for commands output (choose from text, json)",
|
19
23
|
)
|
20
|
-
def model_delete(
|
21
|
-
|
22
|
-
|
24
|
+
def model_delete(
|
25
|
+
project_key: str, model_id: str, output_format: Literal["text", "json"]
|
26
|
+
):
|
27
|
+
response: DeleteModelResponse = execute_model_delete(project_key, model_id)
|
28
|
+
|
29
|
+
if output_format == "json":
|
23
30
|
output_as_json(response)
|
24
31
|
else:
|
25
32
|
print(f"Model deleted\nmodel id : {model_id}")
|
@@ -1,5 +1,6 @@
|
|
1
|
-
from frogml.
|
1
|
+
from frogml._proto.qwak.projects.projects_pb2 import GetProjectResponse
|
2
|
+
from frogml.core.clients.model_group_management.client import ModelGroupManagementClient
|
2
3
|
|
3
4
|
|
4
|
-
def execute_models_list(project_key: str):
|
5
|
-
return
|
5
|
+
def execute_models_list(project_key: str) -> GetProjectResponse:
|
6
|
+
return ModelGroupManagementClient().get_model_group(model_group_name=project_key)
|
@@ -1,4 +1,5 @@
|
|
1
1
|
from datetime import datetime
|
2
|
+
from typing import Literal
|
2
3
|
|
3
4
|
import click
|
4
5
|
from frogml._proto.qwak.projects.projects_pb2 import GetProjectResponse
|
@@ -25,6 +26,7 @@ def parse_model(model):
|
|
25
26
|
@click.option("--project-key", metavar="NAME", required=True, help="JFrog project key")
|
26
27
|
@click.option(
|
27
28
|
"--format",
|
29
|
+
"output_format",
|
28
30
|
default="text",
|
29
31
|
show_default=True,
|
30
32
|
type=click.Choice(["text", "json"], case_sensitive=True),
|
@@ -32,10 +34,14 @@ def parse_model(model):
|
|
32
34
|
required=False,
|
33
35
|
help="The formatting style for commands output (choose from text, json)",
|
34
36
|
)
|
35
|
-
def model_list(project_key: str,
|
36
|
-
|
37
|
-
columns = ["Model id", "Display name", "Creation date", "Last updated"]
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
37
|
+
def model_list(project_key: str, output_format: Literal["text", "json"]):
|
38
|
+
get_model_group_response: GetProjectResponse = execute_models_list(project_key)
|
39
|
+
columns: list[str] = ["Model id", "Display name", "Creation date", "Last updated"]
|
40
|
+
|
41
|
+
if output_format == "json":
|
42
|
+
output_as_json(get_model_group_response)
|
43
|
+
|
44
|
+
else: # output_format == "text"
|
45
|
+
output_as_table(
|
46
|
+
get_model_group_response.project.models, parse_model, headers=columns
|
47
|
+
)
|
@@ -1,11 +1,13 @@
|
|
1
|
+
from frogml._proto.qwak.models.models_pb2 import ListModelsResponse
|
1
2
|
from frogml._proto.qwak.projects.projects_pb2 import GetProjectResponse
|
3
|
+
from frogml.core.clients.model_group_management import ModelGroupManagementClient
|
2
4
|
from frogml.core.clients.model_management.client import ModelsManagementClient
|
3
|
-
from frogml.core.clients.project.client import ProjectsManagementClient
|
4
5
|
|
5
6
|
|
6
|
-
def list_models(project_key: str):
|
7
|
-
|
8
|
-
|
7
|
+
def list_models(project_key: str) -> ListModelsResponse:
|
8
|
+
model_group_response: GetProjectResponse = (
|
9
|
+
ModelGroupManagementClient().get_model_group(model_group_name=project_key)
|
9
10
|
)
|
10
|
-
|
11
|
-
|
11
|
+
model_group_id: str = model_group_response.project.spec.project_id
|
12
|
+
|
13
|
+
return ModelsManagementClient().list_models(model_group_id)
|
@@ -1,12 +1,18 @@
|
|
1
|
+
from typing import Literal
|
2
|
+
|
1
3
|
import click
|
2
|
-
from frogml._proto.qwak.models.models_pb2 import
|
4
|
+
from frogml._proto.qwak.models.models_pb2 import (
|
5
|
+
DeploymentModelStatus,
|
6
|
+
ListModelsResponse,
|
7
|
+
Model,
|
8
|
+
)
|
3
9
|
|
4
10
|
from frogml_cli.commands.models.list_models._logic import list_models as _list_models
|
5
11
|
from frogml_cli.commands.ui_tools import output_as_json, output_as_table
|
6
12
|
from frogml_cli.inner.tools.cli_tools import FrogMLCommand
|
7
13
|
|
8
14
|
|
9
|
-
def parse_model(model):
|
15
|
+
def parse_model(model: Model) -> list[str]:
|
10
16
|
return [
|
11
17
|
model.model_id,
|
12
18
|
model.uuid,
|
@@ -31,6 +37,7 @@ def parse_model(model):
|
|
31
37
|
@click.option("--project-key", metavar="NAME", required=True, help="JFrog Project key")
|
32
38
|
@click.option(
|
33
39
|
"--format",
|
40
|
+
"output_format",
|
34
41
|
default="text",
|
35
42
|
show_default=True,
|
36
43
|
type=click.Choice(["text", "json"], case_sensitive=True),
|
@@ -38,9 +45,9 @@ def parse_model(model):
|
|
38
45
|
required=False,
|
39
46
|
help="The formatting style for command output (choose from text, json)",
|
40
47
|
)
|
41
|
-
def list_models(project_key,
|
42
|
-
model_list_result = _list_models(project_key)
|
43
|
-
columns = [
|
48
|
+
def list_models(project_key: str, output_format: Literal["text", "json"]):
|
49
|
+
model_list_result: ListModelsResponse = _list_models(project_key)
|
50
|
+
columns: list[str] = [
|
44
51
|
"Model id",
|
45
52
|
"Model UUID",
|
46
53
|
"Model Name",
|
@@ -54,7 +61,8 @@ def list_models(project_key, format, **kwargs):
|
|
54
61
|
"Branches",
|
55
62
|
"Deployment Status",
|
56
63
|
]
|
57
|
-
|
64
|
+
|
65
|
+
if output_format == "json":
|
58
66
|
output_as_json(model_list_result)
|
59
|
-
|
67
|
+
else: # output_format == "text"
|
60
68
|
output_as_table(model_list_result.models, parse_model, headers=columns)
|
@@ -1,12 +1,13 @@
|
|
1
|
+
from frogml._proto.qwak.models.models_pb2 import ListModelsMetadataResponse
|
1
2
|
from frogml._proto.qwak.projects.projects_pb2 import GetProjectResponse
|
3
|
+
from frogml.core.clients.model_group_management import ModelGroupManagementClient
|
2
4
|
from frogml.core.clients.model_management.client import ModelsManagementClient
|
3
|
-
from frogml.core.clients.project.client import ProjectsManagementClient
|
4
5
|
|
5
6
|
|
6
|
-
def list_models_metadata(project_key: str):
|
7
|
-
|
8
|
-
|
7
|
+
def list_models_metadata(project_key: str) -> ListModelsMetadataResponse:
|
8
|
+
model_group_response: GetProjectResponse = (
|
9
|
+
ModelGroupManagementClient().get_model_group(model_group_name=project_key)
|
9
10
|
)
|
10
|
-
|
11
|
+
model_group_id: str = model_group_response.project.spec.project_id
|
11
12
|
|
12
|
-
return ModelsManagementClient().list_models_metadata(
|
13
|
+
return ModelsManagementClient().list_models_metadata(model_group_id)
|
@@ -1,6 +1,8 @@
|
|
1
1
|
import re
|
2
|
+
from typing import Literal
|
2
3
|
|
3
4
|
import click
|
5
|
+
from frogml._proto.qwak.models.models_pb2 import ListModelsMetadataResponse
|
4
6
|
from google.protobuf.json_format import MessageToDict
|
5
7
|
from tabulate import tabulate
|
6
8
|
|
@@ -45,6 +47,7 @@ def print_text_data(metadata):
|
|
45
47
|
@click.option("--project-key", metavar="NAME", required=True, help="JFrog Project key")
|
46
48
|
@click.option(
|
47
49
|
"--format",
|
50
|
+
"output_format",
|
48
51
|
default="text",
|
49
52
|
show_default=True,
|
50
53
|
type=click.Choice(["text", "json"], case_sensitive=True),
|
@@ -52,9 +55,10 @@ def print_text_data(metadata):
|
|
52
55
|
required=False,
|
53
56
|
help="The formatting style for command output (choose from text, json)",
|
54
57
|
)
|
55
|
-
def list_models_metadata(project_key,
|
56
|
-
model_list_result = _list_models_metadata(project_key)
|
57
|
-
|
58
|
+
def list_models_metadata(project_key: str, output_format: Literal["text", "json"]):
|
59
|
+
model_list_result: ListModelsMetadataResponse = _list_models_metadata(project_key)
|
60
|
+
|
61
|
+
if output_format == "json":
|
58
62
|
output_as_json(model_list_result)
|
59
|
-
|
63
|
+
else: # output_format == "text"
|
60
64
|
print_text_data(model_list_result)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: frogml-cli
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.4
|
4
4
|
Summary: Frogml CLI for frogml models
|
5
5
|
License: Apache-2.0
|
6
6
|
Keywords: mlops,ml,deployment,serving,model,jfrog
|
@@ -27,7 +27,7 @@ Requires-Dist: click (==8.1.8)
|
|
27
27
|
Requires-Dist: cloudpickle (==2.2.1) ; extra == "feature-store"
|
28
28
|
Requires-Dist: cookiecutter
|
29
29
|
Requires-Dist: croniter (==1.4.1)
|
30
|
-
Requires-Dist: frogml (>=1.1.
|
30
|
+
Requires-Dist: frogml (>=1.1.96)
|
31
31
|
Requires-Dist: frogml-inference (>=0.0.2,<0.0.3)
|
32
32
|
Requires-Dist: gitpython (>=2.1.0)
|
33
33
|
Requires-Dist: joblib (>=1.1.0,<2.0.0) ; extra == "batch" or extra == "feedback"
|
@@ -1,4 +1,4 @@
|
|
1
|
-
frogml_cli/__init__.py,sha256=
|
1
|
+
frogml_cli/__init__.py,sha256=hjYgKkdKVxDATcv7nk4gBdpxFMPJuqtLEsWuWBUiwLg,157
|
2
2
|
frogml_cli/cli.py,sha256=Gh-KPvBf_X243Cz2TGx_mWd4K4NgXcSmpBxZfrFQSkc,1585
|
3
3
|
frogml_cli/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
4
|
frogml_cli/commands/_logic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -20,7 +20,7 @@ frogml_cli/commands/audience/_logic/config/__init__.py,sha256=47DEQpj8HBSa-_TImW
|
|
20
20
|
frogml_cli/commands/audience/_logic/config/config_base.py,sha256=d1i5tKV96OibjhlCTFDLvsGk0CXD8VYpOBcoHksdzus,337
|
21
21
|
frogml_cli/commands/audience/_logic/config/parser.py,sha256=-_luJYGTkff9SkIk7-5-dbyPLzuTGYI9Nh4mG6k-bdM,994
|
22
22
|
frogml_cli/commands/audience/_logic/config/v1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
23
|
-
frogml_cli/commands/audience/_logic/config/v1/audience_config.py,sha256=
|
23
|
+
frogml_cli/commands/audience/_logic/config/v1/audience_config.py,sha256=VLPKVEZ_cg7O-XFhrdRcnJ3p0GGhA4S6kewQ5TLtDU8,897
|
24
24
|
frogml_cli/commands/audience/_logic/config/v1/conditions_config.py,sha256=-tk_h02jHQ367tUAex1RP6WEvylm3E3Mn8t5P1JlRwo,1606
|
25
25
|
frogml_cli/commands/audience/_logic/config/v1/config_v1.py,sha256=rYhDuVp7xJb7IXKrtnNoSXPx049X-SFDX7qR7y4ab74,791
|
26
26
|
frogml_cli/commands/audience/_logic/config/v1/route_config.py,sha256=3JN6LniQH5ofwUPzua1a6gJvgekAjZIz2Gp4cJE_vL8,334
|
@@ -69,7 +69,7 @@ frogml_cli/commands/automations/register/_logic.py,sha256=EvlOp0I--0HyZuyL2lZ-Ap
|
|
69
69
|
frogml_cli/commands/automations/register/ui.py,sha256=qNpQU_h3yJ_vzhtI0uYRWEyusLJxNnyo5SBsUl1dpEk,1353
|
70
70
|
frogml_cli/commands/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
71
71
|
frogml_cli/commands/config/add/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
72
|
-
frogml_cli/commands/config/add/ui.py,sha256=
|
72
|
+
frogml_cli/commands/config/add/ui.py,sha256=8v8fjkGgqXu8ynuL1mqaj3u8XxteyJY-4044nF3EU-I,1803
|
73
73
|
frogml_cli/commands/config/config_commands_group.py,sha256=Ztv2RruzbOT2xLiIaUnFZSl5v3hwOB75-FOpjnpZ5qE,228
|
74
74
|
frogml_cli/commands/feature_store/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
75
75
|
frogml_cli/commands/feature_store/backfill/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -131,8 +131,8 @@ frogml_cli/commands/models/create/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeR
|
|
131
131
|
frogml_cli/commands/models/create/_logic.py,sha256=_vsAgVGF1mcKSDtB7RRP_Wu_tY0HemG_IHh41RDDX1w,1480
|
132
132
|
frogml_cli/commands/models/create/ui.py,sha256=AXK-1LusJrjNMyKf4U6gMsA_tHGBU1052fa578KQbMw,1273
|
133
133
|
frogml_cli/commands/models/delete/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
134
|
-
frogml_cli/commands/models/delete/_logic.py,sha256=
|
135
|
-
frogml_cli/commands/models/delete/ui.py,sha256=
|
134
|
+
frogml_cli/commands/models/delete/_logic.py,sha256=rQEILBOU7YP5JLU2xYJBXElZ922NYx8TJSKEupC8m5M,944
|
135
|
+
frogml_cli/commands/models/delete/ui.py,sha256=B87Yw193frai9SfdoFko8kD9SyKkMlHMgCuqg2AgGn8,1099
|
136
136
|
frogml_cli/commands/models/deployments/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
137
137
|
frogml_cli/commands/models/deployments/deploy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
138
138
|
frogml_cli/commands/models/deployments/deploy/_logic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -232,14 +232,14 @@ frogml_cli/commands/models/init/_logic/template/titanic_poetry/{{cookiecutter.mo
|
|
232
232
|
frogml_cli/commands/models/init/_logic/template/titanic_poetry/{{cookiecutter.model_directory}}/tests/it/test_titanic.py,sha256=A75drbpCH-wNYwGZHS16xFBN7aApYbA7w_G1Hc2BwkU,761
|
233
233
|
frogml_cli/commands/models/init/ui.py,sha256=p2VIxouKmaUraYD_wkdgLPeZmNGVG6p-uxoywz4r9iA,2063
|
234
234
|
frogml_cli/commands/models/list/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
235
|
-
frogml_cli/commands/models/list/_logic.py,sha256=
|
236
|
-
frogml_cli/commands/models/list/ui.py,sha256=
|
235
|
+
frogml_cli/commands/models/list/_logic.py,sha256=JLl4_r44ZqMZQgruwgKLPoj-kdk7a6LEc3WQVLlQ-Sk,314
|
236
|
+
frogml_cli/commands/models/list/ui.py,sha256=W4JvjYO7hVshbMpL4u8OhNuXldngS2dBZRezi8VNJ2s,1641
|
237
237
|
frogml_cli/commands/models/list_models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
238
|
-
frogml_cli/commands/models/list_models/_logic.py,sha256=
|
239
|
-
frogml_cli/commands/models/list_models/ui.py,sha256
|
238
|
+
frogml_cli/commands/models/list_models/_logic.py,sha256=BWqGLg3iIxYTp2vZnO87pa351l3To4R-pgMhc2cyJUk,634
|
239
|
+
frogml_cli/commands/models/list_models/ui.py,sha256=dVg1tpMqimMUJQsY725EgtBsDYjfIhV-zvvGuyQLaQw,2023
|
240
240
|
frogml_cli/commands/models/metadata/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
241
|
-
frogml_cli/commands/models/metadata/_logic.py,sha256=
|
242
|
-
frogml_cli/commands/models/metadata/ui.py,sha256=
|
241
|
+
frogml_cli/commands/models/metadata/_logic.py,sha256=klld-mC0KmaG74Bd0Ler5CoQmtneUpwFbhbAf-YDZ8k,668
|
242
|
+
frogml_cli/commands/models/metadata/ui.py,sha256=9FPPCljPj6UwrIIQ7Y7ypSMKJiDj2Aaylens0NjQ35s,2248
|
243
243
|
frogml_cli/commands/models/models_command_group.py,sha256=Bt02n4ZiGz2YivcuTHd8gOu6qmkHO0Jhcy4vqygW7_o,1645
|
244
244
|
frogml_cli/commands/models/runtime/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
245
245
|
frogml_cli/commands/models/runtime/logs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -281,7 +281,7 @@ frogml_cli/tools/const.py,sha256=XDaMAVfScXoFc5fHbsNuqAefUD2MoZY-cAEMoh1xaYk,152
|
|
281
281
|
frogml_cli/tools/files.py,sha256=AyKJTOy7NhvP3SrqwIw_lxYNCOy1CvLgMmSJpWZ0OKM,2257
|
282
282
|
frogml_cli/tools/log_handling.py,sha256=QlgxbCmLLPK4wRyViWgAW8WLZ39Do1hYAvRyFWGbnFs,6362
|
283
283
|
frogml_cli/tools/utils.py,sha256=Vliw-w6i-93dgZ3M09EgWjttHMuhT-3CH7tbWVKsf8s,1668
|
284
|
-
frogml_cli-0.0.
|
285
|
-
frogml_cli-0.0.
|
286
|
-
frogml_cli-0.0.
|
287
|
-
frogml_cli-0.0.
|
284
|
+
frogml_cli-0.0.4.dist-info/METADATA,sha256=BSxG6KpM-kCM7SEFdUFzmfoydNnMRXTcb1n7LJQI4Vg,2202
|
285
|
+
frogml_cli-0.0.4.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
286
|
+
frogml_cli-0.0.4.dist-info/entry_points.txt,sha256=2H5x0V_E73HeywIMBRRvZMgeRtmX5820KmSLiNFzDcA,53
|
287
|
+
frogml_cli-0.0.4.dist-info/RECORD,,
|
File without changes
|
File without changes
|