This is an automated email from the ASF dual-hosted git repository.

skrawcz pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/hamilton.git

commit ee3fff34f1ee5600798f46ee19a32ad99c3f5d16
Author: Stefan Krawczyk <[email protected]>
AuthorDate: Tue Feb 24 17:36:26 2026 -0800

    Use uv run python for consistent environment in UI scripts
    
    Replaces all python3 invocations with 'uv run python' in:
    - ui/admin.py: build and publish commands
    - ui/backup_hamilton_data.sh: JSON validation and record counting
    - ui/restore_hamilton_data.sh: JSON validation and record counting
    - ui/migrate_postgres_simple.sh: record counting
    
    Benefits:
    - Ensures scripts use project's managed Python environment
    - Consistent with ui/backend/server/entrypoint.sh pattern
    - Makes it easy to recreate environment: uv handles dependencies
    - Uses Python version specified in pyproject.toml (>=3.10)
    
    This aligns with the project's use of uv for dependency management
    (uv.lock at repo root) and ensures all scripts work with the same
    Python environment.
---
 ui/admin.py                   | 6 ++++--
 ui/backup_hamilton_data.sh    | 6 +++---
 ui/migrate_postgres_simple.sh | 2 +-
 ui/restore_hamilton_data.sh   | 6 +++---
 4 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/ui/admin.py b/ui/admin.py
index fc9e1583..31c54995 100644
--- a/ui/admin.py
+++ b/ui/admin.py
@@ -156,9 +156,11 @@ def build_and_publish(prod: bool, no_wipe_dist: bool):
         if not no_wipe_dist:
             logger.info("Wiping dist/ directory for a clean publish.")
             shutil.rmtree("dist", ignore_errors=True)
-        _command("python3 -m build", capture_output=False)
+        _command("uv run python -m build", capture_output=False)
         repository = "pypi" if prod else "testpypi"
-        _command(f"python3 -m twine upload --repository {repository} dist/*", 
capture_output=False)
+        _command(
+            f"uv run python -m twine upload --repository {repository} dist/*", 
capture_output=False
+        )
         logger.info(f"Published to {repository}! 🎉")
 
 
diff --git a/ui/backup_hamilton_data.sh b/ui/backup_hamilton_data.sh
index 87e601e3..b94e8469 100755
--- a/ui/backup_hamilton_data.sh
+++ b/ui/backup_hamilton_data.sh
@@ -90,13 +90,13 @@ if [ ! -s "$BACKUP_FILE" ]; then
 fi
 
 # Check if it's valid JSON
-if ! python3 -m json.tool "$BACKUP_FILE" > /dev/null 2>&1; then
+if ! uv run python -m json.tool "$BACKUP_FILE" > /dev/null 2>&1; then
     echo "Error: Backup file contains invalid JSON"
     exit 1
 fi
 
 # Count records
-RECORD_COUNT=$(python3 -c "import json; 
print(len(json.load(open('$BACKUP_FILE'))))")
+RECORD_COUNT=$(uv run python -c "import json; 
print(len(json.load(open('$BACKUP_FILE'))))")
 FILE_SIZE=$(du -h "$BACKUP_FILE" | cut -f1)
 
 echo "✓ Backup complete"
@@ -108,7 +108,7 @@ echo ""
 
 # Show breakdown by model
 echo "Records by model:"
-python3 -c "
+uv run python -c "
 import json
 from collections import Counter
 
diff --git a/ui/migrate_postgres_simple.sh b/ui/migrate_postgres_simple.sh
index 4acd60c5..8e331abd 100755
--- a/ui/migrate_postgres_simple.sh
+++ b/ui/migrate_postgres_simple.sh
@@ -93,7 +93,7 @@ if [ ! -s "$BACKUP_FILE" ]; then
     exit 1
 fi
 
-RECORD_COUNT=$(python3 -c "import json; 
print(len(json.load(open('$BACKUP_FILE'))))")
+RECORD_COUNT=$(uv run python -c "import json; 
print(len(json.load(open('$BACKUP_FILE'))))")
 if [ "$RECORD_COUNT" -eq 0 ]; then
     echo "Warning: Backup contains 0 records"
     echo "This is OK if you have no data yet, but unexpected if you've been 
using Hamilton UI"
diff --git a/ui/restore_hamilton_data.sh b/ui/restore_hamilton_data.sh
index dd045c4a..1045a781 100755
--- a/ui/restore_hamilton_data.sh
+++ b/ui/restore_hamilton_data.sh
@@ -44,12 +44,12 @@ echo ""
 
 # Validate JSON
 echo "Validating backup file..."
-if ! python3 -m json.tool "$BACKUP_FILE" > /dev/null 2>&1; then
+if ! uv run python -m json.tool "$BACKUP_FILE" > /dev/null 2>&1; then
     echo "Error: Backup file contains invalid JSON"
     exit 1
 fi
 
-RECORD_COUNT=$(python3 -c "import json; 
print(len(json.load(open('$BACKUP_FILE'))))")
+RECORD_COUNT=$(uv run python -c "import json; 
print(len(json.load(open('$BACKUP_FILE'))))")
 echo "✓ Found $RECORD_COUNT records"
 echo ""
 
@@ -165,7 +165,7 @@ echo "  Templates: $ADDED_TEMPLATES (total: 
$POST_TEMPLATES)"
 echo ""
 
 # Sanity check - if we expected to add data but nothing changed
-EXPECTED_RECORDS=$(python3 -c "
+EXPECTED_RECORDS=$(uv run python -c "
 import json
 data = json.load(open('$BACKUP_FILE'))
 models = [item['model'] for item in data]

Reply via email to