Purpose: Environment setup, dependency management, and system configuration for the GNN processing pipeline
Pipeline Step: Step 1: Environment setup (1_setup.py)
Category: Environment Management / Dependency Installation
Status: ✅ Production Ready
Version: 1.6.0
Last Updated: 2026-04-16
- Virtual environment creation and management
- Dependency installation and validation via native UV commands
- System requirement verification
- UV (Python package manager) integration
- Environment configuration and optimization
- Automated virtual environment setup using UV
- Comprehensive dependency management via
uv sync - System requirement validation
- UV environment optimization
- Dependency conflict resolution via
uv.lock - Environment health monitoring
- Native UV dependency operations (
add,remove,sync,lock)
The thin orchestrator src/1_setup.py defines:
setup_orchestrator(target_dir, output_dir, logger, **kwargs) -> boolIt wraps setup_uv_environment (default path) or setup_complete_environment (when
optional groups are requested). **kwargs accepts:
verbose(bool) — verbose loggingrecreate_venv(bool) — recreate.venvdev(bool) —uv sync --extra devinstall_all_extras(bool) —uv sync --all-extras(supersedesdev)setup_core_only(bool) — skip the JAX/Optax/Flax/pymdp probeinstall_optional(bool) — install optional groupsoptional_groups(str) — comma-separated group names (seeOPTIONAL_GROUPS)
Default path: uv sync for core deps. Step 12 core backends (JAX, NumPyro,
DisCoPy), interactive visualization (pandas, plotly, seaborn, h5py), and LLM
clients are in [project.dependencies] and therefore installed without any
--extra. PyTorch and bnlearn are still supported by render/execute code paths,
but remain manual installs while the current Torch advisory has no patched
release. SETUP_DEFAULT_PIPELINE_EXTRAS is empty by default because core
dependencies already cover the default pipeline runtime.
Step 22 (GUI) additionally needs uv sync --extra gui to pull Gradio.
setup_uv_environment(verbose=False, recreate=False, dev=False, extras=None, install_all_extras=False, skip_jax_test=False, output_dir=None) -> bool
Description: Set up UV virtual environment with dependencies using native UV sync
Parameters:
verbose: Enable verbose outputrecreate: Recreate existing environmentdev: Install development optional group (--extra dev)extras: Additional package groups to install (each as--extra)install_all_extras: If true,uv sync --all-extras(takes precedence overdev)skip_jax_test: Skip the JAX stack probe (same probe asutils.jax_stack_validation.verify_jax_pymdp_stack)output_dir: Output directory for setup logs
Returns: True if setup succeeded
Description: Install UV dependencies using uv sync from pyproject.toml
Parameters:
verbose: Enable verbose outputdev: If true andinstall_all_extrasis false, append--extra devextras: Additional package groups (--extraeach)install_all_extras: If true, append--all-extras(ignoresdevfor sync flags)
Returns: True if installation succeeded
Description: Add a dependency using uv add command
Parameters:
package: Package name with optional version specifierdev: Add as development dependencyverbose: Enable verbose logging
Returns: True if successful
Description: Remove a dependency using uv remove command
Parameters:
package: Package name to removeverbose: Enable verbose logging
Returns: True if successful
Description: Update dependencies using uv sync command
Parameters:
verbose: Enable verbose loggingupgrade: Upgrade dependencies to latest compatible versions
Returns: True if successful
Description: Update lock file using uv lock command
Parameters:
verbose: Enable verbose logging
Returns: True if successful
Description: Check system requirements for GNN pipeline
Parameters:
verbose: Enable verbose output
Returns: True if requirements are met
uv- Python package manager (required, native commands used)python- Python interpreter (>=3.9)pyproject.toml- Project dependencies configuration
- None (UV handles all dependency management)
utils.pipeline_template- Pipeline utilities
UV_CONFIG = {
'python_version': '3.11',
'environment_name': 'gnn-pipeline',
'dependency_source': 'pyproject.toml', # Primary source
'lock_file': 'uv.lock', # Dependency lock file
'use_native_uv': True, # Use native UV commands
'dev_dependencies': True,
'test_dependencies': True
}SYSTEM_REQUIREMENTS = {
'python_version_min': '3.9',
'memory_min_gb': 4,
'disk_space_min_gb': 2,
'cpu_cores_min': 2,
'uv_required': True
}All setup helpers are exported from the package root. Prefer from setup import ….
from setup import (
setup_uv_environment,
add_uv_dependency,
remove_uv_dependency,
update_uv_dependencies,
lock_uv_dependencies,
check_system_requirements,
)
setup_uv_environment(verbose=True, dev=True, extras=["llm", "visualization", "audio"])
add_uv_dependency("requests>=2.28.0", dev=False, verbose=True)
add_uv_dependency("pytest>=7.0.0", dev=True, verbose=True)
remove_uv_dependency("old-package", verbose=True)
update_uv_dependencies(verbose=True, upgrade=False)
update_uv_dependencies(verbose=True, upgrade=True)
lock_uv_dependencies(verbose=True)
if not check_system_requirements(verbose=True):
raise SystemExit("System requirements not met")environment_setup_summary.json- Setup completion summary, timings, and probe resultsinstalled_packages.json- Installed package inventoryuv.lock- Dependency lock file (updated)
output/1_setup_output/
├── environment_setup_summary.json
└── installed_packages.json
- Duration: ~2-5 minutes for full setup
- Memory: ~50-100MB during installation
- Status: ✅ Production Ready
- Environment Creation: 30-60 seconds
- Dependency Installation: 1-3 minutes (via
uv sync) - System Validation: < 30 seconds
- Health Check: < 10 seconds
- Dependency Lock: < 10 seconds
- Environment Creation: Virtual environment creation failures
- Dependency Installation: Package installation errors via
uv sync - System Requirements: Insufficient system resources or missing UV
- Network Issues: Package download failures
- Permission Errors: Insufficient file permissions
- Lock File Conflicts: Lock file corruption or conflicts
- Retry Logic: Automatic retry for transient failures
- Lock File Regeneration: Regenerate uv.lock if corrupted
- Graceful Degradation: Continue with available packages
- Manual Instructions: Provide manual installation guidance
- Environment Recreate: Option to recreate environment from scratch
- Script:
1_setup.py(Step 1) - Function:
setup_uv_environment()
utils.pipeline_template- Pipeline utilities
main.py- Pipeline orchestrationtests.test_setup_*- Setup tests
System Check → UV Environment Creation → UV Sync (pyproject.toml → uv.lock) → Validation → Health Report
src/tests/setup/test_setup_overall.py- Module-level setup testssrc/tests/test_uv_environment.py- UV environment behavior testssrc/tests/test_environment_overall.py- Environment-related integration checks
Measure on demand — this file does not pin a number:
uv run --extra dev python -m pytest src/tests/test_setup*.py --cov=src/setup --cov-report=term-missing- Environment creation and setup
- Dependency installation via UV sync
- System requirement verification
- Native UV command operations
- Error handling and recovery
setup.check_environment- Check system environmentsetup.create_environment- Create UV environmentsetup.install_dependencies- Install dependencies via UV syncsetup.validate_setup- Validate setup completionsetup.add_dependency- Add dependency via UV addsetup.remove_dependency- Remove dependency via UV removesetup.update_dependencies- Update dependencies via UV syncsetup.lock_dependencies- Update lock file via UV lock
@mcp_tool("setup.check_environment")
def check_environment_tool():
"""Check system environment for GNN pipeline"""
# Implementation
@mcp_tool("setup.add_dependency")
def add_dependency_tool(package: str, dev: bool = False):
"""Add a dependency using UV add"""
# Implementation