# Team SHIFT — one pinned Python environment for every cluster. # # The Project Manual asks that everyone technical works in one repository from one pinned # Python environment. This file is that environment. The exact versions live in uv.lock; # `uv sync` at the repository root creates .venv/ with all of them, on any machine. # # Each cluster keeps its code in its own top-level folder (AICONTROL/, ...) as a workspace # member: add the folder to [tool.uv.workspace] members and its package name to # dependencies, and `uv sync` installs it in editable mode for everyone. [project] name = "shift" version = "0.1.0" description = "AI-managed hospital hydrogen microgrid — shared environment for all clusters" requires-python = ">=3.12,<3.13" dependencies = [ # tables, maths, plots, tests — everyone "numpy>=2.0", "pandas>=2.2", "pyarrow>=17", # Parquet, the agreed format for machine-made tables "scipy>=1.14", "matplotlib>=3.9", "pyyaml>=6.0", # YAML settings and scenario files "pytest>=8.3", # Simulations cluster "pvlib>=0.11", # solar array model "pyomo>=6.8", # optimisation problems for the benchmark controllers "highspy>=1.8", # the HiGHS solver # AI cluster "gymnasium>=1.0", # the environment interface "stable-baselines3>=2.4",# ready-made RL algorithms (pulls in torch) "lightgbm>=4.5", # main forecasting model "scikit-learn>=1.5", # forecast baselines, sensor checks "optuna>=4.0", # settings search "wandb>=0.18", # experiment logging (Weights & Biases) "shap>=0.46", # explanations "streamlit>=1.39", # dashboard # cluster packages from this repository (editable, see [tool.uv.sources]) "aicontrol", ] [tool.uv] package = false # the root is an environment, not a library [tool.uv.sources] aicontrol = { workspace = true } [tool.uv.workspace] members = ["AICONTROL"] [tool.pytest.ini_options] testpaths = ["AICONTROL/tests"]