datatailr 0.1.52__tar.gz → 0.1.54__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.
Potentially problematic release.
This version of datatailr might be problematic. Click here for more details.
- {datatailr-0.1.52/src/datatailr.egg-info → datatailr-0.1.54}/PKG-INFO +1 -1
- {datatailr-0.1.52 → datatailr-0.1.54}/pyproject.toml +1 -1
- {datatailr-0.1.52 → datatailr-0.1.54}/src/datatailr/scheduler/base.py +14 -1
- {datatailr-0.1.52 → datatailr-0.1.54/src/datatailr.egg-info}/PKG-INFO +1 -1
- {datatailr-0.1.52 → datatailr-0.1.54}/src/sbin/datatailr_run.py +15 -11
- {datatailr-0.1.52 → datatailr-0.1.54}/LICENSE +0 -0
- {datatailr-0.1.52 → datatailr-0.1.54}/README.md +0 -0
- {datatailr-0.1.52 → datatailr-0.1.54}/setup.cfg +0 -0
- {datatailr-0.1.52 → datatailr-0.1.54}/setup.py +0 -0
- {datatailr-0.1.52 → datatailr-0.1.54}/src/datatailr/__init__.py +0 -0
- {datatailr-0.1.52 → datatailr-0.1.54}/src/datatailr/acl.py +0 -0
- {datatailr-0.1.52 → datatailr-0.1.54}/src/datatailr/blob.py +0 -0
- {datatailr-0.1.52 → datatailr-0.1.54}/src/datatailr/build/__init__.py +0 -0
- {datatailr-0.1.52 → datatailr-0.1.54}/src/datatailr/build/image.py +0 -0
- {datatailr-0.1.52 → datatailr-0.1.54}/src/datatailr/dt_json.py +0 -0
- {datatailr-0.1.52 → datatailr-0.1.54}/src/datatailr/errors.py +0 -0
- {datatailr-0.1.52 → datatailr-0.1.54}/src/datatailr/excel.py +0 -0
- {datatailr-0.1.52 → datatailr-0.1.54}/src/datatailr/group.py +0 -0
- {datatailr-0.1.52 → datatailr-0.1.54}/src/datatailr/logging.py +0 -0
- {datatailr-0.1.52 → datatailr-0.1.54}/src/datatailr/scheduler/__init__.py +0 -0
- {datatailr-0.1.52 → datatailr-0.1.54}/src/datatailr/scheduler/arguments_cache.py +0 -0
- {datatailr-0.1.52 → datatailr-0.1.54}/src/datatailr/scheduler/batch.py +0 -0
- {datatailr-0.1.52 → datatailr-0.1.54}/src/datatailr/scheduler/batch_decorator.py +0 -0
- {datatailr-0.1.52 → datatailr-0.1.54}/src/datatailr/scheduler/constants.py +0 -0
- {datatailr-0.1.52 → datatailr-0.1.54}/src/datatailr/scheduler/schedule.py +0 -0
- {datatailr-0.1.52 → datatailr-0.1.54}/src/datatailr/scheduler/utils.py +0 -0
- {datatailr-0.1.52 → datatailr-0.1.54}/src/datatailr/user.py +0 -0
- {datatailr-0.1.52 → datatailr-0.1.54}/src/datatailr/utils.py +0 -0
- {datatailr-0.1.52 → datatailr-0.1.54}/src/datatailr/version.py +0 -0
- {datatailr-0.1.52 → datatailr-0.1.54}/src/datatailr/wrapper.py +0 -0
- {datatailr-0.1.52 → datatailr-0.1.54}/src/datatailr.egg-info/SOURCES.txt +0 -0
- {datatailr-0.1.52 → datatailr-0.1.54}/src/datatailr.egg-info/dependency_links.txt +0 -0
- {datatailr-0.1.52 → datatailr-0.1.54}/src/datatailr.egg-info/entry_points.txt +0 -0
- {datatailr-0.1.52 → datatailr-0.1.54}/src/datatailr.egg-info/requires.txt +0 -0
- {datatailr-0.1.52 → datatailr-0.1.54}/src/datatailr.egg-info/top_level.txt +0 -0
- {datatailr-0.1.52 → datatailr-0.1.54}/src/sbin/datatailr_run_app.py +0 -0
- {datatailr-0.1.52 → datatailr-0.1.54}/src/sbin/datatailr_run_batch.py +0 -0
- {datatailr-0.1.52 → datatailr-0.1.54}/src/sbin/datatailr_run_excel.py +0 -0
- {datatailr-0.1.52 → datatailr-0.1.54}/src/sbin/datatailr_run_service.py +0 -0
|
@@ -387,18 +387,31 @@ class Job:
|
|
|
387
387
|
|
|
388
388
|
def promote(
|
|
389
389
|
self,
|
|
390
|
-
from_environment: Optional[Environment] = None,
|
|
390
|
+
from_environment: Optional[Environment | str] = None,
|
|
391
391
|
version: Optional[str | int] = None,
|
|
392
392
|
) -> Tuple[bool, str]:
|
|
393
393
|
"""
|
|
394
394
|
Promote the job to the next environment.
|
|
395
395
|
This method is used to promote a version of the job from one environment to the next one.
|
|
396
396
|
If none of the environments to promote from are specified, it defaults to promote from all environments.
|
|
397
|
+
|
|
398
|
+
:param from_environment: The environment to promote from. If None, it will promote from all environments.
|
|
399
|
+
:param version: The version to promote. If None, it will promote the latest version.
|
|
400
|
+
:return: A tuple of (success: bool, message: str).
|
|
401
|
+
|
|
402
|
+
>>> from datatailr import Environment
|
|
403
|
+
>>> from datatailr.scheduler import Job
|
|
404
|
+
>>> job = Job(name="my_job", environment=Environment.DEV)
|
|
405
|
+
>>> job.promote(from_environment=Environment.DEV, version=3)
|
|
406
|
+
|
|
407
|
+
This will promote version 3 of the job from the DEV environment to the next environment (PRE).
|
|
397
408
|
"""
|
|
398
409
|
promote_kwargs = {}
|
|
399
410
|
if version is not None:
|
|
400
411
|
promote_kwargs["version"] = str(version)
|
|
401
412
|
if from_environment is not None:
|
|
413
|
+
if isinstance(from_environment, str):
|
|
414
|
+
from_environment = Environment(from_environment.lower())
|
|
402
415
|
promote_kwargs["environment"] = str(from_environment)
|
|
403
416
|
try:
|
|
404
417
|
__client__.promote(self.name, **promote_kwargs)
|
|
@@ -30,11 +30,14 @@
|
|
|
30
30
|
# DATATAILR_BATCH_RUN_ID - the unique identifier for the batch run.
|
|
31
31
|
# DATATAILR_BATCH_ID - the unique identifier for the batch.
|
|
32
32
|
# DATATAILR_JOB_ID - the unique identifier for the job.
|
|
33
|
+
# Important:
|
|
34
|
+
# Python environment is installed and managed by uv and all installed scripts (datatailr_run, datatailr_run_excel, jupyter etc.) should be invoked with `uv run`.
|
|
33
35
|
|
|
34
36
|
|
|
35
37
|
import subprocess
|
|
36
38
|
import os
|
|
37
39
|
import sys
|
|
40
|
+
import sysconfig
|
|
38
41
|
from typing import Tuple
|
|
39
42
|
from datatailr.logging import DatatailrLogger
|
|
40
43
|
from datatailr.utils import is_dt_installed
|
|
@@ -85,17 +88,14 @@ def run_command_as_user(command: str | list, user: str, env_vars: dict):
|
|
|
85
88
|
"""
|
|
86
89
|
Run a command as a specific user with the given environment variables.
|
|
87
90
|
"""
|
|
88
|
-
|
|
89
|
-
with open("/etc/python-site-location") as f:
|
|
90
|
-
python_site = f.read().rstrip()
|
|
91
|
-
else:
|
|
92
|
-
python_site = ""
|
|
91
|
+
python_libdir = sysconfig.get_config_var("LIBDIR")
|
|
93
92
|
|
|
94
93
|
if isinstance(command, list):
|
|
95
94
|
command = " ".join(command)
|
|
96
95
|
env_vars = {
|
|
97
96
|
"PATH": get_env_var("PATH", ""),
|
|
98
|
-
"PYTHONPATH": get_env_var("PYTHONPATH", "")
|
|
97
|
+
"PYTHONPATH": get_env_var("PYTHONPATH", ""),
|
|
98
|
+
"LD_LIBRARY_PATH": get_env_var("LD_LIBRARY_PATH", "") + ":" + python_libdir,
|
|
99
99
|
} | env_vars
|
|
100
100
|
|
|
101
101
|
env_kv = [f"{k}={v}" for k, v in env_vars.items()]
|
|
@@ -132,7 +132,7 @@ def main():
|
|
|
132
132
|
"DATATAILR_BATCH_ID": batch_id,
|
|
133
133
|
"DATATAILR_BATCH_ENTRYPOINT": entrypoint,
|
|
134
134
|
} | env
|
|
135
|
-
run_command_as_user("datatailr_run_batch", user, env)
|
|
135
|
+
run_command_as_user("uv run datatailr_run_batch", user, env)
|
|
136
136
|
elif job_type == "service":
|
|
137
137
|
port = get_env_var("DATATAILR_SERVICE_PORT", 8080)
|
|
138
138
|
entrypoint = get_env_var("DATATAILR_ENTRYPOINT")
|
|
@@ -140,15 +140,16 @@ def main():
|
|
|
140
140
|
"DATATAILR_ENTRYPOINT": entrypoint,
|
|
141
141
|
"DATATAILR_SERVICE_PORT": port,
|
|
142
142
|
} | env
|
|
143
|
-
run_command_as_user("datatailr_run_service", user, env)
|
|
143
|
+
run_command_as_user("uv run datatailr_run_service", user, env)
|
|
144
144
|
elif job_type == "app":
|
|
145
145
|
entrypoint = get_env_var("DATATAILR_ENTRYPOINT")
|
|
146
146
|
env = {
|
|
147
147
|
"DATATAILR_ENTRYPOINT": entrypoint,
|
|
148
148
|
} | env
|
|
149
|
-
run_command_as_user("datatailr_run_app", user, env)
|
|
149
|
+
run_command_as_user("uv run datatailr_run_app", user, env)
|
|
150
150
|
elif job_type == "excel":
|
|
151
151
|
host = get_env_var("DATATAILR_HOST", "")
|
|
152
|
+
local = get_env_var("DATATAILR_LOCAL", "")
|
|
152
153
|
entrypoint = get_env_var("DATATAILR_ENTRYPOINT")
|
|
153
154
|
local = get_env_var("DATATAILR_LOCAL", False)
|
|
154
155
|
env = {
|
|
@@ -156,7 +157,7 @@ def main():
|
|
|
156
157
|
"DATATAILR_HOST": host,
|
|
157
158
|
"DATATAILR_LOCAL": local,
|
|
158
159
|
} | env
|
|
159
|
-
run_command_as_user("datatailr_run_excel", user, env)
|
|
160
|
+
run_command_as_user("uv run datatailr_run_excel", user, env)
|
|
160
161
|
elif job_type == "ide":
|
|
161
162
|
command = [
|
|
162
163
|
"code-server",
|
|
@@ -167,7 +168,10 @@ def main():
|
|
|
167
168
|
run_command_as_user(command, user, env)
|
|
168
169
|
elif job_type == "jupyter":
|
|
169
170
|
command = [
|
|
170
|
-
"
|
|
171
|
+
"uv",
|
|
172
|
+
"run",
|
|
173
|
+
"jupyter",
|
|
174
|
+
"lab",
|
|
171
175
|
"--ip='*'",
|
|
172
176
|
"--port=8080",
|
|
173
177
|
"--no-browser",
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|