From b669e0a30cc6180e4de274a752885c970c97fcf1 Mon Sep 17 00:00:00 2001 From: Brian Helba Date: Sat, 17 Jan 2026 16:10:46 -0500 Subject: [PATCH] Fix dependency installation and make "analysis" dependencies optional for development --- pyproject.toml | 10 ++++++---- tox.ini | 1 + uv.lock | 38 +++++++++++++++++++------------------- 3 files changed, 26 insertions(+), 23 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 087527b..163f83f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,7 +41,7 @@ dependencies = [ ] [project.optional-dependencies] -tasks = [ +analysis = [ # Training/inference dependencies - not needed for view-only deployments "gymnasium[box2d]==0.28.1", # PettingZoo[butterfly] extra pulls in both pymunk and pygame, but the pypi version of PettingZoo @@ -54,7 +54,6 @@ tasks = [ "SuperSuit", "torch", ] - development = [ # Runtime dependencies, only needed with "development" settings "django-browser-reload", @@ -71,8 +70,8 @@ development = [ dev = [ # Additional developer tools # The "dev" dependency group is installed by default, - # so use this to install "development" and "tasks" extras by default too - "mixtape[development,tasks]", + # so use this to install "development" extras by default too + "mixtape[development]", "tox", "tox-uv", "django-minio-storage", @@ -121,6 +120,9 @@ constraint-dependencies = [ "numba >= 0.61.0", ] +[tool.uv.extra-build-dependencies] +"box2d-py" = [{ requirement = "swig", match-runtime = true }] + [tool.black] line-length = 100 skip-string-normalization = true diff --git a/tox.ini b/tox.ini index 1d75254..a669f48 100644 --- a/tox.ini +++ b/tox.ini @@ -13,6 +13,7 @@ runner = uv-venv-lock-runner pass_env = DJANGO_* extras = + analysis development [testenv:lint] diff --git a/uv.lock b/uv.lock index 6998538..c03b30f 100644 --- a/uv.lock +++ b/uv.lock @@ -2159,6 +2159,15 @@ dependencies = [ ] [package.optional-dependencies] +analysis = [ + { name = "gymnasium", extra = ["box2d"] }, + { name = "pettingzoo" }, + { name = "pygame" }, + { name = "pymunk" }, + { name = "ray", extra = ["default", "rllib"] }, + { name = "supersuit" }, + { name = "torch" }, +] development = [ { name = "django-browser-reload" }, { name = "django-debug-toolbar" }, @@ -2169,21 +2178,12 @@ development = [ { name = "watchdog" }, { name = "werkzeug" }, ] -tasks = [ - { name = "gymnasium", extra = ["box2d"] }, - { name = "pettingzoo" }, - { name = "pygame" }, - { name = "pymunk" }, - { name = "ray", extra = ["default", "rllib"] }, - { name = "supersuit" }, - { name = "torch" }, -] [package.dev-dependencies] dev = [ { name = "django-minio-storage" }, { name = "django-s3-file-field", extra = ["minio"] }, - { name = "mixtape", extra = ["development", "tasks"] }, + { name = "mixtape", extra = ["development"] }, { name = "tox" }, { name = "tox-uv" }, ] @@ -2242,31 +2242,31 @@ requires-dist = [ { name = "drf-yasg" }, { name = "einops" }, { name = "gunicorn" }, - { name = "gymnasium", extras = ["box2d"], marker = "extra == 'tasks'", specifier = "==0.28.1" }, + { name = "gymnasium", extras = ["box2d"], marker = "extra == 'analysis'", specifier = "==0.28.1" }, { name = "ipython", marker = "extra == 'development'" }, - { name = "pettingzoo", marker = "extra == 'tasks'", specifier = ">=1.24.3" }, + { name = "pettingzoo", marker = "extra == 'analysis'", specifier = ">=1.24.3" }, { name = "pillow" }, { name = "psycopg", extras = ["binary"] }, - { name = "pygame", marker = "extra == 'tasks'", specifier = "==2.1.3" }, - { name = "pymunk", marker = "extra == 'tasks'", specifier = "==6.11.0" }, - { name = "ray", extras = ["default", "rllib"], marker = "extra == 'tasks'", specifier = "==2.34.0" }, + { name = "pygame", marker = "extra == 'analysis'", specifier = "==2.1.3" }, + { name = "pymunk", marker = "extra == 'analysis'", specifier = "==6.11.0" }, + { name = "ray", extras = ["default", "rllib"], marker = "extra == 'analysis'", specifier = "==2.34.0" }, { name = "rich" }, { name = "scikit-learn" }, { name = "sentry-sdk", extras = ["celery", "django", "pure-eval"] }, - { name = "supersuit", marker = "extra == 'tasks'" }, - { name = "torch", marker = "extra == 'tasks'" }, + { name = "supersuit", marker = "extra == 'analysis'" }, + { name = "torch", marker = "extra == 'analysis'" }, { name = "umap-learn" }, { name = "watchdog", marker = "extra == 'development'" }, { name = "werkzeug", marker = "extra == 'development'" }, { name = "whitenoise", extras = ["brotli"] }, ] -provides-extras = ["tasks", "development"] +provides-extras = ["analysis", "development"] [package.metadata.requires-dev] dev = [ { name = "django-minio-storage" }, { name = "django-s3-file-field", extras = ["minio"] }, - { name = "mixtape", extras = ["development", "tasks"] }, + { name = "mixtape", extras = ["development"] }, { name = "tox" }, { name = "tox-uv" }, ]