datatailr 0.1.52__py3-none-any.whl → 0.1.54__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.

Potentially problematic release.


This version of datatailr might be problematic. Click here for more details.

@@ -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
- if os.path.isfile("/etc/python-site-location"):
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", "") + ":" + python_site,
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
- "jupyter-lab",
171
+ "uv",
172
+ "run",
173
+ "jupyter",
174
+ "lab",
171
175
  "--ip='*'",
172
176
  "--port=8080",
173
177
  "--no-browser",
@@ -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)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: datatailr
3
- Version: 0.1.52
3
+ Version: 0.1.54
4
4
  Summary: Ready-to-Use Platform That Drives Business Insights
5
5
  Author-email: Datatailr <info@datatailr.com>
6
6
  License-Expression: MIT
@@ -12,22 +12,22 @@ datatailr/version.py,sha256=N9K8ZxlwFFSz8XSgbgaTWZY4k2J0JKfj698nZ_O2pIU,536
12
12
  datatailr/wrapper.py,sha256=K9ZD76cWey_ikA6C5sKejwRaYBDln4QMg-RcoRGiuFc,7991
13
13
  datatailr/build/__init__.py,sha256=_dA7b4L6wsaAFaSxUoYSJ1oaRqDHDMR20kqoCocSOss,487
14
14
  datatailr/build/image.py,sha256=YC8ML-l-sj6TcIBY-DCx_vaeI_7SmL9fPFhHnuxzRh0,5509
15
- datatailr/sbin/datatailr_run.py,sha256=ipgFsud7aF1qmJt3C8juVkiJgj6V9HpyjT7C7fq4dbI,7106
15
+ datatailr/sbin/datatailr_run.py,sha256=3MKXKm_S1jZI8t6g4vFIyKYpKjJFefIZVCHghkDSCDU,7369
16
16
  datatailr/sbin/datatailr_run_app.py,sha256=itF76XC2F4RK9s6bkoEppEiYwSLHK_5Jai3yvC-kFhY,1501
17
17
  datatailr/sbin/datatailr_run_batch.py,sha256=UWnp96j_G66R_Cape7Bb-rbK6UBLF7Y5_mTlWyGJAVQ,1818
18
18
  datatailr/sbin/datatailr_run_excel.py,sha256=MY2XH-T5bWABR23C_15eLhjaxggGRgjRhA-ByS6CtMc,1422
19
19
  datatailr/sbin/datatailr_run_service.py,sha256=DO9LGOpz3CVZOJJRHb4ac7AgY_mLbXHGadSyVCeIknc,1212
20
20
  datatailr/scheduler/__init__.py,sha256=qydHYVtEP6SUWd2CQ6FRdTdRWNz3SbYPJy4FK_wOvMk,1772
21
21
  datatailr/scheduler/arguments_cache.py,sha256=dl8IG9RTLSrJUk6g0_LYolkcuqW-LF52wdLPhs07LRI,6076
22
- datatailr/scheduler/base.py,sha256=pkLKhPS_CfgGMCb3Qqskg7JVQMLUe0hEFAcVhMj3jts,15108
22
+ datatailr/scheduler/base.py,sha256=0EN9YUiBgyYMzdsf4KFpNiQWTlCuV3NgCiauFHlYPbQ,15838
23
23
  datatailr/scheduler/batch.py,sha256=-dRfHosZy1YWhKlrNZWtxA7tJ7MHvAm-NFen5mFxpUI,17604
24
24
  datatailr/scheduler/batch_decorator.py,sha256=LqL1bsupWLn-YEQUvFJYae7R3ogrL5-VodyiiScrkRw,5806
25
25
  datatailr/scheduler/constants.py,sha256=5WWTsfwZ_BA8gVDOTa2AQX9DJ0NzfaWgtY3vrODS2-8,606
26
26
  datatailr/scheduler/schedule.py,sha256=0XJJen2nL1xplRs0Xbjwgq3T-0bFCOrJzkSALdio998,3741
27
27
  datatailr/scheduler/utils.py,sha256=up6oR2iwe6G52LkvgfO394xchXgCYNjOMGRQW3e8PQk,1082
28
- datatailr-0.1.52.dist-info/licenses/LICENSE,sha256=ikKP4_O-UD_b8FuNdKmbzTb6odd0JX085ZW_FAPN3VI,1066
29
- datatailr-0.1.52.dist-info/METADATA,sha256=V4wey7F8A99X4r5aeWSupozgY0ac-okB0NO5Se3c_48,5146
30
- datatailr-0.1.52.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
31
- datatailr-0.1.52.dist-info/entry_points.txt,sha256=YqXfk2At-olW4PUSRkqvy_O3Mbv7uTKCCPuAAiz3Qbg,312
32
- datatailr-0.1.52.dist-info/top_level.txt,sha256=75gntW0X_SKpqxLL6hAPipvpk28GAhJBvoyqN_HohWU,10
33
- datatailr-0.1.52.dist-info/RECORD,,
28
+ datatailr-0.1.54.dist-info/licenses/LICENSE,sha256=ikKP4_O-UD_b8FuNdKmbzTb6odd0JX085ZW_FAPN3VI,1066
29
+ datatailr-0.1.54.dist-info/METADATA,sha256=dmncu8cmpWHM4ASMMB7ac4zS3wMQHNuU-_9Rs7WGkWc,5146
30
+ datatailr-0.1.54.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
31
+ datatailr-0.1.54.dist-info/entry_points.txt,sha256=YqXfk2At-olW4PUSRkqvy_O3Mbv7uTKCCPuAAiz3Qbg,312
32
+ datatailr-0.1.54.dist-info/top_level.txt,sha256=75gntW0X_SKpqxLL6hAPipvpk28GAhJBvoyqN_HohWU,10
33
+ datatailr-0.1.54.dist-info/RECORD,,