Skip to content

Commit 078ce42

Browse files
authored
Clean Up of Dev Environment (#15)
* removed mentions of neptune * simplified dependency management * bumped dev package versions
1 parent c25fcdc commit 078ce42

8 files changed

Lines changed: 2673 additions & 3120 deletions

File tree

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ jobs:
6767
- name: Install all dependencies
6868
run: |
6969
pip install uv
70-
uv sync --group dev --group typing --group examples
70+
uv sync --all-extras --group dev
7171
- name: Run all tests
7272
run: |
7373
uv run pytest -v

.github/workflows/ty-check.yml

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,8 @@ jobs:
2727
- name: Install uv
2828
run: python -m pip install uv
2929

30-
- name: Install dependencies with typing group
31-
run: uv sync --group typing
32-
33-
- name: Install ty type checker
34-
run: uv pip install "ty>=0.0.1a20"
30+
- name: Install dependencies with all optional packages for type checking
31+
run: uv sync --all-extras --group dev
3532

3633
- name: Run ty checks
3734
run: |

AGENTS.md

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,17 +60,17 @@ uv run pytest -m interface -v
6060
Three types of dependencies:
6161

6262
- **Core** (`[project.dependencies]`): Required, installed with `pip install maseval`. Keep minimal!
63-
- **Optional** (`[project.optional-dependencies]`): Published for end users. Framework integrations like `smolagents`, `langgraph`.
63+
- **Optional** (`[project.optional-dependencies]`): Published for end users. Framework integrations like `smolagents`, `langgraph`, plus convenience bundles like `all` and `examples`. Uses self-references (e.g., `maseval[all]`) to avoid duplication - this is a standard Python packaging feature.
6464
- **Dev Groups** (`[dependency-groups]`): NOT published. Only for contributors. Tools like `pytest`, `ruff`, `mkdocs`.
6565

6666
```bash
6767
# Add core dependency (use sparingly!)
6868
uv add <package-name>
6969

70-
# Add optional dependency for end users
70+
# Add optional dependency for end users (e.g., framework integrations)
7171
uv add --optional <extra-name> <package-name>
7272

73-
# Add development dependency (not published)
73+
# Add development dependency (not published - dev tools only)
7474
uv add --group dev <package-name>
7575

7676
# Remove any dependency
@@ -79,6 +79,17 @@ uv remove <package-name>
7979

8080
**Important:** `uv add` automatically updates both `pyproject.toml` and `uv.lock`. Never edit lockfile manually.
8181

82+
**Understanding `uv sync` options:**
83+
84+
- `uv sync`: Installs only core dependencies
85+
- `uv sync --extra <name>`: Adds specific optional dependency (e.g., `--extra smolagents`)
86+
- `uv sync --all-extras`: Installs ALL optional dependencies (includes `smolagents`, `langgraph`, etc.)
87+
- `uv sync --group <name>`: Adds specific dev group (e.g., `--group dev`)
88+
- `uv sync --all-groups`: Installs ALL dev groups (`dev`, `docs`)
89+
- `uv sync --all-extras --all-groups`: Full contributor setup with everything
90+
91+
**Note:** Type checking requires `--all-extras` to install all framework packages needed for checking types across all interfaces.
92+
8293
## Architecture Rules
8394

8495
**Core vs Interface Separation (CRITICAL)**

maseval/core/utils/system_info.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ def get_environment_variables(include_patterns: Optional[list[str]] = None) -> D
164164
include_patterns: Optional list of substring patterns to match against environment variable names (case-insensitive).
165165
If None, defaults to common AI/ML framework variables including:
166166
- AI Services: OPENAI, ANTHROPIC, GOOGLE, GEMINI, HUGGINGFACE, HF_
167-
- Experiment Tracking: WANDB, NEPTUNE, LANGFUSE
167+
- Experiment Tracking: WANDB, LANGFUSE
168168
- ML Frameworks: CUDA, PYTORCH, TF_ (TensorFlow)
169169
- Python Environment: PATH, PYTHONPATH, VIRTUAL_ENV, CONDA
170170
@@ -183,7 +183,6 @@ def get_environment_variables(include_patterns: Optional[list[str]] = None) -> D
183183
"HUGGINGFACE",
184184
"HF_",
185185
"WANDB",
186-
"NEPTUNE",
187186
"LANGFUSE",
188187
"CUDA",
189188
"PYTORCH",

maseval/interface/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
Organization:
77
- inference/: Model inference adapters (OpenAI, Google, HuggingFace, etc.)
88
- agents/: Agent framework adapters (smolagents, langgraph, etc.)
9-
- logging/: Logging platform adapters (wandb, neptune, langfuse, etc.)
9+
- logging/: Logging platform adapters (wandb, langfuse, etc.)
1010
1111
Canonical rules:
1212
- Keep adapters thin: translate between MASEval internal abstractions and the external API.

maseval/interface/logging/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@
55

66
__all__ = []
77

8-
# TODO: Add wandb, neptune, langfuse adapters
8+
# TODO: Add wandb, langfuse adapters

pyproject.toml

Lines changed: 22 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -8,91 +8,54 @@ version = "0.2.0"
88
description = "A library for multi-agent systems evaluation and benchmarking."
99
authors = [{ name = "Cornelius Emde", email = "cornelius@parameterlab.de" }]
1010
readme = "README.md"
11+
license = { file = "LICENSE" }
1112
requires-python = ">=3.10"
1213
classifiers = [
1314
"Development Status :: 3 - Alpha",
1415
"Intended Audience :: Science/Research",
16+
"License :: OSI Approved :: MIT License",
1517
"Programming Language :: Python :: 3",
18+
"Programming Language :: Python :: 3.10",
19+
"Programming Language :: Python :: 3.11",
1620
"Programming Language :: Python :: 3.12",
21+
"Programming Language :: Python :: 3.13",
1722
"Topic :: Scientific/Engineering :: Artificial Intelligence",
1823
]
1924
dependencies = ["gitpython>=3.1.0", "tqdm>=4.66.0", "rich>=14.1.0"]
2025

21-
# Enable optional dependencies
26+
# Enable optional dependencies for end users
2227
[project.optional-dependencies]
2328
# Agent frameworks
24-
smolagents = ["smolagents>=1.21"]
29+
smolagents = ["smolagents>=1.21.3"]
2530
langgraph = ["langgraph>=0.6.0"]
2631
llamaindex = ["llama-index-core>=0.12.0"]
2732

28-
# Inference Enginges
33+
# Inference engines
2934
openai = ["openai>=1.107.2"]
3035
google-genai = ["google-genai>=1.37.0"]
3136
transformers = ["transformers>=4.37.0"]
32-
litellm = ["litellm>=0.2.0"]
37+
litellm = ["litellm>=1.0.0"]
3338

3439
# Logging
3540
wandb = ["wandb>=0.15.0"]
36-
neptune = ["neptune>=1.14.0"]
3741
langfuse = ["langfuse>=3.3.4"]
3842

39-
# Combinations
43+
# Dependencies for running examples (only what's actually used)
4044
examples = [
41-
"datasets>=4.0.0",
42-
"google-genai>=1.37.0",
45+
"maseval[smolagents,langgraph,llamaindex,openai,google-genai,litellm,langfuse]",
46+
# Additional integrations used in examples
4347
"langchain>=0.3.27",
44-
"langchain-litellm>=0.1.0",
4548
"langchain-google-genai>=2.1.12",
46-
"langgraph>=0.6.0",
47-
"langfuse>=3.3.4",
48-
"neptune>=1.14.0",
49-
"openai>=1.107.2",
50-
"smolagents>=1.21.3",
51-
"llama-index-core>=0.12.0",
52-
"llama-index-llms-litellm>=0.3.0",
53-
"litellm>=1.0.0",
54-
"addict>=2.4.0",
55-
"deepdiff>=8.6.1",
56-
"docstring-parser>=0.17.0",
57-
"loguru>=0.7.3",
58-
"toml>=0.10.2",
5949
"typing-extensions>=4.0.0",
60-
"restrictedpython>=8.1",
6150
"mcp>=1.22.0",
6251
# Jupyter notebook support
6352
"jupyter>=1.0.0",
6453
"ipykernel>=6.0.0",
6554
"ipywidgets>=8.0.0",
6655
]
67-
all = [
68-
# Agent frameworks
69-
"smolagents>=1.21",
70-
"langgraph>=0.6.0",
71-
"llama-index-core>=0.12.0",
72-
# Inference engines
73-
"openai>=1.107.2",
74-
"google-genai>=1.37.0",
75-
"transformers>=4.37.0",
76-
"litellm>=0.2.0",
77-
# Logging
78-
"wandb>=0.15.0",
79-
"neptune>=1.14.0",
80-
"langfuse>=3.3.4",
81-
# Examples dependencies
82-
"datasets>=4.0.0",
83-
"langchain>=0.3.27",
84-
"langchain-litellm>=0.1.0",
85-
"langchain-google-genai>=2.1.12",
86-
"addict>=2.4.0",
87-
"deepdiff>=8.6.1",
88-
"docstring-parser>=0.17.0",
89-
"loguru>=0.7.3",
90-
"toml>=0.10.2",
91-
"typing-extensions>=4.0.0",
92-
"jupyter>=1.0.0",
93-
"ipykernel>=6.0.0",
94-
"ipywidgets>=8.0.0",
95-
]
56+
57+
# Complete installation with absolutely everything (uses self-reference for DRY)
58+
all = ["maseval[examples,transformers,wandb]"]
9659

9760
[project.urls]
9861
"Homepage" = "https://github.com/parameterlab/MASEval"
@@ -101,64 +64,19 @@ all = [
10164
"Changelog" = "https://github.com/parameterlab/MASEval/blob/main/CHANGELOG.md"
10265

10366
[dependency-groups]
104-
# Dependencies needed for development (linting, testing)
105-
dev = ["pytest>=8.4.2", "pytest-cov>=7.0.0", "ruff>=0.13.0", "ty>=0.0.1a20"]
106-
67+
# Development tools (linting, testing) - for contributors only
68+
dev = ["pytest>=9.0.0", "pytest-cov>=7.0.0", "ruff>=0.14.0", "ty>=0.0.5"]
10769

108-
# Dependencies needed to build the documentation
70+
# Documentation building - for contributors only
10971
docs = [
110-
"mkdocs>=1.5",
111-
"mkdocs-material>=9.0.0",
112-
"mkdocstrings[python]>=0.17.0",
113-
"pymdown-extensions>=9.0.0",
72+
"mkdocs>=1.6",
73+
"mkdocs-material>=9.7.0",
74+
"mkdocstrings[python]>=1.0.0",
75+
"pymdown-extensions>=10.0.0",
11476
"mkdocs-jupyter>=0.24.0",
11577
"mkdocs-git-revision-date-localized-plugin>=1.5.0",
11678
]
11779

118-
# Dependencies needed for static type checking
119-
typing = [
120-
# All optional dependencies for complete type checking
121-
"smolagents>=1.21",
122-
"langgraph>=0.6.0",
123-
"llama-index-core>=0.12.0",
124-
"openai>=1.107.2",
125-
"google-genai>=1.37.0",
126-
"transformers>=4.37.0",
127-
"litellm>=0.2.0",
128-
"wandb>=0.15.0",
129-
"neptune>=1.14.0",
130-
"langfuse>=3.3.4",
131-
]
132-
133-
# Dependencies needed to run the example scripts (for contributors)
134-
examples = [
135-
"datasets>=4.0.0",
136-
"google-genai>=1.37.0",
137-
"langchain>=0.3.27",
138-
"langfuse>=3.3.4",
139-
"neptune>=1.14.0",
140-
"openai>=1.107.2",
141-
"smolagents>=1.21.3",
142-
"langchain-google-genai>=2.1.12",
143-
"langgraph>=0.6.0",
144-
"llama-index-core>=0.12.0",
145-
"llama-index-llms-litellm>=0.3.0",
146-
"litellm>=1.0.0",
147-
"addict>=2.4.0",
148-
"deepdiff>=8.6.1",
149-
"docstring-parser>=0.17.0",
150-
"loguru>=0.7.3",
151-
"toml>=0.10.2",
152-
"typing-extensions>=4.0.0",
153-
"restrictedpython>=8.1",
154-
"mcp>=1.22.0",
155-
# Jupyter notebook support
156-
"jupyter>=1.0.0",
157-
"ipykernel>=6.0.0",
158-
"ipywidgets>=8.0.0",
159-
"openinference-instrumentation-smolagents>=0.1.20",
160-
]
161-
16280
[tool.setuptools]
16381
packages = ["maseval"]
16482

0 commit comments

Comments
 (0)