data-designer-engine 0.9.7__tar.gz → 0.10.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 (353) hide show
  1. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/PKG-INFO +4 -5
  2. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/pyproject.toml +2 -3
  3. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/analysis/column_profilers/base.py +1 -1
  4. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/analysis/column_statistics.py +1 -2
  5. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/column_generators/generators/base.py +3 -2
  6. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/column_generators/generators/custom.py +1 -1
  7. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/column_generators/generators/embedding.py +13 -2
  8. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/column_generators/generators/expression.py +10 -1
  9. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/column_generators/generators/samplers.py +2 -1
  10. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/column_generators/generators/validation.py +13 -4
  11. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/column_generators/utils/prompt_renderer.py +2 -1
  12. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/compiler.py +72 -8
  13. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/async_scheduler.py +7 -18
  14. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/dataset_builder.py +55 -11
  15. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/utils/config_compiler.py +23 -1
  16. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/utils/row_group_buffer.py +18 -7
  17. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/parsers/types.py +1 -2
  18. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/request_admission/controller.py +1 -1
  19. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/telemetry.py +4 -4
  20. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/observability.py +2 -2
  21. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/processing/gsonschema/schema_transformers.py +1 -1
  22. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/processing/processors/schema_transform.py +11 -2
  23. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/progress/terminal/throughput_panel.py +2 -1
  24. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/resources/agent_rollout/base.py +4 -2
  25. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/resources/agent_rollout/claude_code.py +3 -3
  26. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/resources/agent_rollout/codex.py +25 -8
  27. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/resources/agent_rollout/hermes_agent.py +4 -4
  28. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/resources/agent_rollout/utils.py +3 -3
  29. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/resources/seed_reader.py +63 -5
  30. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/column.py +1 -2
  31. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/schema.py +1 -2
  32. data_designer_engine-0.10.0/src/data_designer/engine/sampling_gen/utils.py +99 -0
  33. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/storage/artifact_storage.py +67 -3
  34. data_designer_engine-0.10.0/src/data_designer/engine/storage/schema_preflight.py +191 -0
  35. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/validation.py +100 -0
  36. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/validators/base.py +2 -2
  37. data_designer_engine-0.10.0/tests/engine/column_generators/generators/test_embedding.py +126 -0
  38. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/column_generators/generators/test_expression.py +68 -0
  39. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/column_generators/generators/test_validation.py +195 -1
  40. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/test_dataset_builder.py +18 -0
  41. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/utils/test_row_group_buffer.py +28 -0
  42. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/mcp/test_mcp_io.py +2 -1
  43. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/test_telemetry.py +2 -2
  44. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/resources/agent_rollout/test_codex.py +108 -1
  45. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/resources/agent_rollout/test_hermes_agent.py +5 -1
  46. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/resources/agent_rollout/test_utils.py +32 -1
  47. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/resources/test_seed_reader.py +45 -0
  48. data_designer_engine-0.10.0/tests/engine/sampling_gen/test_utils.py +164 -0
  49. data_designer_engine-0.10.0/tests/engine/storage/test_json_storage.py +358 -0
  50. data_designer_engine-0.10.0/tests/engine/storage/test_preflight_context.py +199 -0
  51. data_designer_engine-0.10.0/tests/engine/storage/test_schema_preflight.py +380 -0
  52. data_designer_engine-0.10.0/tests/engine/storage/test_seed_storage_contract.py +150 -0
  53. data_designer_engine-0.10.0/tests/engine/test_compiler.py +551 -0
  54. data_designer_engine-0.9.7/src/data_designer/engine/sampling_gen/utils.py +0 -42
  55. data_designer_engine-0.9.7/tests/engine/column_generators/generators/test_embedding.py +0 -47
  56. data_designer_engine-0.9.7/tests/engine/sampling_gen/test_utils.py +0 -38
  57. data_designer_engine-0.9.7/tests/engine/test_compiler.py +0 -217
  58. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/.gitignore +0 -0
  59. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/README.md +0 -0
  60. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/__init__.py +0 -0
  61. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/analysis/column_profilers/judge_score_profiler.py +0 -0
  62. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/analysis/column_profilers/registry.py +0 -0
  63. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/analysis/dataset_profiler.py +0 -0
  64. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/analysis/errors.py +0 -0
  65. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/analysis/utils/column_statistics_calculations.py +0 -0
  66. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/analysis/utils/judge_score_processing.py +0 -0
  67. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/capacity.py +0 -0
  68. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/column_generators/__init__.py +0 -0
  69. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/column_generators/generators/__init__.py +0 -0
  70. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/column_generators/generators/image.py +0 -0
  71. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/column_generators/generators/llm_completion.py +0 -0
  72. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/column_generators/generators/seed_dataset.py +0 -0
  73. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/column_generators/registry.py +0 -0
  74. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/column_generators/utils/errors.py +0 -0
  75. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/column_generators/utils/generator_classification.py +0 -0
  76. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/column_generators/utils/judge_score_factory.py +0 -0
  77. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/configurable_task.py +0 -0
  78. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/context.py +0 -0
  79. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/errors.py +0 -0
  80. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/multi_column_configs.py +0 -0
  81. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/row_group_plan.py +0 -0
  82. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/scheduling/completion.py +0 -0
  83. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/scheduling/queue.py +0 -0
  84. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/scheduling/resolver.py +0 -0
  85. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/scheduling/resources.py +0 -0
  86. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/scheduling/task_admission.py +0 -0
  87. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/scheduling/task_model.py +0 -0
  88. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/scheduling/task_policies.py +0 -0
  89. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/utils/__init__.py +0 -0
  90. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/utils/async_concurrency.py +0 -0
  91. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/utils/concurrency.py +0 -0
  92. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/utils/errors.py +0 -0
  93. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/utils/execution_graph.py +0 -0
  94. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/utils/processor_runner.py +0 -0
  95. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/utils/skip_evaluator.py +0 -0
  96. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/utils/skip_tracker.py +0 -0
  97. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/errors.py +0 -0
  98. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/mcp/__init__.py +0 -0
  99. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/mcp/errors.py +0 -0
  100. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/mcp/facade.py +0 -0
  101. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/mcp/factory.py +0 -0
  102. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/mcp/io.py +0 -0
  103. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/mcp/registry.py +0 -0
  104. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/model_provider.py +0 -0
  105. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/__init__.py +0 -0
  106. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/clients/__init__.py +0 -0
  107. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/clients/adapters/__init__.py +0 -0
  108. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/clients/adapters/anthropic.py +0 -0
  109. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/clients/adapters/anthropic_translation.py +0 -0
  110. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/clients/adapters/http_helpers.py +0 -0
  111. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/clients/adapters/http_model_client.py +0 -0
  112. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/clients/adapters/httpx_sharding.py +0 -0
  113. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/clients/adapters/openai_compatible.py +0 -0
  114. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/clients/base.py +0 -0
  115. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/clients/errors.py +0 -0
  116. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/clients/factory.py +0 -0
  117. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/clients/model_request_executor.py +0 -0
  118. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/clients/parsing.py +0 -0
  119. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/clients/retry.py +0 -0
  120. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/clients/types.py +0 -0
  121. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/errors.py +0 -0
  122. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/facade.py +0 -0
  123. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/factory.py +0 -0
  124. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/parsers/__init__.py +0 -0
  125. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/parsers/errors.py +0 -0
  126. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/parsers/parser.py +0 -0
  127. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/parsers/postprocessors.py +0 -0
  128. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/parsers/tag_parsers.py +0 -0
  129. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/recipes/base.py +0 -0
  130. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/recipes/response_recipes.py +0 -0
  131. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/registry.py +0 -0
  132. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/request_admission/config.py +0 -0
  133. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/request_admission/limits.py +0 -0
  134. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/request_admission/outcomes.py +0 -0
  135. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/request_admission/pressure.py +0 -0
  136. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/request_admission/queue.py +0 -0
  137. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/request_admission/resolver.py +0 -0
  138. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/request_admission/resources.py +0 -0
  139. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/resources.py +0 -0
  140. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/usage.py +0 -0
  141. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/usage_events.py +0 -0
  142. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/utils.py +0 -0
  143. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/processing/__init__.py +0 -0
  144. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/processing/ginja/__init__.py +0 -0
  145. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/processing/ginja/ast.py +0 -0
  146. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/processing/ginja/environment.py +0 -0
  147. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/processing/ginja/exceptions.py +0 -0
  148. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/processing/ginja/record.py +0 -0
  149. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/processing/gsonschema/__init__.py +0 -0
  150. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/processing/gsonschema/exceptions.py +0 -0
  151. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/processing/gsonschema/types.py +0 -0
  152. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/processing/gsonschema/validators.py +0 -0
  153. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/processing/processors/__init__.py +0 -0
  154. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/processing/processors/base.py +0 -0
  155. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/processing/processors/drop_columns.py +0 -0
  156. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/processing/processors/registry.py +0 -0
  157. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/processing/utils.py +0 -0
  158. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/progress/__init__.py +0 -0
  159. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/progress/reporter.py +0 -0
  160. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/progress/terminal/__init__.py +0 -0
  161. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/progress/tracker.py +0 -0
  162. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/readiness.py +0 -0
  163. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/registry/base.py +0 -0
  164. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/registry/data_designer_registry.py +0 -0
  165. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/registry/errors.py +0 -0
  166. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/resources/__init__.py +0 -0
  167. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/resources/agent_rollout/__init__.py +0 -0
  168. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/resources/agent_rollout/atif.py +0 -0
  169. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/resources/agent_rollout/pi_coding_agent.py +0 -0
  170. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/resources/agent_rollout/registry.py +0 -0
  171. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/resources/agent_rollout/types.py +0 -0
  172. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/resources/managed_dataset_generator.py +0 -0
  173. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/resources/person_reader.py +0 -0
  174. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/resources/resource_provider.py +0 -0
  175. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/constraints.py +0 -0
  176. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/data_sources/base.py +0 -0
  177. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/data_sources/errors.py +0 -0
  178. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/data_sources/sources.py +0 -0
  179. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/entities/__init__.py +0 -0
  180. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/entities/assets/zip_area_code_map.parquet +0 -0
  181. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/entities/dataset_based_person_fields.py +0 -0
  182. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/entities/email_address_utils.py +0 -0
  183. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/entities/errors.py +0 -0
  184. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/entities/national_id_utils.py +0 -0
  185. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/entities/person.py +0 -0
  186. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/entities/phone_number.py +0 -0
  187. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/errors.py +0 -0
  188. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/generator.py +0 -0
  189. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/jinja_utils.py +0 -0
  190. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/people_gen.py +0 -0
  191. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/person_constants.py +0 -0
  192. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/schema_builder.py +0 -0
  193. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/secret_resolver.py +0 -0
  194. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/storage/__init__.py +0 -0
  195. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/storage/media_storage.py +0 -0
  196. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/testing/__init__.py +0 -0
  197. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/testing/fixtures.py +0 -0
  198. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/testing/observability.py +0 -0
  199. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/testing/seed_readers.py +0 -0
  200. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/testing/stubs.py +0 -0
  201. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/testing/utils.py +0 -0
  202. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/utils/__init__.py +0 -0
  203. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/utils/token_counting.py +0 -0
  204. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/validators/__init__.py +0 -0
  205. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/validators/local_callable.py +0 -0
  206. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/validators/python.py +0 -0
  207. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/validators/remote.py +0 -0
  208. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/validators/sql.py +0 -0
  209. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/__init__.py +0 -0
  210. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/conftest.py +0 -0
  211. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/__init__.py +0 -0
  212. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/analysis/column_profilers/test_base.py +0 -0
  213. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/analysis/column_profilers/test_judge_score_profiler.py +0 -0
  214. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/analysis/conftest.py +0 -0
  215. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/analysis/test_column_statistics_calculator.py +0 -0
  216. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/analysis/test_data/artifacts/dataset/column_configs.json +0 -0
  217. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/analysis/test_data/artifacts/dataset/dataset.json +0 -0
  218. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/analysis/test_data/artifacts/dataset/metadata.json +0 -0
  219. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/analysis/test_dataset_profiler.py +0 -0
  220. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/analysis/test_errors.py +0 -0
  221. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/analysis/utils/test_column_statistics_calculations.py +0 -0
  222. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/analysis/utils/test_judge_score_processing.py +0 -0
  223. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/column_generators/generators/__init__.py +0 -0
  224. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/column_generators/generators/test_async_generators.py +0 -0
  225. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/column_generators/generators/test_column_generator_base.py +0 -0
  226. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/column_generators/generators/test_custom.py +0 -0
  227. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/column_generators/generators/test_image.py +0 -0
  228. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/column_generators/generators/test_llm_completion_generators.py +0 -0
  229. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/column_generators/generators/test_samplers.py +0 -0
  230. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/column_generators/generators/test_seed_dataset.py +0 -0
  231. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/column_generators/test_registry.py +0 -0
  232. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/column_generators/utils/test_column_generator_errors.py +0 -0
  233. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/column_generators/utils/test_generator_classification.py +0 -0
  234. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/column_generators/utils/test_judge_score_factory.py +0 -0
  235. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/column_generators/utils/test_prompt_renderer.py +0 -0
  236. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/conftest.py +0 -0
  237. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/scheduling/test_completion.py +0 -0
  238. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/scheduling/test_queue.py +0 -0
  239. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/scheduling/test_resolver.py +0 -0
  240. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/scheduling/test_resources.py +0 -0
  241. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/scheduling/test_task_admission.py +0 -0
  242. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/scheduling/test_task_model.py +0 -0
  243. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/scheduling/test_task_policies.py +0 -0
  244. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/test_async_builder_integration.py +0 -0
  245. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/test_async_scheduler.py +0 -0
  246. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/test_multi_column_configs.py +0 -0
  247. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/utils/test_async_concurrency.py +0 -0
  248. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/utils/test_concurrency.py +0 -0
  249. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/utils/test_config_compiler.py +0 -0
  250. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/utils/test_execution_graph.py +0 -0
  251. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/utils/test_skip_evaluator.py +0 -0
  252. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/utils/test_skip_tracker.py +0 -0
  253. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/utils/test_topological_sort.py +0 -0
  254. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/fork_probe.py +0 -0
  255. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/mcp/conftest.py +0 -0
  256. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/mcp/test_mcp_facade.py +0 -0
  257. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/mcp/test_mcp_factory.py +0 -0
  258. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/mcp/test_mcp_registry.py +0 -0
  259. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/__init__.py +0 -0
  260. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/clients/__init__.py +0 -0
  261. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/clients/conftest.py +0 -0
  262. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/clients/test_anthropic.py +0 -0
  263. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/clients/test_anthropic_translation.py +0 -0
  264. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/clients/test_client_errors.py +0 -0
  265. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/clients/test_factory.py +0 -0
  266. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/clients/test_httpx_sharding.py +0 -0
  267. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/clients/test_model_request_executor.py +0 -0
  268. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/clients/test_native_http_clients.py +0 -0
  269. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/clients/test_openai_compatible.py +0 -0
  270. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/clients/test_parsing.py +0 -0
  271. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/clients/test_retry.py +0 -0
  272. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/clients/test_types.py +0 -0
  273. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/conftest.py +0 -0
  274. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/parsers/test_parser.py +0 -0
  275. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/parsers/test_parsers_types.py +0 -0
  276. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/parsers/test_postprocessors.py +0 -0
  277. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/parsers/test_tag_parsers.py +0 -0
  278. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/recipes/test_recipe_base.py +0 -0
  279. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/recipes/test_response_recipes.py +0 -0
  280. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/request_admission/test_controller.py +0 -0
  281. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/request_admission/test_request_queue.py +0 -0
  282. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/stub_secrets.json +0 -0
  283. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/test_facade.py +0 -0
  284. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/test_import_order.py +0 -0
  285. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/test_model_errors.py +0 -0
  286. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/test_model_registry.py +0 -0
  287. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/test_model_utils.py +0 -0
  288. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/test_usage.py +0 -0
  289. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/processing/__init__.py +0 -0
  290. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/processing/ginja/__init__.py +0 -0
  291. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/processing/ginja/test_ast.py +0 -0
  292. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/processing/ginja/test_environment.py +0 -0
  293. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/processing/ginja/test_exceptions.py +0 -0
  294. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/processing/ginja/test_record.py +0 -0
  295. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/processing/gsonschema/__init__.py +0 -0
  296. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/processing/gsonschema/test_exceptions.py +0 -0
  297. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/processing/gsonschema/test_schema_transformers.py +0 -0
  298. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/processing/gsonschema/test_types.py +0 -0
  299. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/processing/gsonschema/test_validators.py +0 -0
  300. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/processing/processors/__init__.py +0 -0
  301. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/processing/processors/test_drop_columns.py +0 -0
  302. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/processing/processors/test_registry.py +0 -0
  303. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/processing/processors/test_schema_transform.py +0 -0
  304. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/processing/test_utils.py +0 -0
  305. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/progress/terminal/test_throughput_panel.py +0 -0
  306. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/progress/test_tracker.py +0 -0
  307. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/registry/__init__.py +0 -0
  308. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/registry/conftest.py +0 -0
  309. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/registry/test_base.py +0 -0
  310. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/registry/test_data_designer_registry.py +0 -0
  311. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/registry/test_errors.py +0 -0
  312. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/resources/__init__.py +0 -0
  313. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/resources/agent_rollout/__init__.py +0 -0
  314. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/resources/agent_rollout/test_atif.py +0 -0
  315. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/resources/agent_rollout/test_claude_code.py +0 -0
  316. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/resources/agent_rollout/test_pi_coding_agent.py +0 -0
  317. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/resources/conftest.py +0 -0
  318. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/resources/test_managed_dataset_generator.py +0 -0
  319. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/resources/test_person_reader.py +0 -0
  320. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/resources/test_resource_provider.py +0 -0
  321. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/sampling_gen/conftest.py +0 -0
  322. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/sampling_gen/data_sources/test_sampler_errors.py +0 -0
  323. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/sampling_gen/data_sources/test_sources.py +0 -0
  324. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/sampling_gen/entities/test_email_address_utils.py +0 -0
  325. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/sampling_gen/entities/test_national_id_utils.py +0 -0
  326. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/sampling_gen/entities/test_person.py +0 -0
  327. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/sampling_gen/entities/test_phone_number.py +0 -0
  328. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/sampling_gen/test_column.py +0 -0
  329. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/sampling_gen/test_constraints.py +0 -0
  330. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/sampling_gen/test_generator.py +0 -0
  331. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/sampling_gen/test_generator_rounding.py +0 -0
  332. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/sampling_gen/test_jinja_utils.py +0 -0
  333. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/sampling_gen/test_people_gen.py +0 -0
  334. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/sampling_gen/test_schema.py +0 -0
  335. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/storage/__init__.py +0 -0
  336. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/storage/test_artifact_storage.py +0 -0
  337. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/storage/test_media_storage.py +0 -0
  338. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/test_capacity.py +0 -0
  339. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/test_configurable_task.py +0 -0
  340. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/test_dataset_metadata.py +0 -0
  341. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/test_engine_errors.py +0 -0
  342. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/test_model_provider.py +0 -0
  343. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/test_observability.py +0 -0
  344. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/test_readiness.py +0 -0
  345. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/test_secret_resolver.py +0 -0
  346. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/test_validation.py +0 -0
  347. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/testing/test_plugin_testing_utils.py +0 -0
  348. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/utils/test_token_counting.py +0 -0
  349. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/validators/test_local_callable.py +0 -0
  350. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/validators/test_python.py +0 -0
  351. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/validators/test_remote.py +0 -0
  352. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/validators/test_sql.py +0 -0
  353. {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/test_plugin_manager.py +0 -0
@@ -1,22 +1,21 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: data-designer-engine
3
- Version: 0.9.7
3
+ Version: 0.10.0
4
4
  Summary: Generation engine for DataDesigner synthetic data generation
5
5
  License-Expression: Apache-2.0
6
6
  Classifier: Development Status :: 4 - Beta
7
7
  Classifier: Intended Audience :: Developers
8
8
  Classifier: Intended Audience :: Science/Research
9
9
  Classifier: License :: OSI Approved :: Apache Software License
10
- Classifier: Programming Language :: Python :: 3.10
11
10
  Classifier: Programming Language :: Python :: 3.11
12
11
  Classifier: Programming Language :: Python :: 3.12
13
12
  Classifier: Programming Language :: Python :: 3.13
14
13
  Classifier: Programming Language :: Python :: 3.14
15
14
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
16
- Requires-Python: >=3.10
15
+ Requires-Python: >=3.11
17
16
  Requires-Dist: anyascii<1,>=0.3.3
18
17
  Requires-Dist: asciichartpy<2,>=1.5.25
19
- Requires-Dist: data-designer-config==0.9.7
18
+ Requires-Dist: data-designer-config==0.10.0
20
19
  Requires-Dist: duckdb<2,>=1.5.0
21
20
  Requires-Dist: faker<21,>=20.1.0
22
21
  Requires-Dist: fsspec<2027,>=2026.6.0
@@ -24,7 +23,7 @@ Requires-Dist: httpx-retries<1,>=0.4.2
24
23
  Requires-Dist: httpx<1,>=0.27.2
25
24
  Requires-Dist: huggingface-hub<2,>=1.0.1
26
25
  Requires-Dist: jinja2<4,>=3.1.6
27
- Requires-Dist: json-repair<1,>=0.48.0
26
+ Requires-Dist: json-repair<1,>=0.60.1
28
27
  Requires-Dist: jsonpath-rust-bindings<2,>=1.0
29
28
  Requires-Dist: jsonschema<5,>=4.0.0
30
29
  Requires-Dist: lxml<7,>=6.1.1
@@ -3,7 +3,7 @@ name = "data-designer-engine"
3
3
  dynamic = ["version", "dependencies"]
4
4
  description = "Generation engine for DataDesigner synthetic data generation"
5
5
  readme = "README.md"
6
- requires-python = ">=3.10"
6
+ requires-python = ">=3.11"
7
7
  license = "Apache-2.0"
8
8
 
9
9
  classifiers = [
@@ -12,7 +12,6 @@ classifiers = [
12
12
  "Intended Audience :: Science/Research",
13
13
  "Topic :: Scientific/Engineering :: Artificial Intelligence",
14
14
  "License :: OSI Approved :: Apache Software License",
15
- "Programming Language :: Python :: 3.10",
16
15
  "Programming Language :: Python :: 3.11",
17
16
  "Programming Language :: Python :: 3.12",
18
17
  "Programming Language :: Python :: 3.13",
@@ -43,7 +42,7 @@ dependencies = [
43
42
  "httpx-retries>=0.4.2,<1",
44
43
  "huggingface-hub>=1.0.1,<2",
45
44
  "jinja2>=3.1.6,<4",
46
- "json-repair>=0.48.0,<1",
45
+ "json-repair>=0.60.1,<1",
47
46
  "jsonpath-rust-bindings>=1.0,<2",
48
47
  "jsonschema>=4.0.0,<5",
49
48
  "lxml>=6.1.1,<7", # 6.1.1 fixes CVE-2026-49825
@@ -5,10 +5,10 @@ from __future__ import annotations
5
5
 
6
6
  import logging
7
7
  from abc import ABC, abstractmethod
8
+ from typing import Self
8
9
 
9
10
  import pandas as pd
10
11
  from pydantic import BaseModel, model_validator
11
- from typing_extensions import Self
12
12
 
13
13
  from data_designer.config.base import ConfigBase, SingleColumnConfig
14
14
  from data_designer.config.column_types import DataDesignerColumnType
@@ -4,10 +4,9 @@
4
4
  from __future__ import annotations
5
5
 
6
6
  import logging
7
- from typing import TYPE_CHECKING, Any, TypeAlias
7
+ from typing import TYPE_CHECKING, Any, Self, TypeAlias
8
8
 
9
9
  from pydantic import BaseModel
10
- from typing_extensions import Self
11
10
 
12
11
  from data_designer.config.analysis.column_statistics import (
13
12
  DEFAULT_COLUMN_STATISTICS_MAP,
@@ -9,8 +9,9 @@ import functools
9
9
  import hashlib
10
10
  import logging
11
11
  from abc import ABC, abstractmethod
12
+ from collections.abc import Coroutine
12
13
  from dataclasses import dataclass, field
13
- from typing import TYPE_CHECKING, Any, Coroutine, TypeVar, overload
14
+ from typing import TYPE_CHECKING, Any, TypeVar, overload
14
15
 
15
16
  from data_designer.config.column_configs import GenerationStrategy
16
17
  from data_designer.config.scheduling import SchedulingMetadata, SchedulingMetadataError
@@ -68,7 +69,7 @@ def _run_coroutine_sync(coro: Coroutine[Any, Any, _T]) -> _T:
68
69
  timed_out = False
69
70
  try:
70
71
  result = future.result(timeout=SYNC_BRIDGE_TIMEOUT)
71
- except concurrent.futures.TimeoutError as exc:
72
+ except TimeoutError as exc:
72
73
  timed_out = True
73
74
  logger.warning(f"⚠️ Sync bridge timed out after {SYNC_BRIDGE_TIMEOUT}s; background thread still running")
74
75
  raise TimeoutError(f"_run_coroutine_sync timed out after {SYNC_BRIDGE_TIMEOUT}s") from exc
@@ -128,7 +128,7 @@ class _AsyncBridgedModelFacade:
128
128
  return future.result(timeout=max(0.0, min(_BRIDGE_CANCEL_POLL_S, deadline - time.monotonic())))
129
129
  except concurrent.futures.CancelledError as exc:
130
130
  raise asyncio.CancelledError from exc
131
- except concurrent.futures.TimeoutError as exc:
131
+ except TimeoutError as exc:
132
132
  if is_run_cancellation_requested():
133
133
  future.cancel()
134
134
  raise asyncio.CancelledError from exc
@@ -28,8 +28,19 @@ class EmbeddingCellGenerator(ColumnGeneratorWithModel[EmbeddingColumnConfig]):
28
28
  return GenerationStrategy.CELL_BY_CELL
29
29
 
30
30
  def _prepare_embedding_inputs(self, data: dict) -> list[str]:
31
- deserialized_record = deserialize_json_values(data)
32
- return parse_list_string(deserialized_record[self.config.target_column])
31
+ cell_value = data[self.config.target_column]
32
+ deserialized_value = deserialize_json_values(data)[self.config.target_column]
33
+ if isinstance(deserialized_value, list):
34
+ return [str(text).strip() for text in deserialized_value]
35
+ if isinstance(deserialized_value, str):
36
+ return parse_list_string(deserialized_value)
37
+ if not isinstance(cell_value, str):
38
+ raise ValueError(
39
+ f"Embedding target column {self.config.target_column!r} must contain text or a list of texts, "
40
+ f"got {type(cell_value).__name__}"
41
+ )
42
+ # A JSON scalar such as "123" or "true" is embedded as the user wrote it.
43
+ return [cell_value.strip()]
33
44
 
34
45
  def generate(self, data: dict) -> dict:
35
46
  input_texts = self._prepare_embedding_inputs(data)
@@ -120,7 +120,16 @@ class ExpressionColumnGenerator(WithJinja2UserTemplateRendering, ColumnGenerator
120
120
  elif self.config.dtype == "float":
121
121
  return float(value)
122
122
  elif self.config.dtype == "int":
123
- return int(float(value))
123
+ # Parse integer strings directly so values beyond 2**53 keep their exact value.
124
+ # Float-looking strings such as "3.0" or "1e3" still go through float().
125
+ try:
126
+ result = int(value)
127
+ except ValueError:
128
+ return int(float(value))
129
+ # pandas cannot build a column from an int beyond the float range, so reject it
130
+ # here and drop only this row, as int(float(value)) did.
131
+ float(result)
132
+ return result
124
133
  elif self.config.dtype == "bool":
125
134
  try:
126
135
  return bool(int(float(value)))
@@ -5,8 +5,9 @@ from __future__ import annotations
5
5
 
6
6
  import logging
7
7
  import random
8
+ from collections.abc import Callable
8
9
  from functools import partial
9
- from typing import TYPE_CHECKING, Callable
10
+ from typing import TYPE_CHECKING
10
11
 
11
12
  from data_designer.config.utils.constants import LOCALES_WITH_MANAGED_DATASETS
12
13
  from data_designer.engine.column_generators.generators.base import FromScratchColumnGenerator, GenerationStrategy
@@ -94,12 +94,13 @@ class ValidationColumnGenerator(ColumnGeneratorFullColumn[ValidationColumnConfig
94
94
  if outputs_as_dicts is None:
95
95
  outputs_as_dicts = [{cols[0]: output.model_dump(mode="json")} for output in concatenated_outputs]
96
96
  else:
97
- for dict_output in outputs_as_dicts:
98
- dict_output[cols[0]] = concatenated_outputs[0].model_dump(mode="json")
97
+ for dict_output, output in zip(outputs_as_dicts, concatenated_outputs, strict=True):
98
+ dict_output[cols[0]] = output.model_dump(mode="json")
99
99
  else:
100
100
  outputs_as_dicts = [output.model_dump(mode="json") for output in concatenated_outputs]
101
101
 
102
- validation_results = lazy.pd.DataFrame({self.config.name: outputs_as_dicts})
102
+ # Match the input index so results stay aligned when upstream rows were dropped.
103
+ validation_results = lazy.pd.DataFrame({self.config.name: outputs_as_dicts}, index=data.index)
103
104
  return lazy.pd.concat([data, validation_results], axis=1)
104
105
 
105
106
  def _validate_in_parallel(self, validator: BaseValidator, batched_records: list[list[dict]]) -> pd.DataFrame:
@@ -134,7 +135,15 @@ class ValidationColumnGenerator(ColumnGeneratorFullColumn[ValidationColumnConfig
134
135
 
135
136
  def _validate_batch(self, validator: BaseValidator, batch: list[dict]) -> ValidationResult:
136
137
  try:
137
- return validator.run_validation(batch)
138
+ result = validator.run_validation(batch)
139
+ # Check each batch before results are flattened: a short batch and an excess batch could
140
+ # otherwise cancel out in the total and attach results to the wrong records.
141
+ if len(result.data) != len(batch):
142
+ raise DataDesignerRuntimeError(
143
+ f"Validator for column {self.config.name!r} returned {len(result.data)} results "
144
+ f"for a batch of {len(batch)} records."
145
+ )
146
+ return result
138
147
  except Exception as e:
139
148
  error_to_display = str(e).replace("\n", "\n ") # add spaces to improve readability
140
149
  logger.error(f"Batch could not be validated:\n {error_to_display}")
@@ -12,6 +12,7 @@ from data_designer.config.models import ModelConfig
12
12
  from data_designer.config.run_config import JinjaRenderingEngine
13
13
  from data_designer.config.utils.code_lang import CodeLang
14
14
  from data_designer.config.utils.misc import extract_keywords_from_jinja2_template
15
+ from data_designer.config.utils.storage_schema import compile_json_storage_schema
15
16
  from data_designer.config.utils.type_helpers import StrEnum
16
17
  from data_designer.engine.column_generators.utils.errors import PromptTemplateRenderError
17
18
  from data_designer.engine.column_generators.utils.judge_score_factory import (
@@ -97,7 +98,7 @@ def create_response_recipe(
97
98
  )
98
99
  if column_config.column_type == DataDesignerColumnType.LLM_STRUCTURED:
99
100
  return StructuredResponseRecipe(
100
- json_schema=column_config.output_format,
101
+ json_schema=compile_json_storage_schema(column_config.output_format)[0],
101
102
  )
102
103
  if column_config.column_type == DataDesignerColumnType.LLM_JUDGE:
103
104
  return PydanticResponseRecipe(
@@ -9,6 +9,8 @@ from data_designer.config.column_configs import SamplerColumnConfig, SeedDataset
9
9
  from data_designer.config.data_designer_config import DataDesignerConfig
10
10
  from data_designer.config.errors import InvalidConfigError
11
11
  from data_designer.config.sampler_params import UUIDSamplerParams
12
+ from data_designer.engine.processing.processors.base import Processor
13
+ from data_designer.engine.processing.processors.registry import ProcessorRegistry, create_default_processor_registry
12
14
  from data_designer.engine.resources.resource_provider import ResourceProvider
13
15
  from data_designer.engine.resources.seed_reader import SeedReader, SeedReaderConfigError
14
16
  from data_designer.engine.validation import (
@@ -21,13 +23,75 @@ from data_designer.engine.validation import (
21
23
  logger = logging.getLogger(__name__)
22
24
 
23
25
 
24
- def compile_data_designer_config(config: DataDesignerConfig, resource_provider: ResourceProvider) -> DataDesignerConfig:
26
+ def compile_data_designer_config(
27
+ config: DataDesignerConfig,
28
+ resource_provider: ResourceProvider,
29
+ processor_registry: ProcessorRegistry | None = None,
30
+ ) -> DataDesignerConfig:
31
+ """Resolve seed and pre-batch schemas, then validate downstream generation.
32
+
33
+ Args:
34
+ config: Configuration to enrich in place.
35
+ resource_provider: Resources used to resolve the raw seed schema.
36
+ processor_registry: Runtime processor implementations used to identify
37
+ pre-batch callbacks. Defaults to the built-in and plugin registry.
38
+
39
+ Returns:
40
+ The enriched, validated configuration.
41
+
42
+ Raises:
43
+ InvalidConfigError: If seed resolution, processor declarations, or
44
+ downstream validation fail.
45
+ """
25
46
  _resolve_and_add_seed_columns(config, resource_provider.seed_reader)
47
+ _apply_processor_column_modifications(config, processor_registry or create_default_processor_registry())
48
+ _mark_processor_dropped_seed_columns(
49
+ config, [column for column in config.columns if isinstance(column, SeedDatasetColumnConfig)]
50
+ )
26
51
  _add_internal_row_id_column_if_needed(config)
27
- _validate(config)
52
+ _validate(config, preserve_dropped_columns=resource_provider.run_config.preserve_dropped_columns)
28
53
  return config
29
54
 
30
55
 
56
+ def _apply_processor_column_modifications(config: DataDesignerConfig, registry: ProcessorRegistry) -> None:
57
+ """Adjusts columns according to columns_added and columns_removed declared by processors."""
58
+ for processor in config.processors or []:
59
+ if not processor.columns_added and not processor.columns_removed:
60
+ continue
61
+ processor_cls = registry.get_for_config_type(type(processor))
62
+ if processor_cls.process_before_batch is Processor.process_before_batch:
63
+ continue
64
+ if processor.columns_removed:
65
+ current_columns = {col.name for col in config.columns}
66
+ for col_name in processor.columns_removed:
67
+ if col_name not in current_columns:
68
+ raise InvalidConfigError(
69
+ f"🛑 Processor '{processor.name}' cannot remove column '{col_name}' because it does not exist."
70
+ )
71
+ for column in config.columns:
72
+ if column.name in processor.columns_removed and not isinstance(column, SeedDatasetColumnConfig):
73
+ raise InvalidConfigError(
74
+ f"🛑 Pre-batch processor '{processor.name}' can only remove seed columns; "
75
+ f"'{column.name}' is a generated column."
76
+ )
77
+ removed_set = set(processor.columns_removed)
78
+ config.columns = [col for col in config.columns if col.name not in removed_set]
79
+
80
+ if processor.columns_added:
81
+ if config.seed_config is None:
82
+ raise InvalidConfigError(
83
+ f"🛑 Processor '{processor.name}' specifies 'columns_added', but no seed dataset is configured."
84
+ )
85
+ existing_columns = set(_get_allowed_references(config))
86
+ for col_name in processor.columns_added:
87
+ if col_name in existing_columns:
88
+ raise InvalidConfigError(
89
+ f"🛑 Processor '{processor.name}' adds column '{col_name}' which collides with an existing column."
90
+ )
91
+ config.columns.append(SeedDatasetColumnConfig(name=col_name))
92
+ existing_columns.add(col_name)
93
+
94
+
31
95
  def _resolve_and_add_seed_columns(config: DataDesignerConfig, seed_reader: SeedReader | None) -> None:
32
96
  """Fetches the seed dataset column names, ensures there are no conflicts
33
97
  with other columns, and adds seed column configs to the DataDesignerConfig.
@@ -50,7 +114,6 @@ def _resolve_and_add_seed_columns(config: DataDesignerConfig, seed_reader: SeedR
50
114
 
51
115
  seed_columns = [SeedDatasetColumnConfig(name=col_name) for col_name in seed_col_names]
52
116
  config.columns.extend(seed_columns)
53
- _mark_processor_dropped_seed_columns(config, seed_columns)
54
117
 
55
118
 
56
119
  def _mark_processor_dropped_seed_columns(
@@ -58,8 +121,8 @@ def _mark_processor_dropped_seed_columns(
58
121
  ) -> None:
59
122
  """Marks seed columns targeted by a drop processor with `drop=True`.
60
123
 
61
- `DataDesignerConfigBuilder.add_processor` does this for configured columns, but seed
62
- columns don't exist yet at that point — they're resolved here. Without this, a
124
+ `DataDesignerConfigBuilder.build` does this for configured columns, but seed columns
125
+ aren't known to the builder — they're resolved here. Without this, a
63
126
  processor-dropped seed column is still handed to the dataset profiler, which either
64
127
  reports a column the emitted dataset no longer has or fails outright when
65
128
  `preserve_dropped_columns=False`.
@@ -84,9 +147,9 @@ def _add_internal_row_id_column_if_needed(config: DataDesignerConfig) -> None:
84
147
  config: The DataDesigner configuration to potentially modify.
85
148
  """
86
149
  has_sampler_column = any(isinstance(col, SamplerColumnConfig) for col in config.columns)
87
- has_seed_dataset_column = any(isinstance(col, SeedDatasetColumnConfig) for col in config.columns)
150
+ has_seed_dataset = config.seed_config is not None
88
151
 
89
- if not has_sampler_column and not has_seed_dataset_column:
152
+ if not has_sampler_column and not has_seed_dataset:
90
153
  logger.warning(
91
154
  "🔔 No sampler column or seed dataset detected. Adding UUID column '_internal_row_id' (marked for drop) to enable generation."
92
155
  )
@@ -99,12 +162,13 @@ def _add_internal_row_id_column_if_needed(config: DataDesignerConfig) -> None:
99
162
  config.columns.insert(0, id_column)
100
163
 
101
164
 
102
- def _validate(config: DataDesignerConfig) -> None:
165
+ def _validate(config: DataDesignerConfig, *, preserve_dropped_columns: bool = True) -> None:
103
166
  allowed_references = _get_allowed_references(config)
104
167
  violations = validate_data_designer_config(
105
168
  columns=config.columns,
106
169
  processor_configs=config.processors or [],
107
170
  allowed_references=allowed_references,
171
+ preserve_dropped_columns=preserve_dropped_columns,
108
172
  )
109
173
  rich_print_violations(violations)
110
174
  if len([v for v in violations if v.level == ViolationLevel.ERROR]) > 0:
@@ -10,10 +10,10 @@ import logging
10
10
  import time
11
11
  import uuid
12
12
  from collections import Counter, defaultdict, deque
13
- from collections.abc import Coroutine, Mapping
13
+ from collections.abc import Callable, Coroutine, Mapping
14
14
  from dataclasses import dataclass
15
15
  from threading import Event
16
- from typing import TYPE_CHECKING, Any, Callable
16
+ from typing import TYPE_CHECKING, Any
17
17
 
18
18
  import data_designer.lazy_heavy_imports as lazy
19
19
  from data_designer.config.column_configs import ExpressionColumnConfig, GenerationStrategy
@@ -59,10 +59,7 @@ from data_designer.engine.dataset_builders.scheduling.task_admission import (
59
59
  from data_designer.engine.dataset_builders.scheduling.task_model import SliceRef, Task, TaskTrace
60
60
  from data_designer.engine.dataset_builders.scheduling.task_policies import BoundedBorrowTaskAdmissionPolicyConfig
61
61
  from data_designer.engine.dataset_builders.utils.skip_evaluator import should_skip_column_for_record
62
- from data_designer.engine.dataset_builders.utils.skip_tracker import (
63
- apply_skip_to_record,
64
- strip_skip_metadata_from_records,
65
- )
62
+ from data_designer.engine.dataset_builders.utils.skip_tracker import apply_skip_to_record
66
63
  from data_designer.engine.errors import DataDesignerError
67
64
  from data_designer.engine.models.clients.errors import ProviderError
68
65
  from data_designer.engine.models.errors import (
@@ -1560,7 +1557,7 @@ class AsyncTaskScheduler:
1560
1557
  async def _wait_before_retryable_resalvage(self) -> None:
1561
1558
  """Pace repeated preserved retryable salvage cycles to avoid a hot loop."""
1562
1559
  self._wake_event.clear()
1563
- with contextlib.suppress(asyncio.TimeoutError):
1560
+ with contextlib.suppress(TimeoutError):
1564
1561
  await asyncio.wait_for(self._wake_event.wait(), timeout=self._retryable_resalvage_delay_seconds())
1565
1562
  self._raise_if_fatal_worker_error()
1566
1563
 
@@ -2246,8 +2243,7 @@ class AsyncTaskScheduler:
2246
2243
  # empty DataFrame which would yield zero values and fail
2247
2244
  # ``update_batch``.
2248
2245
  if self._buffer_manager is not None:
2249
- records = [self._buffer_manager.get_row(task.row_group, ri) for ri in range(rg_size)]
2250
- input_df = lazy.pd.DataFrame(records)
2246
+ input_df = self._buffer_manager.get_dataframe(task.row_group, row_indices=list(range(rg_size)))
2251
2247
  else:
2252
2248
  input_df = lazy.pd.DataFrame(index=range(rg_size))
2253
2249
  result_df = await self._run_generator_call(
@@ -2292,8 +2288,7 @@ class AsyncTaskScheduler:
2292
2288
  if self._buffer_manager is not None:
2293
2289
  pre_dropped: set[int] = {ri for ri in range(rg_size) if self._buffer_manager.is_dropped(task.row_group, ri)}
2294
2290
  active_row_indices = [ri for ri in range(rg_size) if ri not in pre_dropped]
2295
- records = [self._buffer_manager.get_row(task.row_group, ri) for ri in active_row_indices]
2296
- input_df = lazy.pd.DataFrame(records, index=active_row_indices) if records else lazy.pd.DataFrame()
2291
+ input_df = self._buffer_manager.get_dataframe(task.row_group, row_indices=active_row_indices)
2297
2292
  else:
2298
2293
  pre_dropped = set()
2299
2294
  active_row_indices = list(range(rg_size))
@@ -2413,7 +2408,6 @@ class AsyncTaskScheduler:
2413
2408
 
2414
2409
  if self._buffer_manager is not None:
2415
2410
  pre_dropped: set[int] = {ri for ri in range(rg_size) if self._buffer_manager.is_dropped(task.row_group, ri)}
2416
- active_rows_data: list[dict] = []
2417
2411
  active_row_indices: list[int] = []
2418
2412
 
2419
2413
  # Skip evaluation only applies to single-column configs.
@@ -2431,14 +2425,9 @@ class AsyncTaskScheduler:
2431
2425
  pre_skipped.add(ri)
2432
2426
  continue
2433
2427
 
2434
- active_rows_data.append(record)
2435
2428
  active_row_indices.append(ri)
2436
2429
 
2437
- batch_df = (
2438
- lazy.pd.DataFrame(strip_skip_metadata_from_records(active_rows_data), index=active_row_indices)
2439
- if active_rows_data
2440
- else lazy.pd.DataFrame()
2441
- )
2430
+ batch_df = self._buffer_manager.get_dataframe(task.row_group, row_indices=active_row_indices)
2442
2431
  else:
2443
2432
  batch_df = lazy.pd.DataFrame()
2444
2433
  pre_dropped = set()
@@ -12,9 +12,10 @@ import logging
12
12
  import os
13
13
  import time
14
14
  import uuid
15
+ from collections.abc import Callable
15
16
  from dataclasses import dataclass
16
17
  from pathlib import Path
17
- from typing import TYPE_CHECKING, Any, Callable
18
+ from typing import TYPE_CHECKING, Any
18
19
 
19
20
  from pydantic import ValidationError
20
21
 
@@ -25,8 +26,8 @@ from data_designer.config.data_designer_config import DataDesignerConfig
25
26
  from data_designer.config.processors import (
26
27
  DropColumnsProcessorConfig,
27
28
  ProcessorConfig,
28
- ProcessorType,
29
29
  )
30
+ from data_designer.config.utils.storage_schema import JSON_STORAGE_RUN_KEY, JsonStoragePlan, compile_json_storage_schema
30
31
  from data_designer.config.utils.type_helpers import StrEnum
31
32
  from data_designer.config.version import get_library_version
32
33
  from data_designer.engine.column_generators.generators.base import (
@@ -67,6 +68,7 @@ from data_designer.engine.storage.artifact_storage import (
67
68
  ResumeMode,
68
69
  )
69
70
  from data_designer.engine.storage.media_storage import StorageMode
71
+ from data_designer.engine.validation import resolve_processor_dropped_columns
70
72
 
71
73
  if TYPE_CHECKING:
72
74
  import pandas as pd
@@ -194,14 +196,39 @@ class DatasetBuilder:
194
196
  # when a run produces 0 records due to deterministic failures.
195
197
  self._first_non_retryable_error: Exception | None = None
196
198
 
197
- self._data_designer_config = compile_data_designer_config(data_designer_config, resource_provider)
198
- self._column_configs = compile_dataset_builder_column_configs(self._data_designer_config)
199
+ self._data_designer_config = compile_data_designer_config(
200
+ data_designer_config, resource_provider, self._registry.processors
201
+ )
202
+ self._column_configs = compile_dataset_builder_column_configs(
203
+ self._data_designer_config,
204
+ seed_column_names=(
205
+ resource_provider.seed_reader.get_column_names() if resource_provider.seed_reader is not None else None
206
+ ),
207
+ )
199
208
  processors = self._initialize_processors(self._data_designer_config.processors or [])
200
209
  self._processor_runner = ProcessorRunner(
201
210
  processors=processors,
202
211
  artifact_storage=resource_provider.artifact_storage,
203
212
  )
204
213
  self._validate_column_configs()
214
+ columns = {}
215
+ if resource_provider.seed_reader is not None:
216
+ seed_plan = resource_provider.seed_reader.get_storage_plan()
217
+ if isinstance(seed_plan, JsonStoragePlan):
218
+ seed_column_names = [
219
+ column.name
220
+ for column in self.single_column_configs
221
+ if column.column_type == DataDesignerColumnType.SEED_DATASET
222
+ ]
223
+ columns.update(seed_plan.restrict_to_columns(seed_column_names).columns)
224
+ for column in self.single_column_configs:
225
+ if column.storage_encoding == "json":
226
+ columns[column.name] = [[]]
227
+ elif getattr(column, "column_type", None) == "llm-structured":
228
+ _, paths = compile_json_storage_schema(column.output_format)
229
+ if paths:
230
+ columns[column.name] = paths
231
+ self.artifact_storage.json_storage = JsonStoragePlan(columns=columns)
205
232
 
206
233
  @property
207
234
  def artifact_storage(self) -> ArtifactStorage:
@@ -415,6 +442,8 @@ class DatasetBuilder:
415
442
  return None
416
443
 
417
444
  post_generation_state = metadata.get("post_generation_state")
445
+ if not self._json_storage_policy_matches(metadata):
446
+ raise DatasetGenerationError("Cannot resume: JSON storage contract differs from the saved run")
418
447
  if post_generation_state == "started":
419
448
  raise DatasetGenerationError(
420
449
  "🛑 Cannot resume: process_after_generation started but did not complete for this dataset. "
@@ -485,6 +514,9 @@ class DatasetBuilder:
485
514
  allow_holes=True,
486
515
  )
487
516
 
517
+ if not self._json_storage_policy_matches(metadata):
518
+ raise DatasetGenerationError("Cannot resume: JSON storage contract differs from the saved run")
519
+
488
520
  if num_records < actual_num_records:
489
521
  raise DatasetGenerationError(
490
522
  f"🛑 Cannot resume: num_records={num_records} is less than the {actual_num_records} "
@@ -678,6 +710,8 @@ class DatasetBuilder:
678
710
 
679
711
  if not self._dropped_column_artifact_policy_matches(metadata):
680
712
  return _ConfigCompatibility.INCOMPATIBLE
713
+ if not self._json_storage_policy_matches(metadata):
714
+ return _ConfigCompatibility.INCOMPATIBLE
681
715
 
682
716
  stored_hash = metadata.get("config_hash")
683
717
  stored_version = metadata.get("config_hash_version")
@@ -721,6 +755,13 @@ class DatasetBuilder:
721
755
  )
722
756
  return _ConfigCompatibility.INCOMPATIBLE
723
757
 
758
+ def _json_storage_policy_matches(self, metadata: dict[str, Any]) -> bool:
759
+ try:
760
+ stored = JsonStoragePlan.model_validate(metadata.get(JSON_STORAGE_RUN_KEY, {}))
761
+ except ValueError as exc:
762
+ raise DatasetGenerationError("Invalid JSON storage contract in run metadata") from exc
763
+ return stored == self.artifact_storage.json_storage
764
+
724
765
  def _dropped_column_artifact_policy_matches(self, metadata: dict[str, Any]) -> bool:
725
766
  """Return whether stored dropped-column artifact behavior matches this run.
726
767
 
@@ -1014,7 +1055,13 @@ class DatasetBuilder:
1014
1055
 
1015
1056
  def process_preview(self, dataset: pd.DataFrame) -> pd.DataFrame:
1016
1057
  df = self._processor_runner.run_post_batch(dataset.copy(), current_batch_number=None)
1017
- return self._processor_runner.run_after_generation_on_df(df)
1058
+ df = self._processor_runner.run_after_generation_on_df(df)
1059
+ storage_plan = self.artifact_storage.json_storage.restrict_to_columns(list(df.columns))
1060
+ if storage_plan.columns:
1061
+ df.attrs[JSON_STORAGE_RUN_KEY] = storage_plan.model_dump()
1062
+ else:
1063
+ df.attrs.pop(JSON_STORAGE_RUN_KEY, None)
1064
+ return df
1018
1065
 
1019
1066
  def _has_image_columns(self) -> bool:
1020
1067
  """Check if config has any image generation columns."""
@@ -1056,6 +1103,9 @@ class DatasetBuilder:
1056
1103
  def _initialize_processors(self, processor_configs: list[ProcessorConfig]) -> list[Processor]:
1057
1104
  # Check columns marked for drop
1058
1105
  columns_to_drop = [config.name for config in self.single_column_configs if config.drop]
1106
+ # Columns an explicit "drop columns" processor already handles take precedence, including glob targets
1107
+ explicitly_dropped = resolve_processor_dropped_columns(self.single_column_configs, processor_configs)
1108
+ columns_to_drop = [name for name in columns_to_drop if name not in explicitly_dropped]
1059
1109
 
1060
1110
  processors: list[Processor] = []
1061
1111
  for config in processor_configs:
@@ -1066,12 +1116,6 @@ class DatasetBuilder:
1066
1116
  )
1067
1117
  )
1068
1118
 
1069
- # Manually included "drop columns" processor takes precedence
1070
- if config.processor_type == ProcessorType.DROP_COLUMNS:
1071
- for column in config.column_names:
1072
- if column in columns_to_drop:
1073
- columns_to_drop.remove(column)
1074
-
1075
1119
  # If there are still columns marked for drop, add the "drop columns" processor to drop them
1076
1120
  if len(columns_to_drop) > 0:
1077
1121
  processors.append(
@@ -3,6 +3,7 @@
3
3
 
4
4
  from __future__ import annotations
5
5
 
6
+ from data_designer.config.column_configs import SeedDatasetColumnConfig
6
7
  from data_designer.config.column_types import DataDesignerColumnType
7
8
  from data_designer.config.data_designer_config import DataDesignerConfig
8
9
  from data_designer.engine.dataset_builders.multi_column_configs import (
@@ -14,7 +15,22 @@ from data_designer.engine.dataset_builders.utils.errors import ConfigCompilation
14
15
  from data_designer.engine.dataset_builders.utils.execution_graph import topologically_sort_column_configs
15
16
 
16
17
 
17
- def compile_dataset_builder_column_configs(config: DataDesignerConfig) -> list[DatasetBuilderColumnConfigT]:
18
+ def compile_dataset_builder_column_configs(
19
+ config: DataDesignerConfig, *, seed_column_names: list[str] | None = None
20
+ ) -> list[DatasetBuilderColumnConfigT]:
21
+ """Group generation tasks while preserving raw inputs for pre-batch processors.
22
+
23
+ Args:
24
+ config: Validated configuration with the schema after pre-batch processing.
25
+ seed_column_names: Raw seed names from the reader, including names removed
26
+ by pre-batch processors. Required to retain those seed-loading tasks.
27
+
28
+ Returns:
29
+ Ordered seed, sampler, and generated column tasks.
30
+
31
+ Raises:
32
+ ConfigCompilationError: If seed columns have no seed configuration.
33
+ """
18
34
  seed_column_configs = []
19
35
  sampler_column_configs = []
20
36
  generated_column_configs = []
@@ -27,6 +43,12 @@ def compile_dataset_builder_column_configs(config: DataDesignerConfig) -> list[D
27
43
  else:
28
44
  generated_column_configs.append(column_config)
29
45
 
46
+ # Raw seed columns must still be read before processors remove or replace them.
47
+ effective_seed_names = {column.name for column in seed_column_configs}
48
+ seed_column_configs.extend(
49
+ SeedDatasetColumnConfig(name=name) for name in seed_column_names or [] if name not in effective_seed_names
50
+ )
51
+
30
52
  compiled_column_configs = []
31
53
 
32
54
  if len(seed_column_configs) > 0: