pipeline-eds 0.2.15__tar.gz → 0.2.18__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 (63) hide show
  1. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/PKG-INFO +2 -2
  2. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/pyproject.toml +2 -2
  3. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/src/pipeline/cli.py +3 -2
  4. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/src/pipeline/env.py +2 -2
  5. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/src/pipeline/workspace_manager.py +22 -7
  6. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/LICENSE +0 -0
  7. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/README.md +0 -0
  8. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/src/pipeline/__init__.py +0 -0
  9. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/src/pipeline/__main__.py +0 -0
  10. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/src/pipeline/api/__init__.py +0 -0
  11. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/src/pipeline/api/eds.py +0 -0
  12. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/src/pipeline/api/rjn.py +0 -0
  13. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/src/pipeline/api/status_api.py +0 -0
  14. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/src/pipeline/calls.py +0 -0
  15. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/src/pipeline/configrationmanager.py +0 -0
  16. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/src/pipeline/decorators.py +0 -0
  17. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/src/pipeline/environment.py +0 -0
  18. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/src/pipeline/gui_fastapi_plotly_live.py +0 -0
  19. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/src/pipeline/gui_mpl_live.py +0 -0
  20. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/src/pipeline/gui_plotly_static.py +0 -0
  21. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/src/pipeline/helpers.py +0 -0
  22. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/src/pipeline/install_appdata.py +0 -0
  23. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/src/pipeline/logging_setup.py +0 -0
  24. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/src/pipeline/pastehelpers.py +0 -0
  25. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/src/pipeline/philosophy.py +0 -0
  26. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/src/pipeline/plotbuffer.py +0 -0
  27. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/src/pipeline/points_loader.py +0 -0
  28. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/src/pipeline/queriesmanager.py +0 -0
  29. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/src/pipeline/time_manager.py +0 -0
  30. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/workspaces/default-workspace.toml +0 -0
  31. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/workspaces/eds_to_rjn/__init__.py +0 -0
  32. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/workspaces/eds_to_rjn/code/__init__.py +0 -0
  33. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/workspaces/eds_to_rjn/code/aggregator.py +0 -0
  34. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/workspaces/eds_to_rjn/code/collector.py +0 -0
  35. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/workspaces/eds_to_rjn/code/sanitizer.py +0 -0
  36. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/workspaces/eds_to_rjn/code/storage.py +0 -0
  37. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/workspaces/eds_to_rjn/configurations/config_time.toml +0 -0
  38. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/workspaces/eds_to_rjn/configurations/configuration.toml +0 -0
  39. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/workspaces/eds_to_rjn/exports/README.md +0 -0
  40. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/workspaces/eds_to_rjn/exports/aggregate/README.md +0 -0
  41. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/workspaces/eds_to_rjn/exports/aggregate/live_data - Copy.csv +0 -0
  42. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/workspaces/eds_to_rjn/exports/aggregate/live_data_EFF.csv +0 -0
  43. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/workspaces/eds_to_rjn/exports/aggregate/live_data_INF.csv +0 -0
  44. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/workspaces/eds_to_rjn/exports/export_eds_points_neo.txt +0 -0
  45. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/workspaces/eds_to_rjn/exports/manual_data_load_to_postman_wetwell.csv +0 -0
  46. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/workspaces/eds_to_rjn/exports/manual_data_load_to_postman_wetwell.xlsx +0 -0
  47. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/workspaces/eds_to_rjn/exports/manual_effluent.csv +0 -0
  48. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/workspaces/eds_to_rjn/exports/manual_influent.csv +0 -0
  49. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/workspaces/eds_to_rjn/exports/manual_wetwell.csv +0 -0
  50. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/workspaces/eds_to_rjn/history/time_sample.txt +0 -0
  51. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/workspaces/eds_to_rjn/imports/zdMaxson_idcsD321E_sid11003.toml +0 -0
  52. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/workspaces/eds_to_rjn/imports/zdMaxson_idcsFI8001_sid8528.toml +0 -0
  53. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/workspaces/eds_to_rjn/imports/zdMaxson_idcsM100FI_sid2308.toml +0 -0
  54. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/workspaces/eds_to_rjn/imports/zdMaxson_idcsM310LI_sid2382.toml +0 -0
  55. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/workspaces/eds_to_rjn/queries/default-queries.toml +0 -0
  56. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/workspaces/eds_to_rjn/queries/points-maxson.csv +0 -0
  57. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/workspaces/eds_to_rjn/queries/points-stiles.csv +0 -0
  58. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/workspaces/eds_to_rjn/queries/timestamps_success.json +0 -0
  59. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/workspaces/eds_to_rjn/scripts/__init__.py +0 -0
  60. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/workspaces/eds_to_rjn/scripts/daemon_runner.py +0 -0
  61. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/workspaces/eds_to_rjn/secrets/README.md +0 -0
  62. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/workspaces/eds_to_rjn/secrets/secrets-example.yaml +0 -0
  63. {pipeline_eds-0.2.15 → pipeline_eds-0.2.18}/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.15
3
+ Version: 0.2.18
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.8,<0.3.0)
18
+ Requires-Dist: mulch (==0.2.58)
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.15"
3
+ version = "0.2.18"
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"
@@ -43,12 +43,12 @@ pydantic = "1.10.13"
43
43
  urllib3 = "^2.4.0"
44
44
  plotly = "^6.2.0"
45
45
  uvicorn = "^0.34.3"
46
- mulch = "^0.2.8"
47
46
  mysql-connector-python = "^9.3.0"
48
47
  tzdata = "^2025.2"
49
48
  pendulum = "^3.1.0"
50
49
  fastapi = "^0.116.1"
51
50
  matplotlib = "^3.10.6"
51
+ mulch = "0.2.58"
52
52
 
53
53
  [tool.poetry.extras]
54
54
  windb = ["pyodbc"]
@@ -17,7 +17,7 @@ from importlib.metadata import version, PackageNotFoundError
17
17
 
18
18
  from pipeline.env import SecretConfig
19
19
  #from pipeline.helpers import setup_logging
20
- from pipeline.workspace_manager import WorkspaceManager
20
+ #from pipeline.workspace_manager import WorkspaceManager
21
21
 
22
22
  ### Versioning
23
23
  CLI_APP_NAME = "pipeline"
@@ -71,6 +71,7 @@ def run(
71
71
  Import and run a workspace's main() function.
72
72
  """
73
73
  # Determine workspace name
74
+ from pipeline.workspace_manager import WorkspaceManager
74
75
  if workspace is None:
75
76
  workspace = WorkspaceManager.identify_default_workspace_name()
76
77
  wm = WorkspaceManager(workspace)
@@ -160,7 +161,7 @@ def trend(
160
161
 
161
162
  # Should automatically choose time step granularity based on time length; map
162
163
  if step_seconds is None:
163
- step_seconds = helpers.nice_step(endtime-starttime)
164
+ step_seconds = helpers.nice_step(TimeManager(dt_finish).as_unix()-TimeManager(dt_start.as_unix())) # TimeManager(starttime).as_unix()
164
165
  results = load_historic_data(session, iess_list, dt_start, dt_finish, step_seconds)
165
166
  if not results:
166
167
  return
@@ -1,8 +1,6 @@
1
1
  #env.__main__.py
2
2
 
3
3
  import yaml
4
- from pipeline.workspace_manager import WorkspaceManager
5
-
6
4
  '''
7
5
  migrate this to ConfigurationManager
8
6
  '''
@@ -49,6 +47,8 @@ def demo_secrets():
49
47
  caed defaut_workspace.toml - Clayton Bennett 26 April 2025.
50
48
  However this call can also be made if another project is made the active project.
51
49
  """
50
+ from pipeline.workspace_manager import WorkspaceManager
51
+
52
52
  workspace_name = WorkspaceManager.identify_default_workspace_name()
53
53
  workspace_manager = WorkspaceManager(workspace_name)
54
54
  config = SecretConfig.load_config(secrets_file_path = workspace_manager.get_secrets_file_path())
@@ -3,6 +3,7 @@ import toml
3
3
  import logging
4
4
  from pathlib import Path
5
5
  import sys
6
+ import mulch
6
7
 
7
8
  '''
8
9
  Goal:
@@ -220,12 +221,20 @@ class WorkspaceManager:
220
221
  """
221
222
  Class method that reads default-workspace.toml to identify the default-workspace path.
222
223
  """
223
- workspace_name = cls.identify_default_workspace_name()
224
+
224
225
  workspaces_dir = cls.ROOT_DIR / cls.WORKSPACES_DIR_NAME
225
- default_workspace_path = workspaces_dir / workspace_name
226
- if not default_workspace_path.exists():
227
- raise FileNotFoundError(f"Default workspace directory not found: {default_workspace_path}")
228
- return default_workspace_path
226
+ workspace_name = cls.identify_default_workspace_name()
227
+ if workspace_name is None:
228
+ workspace_name = cls.most_recent_workspace_name() # if
229
+ if workspace_name is None:
230
+ mulch.workspace(target_dir = workspaces_dir, scaffold = workspaces_dir / '.mulch' / 'mulch.toml', workspace_name = 'eds') # allow date based default if no workspace_name is provided
231
+ workspace_name = 'eds'
232
+ workspace_path = workspaces_dir / workspace_name
233
+ if not workspace_path.exists():
234
+ #raise FileNotFoundError(f"Workspace directory not found: {default_workspace_path}")
235
+ print("No default_workspace.toml file to identify a default workspace folder, so the most recently edited folder will be used.")
236
+
237
+ return workspace_path
229
238
 
230
239
  '''
231
240
  @classmethod
@@ -249,7 +258,8 @@ class WorkspaceManager:
249
258
  default_toml_path = workspaces_dir / cls.DEFAULT_WORKSPACE_TOML_FILE_NAME
250
259
 
251
260
  if not default_toml_path.exists():
252
- raise FileNotFoundError(f"Missing {cls.DEFAULT_WORKSPACE_TOML_FILE_NAME} in {workspaces_dir}")
261
+ return None
262
+ #raise FileNotFoundError(f"Missing {cls.DEFAULT_WORKSPACE_TOML_FILE_NAME} in {workspaces_dir}")
253
263
 
254
264
  with open(default_toml_path, 'r') as f:
255
265
  data = toml.load(f)
@@ -298,7 +308,12 @@ class WorkspaceManager:
298
308
  cls.workspaces_dir = workspaces_dir
299
309
  default_file = workspaces_dir / cls.DEFAULT_WORKSPACE_TOML_FILE_NAME
300
310
  if not default_file.exists():
301
- default_file.write_text("# Default workspace config\n")
311
+ pass
312
+ #default_file.write_text("# Default workspace config\n")
313
+ mulch_scaffold = []
314
+ mulch.seed(target_dir = workspaces_dir,scaffold_dict = mulch_scaffold)
315
+ workspace_path = workspaces_dir / "eds"
316
+ mulch.workspace(base_path = workspaces_dir.parent, scaffold_filepath = workspaces_dir / '.mulch' / 'mulch.toml', workspace_path = workspace_path) # allow date based default if no workspace_name is provided
302
317
  return workspaces_dir
303
318
 
304
319
  def establish_default_workspace():
File without changes
File without changes