MSTR-Robotics-magerdaniel 0.5.6__tar.gz → 0.5.8__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 (56) hide show
  1. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/MSTR_Robotics_magerdaniel.egg-info/PKG-INFO +1 -1
  2. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/PKG-INFO +1 -1
  3. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/mstr_robotics/__init__.py +1 -1
  4. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/mstr_robotics/_paths.py +36 -23
  5. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/pyproject.toml +1 -1
  6. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/MSTR_Robotics_magerdaniel.egg-info/SOURCES.txt +0 -0
  7. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/MSTR_Robotics_magerdaniel.egg-info/dependency_links.txt +0 -0
  8. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/MSTR_Robotics_magerdaniel.egg-info/requires.txt +0 -0
  9. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/MSTR_Robotics_magerdaniel.egg-info/top_level.txt +0 -0
  10. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/OSI_Produktion/osi_dashboard_8D47320148C7E2850BFD2B9605D73297.yml +0 -0
  11. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/README.md +0 -0
  12. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/config/API_KEY.example.env +0 -0
  13. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/config/dans_migrations.example.yml +0 -0
  14. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/config/jupyter_objects_d.example.yml +0 -0
  15. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/config/mstr_redis_y.example.yml +0 -0
  16. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/config/user_d.example.yml +0 -0
  17. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/docs/SETUP.md +0 -0
  18. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/mstr_robotics/_connectors.py +0 -0
  19. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/mstr_robotics/_export.py +0 -0
  20. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/mstr_robotics/_helper.py +0 -0
  21. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/mstr_robotics/_lu_data.py +0 -0
  22. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/mstr_robotics/_mod_prj_obj.py +0 -0
  23. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/mstr_robotics/_pa_etl.py +0 -0
  24. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/mstr_robotics/dossier.py +0 -0
  25. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/mstr_robotics/json_compare.py +0 -0
  26. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/mstr_robotics/mcp_servers/__init__.py +0 -0
  27. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/mstr_robotics/mcp_servers/_fetch_static_data.py +0 -0
  28. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/mstr_robotics/mcp_servers/_osi_find_bi_data.py +0 -0
  29. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/mstr_robotics/mcp_servers/_osi_object_analysis.py +0 -0
  30. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/mstr_robotics/mcp_servers/_osi_specific_analysis.py +0 -0
  31. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/mstr_robotics/mcp_servers/_run_mstr_report_wizzard.py +0 -0
  32. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/mstr_robotics/mcp_servers/_server_config.py +0 -0
  33. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/mstr_robotics/mcp_servers/mstr_osi_mcp.py +0 -0
  34. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/mstr_robotics/ms_azure.py +0 -0
  35. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/mstr_robotics/mstr_classes.py +0 -0
  36. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/mstr_robotics/mstr_pandas.py +0 -0
  37. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/mstr_robotics/navigation.py +0 -0
  38. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/mstr_robotics/osi_exporter/__init__.py +0 -0
  39. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/mstr_robotics/osi_exporter/export_dashboard.py +0 -0
  40. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/mstr_robotics/prepare_ai_data.py +0 -0
  41. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/mstr_robotics/read_out_prj_obj.py +0 -0
  42. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/mstr_robotics/redis_db.py +0 -0
  43. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/mstr_robotics/regam.py +0 -0
  44. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/mstr_robotics/report.py +0 -0
  45. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/mstr_robotics/select_mig_objects.py +0 -0
  46. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/mstr_robotics/setup.py +0 -0
  47. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/mstr_robotics/user_rag.py +0 -0
  48. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/notebooks/00_setup.ipynb +0 -0
  49. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/notebooks/jup_REGAM.ipynb +0 -0
  50. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/notebooks/jup_chat_answer_prompt_page.ipynb +0 -0
  51. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/notebooks/jup_load_rag_cubes.ipynb +0 -0
  52. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/notebooks/jup_migrate.ipynb +0 -0
  53. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/notebooks/jup_mstr_admin.ipynb +0 -0
  54. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/notebooks/jup_prj_obj_exporter.ipynb +0 -0
  55. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/notebooks/jup_schema_monitor.ipynb +0 -0
  56. {mstr_robotics_magerdaniel-0.5.6 → mstr_robotics_magerdaniel-0.5.8}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: MSTR-Robotics-magerdaniel
3
- Version: 0.5.6
3
+ Version: 0.5.8
4
4
  Summary: Automation toolkit for MicroStrategy / Strategy One: object read-out, migration, comparison, RAG and OSI export.
5
5
  Author-email: Daniel Mager <danielmager@gmx.de>
6
6
  Requires-Python: >=3.12
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: MSTR-Robotics-magerdaniel
3
- Version: 0.5.6
3
+ Version: 0.5.8
4
4
  Summary: Automation toolkit for MicroStrategy / Strategy One: object read-out, migration, comparison, RAG and OSI export.
5
5
  Author-email: Daniel Mager <danielmager@gmx.de>
6
6
  Requires-Python: >=3.12
@@ -4,4 +4,4 @@ Object read-out, migration packaging, environment comparison, RAG helpers
4
4
  and OSI dashboard export, driven by the Jupyter notebooks in ``notebooks/``.
5
5
  """
6
6
 
7
- __version__ = "0.5.6"
7
+ __version__ = "0.5.8"
@@ -1,11 +1,18 @@
1
- """Central repo-relative path resolution.
2
-
3
- Every path here is derived from the installed package location
4
- (``Path(__file__).parent.parent`` == the repo root), so the same code resolves
5
- correctly in whichever environment the package is installed -- e.g.
6
- ``mstr_robotics`` vs ``mstr_robotics_comp`` -- without any hardcoded absolute
7
- paths. This is what lets ``tools/nb_compare`` run the same notebooks against two
8
- environments and get comparable results.
1
+ """Central project-relative path resolution.
2
+
3
+ Resolution walks up from the current working directory looking for
4
+ ``config/user_d.yml`` -- the marker that says "this is a project that has run
5
+ setup". This is what lets a user ``pip install`` the package, copy the
6
+ reference material from ``mstr_robotics/utils/`` to the top level of their own
7
+ project, and have config/output/OSI paths resolve there -- instead of inside
8
+ the installed package's own location (e.g. site-packages), which is not
9
+ writable in any meaningful sense for the user.
10
+
11
+ It is also what lets ``tools/nb_compare`` (in the dans_playground dev repo)
12
+ run the same notebooks against two full repo checkouts that share one
13
+ installed ``mstr_robotics`` package: each checkout has its own
14
+ ``config/user_d.yml``, so walking up from cwd tells the two apart even though
15
+ ``Path(__file__)`` cannot.
9
16
 
10
17
  Notebooks and modules should import the constants they need from here, e.g.::
11
18
 
@@ -20,34 +27,40 @@ from __future__ import annotations
20
27
  import os
21
28
  from pathlib import Path
22
29
 
23
- # Marker that identifies a repo root (every environment has its own copy).
24
- _MARKER = Path("config") / "user_d.yml"
30
+ # Markers that identify a project root (every environment has its own copy).
31
+ # ``user_d.yml`` exists once setup has run; ``user_d.example.yml`` exists as
32
+ # soon as the user copies mstr_robotics/utils/config/ in, before setup has run
33
+ # even once -- needed because the setup notebook itself runs from
34
+ # <project>/notebooks/, one level below the project root it needs to find.
35
+ _MARKERS = (
36
+ Path("config") / "user_d.yml",
37
+ Path("config") / "user_d.example.yml",
38
+ )
25
39
 
26
40
 
27
41
  def find_repo_root() -> Path:
28
- """Resolve the repo root of the *current* environment.
29
-
30
- The two comparison environments (mstr_robotics / mstr_robotics_comp) share a
31
- single installed ``mstr_robotics`` package, so ``Path(__file__)`` always
32
- points at whichever repo the package was installed from -- it cannot tell
33
- the environments apart. Instead we anchor on the runtime working directory:
34
- ``run_shapes.py`` executes each notebook with cwd set to ``<repo>/notebooks``
35
- (see tools/nb_compare), so walking up from cwd to the dir that contains
36
- ``config/user_d.yml`` yields THIS environment's repo.
42
+ """Resolve the root of the *current* project.
37
43
 
38
44
  Resolution order:
39
45
  1. ``MSTR_REPO_ROOT`` environment variable, if set.
40
- 2. The nearest ancestor of the cwd that contains ``config/user_d.yml``.
41
- 3. Fall back to this file's install location (the package's own repo).
46
+ 2. The nearest ancestor of the cwd that contains ``config/user_d.yml``
47
+ or ``config/user_d.example.yml`` (a project that has copied
48
+ mstr_robotics/utils/ in, whether or not setup has run yet).
49
+ 3. The current working directory, if neither marker is found anywhere
50
+ above it.
51
+
52
+ Step 3 deliberately does NOT fall back to this file's install location
53
+ (e.g. site-packages) -- that would silently write config/output inside the
54
+ venv instead of the user's own project.
42
55
  """
43
56
  env = os.environ.get("MSTR_REPO_ROOT")
44
57
  if env:
45
58
  return Path(env).resolve()
46
59
  cwd = Path.cwd()
47
60
  for base in (cwd, *cwd.parents):
48
- if (base / _MARKER).exists():
61
+ if any((base / marker).exists() for marker in _MARKERS):
49
62
  return base
50
- return Path(__file__).resolve().parent.parent
63
+ return cwd
51
64
 
52
65
 
53
66
  REPO_ROOT = find_repo_root()
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "MSTR-Robotics-magerdaniel"
7
- version = "0.5.6"
7
+ version = "0.5.8"
8
8
  description = "Automation toolkit for MicroStrategy / Strategy One: object read-out, migration, comparison, RAG and OSI export."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.12"