frogml-cli 0.0.1__py3-none-any.whl → 0.0.3__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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # fmt: off
2
2
  __author__ = '''JFrog Ltd.'''
3
- __version__ = '0.0.1'
3
+ __version__ = '0.0.3'
4
4
  __name__ = 'frogml_cli'
5
5
 
6
6
  from frogml import wire_dependencies
@@ -35,7 +35,7 @@ class DeployBuildStep(Step):
35
35
  "model_id": self.context.model_id,
36
36
  "instance": template_id,
37
37
  }
38
- deploy_realtime(from_file=None, out_conf=False, sync=False, **deploy_config)
38
+ deploy_realtime(from_file=None, out_conf=False, local=False, sync=False, **deploy_config)
39
39
  self.build_logger.info(f"Finished deploying build {self.context.build_id}")
40
40
  except Exception as e:
41
41
  raise FrogmlDeployNewBuildFailedException(
@@ -206,8 +206,8 @@ from frogml_cli.tools.const import GPU_TYPES
206
206
  @click.option(
207
207
  "--deploy",
208
208
  help="Whether you want to deploy the build if it finishes successfully. "
209
- "Choosing this will follow the build process in the terminal and will trigger a deployment when the "
210
- "build finishes.",
209
+ "Choosing this will follow the build process in the terminal and will trigger a deployment in JFrogML's platform "
210
+ "when the build finishes.",
211
211
  default=False,
212
212
  is_flag=True,
213
213
  )
@@ -12,7 +12,7 @@ from frogml_cli.tools.colors import Color
12
12
  "--project-key",
13
13
  metavar="ID",
14
14
  required=False,
15
- help="An existing jfrog project key",
15
+ help="An existing jfrog project key (3-44 characters)",
16
16
  )
17
17
  @click.option(
18
18
  "--description",
@@ -2,5 +2,5 @@
2
2
  "model_directory": "model",
3
3
  "main_directory": "main",
4
4
  "test_directory": "tests",
5
- "model_class_name": "modelPrediction"
5
+ "model_class_name": "ModelPrediction"
6
6
  }
@@ -1,3 +1,5 @@
1
+ from typing import List
2
+
1
3
  import click
2
4
  from frogml.core.tools.logger.logger import get_frogml_logger
3
5
 
@@ -5,10 +7,14 @@ from frogml_cli.commands.models.init._logic.initialize_model_structure import (
5
7
  initialize_model_structure,
6
8
  )
7
9
  from frogml_cli.inner.tools.cli_tools import FrogMLCommand
10
+ from frogml_cli.tools.utils import get_models_init_example_choices
8
11
 
9
12
  logger = get_frogml_logger()
10
13
 
11
14
 
15
+ MODELS_INIT_EXAMPLE_CHOICES: List[str] = get_models_init_example_choices()
16
+
17
+
12
18
  @click.command("init", cls=FrogMLCommand)
13
19
  @click.option(
14
20
  "--model-directory", metavar="NAME", required=False, help="folder for model content"
@@ -23,10 +29,8 @@ logger = get_frogml_logger()
23
29
  "--example",
24
30
  metavar="NAME",
25
31
  required=False,
26
- type=click.Choice(
27
- ["titanic", "credit_risk", "churn", "titanic_poetry"], case_sensitive=True
28
- ),
29
- help="""Generate a fully functioning example of a Qwak based model. Options: titanic / credit_risk / churn""",
32
+ type=click.Choice(MODELS_INIT_EXAMPLE_CHOICES, case_sensitive=True),
33
+ help=f"Generate a fully functioning example of a Qwak based model. Options: {' / '.join(MODELS_INIT_EXAMPLE_CHOICES)}",
30
34
  )
31
35
  @click.argument("uri", metavar="URI", required=True)
32
36
  def model_init(
frogml_cli/tools/utils.py CHANGED
@@ -1,7 +1,8 @@
1
1
  import logging
2
2
  import sys
3
3
  from contextlib import contextmanager
4
- from typing import Callable, Optional
4
+ from pathlib import Path
5
+ from typing import Callable, List, Optional
5
6
 
6
7
  from frogml.core.tools.logger.logger import (
7
8
  get_frogml_logger,
@@ -43,3 +44,21 @@ def frogml_spinner(
43
44
  if end_text:
44
45
  sp.text = end_text
45
46
  sp.ok("✅")
47
+
48
+
49
+ def get_models_init_example_choices() -> List[str]:
50
+ """Dynamically get available template choices from the template directory."""
51
+ template_dir = (
52
+ Path(__file__).parent.parent
53
+ / "commands"
54
+ / "models"
55
+ / "init"
56
+ / "_logic"
57
+ / "template"
58
+ )
59
+
60
+ return [
61
+ item.name
62
+ for item in template_dir.iterdir()
63
+ if item.is_dir() and not item.name.startswith(".")
64
+ ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: frogml-cli
3
- Version: 0.0.1
3
+ Version: 0.0.3
4
4
  Summary: Frogml CLI for frogml models
5
5
  License: Apache-2.0
6
6
  Keywords: mlops,ml,deployment,serving,model,jfrog
@@ -27,8 +27,8 @@ 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.24)
31
- Requires-Dist: frogml-inference (>=0.0.1,<0.0.2)
30
+ Requires-Dist: frogml (>=1.1.61)
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"
34
34
  Requires-Dist: numpy (<2.0.0)
@@ -1,4 +1,4 @@
1
- frogml_cli/__init__.py,sha256=--BSCElfRpYapX7RjsaLuPosIsEKX_n43lfCZw2BI7s,157
1
+ frogml_cli/__init__.py,sha256=kJ7U91Hzi1kXlQfUsnVUMaNHUpmLd1hqt7mb09t62zA,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
@@ -110,13 +110,13 @@ frogml_cli/commands/models/build/_logic/phase/a_fetch_model_code/get_sdk_version
110
110
  frogml_cli/commands/models/build/_logic/phase/b_remote_register_frogml_build/__init__.py,sha256=2Pfaggjd885TbNgA8SVP2XSj3wI6v2mETB9EFHkSS4c,621
111
111
  frogml_cli/commands/models/build/_logic/phase/c_deploy/__init__.py,sha256=Ak5f901KsQIA9BIXgtSCAaf7Es_IiCb0gRjPCeY1g_c,182
112
112
  frogml_cli/commands/models/build/_logic/phase/c_deploy/build_polling_status.py,sha256=tHctBHxTGhgt3L0LNPXEAto3dJjh2eF03DqSvNAicRw,2221
113
- frogml_cli/commands/models/build/_logic/phase/c_deploy/deploy_build.py,sha256=rCj4WqzjdUTbz34EVxmxgSZ0Fget8zVFTKy9PNUr6wk,2319
113
+ frogml_cli/commands/models/build/_logic/phase/c_deploy/deploy_build.py,sha256=uyK7SHzsdTOZ7uqa4RTZzvQAT6w9rcP8WNxF-WLAM7I,2332
114
114
  frogml_cli/commands/models/build/_logic/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
115
115
  frogml_cli/commands/models/build/_logic/util/protobuf_factory.py,sha256=gO9LgChpt0Qyc_3UXt2RhdRJ4jqf_9NkkH6t13bmREE,1699
116
116
  frogml_cli/commands/models/build/_logic/util/step_decorator.py,sha256=T-vKF824iNGSg0kHrwXFtMHpmLfYLNje3gsuo4i4BL8,1934
117
117
  frogml_cli/commands/models/build/_logic/util/text.py,sha256=tH-v19Mt8l90sMVxku5XRtrderT0qdRqJ-jLijqannA,188
118
118
  frogml_cli/commands/models/build/_logic/wait_until_finished.py,sha256=hhIFrY2onNvuwOvek06Zpj9RhuCj2sChLfY83BaQkgY,1229
119
- frogml_cli/commands/models/build/ui.py,sha256=NPI0Act9k46WEI1fAj2629JCnD6vKWzoptA5ali91Dg,9976
119
+ frogml_cli/commands/models/build/ui.py,sha256=o9oBQ0ZW-pPX8AxJ8DDKyGsLFbmxHIztdm8LR6yO9Ko,9998
120
120
  frogml_cli/commands/models/builds/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
121
121
  frogml_cli/commands/models/builds/builds_commands_group.py,sha256=OxgluVZUxFV-SmoaRWjaZv9QnsMpMcfpfMHWE63qffg,497
122
122
  frogml_cli/commands/models/builds/cancel/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -129,7 +129,7 @@ frogml_cli/commands/models/builds/status/_logic.py,sha256=8rv1M8mlrH0oAa4SIVAIRj
129
129
  frogml_cli/commands/models/builds/status/ui.py,sha256=DrImQXGBqZ4B5l6o6x8KqEXT_6eD2BTOl0jI27KHtl0,1230
130
130
  frogml_cli/commands/models/create/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
131
131
  frogml_cli/commands/models/create/_logic.py,sha256=_vsAgVGF1mcKSDtB7RRP_Wu_tY0HemG_IHh41RDDX1w,1480
132
- frogml_cli/commands/models/create/ui.py,sha256=h5XrSS8BEA798kGYytbmj2uFa5J6lvJxHiE5P6l8HtE,1255
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
134
  frogml_cli/commands/models/delete/_logic.py,sha256=wtuFIkoOqBeBkCX6ezb6WoJzpOgeZEppQdB2eBvDzV0,809
135
135
  frogml_cli/commands/models/delete/ui.py,sha256=ijBZY7jx13GV0rGTVhFWl3iFyFcYvXkPfRoPt9Z7PgE,914
@@ -205,7 +205,7 @@ frogml_cli/commands/models/init/_logic/template/credit_risk/{{cookiecutter.model
205
205
  frogml_cli/commands/models/init/_logic/template/credit_risk/{{cookiecutter.model_directory}}/main/data.csv,sha256=Qr47gqLlBzvVyiO84dHDFCa3j3LSDNiS86rKorowoHU,53393
206
206
  frogml_cli/commands/models/init/_logic/template/credit_risk/{{cookiecutter.model_directory}}/main/model.py,sha256=L5wmOy9O1ACyZFzB32ZT44fDy5wtGGELL8UkMnvDTj0,4005
207
207
  frogml_cli/commands/models/init/_logic/template/general/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
208
- frogml_cli/commands/models/init/_logic/template/general/cookiecutter.json,sha256=dcBfmJgVzlG7z3k-WFLHNiH9fPirs-WU9TVgl4xN20A,139
208
+ frogml_cli/commands/models/init/_logic/template/general/cookiecutter.json,sha256=Ddx20uknTUv-I8AnZ35T9B7zsNHmE6VtoIE0vRerx3k,139
209
209
  frogml_cli/commands/models/init/_logic/template/general/{{cookiecutter.model_directory}}/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
210
210
  frogml_cli/commands/models/init/_logic/template/general/{{cookiecutter.model_directory}}/{{cookiecutter.main_directory}}/__init__.py,sha256=LG2LPM98oRS0v2uYDYs7hI7EIaui79YT--f91BbTqD4,120
211
211
  frogml_cli/commands/models/init/_logic/template/general/{{cookiecutter.model_directory}}/{{cookiecutter.main_directory}}/conda.yml,sha256=EDD9m5sTQS2Kg_e6IvxaAMrTN1J8xrdACVD-sVZm5LQ,140
@@ -230,7 +230,7 @@ frogml_cli/commands/models/init/_logic/template/titanic_poetry/{{cookiecutter.mo
230
230
  frogml_cli/commands/models/init/_logic/template/titanic_poetry/{{cookiecutter.model_directory}}/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
231
231
  frogml_cli/commands/models/init/_logic/template/titanic_poetry/{{cookiecutter.model_directory}}/tests/it/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
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
- frogml_cli/commands/models/init/ui.py,sha256=zfg_qyt4G6KM-57Mq5d5jPiBuGju7iVb7t5j4H2sxaM,1925
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
235
  frogml_cli/commands/models/list/_logic.py,sha256=6ef3aBkN55b_4Z4VktNSzH6L0jXT2dFWz0LyYwWJ4MA,193
236
236
  frogml_cli/commands/models/list/ui.py,sha256=L5FotbJbeweTklDTKIA24_sdLNH3t53JHQFOx-JtBa4,1498
@@ -280,8 +280,8 @@ frogml_cli/tools/colors.py,sha256=7pui_GGjC4uZKYFsIyXaJjYsjLxJVHb4OrfTgr93hqo,28
280
280
  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
- frogml_cli/tools/utils.py,sha256=dzv10KyWBl8lLh_snZN3L9SxnrHvk5QSVSLP2l2xQ40,1200
284
- frogml_cli-0.0.1.dist-info/METADATA,sha256=ls5JKVlleneD-J7HwZf1B9fmQkAmOlsGtXY58XqNg2Q,2202
285
- frogml_cli-0.0.1.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
286
- frogml_cli-0.0.1.dist-info/entry_points.txt,sha256=2H5x0V_E73HeywIMBRRvZMgeRtmX5820KmSLiNFzDcA,53
287
- frogml_cli-0.0.1.dist-info/RECORD,,
283
+ frogml_cli/tools/utils.py,sha256=Vliw-w6i-93dgZ3M09EgWjttHMuhT-3CH7tbWVKsf8s,1668
284
+ frogml_cli-0.0.3.dist-info/METADATA,sha256=814_Da8zmQXlyOCL3kHIqyuNvdI8J4mVcaTrfXVi1_A,2202
285
+ frogml_cli-0.0.3.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
286
+ frogml_cli-0.0.3.dist-info/entry_points.txt,sha256=2H5x0V_E73HeywIMBRRvZMgeRtmX5820KmSLiNFzDcA,53
287
+ frogml_cli-0.0.3.dist-info/RECORD,,