Obiettivo
Sostituire i path sparsi in so_mcp/_paths.py e hardcoded in test/script con risoluzione centralizzata via lab-connectors/gcs/paths.py + paths.json.
Stato attuale
Oggi i path SO sono definiti in:
| Dove |
Come |
Problema |
so_mcp/_paths.py |
Path costanti Pathlib |
Duplicati rispetto a paths.json, non usa lab-connectors |
scripts/_constants.py |
Altre costanti Path |
Stesso problema, in piu' sourcing |
tests/test_*.py |
Hardcoded nei test |
Se un path cambia, tocca aggiornare N test |
.github/workflows/*.yml |
Hardcoded nella CI |
Non risolvibile via codice, ma worth documenting |
so_mcp/*.py |
import da _paths.py |
Dipendenza locale non centralizzata |
Cosa fare
-
Aggiornare _paths.py per delegare a lab_connectors.gcs.paths:
local_path(pattern_key) → risolve path locale relativo a SO_ROOT
gcs_uri(pattern_key) → già esiste via gs_url()
resolve_artifact(pattern_key, prefer="local") → locale se esiste, altrimenti GCS
-
Eliminare duplicazione:
- Sostituire
INVENTORY_PARQUET_PATH etc. con chiamate a local_path("catalog_inventory_latest")
- Mantenere
_paths.py come facade (non rompere import esistenti), ma delegare a lab-connectors
-
Aggiornare test per usare _paths.py invece di hardcoded path
-
Vincoli:
_paths.py resta come interfaccia pubblica per tutti i consumer SO (non importano lab-connectors direttamente)
- I workflow YAML restano hardcoded (non risolvibili via Python)
scripts/_constants.py da unificare con _paths.py (o viceversa)
Dipende da
- lab-connectors #?? (aggiunta
local_path() a paths.py + nuovi pattern in paths.json)
Tasks
Obiettivo
Sostituire i path sparsi in
so_mcp/_paths.pye hardcoded in test/script con risoluzione centralizzata vialab-connectors/gcs/paths.py+paths.json.Stato attuale
Oggi i path SO sono definiti in:
so_mcp/_paths.pypaths.json, non usa lab-connectorsscripts/_constants.pytests/test_*.py.github/workflows/*.ymlso_mcp/*.pyimportda_paths.pyCosa fare
Aggiornare
_paths.pyper delegare alab_connectors.gcs.paths:local_path(pattern_key)→ risolve path locale relativo a SO_ROOTgcs_uri(pattern_key)→ già esiste viags_url()resolve_artifact(pattern_key, prefer="local")→ locale se esiste, altrimenti GCSEliminare duplicazione:
INVENTORY_PARQUET_PATHetc. con chiamate alocal_path("catalog_inventory_latest")_paths.pycome facade (non rompere import esistenti), ma delegare a lab-connectorsAggiornare test per usare
_paths.pyinvece di hardcoded pathVincoli:
_paths.pyresta come interfaccia pubblica per tutti i consumer SO (non importano lab-connectors direttamente)scripts/_constants.pyda unificare con_paths.py(o viceversa)Dipende da
local_path()apaths.py+ nuovi pattern inpaths.json)Tasks
local_path()inso_mcp/_paths.py(delega a lab-connectors con SO_ROOT)_paths.pycon risoluzione via patternscripts/tests/notebooks/