craft-ai-sdk 0.68.3rc1__tar.gz → 0.71.0rc1__tar.gz
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.
- {craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/PKG-INFO +11 -12
- {craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/README.md +1 -1
- {craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/craft_ai_sdk/__init__.py +1 -1
- {craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/craft_ai_sdk/core/deployments.py +10 -3
- {craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/craft_ai_sdk/core/pipelines.py +2 -0
- craft_ai_sdk-0.71.0rc1/craft_ai_sdk/py.typed +0 -0
- {craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/craft_ai_sdk/sdk.py +1 -1
- {craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/craft_ai_sdk/shared/helpers.py +8 -0
- {craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/documentation.pdf +0 -0
- {craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/pyproject.toml +40 -31
- {craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/LICENSE +0 -0
- {craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/craft_ai_sdk/constants.py +0 -0
- {craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/craft_ai_sdk/core/data_store.py +0 -0
- {craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/craft_ai_sdk/core/endpoints.py +0 -0
- {craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/craft_ai_sdk/core/environment_variables.py +0 -0
- {craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/craft_ai_sdk/core/pipeline_executions.py +0 -0
- {craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/craft_ai_sdk/core/pipeline_metrics.py +0 -0
- {craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/craft_ai_sdk/core/pipeline_templates.py +0 -0
- {craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/craft_ai_sdk/core/resource_metrics.py +0 -0
- {craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/craft_ai_sdk/core/steps.py +0 -0
- {craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/craft_ai_sdk/core/users.py +0 -0
- {craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/craft_ai_sdk/core/vector_database.py +0 -0
- {craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/craft_ai_sdk/exceptions.py +0 -0
- {craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/craft_ai_sdk/io.py +0 -0
- {craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/craft_ai_sdk/shared/authentication.py +0 -0
- {craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/craft_ai_sdk/shared/environments.py +0 -0
- {craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/craft_ai_sdk/shared/execution_context.py +0 -0
- {craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/craft_ai_sdk/shared/logger.py +0 -0
- {craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/craft_ai_sdk/shared/request_response_handler.py +0 -0
- {craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/craft_ai_sdk/shared/types.py +0 -0
- {craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/craft_ai_sdk/shared/warnings.py +0 -0
- {craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/craft_ai_sdk/utils/__init__.py +0 -0
- {craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/craft_ai_sdk/utils/datetime_utils.py +0 -0
- {craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/craft_ai_sdk/utils/dict_utils.py +0 -0
- {craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/craft_ai_sdk/utils/file_utils.py +0 -0
|
@@ -1,23 +1,22 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: craft-ai-sdk
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.71.0rc1
|
|
4
4
|
Summary: Craft AI MLOps platform SDK
|
|
5
|
-
License: Apache-2.0
|
|
5
|
+
License-Expression: Apache-2.0
|
|
6
|
+
License-File: LICENSE
|
|
6
7
|
Author: Craft AI
|
|
7
8
|
Author-email: contact@craft.ai
|
|
8
|
-
Requires-Python: >=3.
|
|
9
|
-
Classifier: License :: OSI Approved :: Apache Software License
|
|
9
|
+
Requires-Python: >=3.10
|
|
10
10
|
Classifier: Programming Language :: Python :: 3
|
|
11
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
12
11
|
Classifier: Programming Language :: Python :: 3.10
|
|
13
12
|
Classifier: Programming Language :: Python :: 3.11
|
|
14
13
|
Classifier: Programming Language :: Python :: 3.12
|
|
15
14
|
Classifier: Programming Language :: Python :: 3.13
|
|
16
|
-
|
|
17
|
-
Requires-Dist: StrEnum (>=0.4.9
|
|
18
|
-
Requires-Dist:
|
|
19
|
-
Requires-Dist:
|
|
20
|
-
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
16
|
+
Requires-Dist: StrEnum (>=0.4.9)
|
|
17
|
+
Requires-Dist: pyjwt (>=2.4.0)
|
|
18
|
+
Requires-Dist: requests (>=2.32.4)
|
|
19
|
+
Requires-Dist: weaviate-client (>=4.15.3)
|
|
21
20
|
Description-Content-Type: text/markdown
|
|
22
21
|
|
|
23
22
|
# Craft AI Python SDK
|
|
@@ -25,7 +24,7 @@ Description-Content-Type: text/markdown
|
|
|
25
24
|
This Python SDK lets you interact with Craft AI MLOps Platform.
|
|
26
25
|
|
|
27
26
|
## Installation
|
|
28
|
-
This project relies on **Python 3.
|
|
27
|
+
This project relies on **Python 3.10+**. Once a supported version of Python is installed, you can install `craft-ai-sdk` from PyPI with:
|
|
29
28
|
|
|
30
29
|
```console
|
|
31
30
|
pip install craft-ai-sdk
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
This Python SDK lets you interact with Craft AI MLOps Platform.
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
|
-
This project relies on **Python 3.
|
|
6
|
+
This project relies on **Python 3.10+**. Once a supported version of Python is installed, you can install `craft-ai-sdk` from PyPI with:
|
|
7
7
|
|
|
8
8
|
```console
|
|
9
9
|
pip install craft-ai-sdk
|
|
@@ -236,9 +236,16 @@ def create_deployment(
|
|
|
236
236
|
deployment. This is only available for "low_latency" deployments mode.
|
|
237
237
|
wait_for_completion (:obj:`bool`, optional): Whether to wait for the deployment
|
|
238
238
|
to be ready. Defaults to ``True``.
|
|
239
|
-
timeout_s (:obj:`int`):
|
|
240
|
-
|
|
241
|
-
|
|
239
|
+
timeout_s (:obj:`int`): The execution timeout parameter defines how long code
|
|
240
|
+
can run before it is automatically stopped.
|
|
241
|
+
Parallel mode:
|
|
242
|
+
Async code: The timeout works correctly, if the execution exceeds the limit,
|
|
243
|
+
the task is canceled.
|
|
244
|
+
Non-async code: The timeout is applied, but the running thread is not
|
|
245
|
+
forcibly stopped, which may delay termination.
|
|
246
|
+
Queue mode:
|
|
247
|
+
Async code: The execution is canceled on timeout.
|
|
248
|
+
Non-async code: No timeout is applied (runs in the main thread).
|
|
242
249
|
endpoint_token (:obj:`str`, optional): Applicable only if ``execution_rule``
|
|
243
250
|
is ``"endpoint"``. The token to access the endpoint. If not set, a token
|
|
244
251
|
will be generated. This token is different from the SDK token, you can find it
|
|
@@ -474,6 +474,7 @@ def get_pipeline(
|
|
|
474
474
|
the pipeline.
|
|
475
475
|
"""
|
|
476
476
|
base_url = f"{sdk.base_environment_api_url}/pipelines/{pipeline_name}"
|
|
477
|
+
log_action(sdk, f'Get pipeline: "{pipeline_name}", "{wait_for_completion}".')
|
|
477
478
|
if wait_for_completion:
|
|
478
479
|
pipeline = wait_create_until_ready(
|
|
479
480
|
sdk,
|
|
@@ -487,6 +488,7 @@ def get_pipeline(
|
|
|
487
488
|
)
|
|
488
489
|
else:
|
|
489
490
|
pipeline = sdk._get(base_url)
|
|
491
|
+
log_action(sdk, "Get pipeline done.")
|
|
490
492
|
|
|
491
493
|
latest_execution = sdk._get(
|
|
492
494
|
f"{sdk.base_environment_api_url}/pipelines/{pipeline_name}/executions/latest"
|
|
File without changes
|
|
@@ -143,7 +143,7 @@ class CraftAiSdk(BaseCraftAiSdk):
|
|
|
143
143
|
)
|
|
144
144
|
# Default timeout of proxy network components
|
|
145
145
|
_access_token_margin = timedelta(seconds=120)
|
|
146
|
-
_version = "0.
|
|
146
|
+
_version = "0.71.0rc1" # Would be better to share it somewhere
|
|
147
147
|
|
|
148
148
|
def __init__(
|
|
149
149
|
self,
|
|
@@ -1,15 +1,23 @@
|
|
|
1
1
|
from craft_ai_sdk.exceptions import SdkException
|
|
2
|
+
from craft_ai_sdk.shared.logger import log_action
|
|
2
3
|
|
|
3
4
|
|
|
4
5
|
def wait_create_until_ready(sdk, name, get_func, timeout_s, start_time, get_log_func):
|
|
5
6
|
elapsed_time = sdk._get_time() - start_time
|
|
6
7
|
status = "creation_pending"
|
|
8
|
+
log_action(sdk, f'Start waiting for "{name}" to be created.')
|
|
7
9
|
while status == "creation_pending" and (
|
|
8
10
|
timeout_s is None or elapsed_time < timeout_s
|
|
9
11
|
):
|
|
10
12
|
created_obj = get_func(sdk, name)
|
|
11
13
|
status = created_obj.get("creation_info", {}).get("status", None)
|
|
12
14
|
elapsed_time = sdk._get_time() - start_time
|
|
15
|
+
log_action(
|
|
16
|
+
sdk,
|
|
17
|
+
f'Still waiting for "{name}" to be created, \
|
|
18
|
+
status="{status}", elapsed time={elapsed_time}s.',
|
|
19
|
+
)
|
|
20
|
+
log_action(sdk, f'End waiting for "{name}" to be created, status="{status}".')
|
|
13
21
|
|
|
14
22
|
if status == "creation_failed":
|
|
15
23
|
raise SdkException(
|
|
Binary file
|
|
@@ -1,15 +1,20 @@
|
|
|
1
|
-
[
|
|
1
|
+
[project]
|
|
2
2
|
name = "craft-ai-sdk"
|
|
3
|
-
version = "0.68.3rc1"
|
|
4
3
|
description = "Craft AI MLOps platform SDK"
|
|
5
|
-
|
|
6
|
-
authors = ["Craft AI <contact@craft.ai>"]
|
|
4
|
+
authors = [{name = "Craft AI", email = "contact@craft.ai"}]
|
|
7
5
|
readme = "README.md"
|
|
8
6
|
homepage = "https://www.craft.ai/"
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
license = "Apache-2.0"
|
|
8
|
+
version = "0.71.0rc1"
|
|
9
|
+
requires-python = ">=3.10"
|
|
10
|
+
dependencies = [
|
|
11
|
+
"requests >= 2.32.4",
|
|
12
|
+
"pyjwt >= 2.4.0",
|
|
13
|
+
"StrEnum >= 0.4.9",
|
|
14
|
+
"weaviate-client >= 4.15.3",
|
|
15
|
+
]
|
|
11
16
|
|
|
12
|
-
[
|
|
17
|
+
[project.scripts]
|
|
13
18
|
lint = "scripts.scripts:lint"
|
|
14
19
|
lintfix = "scripts.scripts:lintfix"
|
|
15
20
|
format = "scripts.scripts:format"
|
|
@@ -22,33 +27,37 @@ set-version = "scripts.scripts:set_version"
|
|
|
22
27
|
pdfdoc = "scripts.scripts:generate_docs_in_pdf"
|
|
23
28
|
rstdoc = "scripts.scripts:generate_docs_in_rst"
|
|
24
29
|
|
|
25
|
-
[
|
|
26
|
-
|
|
30
|
+
[dependency-groups]
|
|
31
|
+
dev = [
|
|
32
|
+
"ipython < 8.31", # >= 8.31.0 dropped support for python 3.10
|
|
33
|
+
"ipykernel >= 7.1.0",
|
|
34
|
+
"pylint >= 4.0.3",
|
|
35
|
+
"python-dotenv >= 1.2.1",
|
|
36
|
+
"pytest >= 9.0.1",
|
|
37
|
+
"pytest-asyncio >= 1.3.0",
|
|
38
|
+
"requests-mock[fixture] >= 1.12.1",
|
|
39
|
+
"pytest-watch >= 4.2.0",
|
|
40
|
+
"pyarrow >= 22.0.0",
|
|
41
|
+
"pandas >= 2.3.3",
|
|
42
|
+
"ruff >= 0.14.6",
|
|
43
|
+
]
|
|
44
|
+
docs = [
|
|
45
|
+
"doc8 >= 2.0.0",
|
|
46
|
+
"Sphinx < 8.2.0", # >= 8.2.0 dropped support for python 3.10
|
|
47
|
+
"sphinxcontrib-restbuilder >= 0.3",
|
|
48
|
+
]
|
|
27
49
|
|
|
28
|
-
[tool.poetry
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
weaviate-client = "^4.10.4"
|
|
50
|
+
[tool.poetry]
|
|
51
|
+
version = "0.71.0rc1"
|
|
52
|
+
packages = [{ include = "craft_ai_sdk" }]
|
|
53
|
+
include = ["documentation.pdf"]
|
|
54
|
+
requires-poetry = ">=2.2.1"
|
|
34
55
|
|
|
35
|
-
[tool.poetry.group.
|
|
36
|
-
|
|
37
|
-
ipykernel = "^6.29.5"
|
|
38
|
-
pylint = "^3.3.7"
|
|
39
|
-
python-dotenv = "^1.0.1"
|
|
40
|
-
pytest = "^8.3.4"
|
|
41
|
-
pytest-asyncio = "^1.2.0"
|
|
42
|
-
requests-mock = { extras = ["fixture"], version = "^1.9.3" }
|
|
43
|
-
pytest-watch = "^4.2.0"
|
|
44
|
-
pyarrow = "^19.0.1"
|
|
45
|
-
pandas = "^2.2.3"
|
|
46
|
-
ruff = "^0.12.2"
|
|
56
|
+
[tool.poetry.group.docs]
|
|
57
|
+
optional = true
|
|
47
58
|
|
|
48
|
-
[tool.
|
|
49
|
-
|
|
50
|
-
Sphinx = "^5.0.1"
|
|
51
|
-
sphinxcontrib-restbuilder = "^0.3"
|
|
59
|
+
[tool.pytest.ini_options]
|
|
60
|
+
filterwarnings = ["ignore::UserWarning"]
|
|
52
61
|
|
|
53
62
|
[tool.ruff.lint]
|
|
54
63
|
extend-select = ["B", "C", "E", "F", "I", "T", "W"]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/craft_ai_sdk/core/environment_variables.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{craft_ai_sdk-0.68.3rc1 → craft_ai_sdk-0.71.0rc1}/craft_ai_sdk/shared/request_response_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|