frogml-core 0.0.114__py3-none-any.whl → 0.0.116__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_core/__init__.py +1 -1
- frogml_core/clients/administration/authentication/client.py +2 -2
- frogml_core/clients/batch_job_management/client.py +4 -4
- frogml_core/clients/build_orchestrator/build_model_request_getter.py +6 -6
- frogml_core/clients/build_orchestrator/client.py +12 -12
- frogml_core/clients/build_orchestrator/internal_client.py +10 -10
- frogml_core/frogml_client/build_api_helpers/build_api_steps.py +3 -3
- frogml_core/inner/build_logic/constants/upload_tag.py +7 -7
- frogml_core/inner/build_logic/interface/context_interface.py +1 -1
- frogml_core/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/strategy/strategy.py +4 -4
- frogml_core/inner/build_logic/phases/phase_010_fetch_model/set_version_step.py +3 -3
- frogml_core/inner/build_logic/phases/phase_020_remote_register_frogml_build/start_remote_build_step.py +3 -3
- frogml_core/inner/build_logic/phases/phase_020_remote_register_frogml_build/upload_step.py +11 -9
- frogml_core/inner/build_logic/tools/ignore_files.py +3 -3
- frogml_core/model/adapters/__init__.py +1 -1
- frogml_core/model/analytics_logging.py +1 -1
- frogml_core/model/tools/adapters/input.py +6 -6
- frogml_core/model/tools/adapters/output.py +8 -8
- frogml_core/model/tools/run_model_locally.py +2 -2
- frogml_core/model/utils/feature_utils.py +1 -1
- {frogml_core-0.0.114.dist-info → frogml_core-0.0.116.dist-info}/METADATA +1 -1
- {frogml_core-0.0.114.dist-info → frogml_core-0.0.116.dist-info}/RECORD +28 -28
- frogml_services_mock/mocks/analytics_api.py +6 -6
- frogml_services_mock/mocks/ecosystem_service_api.py +2 -2
- frogml_services_mock/services_mock.py +4 -4
- frogml_storage/__init__.py +1 -1
- /frogml_core/model/adapters/output_adapters/{qwak_with_default_fallback.py → frogml_with_default_fallback.py} +0 -0
- {frogml_core-0.0.114.dist-info → frogml_core-0.0.116.dist-info}/WHEEL +0 -0
frogml_core/__init__.py
CHANGED
@@ -5,7 +5,7 @@ from frogml_proto.qwak.administration.v0.authentication.authentication_service_p
|
|
5
5
|
AuthenticateRequest,
|
6
6
|
)
|
7
7
|
from frogml_proto.qwak.administration.v0.authentication.authentication_service_pb2 import (
|
8
|
-
QwakApiKeyMethod
|
8
|
+
QwakApiKeyMethod,
|
9
9
|
)
|
10
10
|
from frogml_proto.qwak.administration.v0.authentication.authentication_service_pb2_grpc import (
|
11
11
|
AuthenticationServiceStub,
|
@@ -26,7 +26,7 @@ class AuthenticationClient:
|
|
26
26
|
|
27
27
|
def authenticate(self, api_key=None):
|
28
28
|
request = AuthenticateRequest(
|
29
|
-
qwak_api_key_method=
|
29
|
+
qwak_api_key_method=QwakApiKeyMethod(qwak_api_key=api_key)
|
30
30
|
)
|
31
31
|
try:
|
32
32
|
return self._authentication_service.Authenticate(request)
|
@@ -407,7 +407,7 @@ class BatchJobManagerClient:
|
|
407
407
|
self, model_id: str, number_of_batches: int, file_type: str = "csv"
|
408
408
|
) -> GetBatchJobPreSignedUploadUrlResult:
|
409
409
|
"""
|
410
|
-
Get pre signed upload urls details in order to start a job using
|
410
|
+
Get pre signed upload urls details in order to start a job using FrogML cloud bucket
|
411
411
|
Args:
|
412
412
|
model_id: The model id for the execution
|
413
413
|
number_of_batches: The number of pre-signed urls to request
|
@@ -445,7 +445,7 @@ class BatchJobManagerClient:
|
|
445
445
|
self, execution_id: str
|
446
446
|
) -> GetBatchJobPreSignedDownloadUrlResult:
|
447
447
|
"""
|
448
|
-
Get pre signed urls links in order to download files using
|
448
|
+
Get pre signed urls links in order to download files using FrogML cloud bucket
|
449
449
|
Args:
|
450
450
|
execution_id: The execution id of the files
|
451
451
|
|
@@ -475,7 +475,7 @@ class BatchJobManagerClient:
|
|
475
475
|
|
476
476
|
def get_upload_details(self, model_id: str) -> GetBatchJobUploadDetailsResponse:
|
477
477
|
"""
|
478
|
-
Get upload details in order to start a job using
|
478
|
+
Get upload details in order to start a job using FrogML cloud bucket
|
479
479
|
Args:
|
480
480
|
model_id: The model id for the execution
|
481
481
|
|
@@ -496,7 +496,7 @@ class BatchJobManagerClient:
|
|
496
496
|
self, execution_id: str
|
497
497
|
) -> GetBatchJobDownloadDetailsResponse:
|
498
498
|
"""
|
499
|
-
Get download details in order to download files using
|
499
|
+
Get download details in order to download files using FrogML cloud bucket
|
500
500
|
Args:
|
501
501
|
execution_id: The execution id of the files
|
502
502
|
|
@@ -32,10 +32,10 @@ def _get_build_model_spec(
|
|
32
32
|
build_code_path: str = "",
|
33
33
|
build_v1_flag: bool = False,
|
34
34
|
build_config_url: str = "",
|
35
|
-
|
36
|
-
|
35
|
+
frogml_cli_wheel_url: str = "",
|
36
|
+
frogml_cli_version_url: str = "",
|
37
37
|
build_steps: Optional[List[str]] = None,
|
38
|
-
|
38
|
+
cli_version: str = "",
|
39
39
|
) -> RemoteBuildSpec:
|
40
40
|
build_spec = RemoteBuildSpec(
|
41
41
|
build_properties=BuildProperties(
|
@@ -65,7 +65,7 @@ def _get_build_model_spec(
|
|
65
65
|
python_env=PythonEnv(
|
66
66
|
git_credentials=build_conf.build_properties.model_uri.git_credentials,
|
67
67
|
git_credentials_secret=build_conf.build_properties.model_uri.git_credentials_secret,
|
68
|
-
qwak_sdk_version=
|
68
|
+
qwak_sdk_version=cli_version,
|
69
69
|
),
|
70
70
|
),
|
71
71
|
verbose=verbose,
|
@@ -75,8 +75,8 @@ def _get_build_model_spec(
|
|
75
75
|
),
|
76
76
|
build_properties_v1=BuildPropertiesV1(
|
77
77
|
build_config_url=build_config_url,
|
78
|
-
qwak_sdk_wheel_url=
|
79
|
-
qwak_sdk_version_url=
|
78
|
+
qwak_sdk_wheel_url=frogml_cli_wheel_url,
|
79
|
+
qwak_sdk_version_url=frogml_cli_version_url,
|
80
80
|
),
|
81
81
|
build_v1_flag=build_v1_flag,
|
82
82
|
build_steps=build_steps,
|
@@ -365,10 +365,10 @@ class BuildOrchestratorClient:
|
|
365
365
|
build_code_path: str = "",
|
366
366
|
build_v1_flag: bool = False,
|
367
367
|
build_config_url: str = "",
|
368
|
-
|
369
|
-
|
368
|
+
frogml_cli_wheel_url: str = "",
|
369
|
+
frogml_cli_version_url: str = "",
|
370
370
|
build_steps: Optional[List[str]] = None,
|
371
|
-
|
371
|
+
cli_version: str = "",
|
372
372
|
):
|
373
373
|
"""Initiate remote build
|
374
374
|
|
@@ -380,13 +380,13 @@ class BuildOrchestratorClient:
|
|
380
380
|
build_code_path: The code path saved by frogml
|
381
381
|
build_v1_flag:
|
382
382
|
build_config_url:
|
383
|
-
|
384
|
-
|
383
|
+
frogml_cli_wheel_url: Url for wheel file
|
384
|
+
frogml_cli_version_url: The cli version
|
385
385
|
build_steps: List of the steps the build is comprised from
|
386
|
-
|
386
|
+
cli_version: The cli version to build the
|
387
387
|
|
388
388
|
Raises:
|
389
|
-
|
389
|
+
FrogmlException: In case of failing to connect the service
|
390
390
|
"""
|
391
391
|
build_steps = build_steps if build_steps else []
|
392
392
|
|
@@ -399,10 +399,10 @@ class BuildOrchestratorClient:
|
|
399
399
|
build_code_path,
|
400
400
|
build_v1_flag,
|
401
401
|
build_config_url,
|
402
|
-
|
403
|
-
|
402
|
+
frogml_cli_wheel_url,
|
403
|
+
frogml_cli_version_url,
|
404
404
|
build_steps,
|
405
|
-
|
405
|
+
cli_version,
|
406
406
|
)
|
407
407
|
self._builds_orchestrator_stub.BuildModel(
|
408
408
|
BuildModelRequest(build_spec=build_spec)
|
@@ -424,7 +424,7 @@ class BuildOrchestratorClient:
|
|
424
424
|
build_id: The build ID to cancel
|
425
425
|
|
426
426
|
Raises:
|
427
|
-
|
427
|
+
FrogmlException: In case of failing to connect the service
|
428
428
|
"""
|
429
429
|
try:
|
430
430
|
self._builds_orchestrator_stub.CancelBuildModel(
|
@@ -444,7 +444,7 @@ class BuildOrchestratorClient:
|
|
444
444
|
Returns:
|
445
445
|
The base docker image name
|
446
446
|
Raises:
|
447
|
-
|
447
|
+
FrogmlException: In case of failing to connect the service
|
448
448
|
"""
|
449
449
|
try:
|
450
450
|
return self._builds_orchestrator_stub.GetBaseDockerImageName(
|
@@ -43,11 +43,11 @@ class InternalBuildOrchestratorClient:
|
|
43
43
|
build_code_path: str = "",
|
44
44
|
build_v1_flag: bool = False,
|
45
45
|
build_config_url: str = "",
|
46
|
-
|
47
|
-
|
46
|
+
frogml_cli_wheel_url: str = "",
|
47
|
+
frogml_cli_version_url: str = "",
|
48
48
|
build_steps: Optional[List[str]] = None,
|
49
49
|
build_initiator: BuildInitiator = None,
|
50
|
-
|
50
|
+
cli_version: str = "",
|
51
51
|
):
|
52
52
|
"""Initiate remote build
|
53
53
|
|
@@ -59,14 +59,14 @@ class InternalBuildOrchestratorClient:
|
|
59
59
|
build_code_path: The code path saved by frogml
|
60
60
|
build_v1_flag:
|
61
61
|
build_config_url:
|
62
|
-
|
63
|
-
|
62
|
+
frogml_cli_wheel_url: Url for wheel file
|
63
|
+
frogml_cli_version_url: The cli version
|
64
64
|
build_steps: List of the steps the build is comprised from
|
65
65
|
build_initiator: Override the initiator of build
|
66
|
-
|
66
|
+
cli_version: The cli version to build the
|
67
67
|
|
68
68
|
Raises:
|
69
|
-
|
69
|
+
FrogmlException: In case of failing to connect the service
|
70
70
|
"""
|
71
71
|
if not self._internal_builds_orchestrator_stub:
|
72
72
|
grpc_channel = self.grpc_channel_factory(
|
@@ -91,10 +91,10 @@ class InternalBuildOrchestratorClient:
|
|
91
91
|
build_code_path,
|
92
92
|
build_v1_flag,
|
93
93
|
build_config_url,
|
94
|
-
|
95
|
-
|
94
|
+
frogml_cli_wheel_url,
|
95
|
+
frogml_cli_version_url,
|
96
96
|
build_steps,
|
97
|
-
|
97
|
+
cli_version,
|
98
98
|
)
|
99
99
|
self._internal_builds_orchestrator_stub.BuildModel(
|
100
100
|
InternalBuildModelRequest(
|
@@ -24,8 +24,8 @@ from frogml_core.inner.build_logic.phases.phase_020_remote_register_frogml_build
|
|
24
24
|
from frogml_core.inner.build_logic.phases.phases_pipeline import PhasesPipeline
|
25
25
|
from frogml_core.inner.build_logic.trigger_build_context import TriggerBuildContext
|
26
26
|
|
27
|
-
FETCHING_MODEL_CODE_PHASE = "FETCHING_MODEL_CODE"
|
28
|
-
|
27
|
+
FETCHING_MODEL_CODE_PHASE: str = "FETCHING_MODEL_CODE"
|
28
|
+
REGISTERING_FROGML_BUILD_PHASE: str = "REGISTERING_FROGML_BUILD"
|
29
29
|
|
30
30
|
|
31
31
|
def get_trigger_build_api_steps(
|
@@ -47,7 +47,7 @@ def get_trigger_build_api_steps(
|
|
47
47
|
StartRemoteBuildStep(),
|
48
48
|
CleanupStep(),
|
49
49
|
],
|
50
|
-
build_phase=BuildPhase(phase_id=
|
50
|
+
build_phase=BuildPhase(phase_id=REGISTERING_FROGML_BUILD_PHASE),
|
51
51
|
)
|
52
52
|
|
53
53
|
return steps_root
|
@@ -1,7 +1,7 @@
|
|
1
|
-
MODEL_CODE_TAG = "code.zip"
|
2
|
-
SKINNY_MODEL_CODE_TAG = "skinny_code.zip"
|
3
|
-
|
4
|
-
FROGML_RUNTIME_WHEEL_TAG = "frogml_runtime_wheel"
|
5
|
-
FROGML_CORE_WHEEL_TAG = "frogml_core_wheel"
|
6
|
-
BUILD_CONFIG_TAG = "frogml_build_config"
|
7
|
-
FROGML_BUILT_MODEL_TAG = "frogml_built_model"
|
1
|
+
MODEL_CODE_TAG: str = "code.zip"
|
2
|
+
SKINNY_MODEL_CODE_TAG: str = "skinny_code.zip"
|
3
|
+
FROGML_CLI_VERSION_TAG: str = "frogml_cli_version"
|
4
|
+
FROGML_RUNTIME_WHEEL_TAG: str = "frogml_runtime_wheel"
|
5
|
+
FROGML_CORE_WHEEL_TAG: str = "frogml_core_wheel"
|
6
|
+
BUILD_CONFIG_TAG: str = "frogml_build_config"
|
7
|
+
FROGML_BUILT_MODEL_TAG: str = "frogml_built_model"
|
@@ -48,7 +48,7 @@ class Context(metaclass=ABCMeta):
|
|
48
48
|
|
49
49
|
# Upload model
|
50
50
|
model_code_remote_url: Optional[str] = field(default=None)
|
51
|
-
|
51
|
+
frogml_cli_version: Optional[str] = field(default=None)
|
52
52
|
|
53
53
|
# Image
|
54
54
|
base_image: Optional[str] = field(default=None)
|
@@ -11,16 +11,16 @@ from frogml_core.inner.build_logic.tools.ignore_files import (
|
|
11
11
|
)
|
12
12
|
|
13
13
|
_IGNORED_PATTERNS = [r"\..*", r"__pycache__"]
|
14
|
-
|
14
|
+
FROGML_IGNORE_FILE_NAME: str = ".frogmlignore"
|
15
15
|
|
16
16
|
|
17
17
|
def get_ignore_pattern(
|
18
18
|
src: str, main_dir: str, build_logger: BuildLogger
|
19
19
|
) -> Tuple[Callable[[Any, list[str]], set[str]], list[str]]:
|
20
|
-
if (Path(src) / main_dir /
|
21
|
-
ignore_file_path = Path(src) / main_dir /
|
20
|
+
if (Path(src) / main_dir / FROGML_IGNORE_FILE_NAME).is_file():
|
21
|
+
ignore_file_path: Path = Path(src) / main_dir / FROGML_IGNORE_FILE_NAME
|
22
22
|
else:
|
23
|
-
ignore_file_path = Path(src) /
|
23
|
+
ignore_file_path: Path = Path(src) / FROGML_IGNORE_FILE_NAME
|
24
24
|
|
25
25
|
ignored_patterns = (
|
26
26
|
load_patterns_from_ignore_file(
|
@@ -17,8 +17,8 @@ class SetVersionStep(Step):
|
|
17
17
|
def execute(self) -> None:
|
18
18
|
try:
|
19
19
|
self.build_logger.debug("Getting sdk version")
|
20
|
-
frogml_sdk_version = importlib.import_module("frogml_sdk").__version__
|
21
|
-
self.context.
|
20
|
+
frogml_sdk_version: str = importlib.import_module("frogml_sdk").__version__
|
21
|
+
self.context.frogml_cli_version = frogml_sdk_version
|
22
22
|
self.build_logger.debug(
|
23
23
|
self.SDK_VERSION_FOUND_MSG_FORMAT.format(
|
24
24
|
frogml_sdk_version=frogml_sdk_version
|
@@ -30,4 +30,4 @@ class SetVersionStep(Step):
|
|
30
30
|
frogml_core_version=frogml_core_version
|
31
31
|
)
|
32
32
|
)
|
33
|
-
self.context.
|
33
|
+
self.context.frogml_cli_version = frogml_core_version
|
@@ -3,7 +3,7 @@ from copy import deepcopy
|
|
3
3
|
from frogml_proto.qwak.builds.build_url_pb2 import BuildVersioningTagsType
|
4
4
|
from frogml_core.inner.build_logic.constants.upload_tag import (
|
5
5
|
BUILD_CONFIG_TAG,
|
6
|
-
|
6
|
+
FROGML_CLI_VERSION_TAG,
|
7
7
|
MODEL_CODE_TAG,
|
8
8
|
)
|
9
9
|
from frogml_core.inner.build_logic.interface.step_inteface import Step
|
@@ -24,10 +24,10 @@ class StartRemoteBuildStep(Step):
|
|
24
24
|
build_conf=config_copy,
|
25
25
|
build_v1_flag=False,
|
26
26
|
build_config_url=self.get_download_url(BUILD_CONFIG_TAG),
|
27
|
-
|
27
|
+
frogml_cli_version_url=self.get_download_url(FROGML_CLI_VERSION_TAG),
|
28
28
|
resolved_model_url=self.get_download_url(MODEL_CODE_TAG),
|
29
29
|
git_commit_id=self.context.git_commit_id,
|
30
|
-
|
30
|
+
cli_version=self.context.frogml_cli_version,
|
31
31
|
)
|
32
32
|
self.build_logger.info("Remote build started successfully")
|
33
33
|
|
@@ -19,7 +19,7 @@ from frogml_core.inner.build_logic.constants.upload_tag import (
|
|
19
19
|
FROGML_BUILT_MODEL_TAG,
|
20
20
|
FROGML_CORE_WHEEL_TAG,
|
21
21
|
FROGML_RUNTIME_WHEEL_TAG,
|
22
|
-
|
22
|
+
FROGML_CLI_VERSION_TAG,
|
23
23
|
MODEL_CODE_TAG,
|
24
24
|
SKINNY_MODEL_CODE_TAG,
|
25
25
|
)
|
@@ -37,13 +37,13 @@ from frogml_core.inner.build_logic.tools.ignore_files import (
|
|
37
37
|
_MAX_FILE_SIZE_BYTES = 10000000
|
38
38
|
|
39
39
|
|
40
|
-
def should_retry(
|
40
|
+
def should_retry(frogml_exception: FrogmlException) -> bool:
|
41
41
|
# when Got 403 from Jfrog it means that the reposity doesn't exist. It may happen when in the first build in the project
|
42
|
-
return str(
|
42
|
+
return "403" in str(frogml_exception.message)
|
43
43
|
|
44
44
|
|
45
45
|
class UploadStep(Step):
|
46
|
-
STEP_DESCRIPTION = "Saving
|
46
|
+
STEP_DESCRIPTION = "Saving FrogML Model"
|
47
47
|
|
48
48
|
def description(self) -> str:
|
49
49
|
return self.STEP_DESCRIPTION
|
@@ -124,13 +124,15 @@ class UploadStep(Step):
|
|
124
124
|
config_file_temp.write_text(self.config.to_yaml())
|
125
125
|
|
126
126
|
# Dump frogml-sdk version for upload
|
127
|
-
|
128
|
-
|
127
|
+
frogml_cli_version_temp_file_path: Path = (
|
128
|
+
self.context.host_temp_local_build_dir / "VERSION"
|
129
|
+
)
|
130
|
+
frogml_cli_version_temp_file_path.write_text(self.context.frogml_cli_version)
|
129
131
|
|
130
132
|
files_tag_iterator = [
|
131
133
|
(full_size_zip_file, MODEL_CODE_TAG),
|
132
134
|
(skinny_size_zip_file, SKINNY_MODEL_CODE_TAG),
|
133
|
-
(
|
135
|
+
(frogml_cli_version_temp_file_path, FROGML_CLI_VERSION_TAG),
|
134
136
|
(config_file_temp, BUILD_CONFIG_TAG),
|
135
137
|
]
|
136
138
|
|
@@ -211,13 +213,13 @@ class UploadStep(Step):
|
|
211
213
|
headers = {}
|
212
214
|
|
213
215
|
try:
|
214
|
-
self.build_logger.debug(f"Upload file {file} to
|
216
|
+
self.build_logger.debug(f"Upload file {file} to FrogML storage")
|
215
217
|
|
216
218
|
self.send_request(
|
217
219
|
upload_url, file, all_files_size_to_upload, read_so_far, headers
|
218
220
|
)
|
219
221
|
self.build_logger.debug(
|
220
|
-
f"File {file} uploaded to
|
222
|
+
f"File {file} uploaded to FrogML storage successfully"
|
221
223
|
)
|
222
224
|
except Exception as e:
|
223
225
|
raise FrogmlGeneralBuildException(
|
@@ -5,16 +5,16 @@ from frogml_core.inner.build_logic.interface.build_logger_interface import Build
|
|
5
5
|
|
6
6
|
def load_patterns_from_ignore_file(build_logger: BuildLogger, ignore_file_path: Path):
|
7
7
|
if Path(ignore_file_path).is_file():
|
8
|
-
build_logger.info("Found a
|
8
|
+
build_logger.info("Found a FrogML ignore file - will ignore listed patterns")
|
9
9
|
|
10
10
|
with open(ignore_file_path, "r") as igonre_file:
|
11
11
|
patterns_to_ignore = [
|
12
12
|
pattern.strip() for pattern in igonre_file.readlines()
|
13
13
|
]
|
14
14
|
build_logger.debug(
|
15
|
-
f"Patterns from
|
15
|
+
f"Patterns from FrogML igonre file detected - {str(patterns_to_ignore)}"
|
16
16
|
)
|
17
17
|
return patterns_to_ignore
|
18
18
|
|
19
|
-
build_logger.debug("no
|
19
|
+
build_logger.debug("no FrogML ignore file was found, skipping")
|
20
20
|
return []
|
@@ -14,7 +14,7 @@ from .output_adapters.default_output_adapter import DefaultOutputAdapter
|
|
14
14
|
from .output_adapters.json_output_adapter import JsonOutputAdapter
|
15
15
|
from .output_adapters.numpy_output_adapter import NumpyOutputAdapter
|
16
16
|
from .output_adapters.proto_output_adapter import ProtoOutputAdapter
|
17
|
-
from .output_adapters.
|
17
|
+
from .output_adapters.frogml_with_default_fallback import AutodetectOutputAdapter
|
18
18
|
from .output_adapters.tf_tensor_output_adapter import TfTensorOutputAdapter
|
19
19
|
|
20
20
|
__all__ = [
|
@@ -27,7 +27,7 @@ def get_input_adapter(
|
|
27
27
|
) -> Union[JsonInput, DataframeInput, StringInput]:
|
28
28
|
adapter = getattr(model.predict, "_input_adapter", "")
|
29
29
|
|
30
|
-
class
|
30
|
+
class FrogMLInput(StringInput):
|
31
31
|
def extract_user_func_args(self, data: str) -> Any:
|
32
32
|
try:
|
33
33
|
return adapter.extract_user_func_arg(data)
|
@@ -38,15 +38,15 @@ def get_input_adapter(
|
|
38
38
|
f"please check model logs.",
|
39
39
|
)
|
40
40
|
|
41
|
-
class MultiFormatInput(
|
41
|
+
class MultiFormatInput(FrogMLInput):
|
42
42
|
pass
|
43
43
|
|
44
44
|
mapping = {
|
45
45
|
JsonInputAdapter: JsonInput,
|
46
46
|
DataFrameInputAdapter: DataframeInput,
|
47
47
|
StringInputAdapter: StringInput,
|
48
|
-
ProtoInputAdapter:
|
49
|
-
NumpyInputAdapter:
|
48
|
+
ProtoInputAdapter: FrogMLInput,
|
49
|
+
NumpyInputAdapter: FrogMLInput,
|
50
50
|
MultiInputAdapter: MultiFormatInput,
|
51
51
|
TfTensorInputAdapter: TfTensorInput,
|
52
52
|
ImageInputAdapter: ImageInput,
|
@@ -55,8 +55,8 @@ def get_input_adapter(
|
|
55
55
|
|
56
56
|
if adapter:
|
57
57
|
adapter.mappings = mapping
|
58
|
-
for
|
59
|
-
if isinstance(adapter,
|
58
|
+
for frogml_impl, runtime_impl in mapping.items():
|
59
|
+
if isinstance(adapter, frogml_impl):
|
60
60
|
if isinstance(adapter, DataFrameInputAdapter) and hasattr(
|
61
61
|
adapter, "input_orient"
|
62
62
|
):
|
@@ -23,7 +23,7 @@ def get_output_adapter(
|
|
23
23
|
):
|
24
24
|
adapter = getattr(model.predict, "_output_adapter", "")
|
25
25
|
|
26
|
-
class
|
26
|
+
class FrogMLOutput(JsonOutput):
|
27
27
|
def __init__(self, **kwargs):
|
28
28
|
super().__init__(**kwargs)
|
29
29
|
|
@@ -37,7 +37,7 @@ def get_output_adapter(
|
|
37
37
|
status_code=500,
|
38
38
|
)
|
39
39
|
|
40
|
-
class
|
40
|
+
class FrogMLOutputWithDefaultFallbackOutput(FrogMLOutput):
|
41
41
|
def __init__(self, **kwargs):
|
42
42
|
super().__init__(**kwargs)
|
43
43
|
|
@@ -50,7 +50,7 @@ def get_output_adapter(
|
|
50
50
|
else return_result
|
51
51
|
)
|
52
52
|
if issubclass(type(first_result), Message):
|
53
|
-
response =
|
53
|
+
response = FrogMLOutput().pack_user_func_return_value(return_result)
|
54
54
|
return response
|
55
55
|
else:
|
56
56
|
return DefaultOutput().pack_user_func_return_value(return_result)
|
@@ -59,13 +59,13 @@ def get_output_adapter(
|
|
59
59
|
JsonOutputAdapter: JsonOutput,
|
60
60
|
DataFrameOutputAdapter: DataFrameOutput,
|
61
61
|
DefaultOutputAdapter: DefaultOutput,
|
62
|
-
AutodetectOutputAdapter:
|
63
|
-
ProtoOutputAdapter:
|
64
|
-
NumpyOutputAdapter:
|
62
|
+
AutodetectOutputAdapter: FrogMLOutputWithDefaultFallbackOutput,
|
63
|
+
ProtoOutputAdapter: FrogMLOutput,
|
64
|
+
NumpyOutputAdapter: FrogMLOutput,
|
65
65
|
TfTensorOutputAdapter: TfTensorOutput,
|
66
66
|
}
|
67
|
-
for
|
68
|
-
if isinstance(adapter,
|
67
|
+
for frogml_impl, runtime_impl in mapping.items():
|
68
|
+
if isinstance(adapter, frogml_impl):
|
69
69
|
if isinstance(adapter, DataFrameOutputAdapter) and hasattr(
|
70
70
|
adapter, "output_orient"
|
71
71
|
):
|
@@ -61,8 +61,8 @@ def _extract_online_features(model, df):
|
|
61
61
|
|
62
62
|
@contextmanager
|
63
63
|
def _set_local_mode():
|
64
|
-
os.environ["
|
64
|
+
os.environ["FROGML_IS_RUN_LOCAL"] = "true"
|
65
65
|
try:
|
66
66
|
yield
|
67
67
|
finally:
|
68
|
-
del os.environ["
|
68
|
+
del os.environ["FROGML_IS_RUN_LOCAL"]
|
@@ -27,7 +27,7 @@ def validate_and_sanitize_features_name(
|
|
27
27
|
Add the current env qualifier if env is missing and transform name to lowercase
|
28
28
|
:param features:
|
29
29
|
:return: sanitized features with lower case (to support case-insensitive) fully qualified feature names
|
30
|
-
:exception
|
30
|
+
:exception FrogmlException: if the feature name does not adhere to the convention
|
31
31
|
"""
|
32
32
|
ecosystem_utils = EcosystemUtils()
|
33
33
|
current_env_name = ecosystem_utils.get_current_environment_name()
|
@@ -1,4 +1,4 @@
|
|
1
|
-
frogml_core/__init__.py,sha256=
|
1
|
+
frogml_core/__init__.py,sha256=ODOmLoof63XkTyxJ4gCcOEsHc_pSIRS9bgq1XM9W_Bc,778
|
2
2
|
frogml_core/automations/__init__.py,sha256=j2gD15MN-xVWhI5rAFsDwhL0CIyICLNT0scXsKvNBkU,1547
|
3
3
|
frogml_core/automations/automation_executions.py,sha256=xpOb9Dq8gPPGNQDJTvBBZbNz4woZDRZY0HqnLSu7pwU,3230
|
4
4
|
frogml_core/automations/automations.py,sha256=srG8S5Z20hUsk6uehz75dmCs8mEgNCCwuCXfj3CG8hY,13210
|
@@ -12,7 +12,7 @@ frogml_core/clients/administration/__init__.py,sha256=PwBe7zEIqtL8jiUF4F6iX_0yT_
|
|
12
12
|
frogml_core/clients/administration/authenticated_user/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
13
13
|
frogml_core/clients/administration/authenticated_user/client.py,sha256=ymTzgIkwuMH_5aj1qHX2PkjykmAOsyERWOkxQS3qLUY,1484
|
14
14
|
frogml_core/clients/administration/authentication/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
15
|
-
frogml_core/clients/administration/authentication/client.py,sha256=
|
15
|
+
frogml_core/clients/administration/authentication/client.py,sha256=3wnMUAWwIONg7oFmu0SBDZq_rli3vADAnM5OP4E7T8E,1197
|
16
16
|
frogml_core/clients/administration/eco_system/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
17
17
|
frogml_core/clients/administration/eco_system/client.py,sha256=V6xjyG1zb9HU8_31Ie-wr-oGULjhnh6BPdShEy1jTTE,5376
|
18
18
|
frogml_core/clients/administration/eco_system/eco_system_utils.py,sha256=h3aeyoMEiEUSVkbSMP1EzC2LK88aXz2_PlKIeA_7gSc,521
|
@@ -34,15 +34,15 @@ frogml_core/clients/automation_management/client.py,sha256=rG1tvdtKoSBCSG5IdzmSP
|
|
34
34
|
frogml_core/clients/autoscaling/__init__.py,sha256=A-zuZOWaZf16NjnpX38204m730c5Lde491KaXneGirE,38
|
35
35
|
frogml_core/clients/autoscaling/client.py,sha256=Izl_Ko31ECsVEadTcthru8GGujsHpwWN5E_VSCKiymM,1296
|
36
36
|
frogml_core/clients/batch_job_management/__init__.py,sha256=zywxYf2JupkIWnGVB2C6ugZs5CrOdxTPrksD5P6uQu4,211
|
37
|
-
frogml_core/clients/batch_job_management/client.py,sha256=
|
37
|
+
frogml_core/clients/batch_job_management/client.py,sha256=hAdeoHtz6wEUOrMxi4VQpchp8Mk9Oi6S9gtD-KRB3_0,22536
|
38
38
|
frogml_core/clients/batch_job_management/executions_config.py,sha256=eEbT_ldIEVtwe85oThJ-Jv3qFBIfvLpZ-w6aJCLlqlk,6910
|
39
39
|
frogml_core/clients/batch_job_management/results.py,sha256=nrFGZ3y538FBhej94CYV4cwqQssK1aUQOLGubYdQVrc,1846
|
40
40
|
frogml_core/clients/build_management/__init__.py,sha256=oXurHX6Kho5X-fOuuNHB3B9oMX6ejYUqh6GWv5qJyjw,43
|
41
41
|
frogml_core/clients/build_management/client.py,sha256=eVxnujWyxfkW0jKAJkNWBsP6RE7tnmQOVmk3GzmEvGA,4289
|
42
42
|
frogml_core/clients/build_orchestrator/__init__.py,sha256=ReW7Lbjws06MbVlCTRdsymDZiS2CKuczXIZ1xnPKSdg,105
|
43
|
-
frogml_core/clients/build_orchestrator/build_model_request_getter.py,sha256=
|
44
|
-
frogml_core/clients/build_orchestrator/client.py,sha256=
|
45
|
-
frogml_core/clients/build_orchestrator/internal_client.py,sha256=
|
43
|
+
frogml_core/clients/build_orchestrator/build_model_request_getter.py,sha256=o210DeH8spff5I-Kha1d6d-4-I225MtzXLVFeqdfHN4,5205
|
44
|
+
frogml_core/clients/build_orchestrator/client.py,sha256=R_JdUvjZNteCfP3pLCfe38PmJCIMJZMnGfGLywN2DPg,16265
|
45
|
+
frogml_core/clients/build_orchestrator/internal_client.py,sha256=C2R_2qPWSLSGTYRFpR8UQF6XjZDEJGK2IjRFS_B5AHc,4069
|
46
46
|
frogml_core/clients/data_versioning/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
47
47
|
frogml_core/clients/data_versioning/client.py,sha256=gaIO4AkYUBlWfb0h3pZXnqjXHOf343whHyHN7fGvBLc,2429
|
48
48
|
frogml_core/clients/data_versioning/data_tag_filter.py,sha256=YSHHWnnhPz03KojYXv-YH6-0gSYYKQSQkjoZsqyfa0w,886
|
@@ -188,7 +188,7 @@ frogml_core/frogml_client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
|
|
188
188
|
frogml_core/frogml_client/batch_jobs/execution.py,sha256=UvRkxgdiDC5aZh8nsz_9-AbU-3cg8P9qQSmTL1uHtSI,1758
|
189
189
|
frogml_core/frogml_client/batch_jobs/task.py,sha256=GF1_Jnldp6_JkkzF-pQEhq1vn-Z8RYmgQduoMVYQ9UI,1532
|
190
190
|
frogml_core/frogml_client/build_api_helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
191
|
-
frogml_core/frogml_client/build_api_helpers/build_api_steps.py,sha256=
|
191
|
+
frogml_core/frogml_client/build_api_helpers/build_api_steps.py,sha256=o4Kj2YSNnupN6S2kc-YLKy8eMdBhDNeK9_LIgTOvdg0,1985
|
192
192
|
frogml_core/frogml_client/build_api_helpers/messages.py,sha256=q-1fgIchkbUgGAOnDRETwCasLsd9-hKg6xwJcJsazQ0,186
|
193
193
|
frogml_core/frogml_client/build_api_helpers/trigger_build_api.py,sha256=LYscfsxk8WmRAsVkxBu28gSqgaJuhqb8BiO4LxWtSGM,2436
|
194
194
|
frogml_core/frogml_client/builds/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -219,13 +219,13 @@ frogml_core/inner/build_logic/constants/dependencies.py,sha256=YIK_fu07veVuNX4cz
|
|
219
219
|
frogml_core/inner/build_logic/constants/host_resource.py,sha256=XrHQeJOAEygOx7GTPGTVWCOuDEr5zXYcW0e7kK3HFiU,137
|
220
220
|
frogml_core/inner/build_logic/constants/messages.py,sha256=jqoTX5hMU4uCIlD84j20T2HzGyp46QBgm4azojT5RXQ,96
|
221
221
|
frogml_core/inner/build_logic/constants/temp_dir.py,sha256=rp9chSiT2ShrzpLqPJVf1kC0p_V-LxBgChRYZKFPlSs,36
|
222
|
-
frogml_core/inner/build_logic/constants/upload_tag.py,sha256=
|
222
|
+
frogml_core/inner/build_logic/constants/upload_tag.py,sha256=VoeDP_UGEzS-rWDz3qCseA7HPxrOajD_f-6ll_hJyuc,332
|
223
223
|
frogml_core/inner/build_logic/dependency_manager_type.py,sha256=1L-njo19b6-W2vO-bOtjzek1GL_bkVlgvZWYfmcTsBE,116
|
224
224
|
frogml_core/inner/build_logic/execute_build_pipeline.py,sha256=dONVHjMoZHd-FZ3QySLHIPBATrw6iI-SFZIFtDxNL2U,2321
|
225
225
|
frogml_core/inner/build_logic/interface/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
226
226
|
frogml_core/inner/build_logic/interface/build_logger_interface.py,sha256=JUxldJuhMVHoXk9nZc9tz7-LPOMC99Z32oQYHSHpffY,528
|
227
227
|
frogml_core/inner/build_logic/interface/build_phase.py,sha256=DNOcg11RVCSPpnGcAk2xDYEXwQ6UNWFoiGMpjgSFPt8,675
|
228
|
-
frogml_core/inner/build_logic/interface/context_interface.py,sha256=
|
228
|
+
frogml_core/inner/build_logic/interface/context_interface.py,sha256=9e30dxqt6YOBl1NpboH_bvYY-wDyZYnLvrq6Efl7mUk,2120
|
229
229
|
frogml_core/inner/build_logic/interface/phase_run_handler.py,sha256=Jfrpd-YJJUNKsPH74u_VT-KDR37BV6eK122thyWHaUo,1744
|
230
230
|
frogml_core/inner/build_logic/interface/step_inteface.py,sha256=ETCTp4bHj3O-pOxdQG_7X-W-gu73GLRAGKbnDHOOyP4,746
|
231
231
|
frogml_core/inner/build_logic/interface/time_source.py,sha256=njwil9A1sxP4SoB8LxtNhWhlV2-w1XOpoF4_wccNVYU,585
|
@@ -240,23 +240,23 @@ frogml_core/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manage
|
|
240
240
|
frogml_core/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/strategy/folder/folder_strategy.py,sha256=Uy3HJuiIaGjqVdFyMhyB33QLQxZEHR22K_wx9KrFSaY,5081
|
241
241
|
frogml_core/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/strategy/git/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
242
242
|
frogml_core/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/strategy/git/git_strategy.py,sha256=iqNqD79iKY9kgj3e5G2aZwjeLJnOIE4BC9i0Dl0aaII,5949
|
243
|
-
frogml_core/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/strategy/strategy.py,sha256=
|
243
|
+
frogml_core/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/strategy/strategy.py,sha256=ZdP9xH8xYV9zFnn10EupIqkNV8XASAxvCkZbJugGIF8,1474
|
244
244
|
frogml_core/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/strategy/zip/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
245
245
|
frogml_core/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/strategy/zip/zip_strategy.py,sha256=wCDk5wQlEtCLVDFdC3lXEebpLIMECovHHTvyLsorki8,2276
|
246
246
|
frogml_core/inner/build_logic/phases/phase_010_fetch_model/post_fetch_validation_step.py,sha256=we9ab9WSKU_jtDkqTRVqRDBdKs5cqnlUjJmPozkcZuw,5468
|
247
247
|
frogml_core/inner/build_logic/phases/phase_010_fetch_model/pre_fetch_validation_step.py,sha256=_IGqNpO1qohHqzMh93NW1Z-DaphSLq-9kYfPCKz9Mz0,11263
|
248
|
-
frogml_core/inner/build_logic/phases/phase_010_fetch_model/set_version_step.py,sha256=
|
248
|
+
frogml_core/inner/build_logic/phases/phase_010_fetch_model/set_version_step.py,sha256=NV8Nj2zXT39s1kXBh1kyZ_sThOtrhQ1SdMLzVNAZuHo,1231
|
249
249
|
frogml_core/inner/build_logic/phases/phase_020_remote_register_frogml_build/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
250
250
|
frogml_core/inner/build_logic/phases/phase_020_remote_register_frogml_build/cleanup_step.py,sha256=HmQ0iQ9pJxLZTDzUvwVwwWO2CG-4fHtxwmye-xL0Q9U,632
|
251
|
-
frogml_core/inner/build_logic/phases/phase_020_remote_register_frogml_build/start_remote_build_step.py,sha256=
|
252
|
-
frogml_core/inner/build_logic/phases/phase_020_remote_register_frogml_build/upload_step.py,sha256=
|
251
|
+
frogml_core/inner/build_logic/phases/phase_020_remote_register_frogml_build/start_remote_build_step.py,sha256=8J8MFtNlYWO-Z58Qg2_VKSlO1sQqQ7ldRC_LRxClwm4,1695
|
252
|
+
frogml_core/inner/build_logic/phases/phase_020_remote_register_frogml_build/upload_step.py,sha256=yFh8dhnYG94n4nV0tDUP0yFztrO95DLsybTHAEspWUk,9425
|
253
253
|
frogml_core/inner/build_logic/phases/phases_pipeline.py,sha256=Ei70zbiiT6Be2aFLV7Z5zcVykm2peOsd-UFLG47AR_c,1258
|
254
254
|
frogml_core/inner/build_logic/run_handlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
255
255
|
frogml_core/inner/build_logic/run_handlers/programmatic_phase_run_handler.py,sha256=XE1afXZfA1AQOa9bV2CtmK--gcX0YKRhLwGdkfb3cto,3547
|
256
256
|
frogml_core/inner/build_logic/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
257
257
|
frogml_core/inner/build_logic/tools/dependencies_tools.py,sha256=xuwwVOVYlOuRKlExJp4TCyp0jTlKitQnqC6nTj0VuVQ,2512
|
258
258
|
frogml_core/inner/build_logic/tools/files.py,sha256=yEEXgOoQroxTa_S2zr5DbnrwEC1NiDXiq6Zl-xmGyXU,8277
|
259
|
-
frogml_core/inner/build_logic/tools/ignore_files.py,sha256=
|
259
|
+
frogml_core/inner/build_logic/tools/ignore_files.py,sha256=6Zfn-8t6MZU0qjXNO1CbsrCeRjfFeRIoDc6nlfLMZxQ,763
|
260
260
|
frogml_core/inner/build_logic/tools/text.py,sha256=tH-v19Mt8l90sMVxku5XRtrderT0qdRqJ-jLijqannA,188
|
261
261
|
frogml_core/inner/build_logic/trigger_build_context.py,sha256=SgyWaOKTlZUHqglo8r_pkn_a6PHP-L6gtYaapQ6F3Rs,207
|
262
262
|
frogml_core/inner/const.py,sha256=eP8Naruk3EnRWDdS9gwpozUYA9Nxznybw7Eiv4k5l38,126
|
@@ -284,7 +284,7 @@ frogml_core/inner/tool/run_config/base.py,sha256=D5PsVHSW8oB6AbY40PEgaonLc_R4hJ9
|
|
284
284
|
frogml_core/inner/tool/run_config/utils.py,sha256=xrSmnOvRK4enuy6-4ly_IWP4__l8czQ-E83wSmig14Y,7722
|
285
285
|
frogml_core/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
286
286
|
frogml_core/model/_entity_extraction.py,sha256=gFeHgKgnz-MpB61w0OfJe30PUh5Cm390nZWSKy0JIls,4669
|
287
|
-
frogml_core/model/adapters/__init__.py,sha256=
|
287
|
+
frogml_core/model/adapters/__init__.py,sha256=rdxqqLEUGGkXBiHO0hR8QDlrbwiKJwY8UYoHmonGRSc,1741
|
288
288
|
frogml_core/model/adapters/input_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
289
289
|
frogml_core/model/adapters/input_adapters/base_input_adapter.py,sha256=RCnzt56i-XjJ_IDOO60VN6dMapuvokGW7rwNFQWswgI,198
|
290
290
|
frogml_core/model/adapters/input_adapters/dataframe_input_adapter.py,sha256=8mS2R3iUwztaiTCK4Fhdr1-tQHXdbdw4_nIxrLz6_mw,322
|
@@ -300,12 +300,12 @@ frogml_core/model/adapters/output_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW
|
|
300
300
|
frogml_core/model/adapters/output_adapters/base_output_adapter.py,sha256=CAd0KnTmi9h8xD33v7YNbQAYOYmtZxpRs9bsnhzHRHc,315
|
301
301
|
frogml_core/model/adapters/output_adapters/dataframe_output_adapter.py,sha256=acXXwyw6TmFaZ9lUccTzWrykb48IuUfverQH3OY-G3Y,321
|
302
302
|
frogml_core/model/adapters/output_adapters/default_output_adapter.py,sha256=6iCGj_TNJL4Phvq7Y9GPA3SwNP6oqf1ELtkLc-l6Hx0,219
|
303
|
+
frogml_core/model/adapters/output_adapters/frogml_with_default_fallback.py,sha256=6iBIPuvqfynexPVNVvajcmytl4uji0pyfe8shCrmky0,115
|
303
304
|
frogml_core/model/adapters/output_adapters/json_output_adapter.py,sha256=SKZiYemZYr3X7QNe1ql-AJO4vglhTMaWmIcLlcP4uu0,216
|
304
305
|
frogml_core/model/adapters/output_adapters/numpy_output_adapter.py,sha256=wWWfToKEIGxCola1E7YddNz7RZhY0TvzHiDh57mQEzo,1076
|
305
306
|
frogml_core/model/adapters/output_adapters/proto_output_adapter.py,sha256=eUF1XoLCVocgSR5nqC2OyfbGVMgCdwkk_XJGJL3uJaU,517
|
306
|
-
frogml_core/model/adapters/output_adapters/qwak_with_default_fallback.py,sha256=6iBIPuvqfynexPVNVvajcmytl4uji0pyfe8shCrmky0,115
|
307
307
|
frogml_core/model/adapters/output_adapters/tf_tensor_output_adapter.py,sha256=nSOszDmgsDyahqJbX10zrdwMX2W90RdQQ2uhybF7S08,220
|
308
|
-
frogml_core/model/analytics_logging.py,sha256=
|
308
|
+
frogml_core/model/analytics_logging.py,sha256=MyKPPbNg1Y2qTjVPOQ3MlWOZD954YjlJEo-C5VPkmSM,316
|
309
309
|
frogml_core/model/base.py,sha256=FNeJDoD9ugOdtFo6Yl1NgcQXVGsH4eoA-NenKCuJ-SA,2845
|
310
310
|
frogml_core/model/decorators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
311
311
|
frogml_core/model/decorators/api.py,sha256=ePVg7ZFfR7rkM5S7xG8W-A7fOSMIJpAEX2KDkSGkxFw,2003
|
@@ -320,7 +320,7 @@ frogml_core/model/schema_entities.py,sha256=Q-kNEKnEHG-Wyk_fOP_Em5bQ2aeB9gFS6SeX
|
|
320
320
|
frogml_core/model/tools/__init__.py,sha256=hCoR7Fm87WcrbckIsi23VauopiU_YqNpIkjYs2Yg6XY,804
|
321
321
|
frogml_core/model/tools/adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
322
322
|
frogml_core/model/tools/adapters/encoders.py,sha256=VBxgv5-Gdcz8hyj9dFCAz9JpKmD46uoC_E7F-2ViqOw,1193
|
323
|
-
frogml_core/model/tools/adapters/input.py,sha256=
|
323
|
+
frogml_core/model/tools/adapters/input.py,sha256=V5fVeRED7tHTRcr9P7Y53f_NSSdgqJ95KgmAC4gS76w,2213
|
324
324
|
frogml_core/model/tools/adapters/input_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
325
325
|
frogml_core/model/tools/adapters/input_adapters/base_input.py,sha256=LHwxP323dokgtouo5sXoNKsBk3kEoeJuUV7M-opzmcM,606
|
326
326
|
frogml_core/model/tools/adapters/input_adapters/dataframe_input.py,sha256=Y-TWmm36dsqoxNILTpLWAm46H0dmsO5CPt0f_09BU-w,1571
|
@@ -329,17 +329,17 @@ frogml_core/model/tools/adapters/input_adapters/image_input.py,sha256=Kh8RHMxqHO
|
|
329
329
|
frogml_core/model/tools/adapters/input_adapters/json_input.py,sha256=kF3n6zFOjRtaU34PZuDoM9cIHKUe-N8Xx5v3GTW__OA,621
|
330
330
|
frogml_core/model/tools/adapters/input_adapters/string_input.py,sha256=K2SIJy92C-1eX1ReT8iqeFAU8UQWF2d88Zv79jsMrac,151
|
331
331
|
frogml_core/model/tools/adapters/input_adapters/tf_tensor_input.py,sha256=vP0DWrCzn2dh48cN16872QZzyTfWSRKPs5FAUxjZgHk,1415
|
332
|
-
frogml_core/model/tools/adapters/output.py,sha256=
|
332
|
+
frogml_core/model/tools/adapters/output.py,sha256=9MWqgIOkJdfbgLZgSrZVhmrVoZYbeig7h0wVYaCMp-o,2763
|
333
333
|
frogml_core/model/tools/adapters/output_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
334
334
|
frogml_core/model/tools/adapters/output_adapters/base_output.py,sha256=VXiwnA1499RQSfdFbEU769lRhuOqWTBPfXglKaymhRc,343
|
335
335
|
frogml_core/model/tools/adapters/output_adapters/dataframe_output.py,sha256=f1stPSAEJoceOO4rblmaid3cbN2PmzL-JV408hFQRLY,809
|
336
336
|
frogml_core/model/tools/adapters/output_adapters/default_output.py,sha256=Pt99hiJipHWUuhUXmCqO3C0dm_pVTl5iR5khqMLkQ2Q,1738
|
337
337
|
frogml_core/model/tools/adapters/output_adapters/json_output.py,sha256=06rzcHXJXdS7BWL-hKZRidqMSv3010DPNLpj85K8Cg4,588
|
338
338
|
frogml_core/model/tools/adapters/output_adapters/tf_tensor_output.py,sha256=73_md9k424_IhSKlDGnSBta0VreY16ET9hCmnygSHLg,1094
|
339
|
-
frogml_core/model/tools/run_model_locally.py,sha256=
|
339
|
+
frogml_core/model/tools/run_model_locally.py,sha256=oLZXMI5aPEn6xzEO5cfbTa8KJ3aspArtruiGUQ5hyeI,2307
|
340
340
|
frogml_core/model/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
341
341
|
frogml_core/model/utils/extract_wrapped_function.py,sha256=uIle1zL8vbmeS3PGAuaNFLIUQAsvpuzk3LlH-Teba94,320
|
342
|
-
frogml_core/model/utils/feature_utils.py,sha256=
|
342
|
+
frogml_core/model/utils/feature_utils.py,sha256=tCSKUBa9Ur7IxN6QfApxA0xafNgKzWQy6hN4BozT7No,2527
|
343
343
|
frogml_core/model_loggers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
344
344
|
frogml_core/model_loggers/artifact_logger.py,sha256=F3Xhw9O82b0_cx24DHoc13SaJ06rqO5-c4Tw4yIMR74,4033
|
345
345
|
frogml_core/model_loggers/data_logger.py,sha256=I3o2TkAGAnKuVWccPMlGL5-rg1e2UDHRc9cRSS8kqmc,5678
|
@@ -962,7 +962,7 @@ frogml_services_mock/__init__.py,sha256=0T7bNPpbIApVHcQ9vn5RXKy1PNaD5hl3sFnkMvsc
|
|
962
962
|
frogml_services_mock/mocks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
963
963
|
frogml_services_mock/mocks/alert_manager_service_api.py,sha256=wEBgwtCRAxUSAni-rb0tjlKZjoyeM8jh1Y6Poi4PGMc,2163
|
964
964
|
frogml_services_mock/mocks/alert_registry_service_api.py,sha256=k_MbEytyIvUcMffqd1E6Wf0qBEOyZMVpBu-jaS6Tvjw,2277
|
965
|
-
frogml_services_mock/mocks/analytics_api.py,sha256
|
965
|
+
frogml_services_mock/mocks/analytics_api.py,sha256=-tUGPwj-qrB96cNKjQEo5_ht91S8ThmXZVy4xx8VD80,2163
|
966
966
|
frogml_services_mock/mocks/audience_service_api.py,sha256=x96adhF05NYqEtI8lJaf5llrZX29udPLHuVXKy_FbR0,2661
|
967
967
|
frogml_services_mock/mocks/authentication_service.py,sha256=M3cVfnQ2XcxQAWZCm9uR9cAVu_0BahEP4BdymYQfihI,1180
|
968
968
|
frogml_services_mock/mocks/automation_management_service.py,sha256=-7kncqM3R-_pLmppzFpuv_TniXCVGVuESculVuQ3EbY,8238
|
@@ -974,7 +974,7 @@ frogml_services_mock/mocks/build_orchestrator_build_settings_api.py,sha256=5V15s
|
|
974
974
|
frogml_services_mock/mocks/build_orchestrator_service_api.py,sha256=5LMVyz8fJCKaPqohzbMyb1DJaZQmxQMq7RF7tf8178E,5233
|
975
975
|
frogml_services_mock/mocks/data_versioning_service.py,sha256=XVsFBX9LQtbfo2JG2yBlNoPEZyFKtlFeztJmQULaR7g,2467
|
976
976
|
frogml_services_mock/mocks/deployment_management_service.py,sha256=pcW963FailhEZuFmVXX_gz7N0zydzuxwVb8g803vBK4,20580
|
977
|
-
frogml_services_mock/mocks/ecosystem_service_api.py,sha256=
|
977
|
+
frogml_services_mock/mocks/ecosystem_service_api.py,sha256=J7Cds0OzclsfGZ9DsHvkNcdaz95kIhP6AWKvI262ZLc,1657
|
978
978
|
frogml_services_mock/mocks/execution_management_service.py,sha256=aIxid8ScdUKRpV_w_dErNpMSm2Pj30ZK8ejBqe06HTY,889
|
979
979
|
frogml_services_mock/mocks/feature_store_data_sources_manager_api.py,sha256=uO6I_3qJB-q8JD7ov_tko838wlI6o5B4GsW08cnaYxI,3541
|
980
980
|
frogml_services_mock/mocks/feature_store_entities_manager_api.py,sha256=exPHmeYHtkA0BVA5x_srXCKV7qp5zD4XWD4ZaFdUb4o,3404
|
@@ -1004,10 +1004,10 @@ frogml_services_mock/mocks/system_secret_service.py,sha256=IXcjXoN0L7jbxAF-7g6HO
|
|
1004
1004
|
frogml_services_mock/mocks/user_application_instance_service_api.py,sha256=2kMFeKdxRIWySYYbMAGII4ds04i3m4u_Ds8VrQbm7l0,4097
|
1005
1005
|
frogml_services_mock/mocks/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1006
1006
|
frogml_services_mock/mocks/utils/exception_handlers.py,sha256=k_8mez3cwjNjKE9yGQRJUuK95qNQyk_slotIF08IIEE,308
|
1007
|
-
frogml_services_mock/services_mock.py,sha256=
|
1007
|
+
frogml_services_mock/services_mock.py,sha256=7ZZjHiBrGBjXYckTpA0iJ-wiLsMo87EZ34UIB_UNdoo,19364
|
1008
1008
|
frogml_services_mock/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1009
1009
|
frogml_services_mock/utils/service_utils.py,sha256=ZlB0CnB1J6oBn6_m7fQO2U8tKoboHdUa6ljjkRMYNXU,265
|
1010
|
-
frogml_storage/__init__.py,sha256=
|
1010
|
+
frogml_storage/__init__.py,sha256=eLNosBjJzYQH-LOycm3M-_lc70PB3et54VYnvKM502o,24
|
1011
1011
|
frogml_storage/_environment.py,sha256=zuzOJBtBwFaguwn_JkKjfhXStZoustgP30KzOP3mYv8,707
|
1012
1012
|
frogml_storage/artifactory/__init__.py,sha256=C02rcm7kqsZBVA6c6Gztxamj96hn8Aj6BuzYWFRmWbQ,71
|
1013
1013
|
frogml_storage/artifactory/_artifactory_api.py,sha256=Oz0HOpQPSNwWIVAy94UJUyPhLetc7sdZjoTfSXtrFug,11200
|
@@ -1046,6 +1046,6 @@ frogml_storage/utils/__init__.py,sha256=HQUWfuGUIPZY7kfS795TRW8BQ4WmNqrNjS7lUrbx
|
|
1046
1046
|
frogml_storage/utils/_input_checks_utility.py,sha256=CFiJOdTBS9piJMtR3lemEz27wZcQ6_-7XESu8iy-mrw,3221
|
1047
1047
|
frogml_storage/utils/_storage_utils.py,sha256=HB2g7uY5A3b33yIcAUM1OjHb5jWsnpESsiDrEviQwrI,366
|
1048
1048
|
frogml_storage/utils/_url_utils.py,sha256=NUEfz9Fp1iE8b676-A5wrMlSTsJVRKrUhcUItOFAJD8,821
|
1049
|
-
frogml_core-0.0.
|
1050
|
-
frogml_core-0.0.
|
1051
|
-
frogml_core-0.0.
|
1049
|
+
frogml_core-0.0.116.dist-info/METADATA,sha256=flRmeejJw-tXm0ivDxY6JogjB7-XWC81s01zaTL8k5U,14898
|
1050
|
+
frogml_core-0.0.116.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
1051
|
+
frogml_core-0.0.116.dist-info/RECORD,,
|
@@ -12,12 +12,12 @@ SUCCESSFUL_QUERY = "select * from successful"
|
|
12
12
|
FAILED_QUERY = "select * from failed"
|
13
13
|
TIMEOUT_QUERY = "select * from timeout"
|
14
14
|
CANCELLED_QUERY = "select * from cancelled"
|
15
|
-
SUCCESSFUL_QUERY_ID = "successful"
|
16
|
-
FAILED_QUERY_ID = "failed"
|
17
|
-
TIMEOUT_QUERY_ID = "timeout"
|
18
|
-
CANCELLED_QUERY_ID = "cancelled"
|
19
|
-
FAILURE_REASON = "failure reason"
|
20
|
-
DOWNLOAD_URL = "https://
|
15
|
+
SUCCESSFUL_QUERY_ID: str = "successful"
|
16
|
+
FAILED_QUERY_ID: str = "failed"
|
17
|
+
TIMEOUT_QUERY_ID: str = "timeout"
|
18
|
+
CANCELLED_QUERY_ID: str = "cancelled"
|
19
|
+
FAILURE_REASON: str = "failure reason"
|
20
|
+
DOWNLOAD_URL: str = "https://jfrog.com/download"
|
21
21
|
|
22
22
|
|
23
23
|
class AnalyticsApiMock(AnalyticsQueryServiceServicer):
|
@@ -7,14 +7,14 @@ from frogml_proto.qwak.ecosystem.v0.ecosystem_runtime_service_pb2 import (
|
|
7
7
|
GetCloudCredentialsResponse,
|
8
8
|
)
|
9
9
|
from frogml_proto.qwak.ecosystem.v0.ecosystem_runtime_service_pb2_grpc import (
|
10
|
-
QwakEcosystemRuntimeServicer,
|
10
|
+
QwakEcosystemRuntimeServicer as FrogmlEcosystemRuntimeServicer,
|
11
11
|
)
|
12
12
|
from frogml_services_mock.mocks.utils.exception_handlers import (
|
13
13
|
raise_internal_grpc_error,
|
14
14
|
)
|
15
15
|
|
16
16
|
|
17
|
-
class EcoSystemServiceMock(
|
17
|
+
class EcoSystemServiceMock(FrogmlEcosystemRuntimeServicer):
|
18
18
|
def __init__(self):
|
19
19
|
self._aws_temp_credentials = None
|
20
20
|
self._authenticated_user_context = None
|
@@ -57,7 +57,7 @@ from frogml_proto.qwak.deployment.deployment_service_pb2_grpc import (
|
|
57
57
|
from frogml_proto.qwak.ecosystem.jfrog.v0.jfrog_tenant_info_service_pb2_grpc import \
|
58
58
|
add_JFrogTenantInfoServiceServicer_to_server
|
59
59
|
from frogml_proto.qwak.ecosystem.v0.ecosystem_runtime_service_pb2_grpc import (
|
60
|
-
add_QwakEcosystemRuntimeServicer_to_server,
|
60
|
+
add_QwakEcosystemRuntimeServicer_to_server as add_FrogmlEcosystemRuntimeServicer_to_server,
|
61
61
|
)
|
62
62
|
from frogml_proto.qwak.execution.v1.execution_service_pb2_grpc import (
|
63
63
|
add_FeatureStoreExecutionServiceServicer_to_server,
|
@@ -363,7 +363,7 @@ def attach_servicers(free_port, server):
|
|
363
363
|
(
|
364
364
|
"ecosystem_client_mock",
|
365
365
|
EcoSystemServiceMock,
|
366
|
-
|
366
|
+
add_FrogmlEcosystemRuntimeServicer_to_server,
|
367
367
|
),
|
368
368
|
(
|
369
369
|
"job_registry_service_mock",
|
@@ -511,11 +511,11 @@ def frogml_services_mock() -> Generator[FrogmlMocks, None, None]:
|
|
511
511
|
free_port = frogml_container()
|
512
512
|
|
513
513
|
server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
|
514
|
-
|
514
|
+
frogml_mocks: FrogmlMocks = attach_servicers(free_port, server)
|
515
515
|
|
516
516
|
server.add_insecure_port(f"[::]:{free_port}")
|
517
517
|
server.start()
|
518
518
|
|
519
|
-
yield
|
519
|
+
yield frogml_mocks
|
520
520
|
|
521
521
|
server.stop(0)
|
frogml_storage/__init__.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = "0.0.
|
1
|
+
__version__ = "0.0.116"
|
File without changes
|
File without changes
|