salesforce-data-customcode 0.1.26__tar.gz → 0.1.27__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.
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/PKG-INFO +1 -1
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/pyproject.toml +1 -1
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/cmd.py +6 -2
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/deploy.py +16 -14
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/LICENSE.txt +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/README.md +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/__init__.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/auth.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/cli.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/client.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/config.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/config.yaml +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/credentials.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/file/__init__.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/file/base.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/file/path/__init__.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/file/path/default.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/io/__init__.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/io/base.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/io/reader/__init__.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/io/reader/base.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/io/reader/query_api.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/io/reader/sf_cli.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/io/reader/utils.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/io/writer/__init__.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/io/writer/base.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/io/writer/csv.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/io/writer/print.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/mixin.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/proxy/__init__.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/proxy/base.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/proxy/client/LocalProxyClientProvider.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/proxy/client/__init__.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/proxy/client/base.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/py.typed +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/run.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/scan.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/spark/__init__.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/spark/base.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/spark/default.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/template.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/templates/function/.devcontainer/devcontainer.json +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/templates/function/Dockerfile.dependencies +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/templates/function/README.md +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/templates/function/build_native_dependencies.sh +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/templates/function/payload/config.json +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/templates/function/payload/entrypoint.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/templates/function/requirements-dev.txt +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/templates/function/requirements.txt +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/templates/script/.devcontainer/devcontainer.json +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/templates/script/Dockerfile +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/templates/script/Dockerfile.dependencies +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/templates/script/README.md +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/templates/script/account.ipynb +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/templates/script/build_native_dependencies.sh +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/templates/script/examples/employee_hierarchy/employee_data.csv +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/templates/script/examples/employee_hierarchy/entrypoint.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/templates/script/jupyterlab.sh +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/templates/script/payload/config.json +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/templates/script/payload/entrypoint.py +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/templates/script/requirements-dev.txt +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/templates/script/requirements.txt +0 -0
- {salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/version.py +0 -0
{salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/cmd.py
RENAMED
|
@@ -85,9 +85,13 @@ def _cmd_output(
|
|
|
85
85
|
**kwargs: Any,
|
|
86
86
|
) -> tuple[int, bytes, Union[bytes, None]]:
|
|
87
87
|
_setdefault_kwargs(kwargs)
|
|
88
|
+
kwargs.setdefault("shell", True)
|
|
89
|
+
# On Windows, Popen with shell=True and a sequence uses list2cmdline() which
|
|
90
|
+
# quotes the entire string, causing cmd.exe to fail. Joining to a plain string
|
|
91
|
+
# works correctly on both Unix (/bin/sh -c "...") and Windows (cmd.exe /c ...).
|
|
92
|
+
cmd_arg: Union[tuple[str, ...], str] = " ".join(cmd) if kwargs.get("shell") else cmd
|
|
88
93
|
try:
|
|
89
|
-
|
|
90
|
-
proc = subprocess.Popen(cmd, **kwargs)
|
|
94
|
+
proc = subprocess.Popen(cmd_arg, **kwargs)
|
|
91
95
|
except OSError as e:
|
|
92
96
|
returncode, stdout_b, stderr_b = _oserror_to_output(e)
|
|
93
97
|
else:
|
{salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/deploy.py
RENAMED
|
@@ -272,7 +272,7 @@ def create_deployment(
|
|
|
272
272
|
raise
|
|
273
273
|
|
|
274
274
|
|
|
275
|
-
|
|
275
|
+
PLATFORM_ENV = {"DOCKER_DEFAULT_PLATFORM": "linux/amd64"}
|
|
276
276
|
DOCKER_IMAGE_NAME = "datacloud-custom-code-dependency-builder"
|
|
277
277
|
DEPENDENCIES_ARCHIVE_NAME = "native_dependencies"
|
|
278
278
|
DEPENDENCIES_ARCHIVE_FULL_NAME = f"{DEPENDENCIES_ARCHIVE_NAME}.tar.gz"
|
|
@@ -286,19 +286,25 @@ def prepare_dependency_archive(directory: str, docker_network: str) -> None:
|
|
|
286
286
|
cmd = f"docker images -q {DOCKER_IMAGE_NAME}"
|
|
287
287
|
image_exists = cmd_output(cmd)
|
|
288
288
|
|
|
289
|
+
docker_env = {**os.environ, **PLATFORM_ENV}
|
|
290
|
+
|
|
289
291
|
if not image_exists:
|
|
290
292
|
logger.info(f"Building docker image with docker network: {docker_network}...")
|
|
291
293
|
cmd = docker_build_cmd(docker_network)
|
|
292
|
-
cmd_output(cmd)
|
|
294
|
+
cmd_output(cmd, env=docker_env)
|
|
293
295
|
|
|
294
|
-
|
|
296
|
+
# ignore_cleanup_errors=True: on Windows, Docker creates files inside the
|
|
297
|
+
# mounted volume whose permissions prevent the host from deleting them.
|
|
298
|
+
# The archive has already been copied out, so silently skipping leftover
|
|
299
|
+
# files is safe and avoids a fatal error on context-manager exit.
|
|
300
|
+
with tempfile.TemporaryDirectory(ignore_cleanup_errors=True) as temp_dir:
|
|
295
301
|
logger.info(
|
|
296
302
|
f"Building dependencies archive with docker network: {docker_network}"
|
|
297
303
|
)
|
|
298
304
|
shutil.copy("requirements.txt", temp_dir)
|
|
299
305
|
shutil.copy("build_native_dependencies.sh", temp_dir)
|
|
300
306
|
cmd = docker_run_cmd(docker_network, temp_dir)
|
|
301
|
-
cmd_output(cmd)
|
|
307
|
+
cmd_output(cmd, env=docker_env)
|
|
302
308
|
archives_temp_path = os.path.join(temp_dir, DEPENDENCIES_ARCHIVE_FULL_NAME)
|
|
303
309
|
os.makedirs(os.path.dirname(DEPENDENCIES_ARCHIVE_PATH), exist_ok=True)
|
|
304
310
|
shutil.copy(archives_temp_path, DEPENDENCIES_ARCHIVE_PATH)
|
|
@@ -307,10 +313,7 @@ def prepare_dependency_archive(directory: str, docker_network: str) -> None:
|
|
|
307
313
|
|
|
308
314
|
|
|
309
315
|
def docker_build_cmd(network: str) -> str:
|
|
310
|
-
cmd =
|
|
311
|
-
f"{PLATFORM_ENV_VAR} docker build -t {DOCKER_IMAGE_NAME} "
|
|
312
|
-
f"--file Dockerfile.dependencies . "
|
|
313
|
-
)
|
|
316
|
+
cmd = f"docker build -t {DOCKER_IMAGE_NAME} --file Dockerfile.dependencies . "
|
|
314
317
|
|
|
315
318
|
if network != "default":
|
|
316
319
|
cmd = cmd + f"--network {network}"
|
|
@@ -318,12 +321,11 @@ def docker_build_cmd(network: str) -> str:
|
|
|
318
321
|
return cmd
|
|
319
322
|
|
|
320
323
|
|
|
321
|
-
def docker_run_cmd(network: str, temp_dir) -> str:
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
)
|
|
324
|
+
def docker_run_cmd(network: str, temp_dir: str) -> str:
|
|
325
|
+
# Normalise path separators: Docker expects forward slashes even on Windows,
|
|
326
|
+
# and quoting handles paths that contain spaces.
|
|
327
|
+
docker_path = temp_dir.replace("\\", "/")
|
|
328
|
+
cmd = f'docker run --rm -v "{docker_path}:/workspace" {DOCKER_IMAGE_NAME} '
|
|
327
329
|
|
|
328
330
|
if network != "default":
|
|
329
331
|
cmd = cmd + f"--network {network} "
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/auth.py
RENAMED
|
File without changes
|
{salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/cli.py
RENAMED
|
File without changes
|
{salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/client.py
RENAMED
|
File without changes
|
{salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/config.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/mixin.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/py.typed
RENAMED
|
File without changes
|
{salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/run.py
RENAMED
|
File without changes
|
{salesforce_data_customcode-0.1.26 → salesforce_data_customcode-0.1.27}/src/datacustomcode/scan.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
|
|
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
|