data-designer-engine 0.9.5__tar.gz → 0.9.6__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.5 → data_designer_engine-0.9.6}/PKG-INFO +3 -3
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/pyproject.toml +1 -1
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/dataset_builders/dataset_builder.py +1 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/clients/factory.py +1 -1
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/errors.py +1 -22
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/recipes/response_recipes.py +3 -2
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/utils.py +23 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/processing/gsonschema/schema_transformers.py +5 -4
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/processing/gsonschema/validators.py +86 -21
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/resources/managed_dataset_generator.py +7 -1
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/sampling_gen/entities/dataset_based_person_fields.py +17 -3
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/sampling_gen/generator.py +9 -6
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/storage/artifact_storage.py +26 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/validators/python.py +8 -6
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/column_generators/utils/test_prompt_renderer.py +21 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/models/clients/test_factory.py +11 -1
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/models/recipes/test_response_recipes.py +115 -1
- data_designer_engine-0.9.6/tests/engine/models/test_import_order.py +38 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/processing/gsonschema/test_schema_transformers.py +28 -3
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/processing/gsonschema/test_validators.py +147 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/resources/test_managed_dataset_generator.py +17 -1
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/sampling_gen/test_generator.py +1 -1
- data_designer_engine-0.9.6/tests/engine/sampling_gen/test_generator_rounding.py +197 -0
- data_designer_engine-0.9.6/tests/engine/sampling_gen/test_people_gen.py +155 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/storage/test_artifact_storage.py +94 -1
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/validators/test_python.py +53 -0
- data_designer_engine-0.9.5/tests/engine/sampling_gen/test_people_gen.py +0 -56
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/.gitignore +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/README.md +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/__init__.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/analysis/column_profilers/base.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/analysis/column_profilers/judge_score_profiler.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/analysis/column_profilers/registry.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/analysis/column_statistics.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/analysis/dataset_profiler.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/analysis/errors.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/analysis/utils/column_statistics_calculations.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/analysis/utils/judge_score_processing.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/capacity.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/column_generators/__init__.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/column_generators/generators/__init__.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/column_generators/generators/base.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/column_generators/generators/custom.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/column_generators/generators/embedding.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/column_generators/generators/expression.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/column_generators/generators/image.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/column_generators/generators/llm_completion.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/column_generators/generators/samplers.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/column_generators/generators/seed_dataset.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/column_generators/generators/validation.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/column_generators/registry.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/column_generators/utils/errors.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/column_generators/utils/generator_classification.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/column_generators/utils/judge_score_factory.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/column_generators/utils/prompt_renderer.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/compiler.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/configurable_task.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/context.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/dataset_builders/async_scheduler.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/dataset_builders/errors.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/dataset_builders/multi_column_configs.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/dataset_builders/row_group_plan.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/dataset_builders/scheduling/completion.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/dataset_builders/scheduling/queue.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/dataset_builders/scheduling/resolver.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/dataset_builders/scheduling/resources.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/dataset_builders/scheduling/task_admission.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/dataset_builders/scheduling/task_model.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/dataset_builders/scheduling/task_policies.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/dataset_builders/utils/__init__.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/dataset_builders/utils/async_concurrency.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/dataset_builders/utils/concurrency.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/dataset_builders/utils/config_compiler.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/dataset_builders/utils/errors.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/dataset_builders/utils/execution_graph.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/dataset_builders/utils/processor_runner.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/dataset_builders/utils/row_group_buffer.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/dataset_builders/utils/skip_evaluator.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/dataset_builders/utils/skip_tracker.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/errors.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/mcp/__init__.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/mcp/errors.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/mcp/facade.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/mcp/factory.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/mcp/io.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/mcp/registry.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/model_provider.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/__init__.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/clients/__init__.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/clients/adapters/__init__.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/clients/adapters/anthropic.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/clients/adapters/anthropic_translation.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/clients/adapters/http_helpers.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/clients/adapters/http_model_client.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/clients/adapters/httpx_sharding.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/clients/adapters/openai_compatible.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/clients/base.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/clients/errors.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/clients/model_request_executor.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/clients/parsing.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/clients/retry.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/clients/types.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/facade.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/factory.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/parsers/__init__.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/parsers/errors.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/parsers/parser.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/parsers/postprocessors.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/parsers/tag_parsers.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/parsers/types.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/recipes/base.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/registry.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/request_admission/config.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/request_admission/controller.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/request_admission/limits.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/request_admission/outcomes.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/request_admission/pressure.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/request_admission/queue.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/request_admission/resolver.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/request_admission/resources.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/resources.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/telemetry.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/usage.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/usage_events.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/observability.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/processing/__init__.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/processing/ginja/__init__.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/processing/ginja/ast.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/processing/ginja/environment.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/processing/ginja/exceptions.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/processing/ginja/record.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/processing/gsonschema/__init__.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/processing/gsonschema/exceptions.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/processing/gsonschema/types.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/processing/processors/__init__.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/processing/processors/base.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/processing/processors/drop_columns.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/processing/processors/registry.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/processing/processors/schema_transform.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/processing/utils.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/progress/__init__.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/progress/reporter.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/progress/terminal/__init__.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/progress/terminal/throughput_panel.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/progress/tracker.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/readiness.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/registry/base.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/registry/data_designer_registry.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/registry/errors.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/resources/__init__.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/resources/agent_rollout/__init__.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/resources/agent_rollout/atif.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/resources/agent_rollout/base.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/resources/agent_rollout/claude_code.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/resources/agent_rollout/codex.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/resources/agent_rollout/hermes_agent.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/resources/agent_rollout/pi_coding_agent.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/resources/agent_rollout/registry.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/resources/agent_rollout/types.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/resources/agent_rollout/utils.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/resources/person_reader.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/resources/resource_provider.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/resources/seed_reader.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/sampling_gen/column.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/sampling_gen/constraints.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/sampling_gen/data_sources/base.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/sampling_gen/data_sources/errors.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/sampling_gen/data_sources/sources.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/sampling_gen/entities/__init__.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/sampling_gen/entities/assets/zip_area_code_map.parquet +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/sampling_gen/entities/email_address_utils.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/sampling_gen/entities/errors.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/sampling_gen/entities/national_id_utils.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/sampling_gen/entities/person.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/sampling_gen/entities/phone_number.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/sampling_gen/errors.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/sampling_gen/jinja_utils.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/sampling_gen/people_gen.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/sampling_gen/person_constants.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/sampling_gen/schema.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/sampling_gen/schema_builder.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/sampling_gen/utils.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/secret_resolver.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/storage/__init__.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/storage/media_storage.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/testing/__init__.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/testing/fixtures.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/testing/observability.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/testing/seed_readers.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/testing/stubs.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/testing/utils.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/utils/__init__.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/utils/token_counting.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/validation.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/validators/__init__.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/validators/base.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/validators/local_callable.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/validators/remote.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/validators/sql.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/__init__.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/conftest.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/__init__.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/analysis/column_profilers/test_base.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/analysis/column_profilers/test_judge_score_profiler.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/analysis/conftest.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/analysis/test_column_statistics_calculator.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/analysis/test_data/artifacts/dataset/column_configs.json +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/analysis/test_data/artifacts/dataset/dataset.json +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/analysis/test_data/artifacts/dataset/metadata.json +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/analysis/test_dataset_profiler.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/analysis/test_errors.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/analysis/utils/test_column_statistics_calculations.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/analysis/utils/test_judge_score_processing.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/column_generators/generators/__init__.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/column_generators/generators/test_async_generators.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/column_generators/generators/test_column_generator_base.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/column_generators/generators/test_custom.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/column_generators/generators/test_embedding.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/column_generators/generators/test_expression.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/column_generators/generators/test_image.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/column_generators/generators/test_llm_completion_generators.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/column_generators/generators/test_samplers.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/column_generators/generators/test_seed_dataset.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/column_generators/generators/test_validation.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/column_generators/test_registry.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/column_generators/utils/test_column_generator_errors.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/column_generators/utils/test_generator_classification.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/column_generators/utils/test_judge_score_factory.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/conftest.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/dataset_builders/scheduling/test_completion.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/dataset_builders/scheduling/test_queue.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/dataset_builders/scheduling/test_resolver.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/dataset_builders/scheduling/test_resources.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/dataset_builders/scheduling/test_task_admission.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/dataset_builders/scheduling/test_task_model.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/dataset_builders/scheduling/test_task_policies.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/dataset_builders/test_async_builder_integration.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/dataset_builders/test_async_scheduler.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/dataset_builders/test_dataset_builder.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/dataset_builders/test_multi_column_configs.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/dataset_builders/utils/test_concurrency.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/dataset_builders/utils/test_config_compiler.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/dataset_builders/utils/test_execution_graph.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/dataset_builders/utils/test_row_group_buffer.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/dataset_builders/utils/test_skip_evaluator.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/dataset_builders/utils/test_skip_tracker.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/dataset_builders/utils/test_topological_sort.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/mcp/conftest.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/mcp/test_mcp_facade.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/mcp/test_mcp_factory.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/mcp/test_mcp_io.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/mcp/test_mcp_registry.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/models/__init__.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/models/clients/__init__.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/models/clients/conftest.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/models/clients/test_anthropic.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/models/clients/test_anthropic_translation.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/models/clients/test_client_errors.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/models/clients/test_httpx_sharding.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/models/clients/test_model_request_executor.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/models/clients/test_native_http_clients.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/models/clients/test_openai_compatible.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/models/clients/test_parsing.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/models/clients/test_retry.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/models/clients/test_types.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/models/conftest.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/models/parsers/test_parser.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/models/parsers/test_parsers_types.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/models/parsers/test_postprocessors.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/models/parsers/test_tag_parsers.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/models/recipes/test_recipe_base.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/models/request_admission/test_controller.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/models/request_admission/test_request_queue.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/models/stub_secrets.json +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/models/test_facade.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/models/test_model_errors.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/models/test_model_registry.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/models/test_model_utils.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/models/test_telemetry.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/models/test_usage.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/processing/__init__.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/processing/ginja/__init__.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/processing/ginja/test_ast.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/processing/ginja/test_environment.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/processing/ginja/test_exceptions.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/processing/ginja/test_record.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/processing/gsonschema/__init__.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/processing/gsonschema/test_exceptions.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/processing/gsonschema/test_types.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/processing/processors/__init__.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/processing/processors/test_drop_columns.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/processing/processors/test_registry.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/processing/processors/test_schema_transform.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/processing/test_utils.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/progress/terminal/test_throughput_panel.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/progress/test_tracker.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/registry/__init__.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/registry/conftest.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/registry/test_base.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/registry/test_data_designer_registry.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/registry/test_errors.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/resources/__init__.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/resources/agent_rollout/__init__.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/resources/agent_rollout/test_atif.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/resources/agent_rollout/test_claude_code.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/resources/agent_rollout/test_codex.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/resources/agent_rollout/test_hermes_agent.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/resources/agent_rollout/test_pi_coding_agent.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/resources/agent_rollout/test_utils.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/resources/conftest.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/resources/test_person_reader.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/resources/test_resource_provider.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/resources/test_seed_reader.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/sampling_gen/conftest.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/sampling_gen/data_sources/test_sampler_errors.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/sampling_gen/data_sources/test_sources.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/sampling_gen/entities/test_email_address_utils.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/sampling_gen/entities/test_national_id_utils.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/sampling_gen/entities/test_person.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/sampling_gen/entities/test_phone_number.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/sampling_gen/test_column.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/sampling_gen/test_constraints.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/sampling_gen/test_jinja_utils.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/sampling_gen/test_schema.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/sampling_gen/test_utils.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/storage/__init__.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/storage/test_media_storage.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/test_capacity.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/test_compiler.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/test_configurable_task.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/test_dataset_metadata.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/test_engine_errors.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/test_model_provider.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/test_observability.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/test_readiness.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/test_secret_resolver.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/test_validation.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/testing/test_plugin_testing_utils.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/utils/test_token_counting.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/validators/test_local_callable.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/validators/test_remote.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/engine/validators/test_sql.py +0 -0
- {data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/tests/test_plugin_manager.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: data-designer-engine
|
|
3
|
-
Version: 0.9.
|
|
3
|
+
Version: 0.9.6
|
|
4
4
|
Summary: Generation engine for DataDesigner synthetic data generation
|
|
5
5
|
License-Expression: Apache-2.0
|
|
6
6
|
Classifier: Development Status :: 4 - Beta
|
|
@@ -16,7 +16,7 @@ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
|
16
16
|
Requires-Python: >=3.10
|
|
17
17
|
Requires-Dist: anyascii<1,>=0.3.3
|
|
18
18
|
Requires-Dist: asciichartpy<2,>=1.5.25
|
|
19
|
-
Requires-Dist: data-designer-config==0.9.
|
|
19
|
+
Requires-Dist: data-designer-config==0.9.6
|
|
20
20
|
Requires-Dist: duckdb<2,>=1.5.0
|
|
21
21
|
Requires-Dist: faker<21,>=20.1.0
|
|
22
22
|
Requires-Dist: fsspec<2027,>=2026.6.0
|
|
@@ -29,7 +29,7 @@ Requires-Dist: jsonpath-rust-bindings<2,>=1.0
|
|
|
29
29
|
Requires-Dist: jsonschema<5,>=4.0.0
|
|
30
30
|
Requires-Dist: lxml<7,>=6.1.1
|
|
31
31
|
Requires-Dist: marko<3,>=2.1.2
|
|
32
|
-
Requires-Dist: mcp<2,>=1.
|
|
32
|
+
Requires-Dist: mcp<2,>=1.30.0
|
|
33
33
|
Requires-Dist: networkx<4,>=3.0
|
|
34
34
|
Requires-Dist: numpy<3,>=1.23.5
|
|
35
35
|
Requires-Dist: pandas<4,>=2.3.3
|
|
@@ -48,7 +48,7 @@ dependencies = [
|
|
|
48
48
|
"jsonschema>=4.0.0,<5",
|
|
49
49
|
"lxml>=6.1.1,<7", # 6.1.1 fixes CVE-2026-49825
|
|
50
50
|
"marko>=2.1.2,<3",
|
|
51
|
-
"mcp>=1.
|
|
51
|
+
"mcp>=1.30.0,<2", # 1.30.0 fixes CVE-2026-59951
|
|
52
52
|
"networkx>=3.0,<4",
|
|
53
53
|
"numpy>=1.23.5,<3",
|
|
54
54
|
"pandas>=2.3.3,<4",
|
|
@@ -328,6 +328,7 @@ class DatasetBuilder:
|
|
|
328
328
|
if self._post_generation_processed_resume_result(resume, num_records) is not None:
|
|
329
329
|
return self.artifact_storage.final_dataset_path
|
|
330
330
|
|
|
331
|
+
self.artifact_storage.create_dataset_directory(resume=resume)
|
|
331
332
|
self._write_builder_config()
|
|
332
333
|
|
|
333
334
|
# Set media storage mode based on parameters
|
|
@@ -12,8 +12,8 @@ from data_designer.engine.models.clients.adapters.openai_compatible import OpenA
|
|
|
12
12
|
from data_designer.engine.models.clients.base import ModelClient
|
|
13
13
|
from data_designer.engine.models.clients.model_request_executor import ModelRequestExecutor
|
|
14
14
|
from data_designer.engine.models.clients.retry import RetryConfig
|
|
15
|
-
from data_designer.engine.models.errors import FormattedLLMErrorMessage
|
|
16
15
|
from data_designer.engine.models.request_admission.controller import RequestAdmissionController
|
|
16
|
+
from data_designer.engine.models.utils import FormattedLLMErrorMessage
|
|
17
17
|
from data_designer.engine.observability import RequestAdmissionEventSink
|
|
18
18
|
from data_designer.engine.secret_resolver import SecretResolver
|
|
19
19
|
|
{data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/errors.py
RENAMED
|
@@ -8,11 +8,9 @@ from collections.abc import Callable
|
|
|
8
8
|
from functools import wraps
|
|
9
9
|
from typing import Any, NoReturn
|
|
10
10
|
|
|
11
|
-
from pydantic import BaseModel
|
|
12
|
-
|
|
13
11
|
from data_designer.engine.errors import DataDesignerError
|
|
14
12
|
from data_designer.engine.models.clients.errors import ProviderError, ProviderErrorKind, SyncClientUnavailableError
|
|
15
|
-
from data_designer.engine.models.utils import GenerationTruncationReason
|
|
13
|
+
from data_designer.engine.models.utils import FormattedLLMErrorMessage, GenerationTruncationReason
|
|
16
14
|
|
|
17
15
|
logger = logging.getLogger(__name__)
|
|
18
16
|
|
|
@@ -152,25 +150,6 @@ RETRYABLE_MODEL_ERRORS: tuple[type[Exception], ...] = (
|
|
|
152
150
|
)
|
|
153
151
|
|
|
154
152
|
|
|
155
|
-
class FormattedLLMErrorMessage(BaseModel):
|
|
156
|
-
cause: str
|
|
157
|
-
solution: str
|
|
158
|
-
provider_message: str | None = None
|
|
159
|
-
|
|
160
|
-
def __str__(self) -> str:
|
|
161
|
-
lines = [" |----------"]
|
|
162
|
-
if self.provider_message is not None:
|
|
163
|
-
lines.append(f" | Provider message: {self.provider_message}")
|
|
164
|
-
lines.append(f" | Cause: {self.cause}")
|
|
165
|
-
lines.extend(
|
|
166
|
-
[
|
|
167
|
-
f" | Solution: {self.solution}",
|
|
168
|
-
" |----------",
|
|
169
|
-
]
|
|
170
|
-
)
|
|
171
|
-
return "\n".join(lines)
|
|
172
|
-
|
|
173
|
-
|
|
174
153
|
def _attach_provider_message(
|
|
175
154
|
formatted_message: FormattedLLMErrorMessage,
|
|
176
155
|
exception: ProviderError,
|
|
@@ -82,8 +82,9 @@ class StructuredResponseRecipe(ResponseRecipe[dict]):
|
|
|
82
82
|
pruning (bool): If `True`, then any extra fields in the returned
|
|
83
83
|
JSON object will be removed. Otherwise, they are retained,
|
|
84
84
|
which could raise validation errors. Default=True
|
|
85
|
-
no_extra_properties (bool): If `True`,
|
|
86
|
-
|
|
85
|
+
no_extra_properties (bool): If `True`, forbid undeclared record fields,
|
|
86
|
+
pruning them when `pruning=True`. Explicit `additionalProperties`
|
|
87
|
+
settings, including dictionary value schemas, are preserved.
|
|
87
88
|
Default=True.
|
|
88
89
|
"""
|
|
89
90
|
super().__init__(**kwargs)
|
{data_designer_engine-0.9.5 → data_designer_engine-0.9.6}/src/data_designer/engine/models/utils.py
RENAMED
|
@@ -7,6 +7,8 @@ from dataclasses import dataclass, field
|
|
|
7
7
|
from enum import Enum
|
|
8
8
|
from typing import TYPE_CHECKING, Any, Literal
|
|
9
9
|
|
|
10
|
+
from pydantic import BaseModel
|
|
11
|
+
|
|
10
12
|
if TYPE_CHECKING:
|
|
11
13
|
from data_designer.engine.models.clients.types import ChatCompletionResponse
|
|
12
14
|
|
|
@@ -60,6 +62,27 @@ def merge_conversation_truncation_reason(
|
|
|
60
62
|
return current or accumulated
|
|
61
63
|
|
|
62
64
|
|
|
65
|
+
class FormattedLLMErrorMessage(BaseModel):
|
|
66
|
+
"""User-facing LLM error text: the cause, a suggested solution, and the provider message if any."""
|
|
67
|
+
|
|
68
|
+
cause: str
|
|
69
|
+
solution: str
|
|
70
|
+
provider_message: str | None = None
|
|
71
|
+
|
|
72
|
+
def __str__(self) -> str:
|
|
73
|
+
lines = [" |----------"]
|
|
74
|
+
if self.provider_message is not None:
|
|
75
|
+
lines.append(f" | Provider message: {self.provider_message}")
|
|
76
|
+
lines.append(f" | Cause: {self.cause}")
|
|
77
|
+
lines.extend(
|
|
78
|
+
[
|
|
79
|
+
f" | Solution: {self.solution}",
|
|
80
|
+
" |----------",
|
|
81
|
+
]
|
|
82
|
+
)
|
|
83
|
+
return "\n".join(lines)
|
|
84
|
+
|
|
85
|
+
|
|
63
86
|
@dataclass
|
|
64
87
|
class ChatMessage:
|
|
65
88
|
"""A chat message in an LLM conversation.
|
|
@@ -32,14 +32,15 @@ def _is_bare_dictionary_schema(schema_part: Any) -> bool:
|
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
def forbid_additional_properties(schema: JSONSchemaT) -> JSONSchemaT:
|
|
35
|
-
"""
|
|
35
|
+
"""Forbid undeclared record fields while preserving explicit dictionary schemas.
|
|
36
36
|
|
|
37
37
|
Args:
|
|
38
38
|
schema (JSONSchemaT): A JSONSchema to transform.
|
|
39
39
|
|
|
40
40
|
Returns:
|
|
41
41
|
JSONSchemaT: A new JSONSchema matching the provided one, but
|
|
42
|
-
with `additionalProperties: False`
|
|
42
|
+
with `additionalProperties: False` added to records that do not
|
|
43
|
+
declare it. Explicit settings and bare dictionaries are preserved.
|
|
43
44
|
"""
|
|
44
45
|
new_schema = deepcopy(schema)
|
|
45
46
|
|
|
@@ -50,7 +51,7 @@ def forbid_additional_properties(schema: JSONSchemaT) -> JSONSchemaT:
|
|
|
50
51
|
## dictionary. In those cases, the implication is that _all_ dictionaries
|
|
51
52
|
## are valid, so we should not forbid extra properties in that case.
|
|
52
53
|
allow_additional_properties = _is_bare_dictionary_schema(schema_part)
|
|
53
|
-
schema_part
|
|
54
|
+
schema_part.setdefault("additionalProperties", allow_additional_properties)
|
|
54
55
|
|
|
55
56
|
# Traverse into nested schemas.
|
|
56
57
|
for key, value in schema_part.items():
|
|
@@ -68,7 +69,7 @@ def forbid_additional_properties(schema: JSONSchemaT) -> JSONSchemaT:
|
|
|
68
69
|
if isinstance(value, list):
|
|
69
70
|
for item in value:
|
|
70
71
|
_enforce(item)
|
|
71
|
-
elif key in ("not", "if", "then", "else"):
|
|
72
|
+
elif key in ("not", "if", "then", "else", "additionalProperties"):
|
|
72
73
|
if isinstance(value, dict):
|
|
73
74
|
_enforce(value)
|
|
74
75
|
elif key == "$defs":
|
|
@@ -6,9 +6,10 @@ from __future__ import annotations
|
|
|
6
6
|
import functools
|
|
7
7
|
import logging
|
|
8
8
|
import re
|
|
9
|
+
from collections.abc import Iterator
|
|
9
10
|
from copy import deepcopy
|
|
10
11
|
from decimal import ROUND_HALF_UP, Decimal
|
|
11
|
-
from typing import Any, overload
|
|
12
|
+
from typing import Any, Literal, overload
|
|
12
13
|
|
|
13
14
|
import data_designer.lazy_heavy_imports as lazy
|
|
14
15
|
from data_designer.engine.processing.gsonschema.exceptions import JSONSchemaValidationError
|
|
@@ -25,32 +26,37 @@ logger = logging.getLogger(__name__)
|
|
|
25
26
|
|
|
26
27
|
|
|
27
28
|
def prune_additional_properties(
|
|
28
|
-
|
|
29
|
-
) ->
|
|
30
|
-
"""
|
|
29
|
+
validator: Any, allow_additional_properties: bool | JSONSchemaT, instance: DataObjectT, schema: JSONSchemaT
|
|
30
|
+
) -> Iterator[Any]:
|
|
31
|
+
"""Prune forbidden properties and validate explicitly allowed dictionary values.
|
|
31
32
|
|
|
32
33
|
Operates on an individual schema in-place.
|
|
33
34
|
|
|
34
35
|
Args:
|
|
35
|
-
|
|
36
|
+
validator: The active JSON Schema validator.
|
|
37
|
+
allow_additional_properties: The value of the `additionalProperties`
|
|
36
38
|
field for this schema.
|
|
37
39
|
instance (DataObjectT): The data object being validated.
|
|
38
40
|
schema (JSONSchemaT): The schema for this object.
|
|
39
41
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
+
Yields:
|
|
43
|
+
Validation errors for schema-valued additional properties.
|
|
42
44
|
"""
|
|
43
|
-
|
|
44
|
-
|
|
45
|
+
if allow_additional_properties is not False:
|
|
46
|
+
yield from lazy.jsonschema.Draft202012Validator.VALIDATORS["additionalProperties"](
|
|
47
|
+
validator, allow_additional_properties, instance, schema
|
|
48
|
+
)
|
|
49
|
+
return
|
|
50
|
+
if not isinstance(instance, dict):
|
|
45
51
|
return
|
|
46
52
|
|
|
47
|
-
#
|
|
53
|
+
# Properties matched by a pattern are also declared fields.
|
|
48
54
|
allowed = schema.get("properties", {}).keys()
|
|
49
55
|
|
|
50
56
|
# Iterate over a copy of keys so we can modify the dict in place.
|
|
51
57
|
n_removed = 0
|
|
52
58
|
for key in list(instance.keys()):
|
|
53
|
-
if key not in allowed:
|
|
59
|
+
if key not in allowed and not any(re.search(pattern, key) for pattern in schema.get("patternProperties", {})):
|
|
54
60
|
instance.pop(key)
|
|
55
61
|
n_removed += 1
|
|
56
62
|
logger.info(f"Unspecified property removed from data object: {key}.")
|
|
@@ -59,25 +65,82 @@ def prune_additional_properties(
|
|
|
59
65
|
logger.info(f"{n_removed} unspecified properties removed from data object.")
|
|
60
66
|
|
|
61
67
|
|
|
68
|
+
def _validate_alternatives_with_pruning(
|
|
69
|
+
validator: Any,
|
|
70
|
+
alternatives: list[JSONSchemaT],
|
|
71
|
+
instance: DataObjectT,
|
|
72
|
+
keyword: Literal["anyOf", "oneOf"],
|
|
73
|
+
) -> Iterator[Any]:
|
|
74
|
+
"""Prefer unchanged matches, falling back to isolated pruning candidates."""
|
|
75
|
+
errors = []
|
|
76
|
+
unpruned_matches: list[DataObjectT] = []
|
|
77
|
+
pruned_matches: list[DataObjectT] = []
|
|
78
|
+
for index, subschema in enumerate(alternatives):
|
|
79
|
+
candidate = deepcopy(instance)
|
|
80
|
+
candidate_errors = list(validator.descend(candidate, subschema, schema_path=index))
|
|
81
|
+
if candidate_errors:
|
|
82
|
+
errors.extend(candidate_errors)
|
|
83
|
+
elif candidate == instance:
|
|
84
|
+
unpruned_matches.append(candidate)
|
|
85
|
+
if keyword == "anyOf":
|
|
86
|
+
return
|
|
87
|
+
else:
|
|
88
|
+
pruned_matches.append(candidate)
|
|
89
|
+
|
|
90
|
+
matches = unpruned_matches or pruned_matches
|
|
91
|
+
if not matches:
|
|
92
|
+
yield lazy.jsonschema.ValidationError(
|
|
93
|
+
f"{instance!r} is not valid under any of the given schemas", context=errors
|
|
94
|
+
)
|
|
95
|
+
return
|
|
96
|
+
if keyword == "oneOf" and len(matches) > 1:
|
|
97
|
+
yield lazy.jsonschema.ValidationError(f"{instance!r} is valid under more than one of the given schemas")
|
|
98
|
+
return
|
|
99
|
+
|
|
100
|
+
if keyword == "oneOf":
|
|
101
|
+
# An explicit dialect selects the stock validator while evolve retains reference scope.
|
|
102
|
+
strict_validator = validator.evolve(
|
|
103
|
+
schema={"$schema": _get_default_validator().META_SCHEMA["$id"], "oneOf": alternatives}
|
|
104
|
+
)
|
|
105
|
+
final_errors = list(strict_validator.iter_errors(matches[0]))
|
|
106
|
+
if final_errors:
|
|
107
|
+
yield from final_errors
|
|
108
|
+
return
|
|
109
|
+
|
|
110
|
+
if isinstance(instance, dict):
|
|
111
|
+
instance.clear()
|
|
112
|
+
instance.update(matches[0])
|
|
113
|
+
elif isinstance(instance, list):
|
|
114
|
+
instance[:] = matches[0]
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
def _validate_any_of_with_pruning(
|
|
118
|
+
validator: Any, any_of: list[JSONSchemaT], instance: DataObjectT, schema: JSONSchemaT
|
|
119
|
+
) -> Iterator[Any]:
|
|
120
|
+
yield from _validate_alternatives_with_pruning(validator, any_of, instance, "anyOf")
|
|
121
|
+
|
|
122
|
+
|
|
62
123
|
def _validate_one_of_with_discriminator(
|
|
63
124
|
validator: Any, one_of: list[JSONSchemaT], instance: DataObjectT, schema: JSONSchemaT
|
|
64
|
-
) -> Any:
|
|
125
|
+
) -> Iterator[Any]:
|
|
65
126
|
"""Validate a oneOf using the discriminator to select the correct variant.
|
|
66
127
|
|
|
67
128
|
Standard oneOf tries all variants, which combined with in-place pruning
|
|
68
129
|
can corrupt the instance (pruning from a failed variant removes properties
|
|
69
130
|
needed by the correct variant). When a discriminator is present, this
|
|
70
|
-
validator selects the matching variant directly.
|
|
131
|
+
validator selects the matching variant directly. Without a discriminator,
|
|
132
|
+
each variant is validated on an independent copy. Matches that need no
|
|
133
|
+
pruning take precedence over matches that remove fields.
|
|
71
134
|
"""
|
|
72
135
|
discriminator = schema.get("discriminator")
|
|
73
136
|
if not discriminator or not isinstance(discriminator, dict) or not isinstance(instance, dict):
|
|
74
|
-
yield from
|
|
137
|
+
yield from _validate_alternatives_with_pruning(validator, one_of, instance, "oneOf")
|
|
75
138
|
return
|
|
76
139
|
|
|
77
140
|
prop_name = discriminator.get("propertyName")
|
|
78
141
|
mapping = discriminator.get("mapping", {})
|
|
79
142
|
if not prop_name or prop_name not in instance or not mapping:
|
|
80
|
-
yield from
|
|
143
|
+
yield from _validate_alternatives_with_pruning(validator, one_of, instance, "oneOf")
|
|
81
144
|
return
|
|
82
145
|
|
|
83
146
|
matched_ref = mapping.get(str(instance[prop_name]))
|
|
@@ -100,9 +163,10 @@ def extend_jsonschema_validator_with_pruning(validator):
|
|
|
100
163
|
extra, unspecified fiends when `additionalProperties: False` is
|
|
101
164
|
set in the validating schema.
|
|
102
165
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
166
|
+
Alternatives are checked on independent copies so failed candidates cannot
|
|
167
|
+
prune fields from later candidates. Unchanged matches take precedence over
|
|
168
|
+
pruned matches. Selected oneOf results must match exactly one alternative
|
|
169
|
+
without further pruning. Discriminated oneOf schemas select the correct variant directly.
|
|
106
170
|
|
|
107
171
|
Args:
|
|
108
172
|
validator (Type[jsonschema.Validator): A validator class
|
|
@@ -116,6 +180,7 @@ def extend_jsonschema_validator_with_pruning(validator):
|
|
|
116
180
|
validator,
|
|
117
181
|
{
|
|
118
182
|
"additionalProperties": prune_additional_properties,
|
|
183
|
+
"anyOf": _validate_any_of_with_pruning,
|
|
119
184
|
"oneOf": _validate_one_of_with_discriminator,
|
|
120
185
|
},
|
|
121
186
|
)
|
|
@@ -220,9 +285,9 @@ def validate(
|
|
|
220
285
|
Default: `False`.
|
|
221
286
|
no_extra_properties (bool): If set to `True`, then
|
|
222
287
|
`additionalProperties: False` is set on all the schema
|
|
223
|
-
and
|
|
224
|
-
|
|
225
|
-
|
|
288
|
+
and its record sub-schemas where no explicit setting exists.
|
|
289
|
+
Declared dictionary schemas and explicit `additionalProperties`
|
|
290
|
+
settings are preserved. Default: `False`.
|
|
226
291
|
|
|
227
292
|
Raises:
|
|
228
293
|
JSONSchemaValidationError: This exception raised in the
|
|
@@ -23,7 +23,13 @@ class ManagedDatasetGenerator:
|
|
|
23
23
|
) -> pd.DataFrame:
|
|
24
24
|
parameters = []
|
|
25
25
|
uri = self._person_reader.get_dataset_uri(self._locale)
|
|
26
|
-
|
|
26
|
+
source = f"'{uri}'"
|
|
27
|
+
if self._locale == "de_DE":
|
|
28
|
+
source = (
|
|
29
|
+
"(select * replace (case sex when 'Weiblich' then 'Female' "
|
|
30
|
+
f"when 'Männlich' then 'Male' else sex end as sex) from {source})"
|
|
31
|
+
)
|
|
32
|
+
query = f"select * from {source}"
|
|
27
33
|
if evidence:
|
|
28
34
|
where_conditions = []
|
|
29
35
|
for column, values in evidence.items():
|
|
@@ -15,7 +15,7 @@ from __future__ import annotations
|
|
|
15
15
|
REQUIRED_FIELDS = {"first_name", "last_name", "age", "locale"}
|
|
16
16
|
|
|
17
17
|
PII_FIELDS = [
|
|
18
|
-
#
|
|
18
|
+
# Shared demographic fields (availability varies by locale)
|
|
19
19
|
"uuid",
|
|
20
20
|
"first_name",
|
|
21
21
|
"middle_name",
|
|
@@ -43,8 +43,9 @@ PII_FIELDS = [
|
|
|
43
43
|
"national_id",
|
|
44
44
|
# en_US + en_SG
|
|
45
45
|
"ethnic_background",
|
|
46
|
-
# en_SG
|
|
46
|
+
# Shared by en_SG, en_GB, and de_DE
|
|
47
47
|
"industry",
|
|
48
|
+
# en_SG-specific
|
|
48
49
|
"preferred_english_name",
|
|
49
50
|
# fr_FR-specific
|
|
50
51
|
"first_name_heritage",
|
|
@@ -67,6 +68,19 @@ PII_FIELDS = [
|
|
|
67
68
|
"military_status",
|
|
68
69
|
"smoking_status",
|
|
69
70
|
"waist_status",
|
|
71
|
+
# en_GB-specific
|
|
72
|
+
"ethnicity",
|
|
73
|
+
"country_of_birth",
|
|
74
|
+
"disability",
|
|
75
|
+
# de_DE-specific
|
|
76
|
+
"migration_background",
|
|
77
|
+
"employment_status",
|
|
78
|
+
"job_position",
|
|
79
|
+
"occupation_kldb",
|
|
80
|
+
"last_occupation",
|
|
81
|
+
"last_occupation_kldb",
|
|
82
|
+
"kreis_code",
|
|
83
|
+
"nationality",
|
|
70
84
|
# pt_BR-specific
|
|
71
85
|
"race",
|
|
72
86
|
# India locales (en_IN, hi_Deva_IN, hi_Latn_IN)
|
|
@@ -75,7 +89,7 @@ PII_FIELDS = [
|
|
|
75
89
|
"second_language",
|
|
76
90
|
"third_language",
|
|
77
91
|
"zone",
|
|
78
|
-
# Shared across India locales, en_SG, and
|
|
92
|
+
# Shared across India locales, en_SG, pt_BR, en_GB, and de_DE
|
|
79
93
|
"religion",
|
|
80
94
|
]
|
|
81
95
|
|
|
@@ -71,11 +71,6 @@ class DatasetGenerator:
|
|
|
71
71
|
"people_gen_resource": create_people_gen_resource(self.schema, person_generator_loader),
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
def _round_if_needed(self, column: ConditionalDataColumn, df: pd.DataFrame) -> pd.DataFrame:
|
|
75
|
-
if hasattr(column.params, "decimal_places") and column.params.decimal_places is not None:
|
|
76
|
-
df[column.name] = df[column.name].round(column.params.decimal_places)
|
|
77
|
-
return df
|
|
78
|
-
|
|
79
74
|
def _run_rejection_sampling(self, df: pd.DataFrame, column: ConditionalDataColumn) -> pd.DataFrame:
|
|
80
75
|
name = column.name
|
|
81
76
|
num_iterations = 0
|
|
@@ -88,8 +83,17 @@ class DatasetGenerator:
|
|
|
88
83
|
condition,
|
|
89
84
|
jinja_rendering_engine=self._jinja_rendering_engine,
|
|
90
85
|
).select_index(df[needs_samples])
|
|
86
|
+
if index.empty:
|
|
87
|
+
continue
|
|
91
88
|
src = column.get_sampler(condition, **self._shared_sampler_kwargs)
|
|
92
89
|
df = src.inject_data_column(df, name, index)
|
|
90
|
+
decimal_places = getattr(src.params, "decimal_places", None)
|
|
91
|
+
if decimal_places is not None:
|
|
92
|
+
samples = df.loc[index, name]
|
|
93
|
+
# Preserve integer conversion before precision rounding, but round before converting to strings.
|
|
94
|
+
if column.convert_to == "int":
|
|
95
|
+
samples = src.preproc(samples, column.convert_to)
|
|
96
|
+
df.loc[index, name] = samples.round(decimal_places)
|
|
93
97
|
|
|
94
98
|
df[name] = column.get_default_sampler(**self._shared_sampler_kwargs).preproc(df[name], column.convert_to)
|
|
95
99
|
|
|
@@ -121,6 +125,5 @@ class DatasetGenerator:
|
|
|
121
125
|
dataset[column.name] = column.get_default_sampler(**self._shared_sampler_kwargs).postproc(
|
|
122
126
|
dataset[column.name], column.convert_to
|
|
123
127
|
)
|
|
124
|
-
dataset = self._round_if_needed(column, dataset)
|
|
125
128
|
|
|
126
129
|
return dataset[self.schema.column_names]
|
|
@@ -11,6 +11,7 @@ from datetime import datetime
|
|
|
11
11
|
from functools import cached_property
|
|
12
12
|
from pathlib import Path
|
|
13
13
|
from typing import TYPE_CHECKING
|
|
14
|
+
from uuid import uuid4
|
|
14
15
|
|
|
15
16
|
from pydantic import BaseModel, ConfigDict, PrivateAttr, field_validator, model_validator
|
|
16
17
|
|
|
@@ -165,6 +166,31 @@ class ArtifactStorage(BaseModel):
|
|
|
165
166
|
self._media_storage.base_path = self.base_dataset_path
|
|
166
167
|
self._media_storage.images_dir = self.base_dataset_path / images_subdir
|
|
167
168
|
|
|
169
|
+
def create_dataset_directory(self, *, resume: ResumeMode) -> None:
|
|
170
|
+
"""Exclusively claim a fresh dataset directory, or reuse it when resuming."""
|
|
171
|
+
if resume != ResumeMode.NEVER:
|
|
172
|
+
self.mkdir_if_needed(self.base_dataset_path)
|
|
173
|
+
return
|
|
174
|
+
|
|
175
|
+
dataset_path = self.base_dataset_path
|
|
176
|
+
while True:
|
|
177
|
+
try:
|
|
178
|
+
dataset_path.mkdir(exist_ok=False)
|
|
179
|
+
except FileExistsError:
|
|
180
|
+
dataset_path = self.artifact_path / (
|
|
181
|
+
f"{self.dataset_name}_{datetime.now().strftime('%m-%d-%Y_%H%M%S')}_{uuid4().hex[:8]}"
|
|
182
|
+
)
|
|
183
|
+
except OSError as exc:
|
|
184
|
+
raise ArtifactStorageError(f"Cannot create dataset directory {str(dataset_path)!r}: {exc}") from exc
|
|
185
|
+
else:
|
|
186
|
+
break
|
|
187
|
+
|
|
188
|
+
if dataset_path != self.base_dataset_path:
|
|
189
|
+
logger.info(f"📂 Dataset directory already claimed. This run will be saved to {str(dataset_path)!r}.")
|
|
190
|
+
# Pydantic 2.9 does not support assigning to cached properties.
|
|
191
|
+
self.__dict__["resolved_dataset_name"] = dataset_path.name
|
|
192
|
+
self.refresh_media_storage_path()
|
|
193
|
+
|
|
168
194
|
@staticmethod
|
|
169
195
|
def mkdir_if_needed(path: Path | str) -> Path:
|
|
170
196
|
"""Create the directory if it does not exist."""
|
|
@@ -42,8 +42,8 @@ TYPE_FROM_SYMBOL = {
|
|
|
42
42
|
"PLE": "error",
|
|
43
43
|
"PLR": "refactor",
|
|
44
44
|
"PLW": "warning",
|
|
45
|
-
"SyntaxError": "fatal",
|
|
46
45
|
}
|
|
46
|
+
SYNTAX_ERROR_CODES = {"invalid-syntax", "E999", "SyntaxError"}
|
|
47
47
|
|
|
48
48
|
PYTHON_MESSAGES_FIELD = "python_linter_messages"
|
|
49
49
|
RECORD_ID_COLUMN_NAME = "internal_code_record_id"
|
|
@@ -215,18 +215,20 @@ class PythonValidator(BaseValidator):
|
|
|
215
215
|
|
|
216
216
|
for diagnostic in diagnostics:
|
|
217
217
|
filename = diagnostic["filename"]
|
|
218
|
-
code = diagnostic
|
|
218
|
+
code = diagnostic.get("code")
|
|
219
219
|
location = diagnostic["location"]
|
|
220
220
|
message = diagnostic["message"]
|
|
221
221
|
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
222
|
+
if code is None or code in SYNTAX_ERROR_CODES:
|
|
223
|
+
error_type = "fatal"
|
|
224
|
+
else:
|
|
225
|
+
alpha_prefix = "".join(c for c in code if c.isalpha())
|
|
226
|
+
error_type = TYPE_FROM_SYMBOL.get(alpha_prefix, "warning")
|
|
225
227
|
|
|
226
228
|
processed[Path(filename).stem].add(
|
|
227
229
|
PythonLinterMessage(
|
|
228
230
|
type=error_type,
|
|
229
|
-
symbol=code,
|
|
231
|
+
symbol=str(code),
|
|
230
232
|
line=location["row"],
|
|
231
233
|
column=location["column"],
|
|
232
234
|
message=message,
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
2
2
|
# SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
4
6
|
from unittest.mock import Mock, patch
|
|
5
7
|
|
|
6
8
|
import pytest
|
|
9
|
+
from pydantic import BaseModel, JsonValue
|
|
7
10
|
|
|
8
11
|
from data_designer.config.column_configs import (
|
|
9
12
|
LLMCodeColumnConfig,
|
|
@@ -34,6 +37,24 @@ def test_prompt_renderer_prompt_type():
|
|
|
34
37
|
assert issubclass(PromptType, str)
|
|
35
38
|
|
|
36
39
|
|
|
40
|
+
class DictionaryOutput(BaseModel):
|
|
41
|
+
fields: dict[str, int]
|
|
42
|
+
metadata: dict[str, JsonValue]
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
@pytest.mark.parametrize("use_pydantic", [False, True], ids=["json-schema", "pydantic"])
|
|
46
|
+
def test_create_response_recipe_preserves_structured_dictionary_schema(use_pydantic: bool) -> None:
|
|
47
|
+
config = LLMStructuredColumnConfig(
|
|
48
|
+
name="test_column",
|
|
49
|
+
prompt="Test prompt",
|
|
50
|
+
model_alias="test_model",
|
|
51
|
+
output_format=DictionaryOutput if use_pydantic else DictionaryOutput.model_json_schema(),
|
|
52
|
+
)
|
|
53
|
+
example = DictionaryOutput(fields={"alpha": 1}, metadata={"nested": {"values": [1, "two", None]}})
|
|
54
|
+
recipe = create_response_recipe(config)
|
|
55
|
+
assert recipe.parse(example.model_dump_json()) == example.model_dump()
|
|
56
|
+
|
|
57
|
+
|
|
37
58
|
@pytest.mark.parametrize(
|
|
38
59
|
"config_class,expected_recipe_class",
|
|
39
60
|
[
|
|
@@ -130,8 +130,18 @@ def test_unknown_provider_type_raises_data_designer_error(
|
|
|
130
130
|
inference_parameters=ChatCompletionInferenceParams(),
|
|
131
131
|
provider="custom-provider",
|
|
132
132
|
)
|
|
133
|
-
with pytest.raises(DataDesignerError
|
|
133
|
+
with pytest.raises(DataDesignerError) as exc_info:
|
|
134
134
|
create_model_client(config, secret_resolver, registry)
|
|
135
|
+
assert type(exc_info.value) is DataDesignerError
|
|
136
|
+
assert str(exc_info.value) == "\n".join(
|
|
137
|
+
[
|
|
138
|
+
" |----------",
|
|
139
|
+
" | Cause: Provider type 'custom' for provider 'custom-provider' is not supported.",
|
|
140
|
+
" | Solution: Change provider_type to one of 'openai', 'anthropic' in your model provider config. "
|
|
141
|
+
'Most OpenAI-compatible endpoints (vLLM, TGI, NIM, etc.) work with provider_type="openai".',
|
|
142
|
+
" |----------",
|
|
143
|
+
]
|
|
144
|
+
)
|
|
135
145
|
|
|
136
146
|
|
|
137
147
|
def test_openai_provider_type_case_insensitive(
|