pipeline-eds 0.2.24__tar.gz → 0.2.26__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.
Files changed (64) hide show
  1. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/PKG-INFO +2 -2
  2. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/pyproject.toml +2 -2
  3. pipeline_eds-0.2.26/src/pipeline/pipeline-winreg-filler-based-on-filetype.py +122 -0
  4. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/src/pipeline/workspace_manager.py +0 -13
  5. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/LICENSE +0 -0
  6. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/README.md +0 -0
  7. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/src/pipeline/__init__.py +0 -0
  8. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/src/pipeline/__main__.py +0 -0
  9. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/src/pipeline/api/__init__.py +0 -0
  10. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/src/pipeline/api/eds.py +0 -0
  11. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/src/pipeline/api/rjn.py +0 -0
  12. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/src/pipeline/api/status_api.py +0 -0
  13. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/src/pipeline/calls.py +0 -0
  14. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/src/pipeline/cli.py +0 -0
  15. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/src/pipeline/configrationmanager.py +0 -0
  16. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/src/pipeline/decorators.py +0 -0
  17. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/src/pipeline/env.py +0 -0
  18. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/src/pipeline/environment.py +0 -0
  19. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/src/pipeline/gui_fastapi_plotly_live.py +0 -0
  20. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/src/pipeline/gui_mpl_live.py +0 -0
  21. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/src/pipeline/gui_plotly_static.py +0 -0
  22. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/src/pipeline/helpers.py +0 -0
  23. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/src/pipeline/install_appdata.py +0 -0
  24. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/src/pipeline/logging_setup.py +0 -0
  25. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/src/pipeline/pastehelpers.py +0 -0
  26. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/src/pipeline/philosophy.py +0 -0
  27. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/src/pipeline/plotbuffer.py +0 -0
  28. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/src/pipeline/points_loader.py +0 -0
  29. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/src/pipeline/queriesmanager.py +0 -0
  30. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/src/pipeline/time_manager.py +0 -0
  31. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/workspaces/default-workspace.toml +0 -0
  32. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/workspaces/eds_to_rjn/__init__.py +0 -0
  33. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/workspaces/eds_to_rjn/code/__init__.py +0 -0
  34. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/workspaces/eds_to_rjn/code/aggregator.py +0 -0
  35. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/workspaces/eds_to_rjn/code/collector.py +0 -0
  36. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/workspaces/eds_to_rjn/code/sanitizer.py +0 -0
  37. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/workspaces/eds_to_rjn/code/storage.py +0 -0
  38. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/workspaces/eds_to_rjn/configurations/config_time.toml +0 -0
  39. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/workspaces/eds_to_rjn/configurations/configuration.toml +0 -0
  40. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/workspaces/eds_to_rjn/exports/README.md +0 -0
  41. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/workspaces/eds_to_rjn/exports/aggregate/README.md +0 -0
  42. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/workspaces/eds_to_rjn/exports/aggregate/live_data - Copy.csv +0 -0
  43. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/workspaces/eds_to_rjn/exports/aggregate/live_data_EFF.csv +0 -0
  44. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/workspaces/eds_to_rjn/exports/aggregate/live_data_INF.csv +0 -0
  45. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/workspaces/eds_to_rjn/exports/export_eds_points_neo.txt +0 -0
  46. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/workspaces/eds_to_rjn/exports/manual_data_load_to_postman_wetwell.csv +0 -0
  47. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/workspaces/eds_to_rjn/exports/manual_data_load_to_postman_wetwell.xlsx +0 -0
  48. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/workspaces/eds_to_rjn/exports/manual_effluent.csv +0 -0
  49. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/workspaces/eds_to_rjn/exports/manual_influent.csv +0 -0
  50. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/workspaces/eds_to_rjn/exports/manual_wetwell.csv +0 -0
  51. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/workspaces/eds_to_rjn/history/time_sample.txt +0 -0
  52. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/workspaces/eds_to_rjn/imports/zdMaxson_idcsD321E_sid11003.toml +0 -0
  53. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/workspaces/eds_to_rjn/imports/zdMaxson_idcsFI8001_sid8528.toml +0 -0
  54. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/workspaces/eds_to_rjn/imports/zdMaxson_idcsM100FI_sid2308.toml +0 -0
  55. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/workspaces/eds_to_rjn/imports/zdMaxson_idcsM310LI_sid2382.toml +0 -0
  56. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/workspaces/eds_to_rjn/queries/default-queries.toml +0 -0
  57. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/workspaces/eds_to_rjn/queries/points-maxson.csv +0 -0
  58. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/workspaces/eds_to_rjn/queries/points-stiles.csv +0 -0
  59. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/workspaces/eds_to_rjn/queries/timestamps_success.json +0 -0
  60. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/workspaces/eds_to_rjn/scripts/__init__.py +0 -0
  61. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/workspaces/eds_to_rjn/scripts/daemon_runner.py +0 -0
  62. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/workspaces/eds_to_rjn/secrets/README.md +0 -0
  63. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/workspaces/eds_to_rjn/secrets/secrets-example.yaml +0 -0
  64. {pipeline_eds-0.2.24 → pipeline_eds-0.2.26}/workspaces/eds_to_termux/..txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pipeline-eds
3
- Version: 0.2.24
3
+ Version: 0.2.26
4
4
  Summary: The official API pipeline library for mulch-based projects. Key target: Emerson Ovation EDS REST API.
5
5
  License: BSD-3
6
6
  Author: George Clayton Bennett
@@ -15,7 +15,7 @@ Provides-Extra: windb
15
15
  Requires-Dist: certifi (>=2025.1.31,<2026.0.0)
16
16
  Requires-Dist: fastapi (>=0.116.1,<0.117.0)
17
17
  Requires-Dist: matplotlib (>=3.10.6,<4.0.0)
18
- Requires-Dist: mulch (>=0.2.62,<0.3.0)
18
+ Requires-Dist: mulch (>=0.2.63,<0.3.0)
19
19
  Requires-Dist: mysql-connector-python (>=9.3.0,<10.0.0)
20
20
  Requires-Dist: pendulum (>=3.1.0,<4.0.0)
21
21
  Requires-Dist: plotly (>=6.2.0,<7.0.0)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "pipeline-eds"
3
- version = "0.2.24"
3
+ version = "0.2.26"
4
4
  description = "The official API pipeline library for mulch-based projects. Key target: Emerson Ovation EDS REST API."
5
5
  authors = ["George Clayton Bennett <george.bennett@memphistn.gov>"]
6
6
  license = "BSD-3"
@@ -48,7 +48,7 @@ tzdata = "^2025.2"
48
48
  pendulum = "^3.1.0"
49
49
  fastapi = "^0.116.1"
50
50
  matplotlib = "^3.10.6"
51
- mulch = "^0.2.62"
51
+ mulch = "^0.2.63"
52
52
 
53
53
  [tool.poetry.extras]
54
54
  windb = ["pyodbc"]
@@ -0,0 +1,122 @@
1
+ # mulch/reg_winreg.py
2
+ import os
3
+ from pathlib import Path
4
+ import platform
5
+ if platform.system() == "Windows":
6
+ import winreg
7
+
8
+ local_app_data = Path(os.environ['LOCALAPPDATA'])
9
+ mulch_dir = local_app_data / 'mulch'
10
+ mulch_dir.mkdir(parents=True, exist_ok=True)
11
+ call_script_mulch_workspace = mulch_dir / "call-mulch-workspace.ps1"
12
+ call_script_mulch_seed = mulch_dir / "call-mulch-seed.ps1"
13
+ icon_path = r"%LOCALAPPDATA%\mulch\mulch-icon.ico"
14
+
15
+ # Helper to delete a key tree safely
16
+ def delete_key_tree(root, sub_key):
17
+ try:
18
+ with winreg.OpenKey(root, sub_key, 0, winreg.KEY_READ | winreg.KEY_WRITE) as key:
19
+ # Recursively delete subkeys
20
+ i = 0
21
+ while True:
22
+ try:
23
+ sub = winreg.EnumKey(key, i)
24
+ delete_key_tree(key, sub)
25
+ except OSError:
26
+ break
27
+ i += 1
28
+ winreg.DeleteKey(root, sub_key)
29
+ except FileNotFoundError:
30
+ pass # Key doesn't exist, that's fine
31
+
32
+ # Helper to create a shell entry
33
+ def create_shell_entry(base_key, menu_key_path, display_name, command, icon=None, position="Top", command_flags=0):
34
+ # Create the main shell key
35
+ with winreg.CreateKey(base_key, menu_key_path) as key:
36
+ winreg.SetValueEx(key, '', 0, winreg.REG_SZ, display_name)
37
+ if icon:
38
+ winreg.SetValueEx(key, "Icon", 0, winreg.REG_SZ, icon)
39
+ winreg.SetValueEx(key, "Position", 0, winreg.REG_SZ, position)
40
+ winreg.SetValueEx(key, "CommandFlags", 0, winreg.REG_DWORD, command_flags)
41
+
42
+ # Create the command subkey
43
+ with winreg.CreateKey(base_key, f"{menu_key_path}\\command") as cmd_key:
44
+ winreg.SetValueEx(cmd_key, '', 0, winreg.REG_SZ, command)
45
+
46
+ def verify_registry():
47
+ base = winreg.HKEY_CURRENT_USER
48
+ classes_key = r"Software\Classes"
49
+
50
+ required_keys = [
51
+ r"Directory\Background\shell\mulch_workspace\command",
52
+ r"Directory\shell\mulch_workspace\command",
53
+ r"Directory\Background\shell\mulch_seed\command",
54
+ r"Directory\shell\mulch_seed\command"
55
+ ]
56
+
57
+ missing = []
58
+ for k in required_keys:
59
+ try:
60
+ with winreg.OpenKey(base, classes_key + "\\" + k, 0, winreg.KEY_READ):
61
+ pass
62
+ except FileNotFoundError:
63
+ missing.append(k)
64
+
65
+ if missing:
66
+ raise RuntimeError(f"Registry keys missing after installation: {missing}")
67
+
68
+
69
+ def call():
70
+ # Base key for current user classes
71
+ base = winreg.HKEY_CURRENT_USER
72
+ classes_key = r"Software\Classes"
73
+
74
+ # Paths to remove if they exist
75
+ keys_to_remove = [
76
+ r"Directory\Background\shell\mulch_workspace",
77
+ r"Directory\shell\mulch_workspace",
78
+ r"Directory\Background\shell\mulch_seed",
79
+ r"Directory\shell\mulch_seed",
80
+ ]
81
+
82
+ # Remove existing entries
83
+ for k in keys_to_remove:
84
+ delete_key_tree(winreg.OpenKey(base, classes_key, 0, winreg.KEY_WRITE), k)
85
+
86
+ # Background right-click, mulch workspace
87
+ background_command = f'powershell.exe -NoProfile -ExecutionPolicy Bypass -File "{call_script_mulch_workspace}" "%V"'
88
+ create_shell_entry(
89
+ base_key=winreg.OpenKey(base, classes_key, 0, winreg.KEY_WRITE),
90
+ menu_key_path=r"Directory\Background\shell\mulch_workspace",
91
+ display_name='mulch workspace',
92
+ command = background_command,
93
+ icon=icon_path)
94
+
95
+ # Folder right-click, mulch workspace
96
+ folder_command = f'powershell.exe -NoProfile -ExecutionPolicy Bypass -File "{call_script_mulch_workspace}" "%L"'
97
+ create_shell_entry(
98
+ base_key = winreg.OpenKey(base, classes_key, 0, winreg.KEY_WRITE),
99
+ menu_key_path=r"Directory\shell\mulch_workspace",
100
+ display_name='mulch workspace',
101
+ command=folder_command,
102
+ icon=icon_path)
103
+
104
+ # Background right-click, mulch seed
105
+ background_command = f'powershell.exe -NoProfile -ExecutionPolicy Bypass -File "{call_script_mulch_seed}" "%V"'
106
+ create_shell_entry(
107
+ base_key=winreg.OpenKey(base, classes_key, 0, winreg.KEY_WRITE),
108
+ menu_key_path=r"Directory\Background\shell\mulch_seed",
109
+ display_name='mulch seed',
110
+ command = background_command,
111
+ icon=icon_path)
112
+
113
+ # Folder right-click, mulch seed
114
+ folder_command = f'powershell.exe -NoProfile -ExecutionPolicy Bypass -File "{call_script_mulch_seed}" "%L"'
115
+ create_shell_entry(
116
+ base_key = winreg.OpenKey(base, classes_key, 0, winreg.KEY_WRITE),
117
+ menu_key_path=r"Directory\shell\mulch_seed",
118
+ display_name='mulch seed',
119
+ command=folder_command,
120
+ icon=icon_path)
121
+
122
+ print("Registry context menu entries removed and recreated successfully!")
@@ -4,22 +4,9 @@ import logging
4
4
  from pathlib import Path
5
5
  import sys
6
6
  #import mulch
7
- import importlib.util
8
7
  import sys
9
8
  from pathlib import Path
10
9
 
11
- # current_dir = this pipeline repo
12
- repo_root = Path(__file__).resolve().parents[3] # adjust if needed
13
- mulch_path = repo_root / "mulch" / "src" / "mulch" / "__init__.py"
14
-
15
- if not mulch_path.exists():
16
- raise FileNotFoundError(f"Expected mulch at {mulch_path}")
17
-
18
- spec = importlib.util.spec_from_file_location("mulch", str(mulch_path))
19
- mulch = importlib.util.module_from_spec(spec)
20
- sys.modules["mulch"] = mulch
21
- spec.loader.exec_module(mulch)
22
-
23
10
  '''
24
11
  Goal:
25
12
  Implement default-workspace.toml variable: use-most-recently-edited-workspace-directory
File without changes
File without changes