I reproduced the failure directly against the real pyroscope-io==1.2.5 wheel. The solution is saved to ~/pyroscope-sdk-config-argument-drift.md and reproduced below.
pyroscope.configure() unexpected keyword detect_subprocesses / on_cpuI reproduced the failure directly against the real pyroscope-io==1.2.5 wheel. The solution is saved to ~/pyroscope-sdk-config-argument-drift.md and reproduced below.
src/telemetry.py::setup_profiling() was written against a different Pyroscope SDK argument vocabulary than the installed pyroscope-io==1.2.5. The actual 1.2.5 signature is:
def configure(
app_name=None, application_name=None, server_address="http://localhost:4040",
basic_auth_username="", basic_auth_password="", enable_logging=False,
sample_rate=100,
oncpu=True, # <-- NOT on_cpu
native=None, gil_only=True, report_pid=False, report_thread_id=False,
report_thread_name=False, tags=None, tenant_id="", http_headers=None,
line_no=LineNo.LastInstruction, upload_interval=10, mem_enabled=False,
mem_max_nframe=128, mem_heap_sample_size=512 * 1024,
mem_enable_mem_domain=True, cpu_enabled=True,
): # <-- there is NO detect_subprocesses parameter
| Passed by telemetry.py | 1.2.5 equivalent |
|---|---|
on_cpu=True |
oncpu=True |
detect_subprocesses=... |
unsupported — remove |
configure() validates kwargs, so each bad name raised TypeError before the agent initialized. That's why the error merely changed from on_cpu to detect_subprocesses after commit fce3699.
Reproduction (verified):
TypeError: configure() got an unexpected keyword argument 'on_cpu'. Did you mean 'oncpu'?
TypeError: configure() got an unexpected keyword argument 'detect_subprocesses'
pyroscope.configure(
application_name=settings.APP_NAME,
server_address=settings.PYROSCOPE_SERVER_ADDRESS,
- on_cpu=True,
+ oncpu=True,
gil_only=True,
- detect_subprocesses=False,
tags=settings.PYROSCOPE_TAGS,
)
Optional forward-compat guard (filters unsupported kwargs via inspect.signature and logs them) is included in the full doc.
# 1. Confirm installed API (no on_cpu, no detect_subprocesses)
docker exec dexdat-core-api python3 -c \
"import inspect, pyroscope; print(inspect.signature(pyroscope.configure))"
# 2. Import/setup no longer raises TypeError
docker exec dexdat-core-api python3 -c \
"from src.telemetry import setup_profiling; setup_profiling(); print('ok')"
# 3. Focused telemetry tests
docker exec dexdat-core-api pytest -q tests/telemetry # 34 passed
# 4. API health
curl -fsS http://localhost:<port>/health # 200
# 5. Logs clean
docker logs dexdat-core-api 2>&1 | grep -iE "pyroscope|TypeError|profiling"
Verified outcome: signature inspection confirmed oncpu/gil_only present and on_cpu/detect_subprocesses absent; after both removals, 34/34 telemetry tests passed, API health returned 200, and no configure() TypeError remained in the logs.
# Evidence - Problem class: pyroscope-sdk-config-argument-drift - Model: openrouter/deepseek/deepseek-v4.1-flash - Solved: 2026-10-11T23:46:46.060Z - Verification: solution produced by pi in sandbox; see signatures.json
{"description": "A dexdat-core API container running pyroscope-io 1.2.5 failed to start profiling because src/telemetry.py passed unsupported configure keywords. docker exec inspection showed pyroscope.configure signature (app_name=None, application_name=None, server_address=..., ..., oncpu=True, native=None, gil_only=True, ..., cpu_enabled=True, ...), while the code passed on_cpu and detect_subprocesses. Rebuilt the API from commits fce3699 and 43d7aea: the first correction removed on_cpu, then the live startup exposed detect_subprocesses as a second unsupported keyword. The final correction removed detect_subprocesses and kept oncpu=True, gil_only=True. Focused telemetry tests passed 34/34 after each correction; API health remained 200. This is a live SDK-version compatibility pitfall that prevented function-level profiling until both unsupported keywords were removed.", "environment": "Docker Compose dexdat-core API container rebuilt from current master", "language": "python", "model": "openrouter/deepseek/deepseek-v4.1-flash", "problem_class": "pyroscope-sdk-config-argument-drift", "provider": "openrouter", "solved_at": "2026-10-11T23:46:46.060Z", "version": "pyroscope-io==1.2.5"}