cmpnd 0.75.0__tar.gz → 0.76.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (404) hide show
  1. {cmpnd-0.75.0 → cmpnd-0.76.0}/PKG-INFO +1 -1
  2. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/cli/commands/evals.py +1 -1
  3. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/cli/commands/programs.py +3 -3
  4. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/cli/commands/top.py +8 -2
  5. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/cli/verbs.py +1 -1
  6. {cmpnd-0.75.0 → cmpnd-0.76.0}/docs/cli.md +20 -7
  7. {cmpnd-0.75.0 → cmpnd-0.76.0}/ingest/cmpnd_ingest/program_names.py +3 -2
  8. {cmpnd-0.75.0 → cmpnd-0.76.0}/pyproject.toml +1 -1
  9. {cmpnd-0.75.0 → cmpnd-0.76.0}/uv.lock +1 -1
  10. {cmpnd-0.75.0 → cmpnd-0.76.0}/.gitignore +0 -0
  11. {cmpnd-0.75.0 → cmpnd-0.76.0}/AGENTS.md +0 -0
  12. {cmpnd-0.75.0 → cmpnd-0.76.0}/CLAUDE.md +0 -0
  13. {cmpnd-0.75.0 → cmpnd-0.76.0}/README.md +0 -0
  14. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/__init__.py +0 -0
  15. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/_assessments.py +0 -0
  16. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/_authored_import.py +0 -0
  17. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/_deployments.py +0 -0
  18. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/_exporter_pool.py +0 -0
  19. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/_gepa_patch.py +0 -0
  20. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/_http.py +0 -0
  21. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/_program_patch.py +0 -0
  22. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/_rlm_patch.py +0 -0
  23. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/_runtime_tools.py +0 -0
  24. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/_timespec.py +0 -0
  25. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/_traces.py +0 -0
  26. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/_valsets.py +0 -0
  27. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/authored.py +0 -0
  28. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/callback.py +0 -0
  29. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/cli/__init__.py +0 -0
  30. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/cli/api_client.py +0 -0
  31. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/cli/commands/__init__.py +0 -0
  32. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/cli/commands/admin.py +0 -0
  33. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/cli/commands/assessments.py +0 -0
  34. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/cli/commands/auth.py +0 -0
  35. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/cli/commands/datasets.py +0 -0
  36. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/cli/commands/deployments.py +0 -0
  37. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/cli/commands/login.py +0 -0
  38. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/cli/commands/optimizations.py +0 -0
  39. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/cli/commands/org.py +0 -0
  40. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/cli/commands/provider_credentials.py +0 -0
  41. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/cli/commands/tool_servers.py +0 -0
  42. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/cli/commands/traces.py +0 -0
  43. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/cli/commands/valsets.py +0 -0
  44. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/cli/credentials.py +0 -0
  45. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/cli/deprecation.py +0 -0
  46. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/cli/pagination.py +0 -0
  47. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/cli/shell.py +0 -0
  48. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/cli/trace_render.py +0 -0
  49. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/cli/tree_help.py +0 -0
  50. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/cli/views.py +0 -0
  51. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/client.py +0 -0
  52. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/configuration.py +0 -0
  53. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/context.py +0 -0
  54. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/credentials.py +0 -0
  55. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/dataset_sync.py +0 -0
  56. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/datasets.py +0 -0
  57. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/decorators.py +0 -0
  58. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/deployment.py +0 -0
  59. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/deployment_metadata.py +0 -0
  60. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/deployment_runs.py +0 -0
  61. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/eval_handler.py +0 -0
  62. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/execution.py +0 -0
  63. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/exporter.py +0 -0
  64. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/exporter_http.py +0 -0
  65. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/helpers.py +0 -0
  66. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/identity.py +0 -0
  67. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/imaging.py +0 -0
  68. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/ir/__init__.py +0 -0
  69. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/ir/decode.py +0 -0
  70. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/ir/encode.py +0 -0
  71. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/ir/hash.py +0 -0
  72. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/ir/program.py +0 -0
  73. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/ir/reflection.py +0 -0
  74. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/ir/types.py +0 -0
  75. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/ir/xxh64.py +0 -0
  76. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/lm_configuration.py +0 -0
  77. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/mcp_servers.py +0 -0
  78. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/models.py +0 -0
  79. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/named_programs.py +0 -0
  80. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/optimization.py +0 -0
  81. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/optimizers/__init__.py +0 -0
  82. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/optimizers/gepa.py +0 -0
  83. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/optimizers/gepa_callback.py +0 -0
  84. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/optimizers/resume.py +0 -0
  85. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/optimizers/tracker.py +0 -0
  86. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/packaging.py +0 -0
  87. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/program_naming.py +0 -0
  88. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/programs.py +0 -0
  89. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/references.py +0 -0
  90. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/retry.py +0 -0
  91. {cmpnd-0.75.0 → cmpnd-0.76.0}/cmpnd/traces.py +0 -0
  92. {cmpnd-0.75.0 → cmpnd-0.76.0}/docs/2026-04-02-code-review.md +0 -0
  93. {cmpnd-0.75.0 → cmpnd-0.76.0}/docs/client.md +0 -0
  94. {cmpnd-0.75.0 → cmpnd-0.76.0}/docs/custom-proposer.md +0 -0
  95. {cmpnd-0.75.0 → cmpnd-0.76.0}/docs/plans/2026-04-05-train-val-dataset-capture-design.md +0 -0
  96. {cmpnd-0.75.0 → cmpnd-0.76.0}/docs/plans/2026-04-05-train-val-dataset-capture.md +0 -0
  97. {cmpnd-0.75.0 → cmpnd-0.76.0}/docs/reading-traces.md +0 -0
  98. {cmpnd-0.75.0 → cmpnd-0.76.0}/docs/sdk-instrumentation.md +0 -0
  99. {cmpnd-0.75.0 → cmpnd-0.76.0}/examples/generalizing_proposer.py +0 -0
  100. {cmpnd-0.75.0 → cmpnd-0.76.0}/examples/local_ollama.py +0 -0
  101. {cmpnd-0.75.0 → cmpnd-0.76.0}/ingest/LINEAGE.md +0 -0
  102. {cmpnd-0.75.0 → cmpnd-0.76.0}/ingest/README.md +0 -0
  103. {cmpnd-0.75.0 → cmpnd-0.76.0}/ingest/cmpnd_ingest/__init__.py +0 -0
  104. {cmpnd-0.75.0 → cmpnd-0.76.0}/ingest/cmpnd_ingest/bodies.py +0 -0
  105. {cmpnd-0.75.0 → cmpnd-0.76.0}/ingest/cmpnd_ingest/client_floor.py +0 -0
  106. {cmpnd-0.75.0 → cmpnd-0.76.0}/ingest/cmpnd_ingest/exporter_http.py +0 -0
  107. {cmpnd-0.75.0 → cmpnd-0.76.0}/ingest/cmpnd_ingest/protocols.py +0 -0
  108. {cmpnd-0.75.0 → cmpnd-0.76.0}/ingest/cmpnd_ingest/py.typed +0 -0
  109. {cmpnd-0.75.0 → cmpnd-0.76.0}/ingest/cmpnd_ingest/request_log.py +0 -0
  110. {cmpnd-0.75.0 → cmpnd-0.76.0}/ingest/cmpnd_ingest/retry.py +0 -0
  111. {cmpnd-0.75.0 → cmpnd-0.76.0}/ingest/cmpnd_ingest/trace_facts.py +0 -0
  112. {cmpnd-0.75.0 → cmpnd-0.76.0}/ingest/pyproject.toml +0 -0
  113. {cmpnd-0.75.0 → cmpnd-0.76.0}/scripts/audit-sdist.sh +0 -0
  114. {cmpnd-0.75.0 → cmpnd-0.76.0}/scripts/capture_review_run.py +0 -0
  115. {cmpnd-0.75.0 → cmpnd-0.76.0}/scripts/check-pip-install.sh +0 -0
  116. {cmpnd-0.75.0 → cmpnd-0.76.0}/scripts/check_release_artifacts.py +0 -0
  117. {cmpnd-0.75.0 → cmpnd-0.76.0}/scripts/fixtures/review_run.json.gz +0 -0
  118. {cmpnd-0.75.0 → cmpnd-0.76.0}/scripts/gepa_resume_bug.py +0 -0
  119. {cmpnd-0.75.0 → cmpnd-0.76.0}/scripts/install-test-env.sh +0 -0
  120. {cmpnd-0.75.0 → cmpnd-0.76.0}/scripts/release-gate.sh +0 -0
  121. {cmpnd-0.75.0 → cmpnd-0.76.0}/scripts/release-real-models.sh +0 -0
  122. {cmpnd-0.75.0 → cmpnd-0.76.0}/scripts/require_version_bump.py +0 -0
  123. {cmpnd-0.75.0 → cmpnd-0.76.0}/scripts/seed_review_run.py +0 -0
  124. {cmpnd-0.75.0 → cmpnd-0.76.0}/scripts/selfhost_compat.py +0 -0
  125. {cmpnd-0.75.0 → cmpnd-0.76.0}/scripts/test-in-linux.sh +0 -0
  126. {cmpnd-0.75.0 → cmpnd-0.76.0}/stubs/dspy/__init__.pyi +0 -0
  127. {cmpnd-0.75.0 → cmpnd-0.76.0}/stubs/dspy/primitives/__init__.pyi +0 -0
  128. {cmpnd-0.75.0 → cmpnd-0.76.0}/stubs/dspy/primitives/prediction.pyi +0 -0
  129. {cmpnd-0.75.0 → cmpnd-0.76.0}/stubs/dspy/utils/__init__.pyi +0 -0
  130. {cmpnd-0.75.0 → cmpnd-0.76.0}/stubs/dspy/utils/callback.pyi +0 -0
  131. {cmpnd-0.75.0 → cmpnd-0.76.0}/stubs/dspy/utils/dummies.pyi +0 -0
  132. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/__init__.py +0 -0
  133. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/_credential_route.py +0 -0
  134. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/_deployment_signature_helpers.py +0 -0
  135. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/_exporter_helpers.py +0 -0
  136. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/_fake_clock.py +0 -0
  137. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/_identity_helpers.py +0 -0
  138. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/_resolve_refs.py +0 -0
  139. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/_traced_run.py +0 -0
  140. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/conftest.py +0 -0
  141. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/__init__.py +0 -0
  142. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/committee_task.py +0 -0
  143. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/conftest.py +0 -0
  144. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/continuation_task.py +0 -0
  145. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/data/committee_train.ndjson.gz +0 -0
  146. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/data/committee_val.ndjson.gz +0 -0
  147. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/fake_lm.py +0 -0
  148. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/helpers.py +0 -0
  149. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/target_capabilities.py +0 -0
  150. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/test_assessments_cli.py +0 -0
  151. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/test_capture_prompts.py +0 -0
  152. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/test_composite_module.py +0 -0
  153. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/test_dataset_auto_creation.py +0 -0
  154. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/test_deploy_execute.py +0 -0
  155. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/test_deploy_pandas.py +0 -0
  156. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/test_deploy_programs.py +0 -0
  157. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/test_edge_cases.py +0 -0
  158. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/test_example_hash.py +0 -0
  159. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/test_gepa_optimization.py +0 -0
  160. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/test_interpreter_spans.py +0 -0
  161. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/test_lm_accuracy.py +0 -0
  162. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/test_module_tracing.py +0 -0
  163. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/test_optimization_lineage.py +0 -0
  164. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/test_optimization_metric_identity.py +0 -0
  165. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/test_optimize_authored_metric.py +0 -0
  166. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/test_optimize_continuation.py +0 -0
  167. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/test_optimize_custom_proposer.py +0 -0
  168. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/test_optimize_failures.py +0 -0
  169. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/test_optimize_loop.py +0 -0
  170. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/test_optimize_review_committee.py +0 -0
  171. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/test_optimize_server_owned_completion.py +0 -0
  172. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/test_parallel_export.py +0 -0
  173. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/test_project_attribution.py +0 -0
  174. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/test_react_tool_spans.py +0 -0
  175. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/test_save_load.py +0 -0
  176. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/test_trace_structure.py +0 -0
  177. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/test_traces_read.py +0 -0
  178. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/test_user_attribution.py +0 -0
  179. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/e2e/test_valsets_cli.py +0 -0
  180. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/identity_vectors/01_predict_qa.json +0 -0
  181. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/identity_vectors/02_predict_renamed_field.json +0 -0
  182. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/identity_vectors/03_chain_of_thought_qa.json +0 -0
  183. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/identity_vectors/04_predict_richer_types.json +0 -0
  184. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/identity_vectors/05_composite_two_predicts.json +0 -0
  185. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/identity_vectors/06_multichaincomparison.json +0 -0
  186. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/identity_vectors/07_program_of_thought.json +0 -0
  187. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/identity_vectors/08_opaque_module.json +0 -0
  188. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/identity_vectors/09_predict_pydantic_field.json +0 -0
  189. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/identity_vectors/10_react.json +0 -0
  190. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/identity_vectors/11_refine.json +0 -0
  191. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/identity_vectors/12_retrieve.json +0 -0
  192. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/identity_vectors/13_knn.json +0 -0
  193. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/identity_vectors/14_parallel.json +0 -0
  194. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/identity_vectors/README.md +0 -0
  195. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/ingest_conformance.py +0 -0
  196. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/integration/__init__.py +0 -0
  197. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/integration/authored_optimize/judge.py +0 -0
  198. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/integration/authored_optimize/optimize_hosted.py +0 -0
  199. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/integration/conftest.py +0 -0
  200. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/integration/hosted_mcp_tool_optimize_probe.py +0 -0
  201. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/integration/hosted_optimize_probe.py +0 -0
  202. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/integration/optimization_run_probe.py +0 -0
  203. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/integration/test_cli_deploy_smoketest.py +0 -0
  204. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/integration/test_logs_renders_traces.py +0 -0
  205. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/integration/test_optimization_run.py +0 -0
  206. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/integration/test_optimizing_progress.py +0 -0
  207. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/integration/test_unhappy_path.py +0 -0
  208. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/load/__init__.py +0 -0
  209. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/load/__main__.py +0 -0
  210. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/load/drain.py +0 -0
  211. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/load/ingest.py +0 -0
  212. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/load/latency_transport.py +0 -0
  213. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/load/rlm_shape.py +0 -0
  214. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/load/rlm_size_report.py +0 -0
  215. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/load/sweep.py +0 -0
  216. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/load/test_rlm_shape.py +0 -0
  217. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/load/test_rlm_size_report.py +0 -0
  218. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/parity/__init__.py +0 -0
  219. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/parity/conftest.py +0 -0
  220. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/parity/seed_parity.py +0 -0
  221. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/parity/test_auth.py +0 -0
  222. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/parity/test_datasets.py +0 -0
  223. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/parity/test_deployments.py +0 -0
  224. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/parity/test_evals.py +0 -0
  225. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/parity/test_health.py +0 -0
  226. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/parity/test_modules.py +0 -0
  227. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/parity/test_optimizations.py +0 -0
  228. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/parity/test_programs.py +0 -0
  229. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/parity/test_signatures.py +0 -0
  230. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/parity/test_trace_streaming.py +0 -0
  231. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/parity/test_traces.py +0 -0
  232. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/real_models/__init__.py +0 -0
  233. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/real_models/_provider.py +0 -0
  234. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/real_models/_readiness.py +0 -0
  235. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/real_models/_reliability.py +0 -0
  236. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/real_models/_result.py +0 -0
  237. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/real_models/mint_bedrock_token.py +0 -0
  238. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/real_models/test_bedrock_converse.py +0 -0
  239. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/real_models/test_deploy_programs.py +0 -0
  240. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/real_models/test_multi_client_stress.py +0 -0
  241. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/real_models/test_optimize_client_committee.py +0 -0
  242. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/real_models/test_optimize_continuation.py +0 -0
  243. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/real_models/test_optimize_loop.py +0 -0
  244. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/real_models/test_optimize_loop_wasm.py +0 -0
  245. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/real_models/test_optimize_stress.py +0 -0
  246. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/real_models/test_provider_roles.py +0 -0
  247. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/real_models/test_readiness.py +0 -0
  248. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/real_models/test_real_provider_twins.py +0 -0
  249. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/real_models/test_reliability.py +0 -0
  250. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/real_models/test_reliability_classify.py +0 -0
  251. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/real_models/test_rlm_wasm.py +0 -0
  252. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/real_models/test_trace_search.py +0 -0
  253. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/span_reference_fixture.py +0 -0
  254. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_adapter_reentrancy.py +0 -0
  255. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_assessments_api.py +0 -0
  256. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_authored.py +0 -0
  257. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_authored_binding_credentials.py +0 -0
  258. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_authored_bundle_collisions.py +0 -0
  259. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_authored_metric_contract.py +0 -0
  260. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_authored_named_models.py +0 -0
  261. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_authored_optimize.py +0 -0
  262. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_callback.py +0 -0
  263. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_candidate_lineage.py +0 -0
  264. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_cli/__init__.py +0 -0
  265. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_cli/conftest.py +0 -0
  266. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_cli/test_admin.py +0 -0
  267. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_cli/test_api_client.py +0 -0
  268. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_cli/test_assessments.py +0 -0
  269. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_cli/test_auth.py +0 -0
  270. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_cli/test_credentials.py +0 -0
  271. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_cli/test_datasets.py +0 -0
  272. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_cli/test_deployment_runs.py +0 -0
  273. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_cli/test_deployments.py +0 -0
  274. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_cli/test_evals.py +0 -0
  275. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_cli/test_login.py +0 -0
  276. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_cli/test_main.py +0 -0
  277. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_cli/test_optimizations.py +0 -0
  278. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_cli/test_org.py +0 -0
  279. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_cli/test_pagination.py +0 -0
  280. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_cli/test_parity.py +0 -0
  281. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_cli/test_programs.py +0 -0
  282. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_cli/test_provider_credentials.py +0 -0
  283. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_cli/test_schema_sample.py +0 -0
  284. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_cli/test_shell.py +0 -0
  285. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_cli/test_tool_servers.py +0 -0
  286. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_cli/test_top.py +0 -0
  287. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_cli/test_traces.py +0 -0
  288. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_cli/test_traces_program_and_module.py +0 -0
  289. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_cli/test_traces_search_wire.py +0 -0
  290. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_cli/test_tree_help.py +0 -0
  291. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_cli/test_valsets.py +0 -0
  292. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_client.py +0 -0
  293. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_client_floor.py +0 -0
  294. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_client_program_names.py +0 -0
  295. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_clustering/__init__.py +0 -0
  296. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_clustering/conftest.py +0 -0
  297. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_clustering/test_edge_cases.py +0 -0
  298. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_clustering/test_hash_consistency.py +0 -0
  299. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_clustering/test_type_conversion.py +0 -0
  300. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_cmp551_grouping_identity.py +0 -0
  301. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_configuration.py +0 -0
  302. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_context.py +0 -0
  303. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_context_propagation.py +0 -0
  304. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_credential_kwargs.py +0 -0
  305. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_credential_selection.py +0 -0
  306. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_credential_values.py +0 -0
  307. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_dataset_polling.py +0 -0
  308. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_dataset_sync.py +0 -0
  309. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_datasets.py +0 -0
  310. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_decision_client_spans.py +0 -0
  311. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_decorators.py +0 -0
  312. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_deploy.py +0 -0
  313. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_deploy_mcp_tool_references.py +0 -0
  314. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_deploy_program_id.py +0 -0
  315. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_deployment_metadata.py +0 -0
  316. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_deployment_runs.py +0 -0
  317. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_deployments_read.py +0 -0
  318. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_eval.py +0 -0
  319. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_eval_example_attribution.py +0 -0
  320. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_eval_program_id.py +0 -0
  321. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_eval_start.py +0 -0
  322. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_eval_trace_grouping.py +0 -0
  323. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_exception_paths.py +0 -0
  324. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_execute.py +0 -0
  325. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_execute_run_identity.py +0 -0
  326. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_exporter.py +0 -0
  327. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_exporter_program_names.py +0 -0
  328. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_exporter_queue.py +0 -0
  329. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_exporter_real.py +0 -0
  330. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_fake_lm.py +0 -0
  331. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_gepa_callback.py +0 -0
  332. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_gepa_integration.py +0 -0
  333. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_gepa_output_normalization.py +0 -0
  334. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_gepa_resume.py +0 -0
  335. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_identity.py +0 -0
  336. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_imaging.py +0 -0
  337. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_import_weight.py +0 -0
  338. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_ingest_conformance.py +0 -0
  339. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_ingest_second_producer.py +0 -0
  340. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_integration.py +0 -0
  341. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_interpreter_callback.py +0 -0
  342. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_ir_encoder_properties.py +0 -0
  343. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_ir_golden_vectors.py +0 -0
  344. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_ir_roundtrip.py +0 -0
  345. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_lm15_native_calls.py +0 -0
  346. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_lm_configuration.py +0 -0
  347. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_lm_usage_shapes.py +0 -0
  348. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_mcp_tools.py +0 -0
  349. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_models.py +0 -0
  350. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_multi_client_stress_readiness.py +0 -0
  351. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_no_signature_hash_on_the_wire.py +0 -0
  352. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_optimization_program_names.py +0 -0
  353. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_optimization_progress.py +0 -0
  354. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_optimization_start.py +0 -0
  355. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_optimize.py +0 -0
  356. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_optimize_budget.py +0 -0
  357. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_optimize_lift.py +0 -0
  358. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_optimize_lms.py +0 -0
  359. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_optimize_proposer.py +0 -0
  360. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_optimize_reflection_lm.py +0 -0
  361. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_optimize_terminal_failure.py +0 -0
  362. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_packaging.py +0 -0
  363. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_packaging_callable_source.py +0 -0
  364. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_packaging_mcp_tools.py +0 -0
  365. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_packaging_program_source.py +0 -0
  366. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_poll_until.py +0 -0
  367. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_program_id_deprecation.py +0 -0
  368. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_program_identity.py +0 -0
  369. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_program_lineage_persist.py +0 -0
  370. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_program_names_in_deploy.py +0 -0
  371. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_program_naming.py +0 -0
  372. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_programs_create.py +0 -0
  373. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_project_payload.py +0 -0
  374. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_real_provider_twins_readiness.py +0 -0
  375. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_reflector_properties.py +0 -0
  376. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_reflector_smoke.py +0 -0
  377. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_release_gate_script.py +0 -0
  378. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_release_real_models_script.py +0 -0
  379. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_replaced_names.py +0 -0
  380. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_repro_reactv2_bugs.py +0 -0
  381. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_require_version_bump.py +0 -0
  382. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_retry.py +0 -0
  383. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_reversible_failures.py +0 -0
  384. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_rlm_patch.py +0 -0
  385. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_run_attribution_paths.py +0 -0
  386. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_runtime_tools.py +0 -0
  387. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_schemas.py +0 -0
  388. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_seal_lm_credential.py +0 -0
  389. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_seed_review_run.py +0 -0
  390. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_signature_inputs.py +0 -0
  391. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_span_references.py +0 -0
  392. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_span_sent_once.py +0 -0
  393. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_system_one.py +0 -0
  394. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_trace_context_concurrency.py +0 -0
  395. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_trace_fact_wire_contract.py +0 -0
  396. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_trace_facts.py +0 -0
  397. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_trace_render.py +0 -0
  398. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_traces_read.py +0 -0
  399. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_tracked_gepa.py +0 -0
  400. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_tracker_enrich.py +0 -0
  401. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_truncation.py +0 -0
  402. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_upload_auth_headers.py +0 -0
  403. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_valsets_api.py +0 -0
  404. {cmpnd-0.75.0 → cmpnd-0.76.0}/tests/test_xxh64.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: cmpnd
3
- Version: 0.75.0
3
+ Version: 0.76.0
4
4
  Summary: DSPy observability and deployment SDK for cmpnd
5
5
  Project-URL: Homepage, https://cmpnd.ai
6
6
  Author-email: cmpnd <hello@cmpnd.ai>
@@ -13,7 +13,7 @@ def _add_list_args(p: ArgumentParser) -> None:
13
13
  "--program",
14
14
  dest="program_name",
15
15
  metavar="NAME",
16
- help="Only the runs of the program with this name, current or retired",
16
+ help="Only the runs of the program whose current name is NAME",
17
17
  )
18
18
  p.add_argument(
19
19
  "--module",
@@ -211,9 +211,9 @@ def register(subparsers: _SubParsersAction[ArgumentParser]) -> None:
211
211
  "rename",
212
212
  help="Name or rename a program",
213
213
  description=(
214
- "Make NAME the current name of PROGRAM. The name it had keeps resolving to it, so code that still "
215
- "declares the old name reaches the same program, with its id and history. A name another program "
216
- "answers to is refused."
214
+ "Make NAME the current name of PROGRAM, which keeps its id and history. The name it had is free at "
215
+ "once: it no longer resolves, and any program can take it, so code that still declares the old name "
216
+ "reaches a new program. Another program's current name is refused."
217
217
  ),
218
218
  )
219
219
  rename.add_argument("program", metavar="PROGRAM", help="Program name or p_ id")
@@ -1440,7 +1440,10 @@ def register(subparsers: _SubParsersAction[ArgumentParser]) -> None:
1440
1440
  help="Deploy authored Python source (file or stdin)",
1441
1441
  description=(
1442
1442
  "Stage authored Python without executing it in this process, check its "
1443
- "entrypoint in a fresh child, and upload the exact staged bundle."
1443
+ "entrypoint in a fresh child, and upload the exact staged bundle.\n\n"
1444
+ "The platform deploys only a program a user named. PROGRAM_NAME is such a name. "
1445
+ "A program with no name, or with a name a client generated, is refused until "
1446
+ "`cmpnd programs rename <p_id> <name>` names it."
1444
1447
  ),
1445
1448
  epilog=(
1446
1449
  "Examples:\n"
@@ -1501,7 +1504,10 @@ def register(subparsers: _SubParsersAction[ArgumentParser]) -> None:
1501
1504
  "dspy.Prediction(score=, feedback=): gepa writes each new instruction by "
1502
1505
  "reading that feedback, so a score-only metric is refused before the run "
1503
1506
  "starts. `--reflection-model` is required for the same reason — it names "
1504
- "the model that does the writing."
1507
+ "the model that does the writing.\n\n"
1508
+ "The platform optimizes only a program a user named. A --deployment-id whose "
1509
+ "program has no name, or a name a client generated, such as an optimization's "
1510
+ "result, is refused until `cmpnd programs rename <p_id> <name>` names it."
1505
1511
  ),
1506
1512
  epilog=(
1507
1513
  "Examples:\n"
@@ -167,7 +167,7 @@ DOMAIN_VERBS: dict[str, str] = {
167
167
  "trash": "moves a program to the Trash, where it stays restorable, and delete would read as the permanent purge",
168
168
  "restore": "returns a program from the Trash with its history, which create would not",
169
169
  "purge": "deletes a program in the Trash for good, the irreversible step after trash",
170
- "rename": "gives a program a new current name and keeps the old one resolving to it, which update would hide",
170
+ "rename": "gives a program a new current name and frees the old one for any program, which update would hide",
171
171
  }
172
172
 
173
173
  #: Leaves naming a related collection or sub-record rather than an action.
@@ -28,6 +28,18 @@ already has its program, and a program name with it is refused when the file
28
28
  binds no program. In the shell, `deploy()` and `optimize()` take the
29
29
  program name as `program=`.
30
30
 
31
+ The platform deploys and optimizes only a program a user named. A program name
32
+ given here, to `cmpnd.Program(name, ...)` or to `cmpnd programs rename` is one.
33
+ A program with no name, or with a name a client generated, such as an
34
+ optimization's result, is refused with `409` and error code `program_unnamed`,
35
+ and the error names the command that fixes it:
36
+ `cmpnd programs rename <p_id> <name>`. It also tells you to declare that name in
37
+ your code with `@cmpnd.program("<name>")` or `cmpnd.Program("<name>", ...)`. The
38
+ rename frees the generated name, so code that declares no name sends its later
39
+ traces to a new program under the generated name. Deployments of such a program that
40
+ already exist keep serving. A rename never clears the name of a program with
41
+ a deployment that can serve.
42
+
31
43
  `cmpnd programs create PROGRAM_NAME` makes the program ahead of time and prints
32
44
  its id on stdout. It refuses a program name that already has a program. The
33
45
  command reports what it created on stderr, and `--json` prints serve's whole
@@ -108,11 +120,12 @@ PROGRAM name up as the other `cmpnd programs` commands do, and sends
108
120
  `POST /api/v1/programs/{id}/rename`. The command needs `traces:write` or
109
121
  `optimizations:write`.
110
122
 
111
- The old name keeps resolving to the program, so code that still declares it
112
- reaches the same program. A program with no name takes its first name this
113
- way, and code that declares the new name with `cmpnd.Program(name, ...)`
114
- traces to it. Serve refuses a name another live
115
- program answers to, as its current or a retired name. A program in the Trash
123
+ The old name is free at once. It no longer resolves to the program, and any
124
+ program of the organization can take it, so code that still declares the old
125
+ name with `cmpnd.Program(name, ...)` reaches a new program, not this one.
126
+ Update that code to the new name. A program with no name takes its first name
127
+ this way, and code that declares the new name traces to it. Serve refuses
128
+ another live program's current name. A program in the Trash
116
129
  is refused until `cmpnd programs restore` returns it. A server from before the
117
130
  rename route says so, and the error points at the program's page in the web
118
131
  app, which renames it too.
@@ -460,8 +473,8 @@ optimization result, not a program. Each group's `--help` names the column its
460
473
  IDs come from.
461
474
 
462
475
  `cmpnd evals list [--program NAME] [--module CLASS] [--metric] [--status]`
463
- lists eval runs, newest first. `--program` takes the program's name, current
464
- or retired, and a name no program answers to is an error that names it.
476
+ lists eval runs, newest first. `--program` takes the program's current
477
+ name, and a name no program holds is an error that names it.
465
478
  `--module` takes the evaluated module's class, such as `ReAct`, and matches it
466
479
  exactly. The CLI sends them as `program_name` and `module_class`. Each eval
467
480
  run in `evals list`, `evals show` and `programs evals` names what it evaluated
@@ -11,8 +11,9 @@ This module keeps the answers. The transport makes the requests, because they ri
11
11
  client and its retry budget.
12
12
 
13
13
  An answer is kept for the life of the process. A name that serve later points at
14
- another program reaches a process only when the process starts again, and a renamed
15
- program's old name keeps resolving to it.
14
+ another program reaches a process only when the process starts again. A rename frees
15
+ the old name, so a process that resolved it before the rename keeps sending to the
16
+ renamed program, and a process started after it gets a new program under that name.
16
17
 
17
18
  A name settles in one of two ways. Serve gives an id, or serve refuses the name, as a
18
19
  server without program names does with ``405``. A refused name sends its traces without
@@ -5,7 +5,7 @@ name = "cmpnd"
5
5
  # it's new) — no git tags. Bump with `uv version --bump {minor,patch}` or by
6
6
  # hand. Runtime `cmpnd.__version__` reads installed metadata, so it tracks
7
7
  # this automatically. See docs/plans/2026-07-02-sdk-pypi-tag-free-publish.md.
8
- version = "0.75.0"
8
+ version = "0.76.0"
9
9
  description = "DSPy observability and deployment SDK for cmpnd"
10
10
  readme = "README.md"
11
11
  requires-python = ">=3.11"
@@ -505,7 +505,7 @@ wheels = [
505
505
 
506
506
  [[package]]
507
507
  name = "cmpnd"
508
- version = "0.75.0"
508
+ version = "0.76.0"
509
509
  source = { editable = "." }
510
510
  default-groups = ["dspy-3-4-1"]
511
511
  dependencies = [
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes