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.
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/PKG-INFO +4 -5
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/pyproject.toml +2 -3
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/analysis/column_profilers/base.py +1 -1
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/analysis/column_statistics.py +1 -2
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/column_generators/generators/base.py +3 -2
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/column_generators/generators/custom.py +1 -1
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/column_generators/generators/embedding.py +13 -2
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/column_generators/generators/expression.py +10 -1
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/column_generators/generators/samplers.py +2 -1
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/column_generators/generators/validation.py +13 -4
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/column_generators/utils/prompt_renderer.py +2 -1
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/compiler.py +72 -8
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/async_scheduler.py +7 -18
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/dataset_builder.py +55 -11
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/utils/config_compiler.py +23 -1
- {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
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/parsers/types.py +1 -2
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/request_admission/controller.py +1 -1
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/telemetry.py +4 -4
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/observability.py +2 -2
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/processing/gsonschema/schema_transformers.py +1 -1
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/processing/processors/schema_transform.py +11 -2
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/progress/terminal/throughput_panel.py +2 -1
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/resources/agent_rollout/base.py +4 -2
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/resources/agent_rollout/claude_code.py +3 -3
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/resources/agent_rollout/codex.py +25 -8
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/resources/agent_rollout/hermes_agent.py +4 -4
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/resources/agent_rollout/utils.py +3 -3
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/resources/seed_reader.py +63 -5
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/column.py +1 -2
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/schema.py +1 -2
- data_designer_engine-0.10.0/src/data_designer/engine/sampling_gen/utils.py +99 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/storage/artifact_storage.py +67 -3
- data_designer_engine-0.10.0/src/data_designer/engine/storage/schema_preflight.py +191 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/validation.py +100 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/validators/base.py +2 -2
- data_designer_engine-0.10.0/tests/engine/column_generators/generators/test_embedding.py +126 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/column_generators/generators/test_expression.py +68 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/column_generators/generators/test_validation.py +195 -1
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/test_dataset_builder.py +18 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/utils/test_row_group_buffer.py +28 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/mcp/test_mcp_io.py +2 -1
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/test_telemetry.py +2 -2
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/resources/agent_rollout/test_codex.py +108 -1
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/resources/agent_rollout/test_hermes_agent.py +5 -1
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/resources/agent_rollout/test_utils.py +32 -1
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/resources/test_seed_reader.py +45 -0
- data_designer_engine-0.10.0/tests/engine/sampling_gen/test_utils.py +164 -0
- data_designer_engine-0.10.0/tests/engine/storage/test_json_storage.py +358 -0
- data_designer_engine-0.10.0/tests/engine/storage/test_preflight_context.py +199 -0
- data_designer_engine-0.10.0/tests/engine/storage/test_schema_preflight.py +380 -0
- data_designer_engine-0.10.0/tests/engine/storage/test_seed_storage_contract.py +150 -0
- data_designer_engine-0.10.0/tests/engine/test_compiler.py +551 -0
- data_designer_engine-0.9.7/src/data_designer/engine/sampling_gen/utils.py +0 -42
- data_designer_engine-0.9.7/tests/engine/column_generators/generators/test_embedding.py +0 -47
- data_designer_engine-0.9.7/tests/engine/sampling_gen/test_utils.py +0 -38
- data_designer_engine-0.9.7/tests/engine/test_compiler.py +0 -217
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/.gitignore +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/README.md +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/__init__.py +0 -0
- {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
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/analysis/column_profilers/registry.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/analysis/dataset_profiler.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/analysis/errors.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/analysis/utils/column_statistics_calculations.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/analysis/utils/judge_score_processing.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/capacity.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/column_generators/__init__.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/column_generators/generators/__init__.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/column_generators/generators/image.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/column_generators/generators/llm_completion.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/column_generators/generators/seed_dataset.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/column_generators/registry.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/column_generators/utils/errors.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/column_generators/utils/generator_classification.py +0 -0
- {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
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/configurable_task.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/context.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/errors.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/multi_column_configs.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/row_group_plan.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/scheduling/completion.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/scheduling/queue.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/scheduling/resolver.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/scheduling/resources.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/scheduling/task_admission.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/scheduling/task_model.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/scheduling/task_policies.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/utils/__init__.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/utils/async_concurrency.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/utils/concurrency.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/utils/errors.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/utils/execution_graph.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/utils/processor_runner.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/utils/skip_evaluator.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/dataset_builders/utils/skip_tracker.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/errors.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/mcp/__init__.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/mcp/errors.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/mcp/facade.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/mcp/factory.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/mcp/io.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/mcp/registry.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/model_provider.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/__init__.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/clients/__init__.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/clients/adapters/__init__.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/clients/adapters/anthropic.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/clients/adapters/anthropic_translation.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/clients/adapters/http_helpers.py +0 -0
- {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
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/clients/adapters/httpx_sharding.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/clients/adapters/openai_compatible.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/clients/base.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/clients/errors.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/clients/factory.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/clients/model_request_executor.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/clients/parsing.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/clients/retry.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/clients/types.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/errors.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/facade.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/factory.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/parsers/__init__.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/parsers/errors.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/parsers/parser.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/parsers/postprocessors.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/parsers/tag_parsers.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/recipes/base.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/recipes/response_recipes.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/registry.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/request_admission/config.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/request_admission/limits.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/request_admission/outcomes.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/request_admission/pressure.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/request_admission/queue.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/request_admission/resolver.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/request_admission/resources.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/resources.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/usage.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/usage_events.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/models/utils.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/processing/__init__.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/processing/ginja/__init__.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/processing/ginja/ast.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/processing/ginja/environment.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/processing/ginja/exceptions.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/processing/ginja/record.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/processing/gsonschema/__init__.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/processing/gsonschema/exceptions.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/processing/gsonschema/types.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/processing/gsonschema/validators.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/processing/processors/__init__.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/processing/processors/base.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/processing/processors/drop_columns.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/processing/processors/registry.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/processing/utils.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/progress/__init__.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/progress/reporter.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/progress/terminal/__init__.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/progress/tracker.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/readiness.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/registry/base.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/registry/data_designer_registry.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/registry/errors.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/resources/__init__.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/resources/agent_rollout/__init__.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/resources/agent_rollout/atif.py +0 -0
- {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
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/resources/agent_rollout/registry.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/resources/agent_rollout/types.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/resources/managed_dataset_generator.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/resources/person_reader.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/resources/resource_provider.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/constraints.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/data_sources/base.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/data_sources/errors.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/data_sources/sources.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/entities/__init__.py +0 -0
- {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
- {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
- {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
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/entities/errors.py +0 -0
- {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
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/entities/person.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/entities/phone_number.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/errors.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/generator.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/jinja_utils.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/people_gen.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/person_constants.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/sampling_gen/schema_builder.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/secret_resolver.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/storage/__init__.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/storage/media_storage.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/testing/__init__.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/testing/fixtures.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/testing/observability.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/testing/seed_readers.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/testing/stubs.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/testing/utils.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/utils/__init__.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/utils/token_counting.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/validators/__init__.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/validators/local_callable.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/validators/python.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/validators/remote.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/validators/sql.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/__init__.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/conftest.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/__init__.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/analysis/column_profilers/test_base.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/analysis/column_profilers/test_judge_score_profiler.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/analysis/conftest.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/analysis/test_column_statistics_calculator.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/analysis/test_data/artifacts/dataset/column_configs.json +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/analysis/test_data/artifacts/dataset/dataset.json +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/analysis/test_data/artifacts/dataset/metadata.json +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/analysis/test_dataset_profiler.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/analysis/test_errors.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/analysis/utils/test_column_statistics_calculations.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/analysis/utils/test_judge_score_processing.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/column_generators/generators/__init__.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/column_generators/generators/test_async_generators.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/column_generators/generators/test_column_generator_base.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/column_generators/generators/test_custom.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/column_generators/generators/test_image.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/column_generators/generators/test_llm_completion_generators.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/column_generators/generators/test_samplers.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/column_generators/generators/test_seed_dataset.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/column_generators/test_registry.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/column_generators/utils/test_column_generator_errors.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/column_generators/utils/test_generator_classification.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/column_generators/utils/test_judge_score_factory.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/column_generators/utils/test_prompt_renderer.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/conftest.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/scheduling/test_completion.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/scheduling/test_queue.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/scheduling/test_resolver.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/scheduling/test_resources.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/scheduling/test_task_admission.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/scheduling/test_task_model.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/scheduling/test_task_policies.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/test_async_builder_integration.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/test_async_scheduler.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/test_multi_column_configs.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/utils/test_async_concurrency.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/utils/test_concurrency.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/utils/test_config_compiler.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/utils/test_execution_graph.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/utils/test_skip_evaluator.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/utils/test_skip_tracker.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/dataset_builders/utils/test_topological_sort.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/fork_probe.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/mcp/conftest.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/mcp/test_mcp_facade.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/mcp/test_mcp_factory.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/mcp/test_mcp_registry.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/__init__.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/clients/__init__.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/clients/conftest.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/clients/test_anthropic.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/clients/test_anthropic_translation.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/clients/test_client_errors.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/clients/test_factory.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/clients/test_httpx_sharding.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/clients/test_model_request_executor.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/clients/test_native_http_clients.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/clients/test_openai_compatible.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/clients/test_parsing.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/clients/test_retry.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/clients/test_types.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/conftest.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/parsers/test_parser.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/parsers/test_parsers_types.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/parsers/test_postprocessors.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/parsers/test_tag_parsers.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/recipes/test_recipe_base.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/recipes/test_response_recipes.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/request_admission/test_controller.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/request_admission/test_request_queue.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/stub_secrets.json +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/test_facade.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/test_import_order.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/test_model_errors.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/test_model_registry.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/test_model_utils.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/models/test_usage.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/processing/__init__.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/processing/ginja/__init__.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/processing/ginja/test_ast.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/processing/ginja/test_environment.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/processing/ginja/test_exceptions.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/processing/ginja/test_record.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/processing/gsonschema/__init__.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/processing/gsonschema/test_exceptions.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/processing/gsonschema/test_schema_transformers.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/processing/gsonschema/test_types.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/processing/gsonschema/test_validators.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/processing/processors/__init__.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/processing/processors/test_drop_columns.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/processing/processors/test_registry.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/processing/processors/test_schema_transform.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/processing/test_utils.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/progress/terminal/test_throughput_panel.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/progress/test_tracker.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/registry/__init__.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/registry/conftest.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/registry/test_base.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/registry/test_data_designer_registry.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/registry/test_errors.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/resources/__init__.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/resources/agent_rollout/__init__.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/resources/agent_rollout/test_atif.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/resources/agent_rollout/test_claude_code.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/resources/agent_rollout/test_pi_coding_agent.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/resources/conftest.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/resources/test_managed_dataset_generator.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/resources/test_person_reader.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/resources/test_resource_provider.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/sampling_gen/conftest.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/sampling_gen/data_sources/test_sampler_errors.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/sampling_gen/data_sources/test_sources.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/sampling_gen/entities/test_email_address_utils.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/sampling_gen/entities/test_national_id_utils.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/sampling_gen/entities/test_person.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/sampling_gen/entities/test_phone_number.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/sampling_gen/test_column.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/sampling_gen/test_constraints.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/sampling_gen/test_generator.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/sampling_gen/test_generator_rounding.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/sampling_gen/test_jinja_utils.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/sampling_gen/test_people_gen.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/sampling_gen/test_schema.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/storage/__init__.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/storage/test_artifact_storage.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/storage/test_media_storage.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/test_capacity.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/test_configurable_task.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/test_dataset_metadata.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/test_engine_errors.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/test_model_provider.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/test_observability.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/test_readiness.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/test_secret_resolver.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/test_validation.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/testing/test_plugin_testing_utils.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/utils/test_token_counting.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/validators/test_local_callable.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/validators/test_python.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/validators/test_remote.py +0 -0
- {data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/tests/engine/validators/test_sql.py +0 -0
- {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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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,
|
|
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
|
|
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
|
|
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
|
-
|
|
32
|
-
|
|
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
|
-
|
|
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
|
|
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]] =
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
{data_designer_engine-0.9.7 → data_designer_engine-0.10.0}/src/data_designer/engine/compiler.py
RENAMED
|
@@ -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(
|
|
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.
|
|
62
|
-
|
|
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
|
-
|
|
150
|
+
has_seed_dataset = config.seed_config is not None
|
|
88
151
|
|
|
89
|
-
if not has_sampler_column and not
|
|
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
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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(
|
|
198
|
-
|
|
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
|
-
|
|
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(
|
|
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:
|