datatailr 0.1.47__tar.gz → 0.1.49__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.

Files changed (39) hide show
  1. {datatailr-0.1.47/src/datatailr.egg-info → datatailr-0.1.49}/PKG-INFO +1 -1
  2. {datatailr-0.1.47 → datatailr-0.1.49}/pyproject.toml +1 -1
  3. {datatailr-0.1.47 → datatailr-0.1.49/src/datatailr.egg-info}/PKG-INFO +1 -1
  4. {datatailr-0.1.47 → datatailr-0.1.49}/src/sbin/datatailr_run.py +15 -9
  5. {datatailr-0.1.47 → datatailr-0.1.49}/src/sbin/datatailr_run_app.py +7 -3
  6. {datatailr-0.1.47 → datatailr-0.1.49}/LICENSE +0 -0
  7. {datatailr-0.1.47 → datatailr-0.1.49}/README.md +0 -0
  8. {datatailr-0.1.47 → datatailr-0.1.49}/setup.cfg +0 -0
  9. {datatailr-0.1.47 → datatailr-0.1.49}/setup.py +0 -0
  10. {datatailr-0.1.47 → datatailr-0.1.49}/src/datatailr/__init__.py +0 -0
  11. {datatailr-0.1.47 → datatailr-0.1.49}/src/datatailr/acl.py +0 -0
  12. {datatailr-0.1.47 → datatailr-0.1.49}/src/datatailr/blob.py +0 -0
  13. {datatailr-0.1.47 → datatailr-0.1.49}/src/datatailr/build/__init__.py +0 -0
  14. {datatailr-0.1.47 → datatailr-0.1.49}/src/datatailr/build/image.py +0 -0
  15. {datatailr-0.1.47 → datatailr-0.1.49}/src/datatailr/dt_json.py +0 -0
  16. {datatailr-0.1.47 → datatailr-0.1.49}/src/datatailr/errors.py +0 -0
  17. {datatailr-0.1.47 → datatailr-0.1.49}/src/datatailr/excel.py +0 -0
  18. {datatailr-0.1.47 → datatailr-0.1.49}/src/datatailr/group.py +0 -0
  19. {datatailr-0.1.47 → datatailr-0.1.49}/src/datatailr/logging.py +0 -0
  20. {datatailr-0.1.47 → datatailr-0.1.49}/src/datatailr/scheduler/__init__.py +0 -0
  21. {datatailr-0.1.47 → datatailr-0.1.49}/src/datatailr/scheduler/arguments_cache.py +0 -0
  22. {datatailr-0.1.47 → datatailr-0.1.49}/src/datatailr/scheduler/base.py +0 -0
  23. {datatailr-0.1.47 → datatailr-0.1.49}/src/datatailr/scheduler/batch.py +0 -0
  24. {datatailr-0.1.47 → datatailr-0.1.49}/src/datatailr/scheduler/batch_decorator.py +0 -0
  25. {datatailr-0.1.47 → datatailr-0.1.49}/src/datatailr/scheduler/constants.py +0 -0
  26. {datatailr-0.1.47 → datatailr-0.1.49}/src/datatailr/scheduler/schedule.py +0 -0
  27. {datatailr-0.1.47 → datatailr-0.1.49}/src/datatailr/scheduler/utils.py +0 -0
  28. {datatailr-0.1.47 → datatailr-0.1.49}/src/datatailr/user.py +0 -0
  29. {datatailr-0.1.47 → datatailr-0.1.49}/src/datatailr/utils.py +0 -0
  30. {datatailr-0.1.47 → datatailr-0.1.49}/src/datatailr/version.py +0 -0
  31. {datatailr-0.1.47 → datatailr-0.1.49}/src/datatailr/wrapper.py +0 -0
  32. {datatailr-0.1.47 → datatailr-0.1.49}/src/datatailr.egg-info/SOURCES.txt +0 -0
  33. {datatailr-0.1.47 → datatailr-0.1.49}/src/datatailr.egg-info/dependency_links.txt +0 -0
  34. {datatailr-0.1.47 → datatailr-0.1.49}/src/datatailr.egg-info/entry_points.txt +0 -0
  35. {datatailr-0.1.47 → datatailr-0.1.49}/src/datatailr.egg-info/requires.txt +0 -0
  36. {datatailr-0.1.47 → datatailr-0.1.49}/src/datatailr.egg-info/top_level.txt +0 -0
  37. {datatailr-0.1.47 → datatailr-0.1.49}/src/sbin/datatailr_run_batch.py +0 -0
  38. {datatailr-0.1.47 → datatailr-0.1.49}/src/sbin/datatailr_run_excel.py +0 -0
  39. {datatailr-0.1.47 → datatailr-0.1.49}/src/sbin/datatailr_run_service.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: datatailr
3
- Version: 0.1.47
3
+ Version: 0.1.49
4
4
  Summary: Ready-to-Use Platform That Drives Business Insights
5
5
  Author-email: Datatailr <info@datatailr.com>
6
6
  License-Expression: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "datatailr"
7
- version = "0.1.47"
7
+ version = "0.1.49"
8
8
  description = "Ready-to-Use Platform That Drives Business Insights"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: datatailr
3
- Version: 0.1.47
3
+ Version: 0.1.49
4
4
  Summary: Ready-to-Use Platform That Drives Business Insights
5
5
  Author-email: Datatailr <info@datatailr.com>
6
6
  License-Expression: MIT
@@ -85,25 +85,31 @@ def run_command_as_user(command: str | list, user: str, env_vars: dict):
85
85
  """
86
86
  Run a command as a specific user with the given environment variables.
87
87
  """
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
+ # make this empty string once file creation is merged into build/Dockerfile
93
+ python_site = (
94
+ "/opt/cpython-3.12.11-linux-x86_64-gnu/lib/python3.12/site-packages"
95
+ )
96
+
88
97
  if isinstance(command, list):
89
98
  command = " ".join(command)
90
99
  env_vars = {
91
100
  "PATH": get_env_var("PATH", ""),
92
- "PYTHONPATH": get_env_var("PYTHONPATH", ""),
101
+ "PYTHONPATH": get_env_var("PYTHONPATH", "") + ":" + python_site,
93
102
  } | env_vars
94
103
 
95
104
  env_kv = [f"{k}={v}" for k, v in env_vars.items()]
96
105
  argv = ["sudo", "-u", user, "env", *env_kv, "bash", "-lc", command]
97
106
 
98
107
  try:
99
- result = subprocess.run(
100
- argv,
101
- check=True, # raises if returncode != 0
102
- capture_output=True,
103
- text=True,
104
- )
105
- logger.info(f"stdout: {result.stdout}")
106
- logger.debug(f"stderr: {result.stderr}")
108
+ proc = subprocess.Popen(argv)
109
+ returncode = proc.wait()
110
+ if returncode != 0:
111
+ logger.error(f"Command failed with exit code {returncode}")
112
+ sys.exit(returncode)
107
113
  except subprocess.CalledProcessError as e:
108
114
  logger.error(f"Command failed with exit code {e.returncode}")
109
115
  logger.error(f"stderr: {e.stderr}")
@@ -13,7 +13,8 @@
13
13
  import os
14
14
  import sys
15
15
  import runpy
16
- from importlib.resources import files
16
+ import inspect
17
+ import importlib
17
18
 
18
19
  from datatailr.logging import DatatailrLogger
19
20
 
@@ -29,9 +30,12 @@ def run():
29
30
  "Environment variable 'DATATAILR_ENTRYPOINT' is not in the format 'module_name:file_name'."
30
31
  )
31
32
 
32
- module_name, file_name = entrypoint.split(":")
33
+ module_name, func_name = entrypoint.split(":")
33
34
 
34
- script = files(module_name).joinpath(file_name)
35
+ # consider using ast
36
+ module = importlib.import_module(module_name)
37
+ function = getattr(module, func_name)
38
+ script = inspect.getfile(function)
35
39
  sys.argv = ["streamlit", "run", str(script), *sys.argv[1:]]
36
40
  logger.info(f"Running entrypoint: {entrypoint}")
37
41
  runpy.run_module("streamlit", run_name="__main__")
File without changes
File without changes
File without changes
File without changes