data-designer-engine 0.9.3__tar.gz → 0.9.4__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.3 → data_designer_engine-0.9.4}/PKG-INFO +6 -5
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/pyproject.toml +4 -3
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/column_generators/generators/validation.py +1 -1
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/dataset_builders/dataset_builder.py +1 -1
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/clients/adapters/http_model_client.py +17 -8
- data_designer_engine-0.9.4/src/data_designer/engine/models/clients/adapters/httpx_sharding.py +82 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/clients/retry.py +5 -4
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/parsers/postprocessors.py +15 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/recipes/response_recipes.py +3 -3
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/request_admission/queue.py +6 -4
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/processing/ginja/ast.py +1 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/validation.py +25 -5
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/column_generators/generators/test_validation.py +11 -1
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/dataset_builders/test_async_scheduler.py +0 -1
- data_designer_engine-0.9.4/tests/engine/models/clients/test_httpx_sharding.py +335 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/models/clients/test_native_http_clients.py +85 -6
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/models/parsers/test_postprocessors.py +24 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/models/recipes/test_response_recipes.py +62 -2
- data_designer_engine-0.9.4/tests/engine/models/request_admission/test_request_queue.py +135 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/sampling_gen/test_generator.py +2 -2
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/test_validation.py +135 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/.gitignore +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/README.md +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/__init__.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/analysis/column_profilers/base.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/analysis/column_profilers/judge_score_profiler.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/analysis/column_profilers/registry.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/analysis/column_statistics.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/analysis/dataset_profiler.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/analysis/errors.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/analysis/utils/column_statistics_calculations.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/analysis/utils/judge_score_processing.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/capacity.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/column_generators/__init__.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/column_generators/generators/__init__.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/column_generators/generators/base.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/column_generators/generators/custom.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/column_generators/generators/embedding.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/column_generators/generators/expression.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/column_generators/generators/image.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/column_generators/generators/llm_completion.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/column_generators/generators/samplers.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/column_generators/generators/seed_dataset.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/column_generators/registry.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/column_generators/utils/errors.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/column_generators/utils/generator_classification.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/column_generators/utils/judge_score_factory.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/column_generators/utils/prompt_renderer.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/compiler.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/configurable_task.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/context.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/dataset_builders/async_scheduler.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/dataset_builders/errors.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/dataset_builders/multi_column_configs.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/dataset_builders/row_group_plan.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/dataset_builders/scheduling/completion.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/dataset_builders/scheduling/queue.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/dataset_builders/scheduling/resolver.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/dataset_builders/scheduling/resources.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/dataset_builders/scheduling/task_admission.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/dataset_builders/scheduling/task_model.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/dataset_builders/scheduling/task_policies.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/dataset_builders/utils/__init__.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/dataset_builders/utils/async_concurrency.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/dataset_builders/utils/concurrency.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/dataset_builders/utils/config_compiler.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/dataset_builders/utils/errors.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/dataset_builders/utils/execution_graph.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/dataset_builders/utils/processor_runner.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/dataset_builders/utils/row_group_buffer.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/dataset_builders/utils/skip_evaluator.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/dataset_builders/utils/skip_tracker.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/errors.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/mcp/__init__.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/mcp/errors.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/mcp/facade.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/mcp/factory.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/mcp/io.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/mcp/registry.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/model_provider.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/__init__.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/clients/__init__.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/clients/adapters/__init__.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/clients/adapters/anthropic.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/clients/adapters/anthropic_translation.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/clients/adapters/http_helpers.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/clients/adapters/openai_compatible.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/clients/base.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/clients/errors.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/clients/factory.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/clients/model_request_executor.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/clients/parsing.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/clients/types.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/errors.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/facade.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/factory.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/parsers/__init__.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/parsers/errors.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/parsers/parser.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/parsers/tag_parsers.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/parsers/types.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/recipes/base.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/registry.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/request_admission/config.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/request_admission/controller.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/request_admission/limits.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/request_admission/outcomes.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/request_admission/pressure.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/request_admission/resolver.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/request_admission/resources.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/resources.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/telemetry.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/usage.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/usage_events.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/models/utils.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/observability.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/processing/__init__.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/processing/ginja/__init__.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/processing/ginja/environment.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/processing/ginja/exceptions.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/processing/ginja/record.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/processing/gsonschema/__init__.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/processing/gsonschema/exceptions.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/processing/gsonschema/schema_transformers.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/processing/gsonschema/types.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/processing/gsonschema/validators.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/processing/processors/__init__.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/processing/processors/base.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/processing/processors/drop_columns.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/processing/processors/registry.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/processing/processors/schema_transform.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/processing/utils.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/progress/__init__.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/progress/reporter.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/progress/terminal/__init__.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/progress/terminal/throughput_panel.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/progress/tracker.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/readiness.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/registry/base.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/registry/data_designer_registry.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/registry/errors.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/resources/__init__.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/resources/agent_rollout/__init__.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/resources/agent_rollout/atif.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/resources/agent_rollout/base.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/resources/agent_rollout/claude_code.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/resources/agent_rollout/codex.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/resources/agent_rollout/hermes_agent.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/resources/agent_rollout/pi_coding_agent.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/resources/agent_rollout/registry.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/resources/agent_rollout/types.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/resources/agent_rollout/utils.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/resources/managed_dataset_generator.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/resources/person_reader.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/resources/resource_provider.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/resources/seed_reader.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/sampling_gen/column.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/sampling_gen/constraints.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/sampling_gen/data_sources/base.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/sampling_gen/data_sources/errors.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/sampling_gen/data_sources/sources.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/sampling_gen/entities/__init__.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/sampling_gen/entities/assets/zip_area_code_map.parquet +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/sampling_gen/entities/dataset_based_person_fields.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/sampling_gen/entities/email_address_utils.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/sampling_gen/entities/errors.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/sampling_gen/entities/national_id_utils.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/sampling_gen/entities/person.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/sampling_gen/entities/phone_number.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/sampling_gen/errors.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/sampling_gen/generator.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/sampling_gen/jinja_utils.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/sampling_gen/people_gen.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/sampling_gen/person_constants.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/sampling_gen/schema.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/sampling_gen/schema_builder.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/sampling_gen/utils.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/secret_resolver.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/storage/__init__.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/storage/artifact_storage.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/storage/media_storage.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/testing/__init__.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/testing/fixtures.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/testing/observability.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/testing/seed_readers.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/testing/stubs.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/testing/utils.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/utils/__init__.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/utils/token_counting.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/validators/__init__.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/validators/base.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/validators/local_callable.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/validators/python.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/validators/remote.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/validators/sql.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/__init__.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/conftest.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/__init__.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/analysis/column_profilers/test_base.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/analysis/column_profilers/test_judge_score_profiler.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/analysis/conftest.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/analysis/test_column_statistics_calculator.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/analysis/test_data/artifacts/dataset/column_configs.json +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/analysis/test_data/artifacts/dataset/dataset.json +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/analysis/test_data/artifacts/dataset/metadata.json +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/analysis/test_dataset_profiler.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/analysis/test_errors.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/analysis/utils/test_column_statistics_calculations.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/analysis/utils/test_judge_score_processing.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/column_generators/generators/__init__.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/column_generators/generators/test_async_generators.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/column_generators/generators/test_column_generator_base.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/column_generators/generators/test_custom.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/column_generators/generators/test_embedding.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/column_generators/generators/test_expression.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/column_generators/generators/test_image.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/column_generators/generators/test_llm_completion_generators.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/column_generators/generators/test_samplers.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/column_generators/generators/test_seed_dataset.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/column_generators/test_registry.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/column_generators/utils/test_column_generator_errors.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/column_generators/utils/test_generator_classification.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/column_generators/utils/test_judge_score_factory.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/column_generators/utils/test_prompt_renderer.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/conftest.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/dataset_builders/scheduling/test_completion.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/dataset_builders/scheduling/test_queue.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/dataset_builders/scheduling/test_resolver.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/dataset_builders/scheduling/test_resources.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/dataset_builders/scheduling/test_task_admission.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/dataset_builders/scheduling/test_task_model.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/dataset_builders/scheduling/test_task_policies.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/dataset_builders/test_async_builder_integration.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/dataset_builders/test_dataset_builder.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/dataset_builders/test_multi_column_configs.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/dataset_builders/utils/test_concurrency.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/dataset_builders/utils/test_config_compiler.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/dataset_builders/utils/test_execution_graph.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/dataset_builders/utils/test_row_group_buffer.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/dataset_builders/utils/test_skip_evaluator.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/dataset_builders/utils/test_skip_tracker.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/dataset_builders/utils/test_topological_sort.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/mcp/conftest.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/mcp/test_mcp_facade.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/mcp/test_mcp_factory.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/mcp/test_mcp_io.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/mcp/test_mcp_registry.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/models/__init__.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/models/clients/__init__.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/models/clients/conftest.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/models/clients/test_anthropic.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/models/clients/test_anthropic_translation.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/models/clients/test_client_errors.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/models/clients/test_factory.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/models/clients/test_model_request_executor.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/models/clients/test_openai_compatible.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/models/clients/test_parsing.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/models/clients/test_retry.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/models/clients/test_types.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/models/conftest.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/models/parsers/test_parser.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/models/parsers/test_parsers_types.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/models/parsers/test_tag_parsers.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/models/recipes/test_recipe_base.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/models/request_admission/test_controller.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/models/stub_secrets.json +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/models/test_facade.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/models/test_model_errors.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/models/test_model_registry.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/models/test_model_utils.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/models/test_telemetry.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/models/test_usage.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/processing/__init__.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/processing/ginja/__init__.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/processing/ginja/test_ast.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/processing/ginja/test_environment.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/processing/ginja/test_exceptions.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/processing/ginja/test_record.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/processing/gsonschema/__init__.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/processing/gsonschema/test_exceptions.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/processing/gsonschema/test_schema_transformers.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/processing/gsonschema/test_types.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/processing/gsonschema/test_validators.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/processing/processors/__init__.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/processing/processors/test_drop_columns.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/processing/processors/test_registry.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/processing/processors/test_schema_transform.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/processing/test_utils.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/progress/terminal/test_throughput_panel.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/progress/test_tracker.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/registry/__init__.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/registry/conftest.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/registry/test_base.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/registry/test_data_designer_registry.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/registry/test_errors.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/resources/__init__.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/resources/agent_rollout/__init__.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/resources/agent_rollout/test_atif.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/resources/agent_rollout/test_claude_code.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/resources/agent_rollout/test_codex.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/resources/agent_rollout/test_hermes_agent.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/resources/agent_rollout/test_pi_coding_agent.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/resources/agent_rollout/test_utils.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/resources/conftest.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/resources/test_managed_dataset_generator.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/resources/test_person_reader.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/resources/test_resource_provider.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/resources/test_seed_reader.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/sampling_gen/conftest.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/sampling_gen/data_sources/test_sampler_errors.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/sampling_gen/data_sources/test_sources.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/sampling_gen/entities/test_email_address_utils.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/sampling_gen/entities/test_national_id_utils.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/sampling_gen/entities/test_person.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/sampling_gen/entities/test_phone_number.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/sampling_gen/test_column.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/sampling_gen/test_constraints.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/sampling_gen/test_jinja_utils.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/sampling_gen/test_people_gen.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/sampling_gen/test_schema.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/sampling_gen/test_utils.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/storage/__init__.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/storage/test_artifact_storage.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/storage/test_media_storage.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/test_capacity.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/test_compiler.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/test_configurable_task.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/test_dataset_metadata.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/test_engine_errors.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/test_model_provider.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/test_observability.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/test_readiness.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/test_secret_resolver.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/testing/test_plugin_testing_utils.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/utils/test_token_counting.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/validators/test_local_callable.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/validators/test_python.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/validators/test_remote.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/tests/engine/validators/test_sql.py +0 -0
- {data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/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.4
|
|
4
4
|
Summary: Generation engine for DataDesigner synthetic data generation
|
|
5
5
|
License-Expression: Apache-2.0
|
|
6
6
|
Classifier: Development Status :: 4 - Beta
|
|
@@ -15,10 +15,11 @@ Classifier: Programming Language :: Python :: 3.14
|
|
|
15
15
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
16
16
|
Requires-Python: >=3.10
|
|
17
17
|
Requires-Dist: anyascii<1,>=0.3.3
|
|
18
|
+
Requires-Dist: anyio<5,>=4.14.2
|
|
18
19
|
Requires-Dist: asciichartpy<2,>=1.5.25
|
|
19
20
|
Requires-Dist: chardet<6,>=3.0.2
|
|
20
|
-
Requires-Dist: cryptography
|
|
21
|
-
Requires-Dist: data-designer-config==0.9.
|
|
21
|
+
Requires-Dist: cryptography<51,>=50.0.0
|
|
22
|
+
Requires-Dist: data-designer-config==0.9.4
|
|
22
23
|
Requires-Dist: duckdb<2,>=1.5.0
|
|
23
24
|
Requires-Dist: faker<21,>=20.1.0
|
|
24
25
|
Requires-Dist: fsspec<2026,>=2025.3.0
|
|
@@ -34,10 +35,10 @@ Requires-Dist: marko<3,>=2.1.2
|
|
|
34
35
|
Requires-Dist: mcp<2,>=1.29.0
|
|
35
36
|
Requires-Dist: networkx<4,>=3.0
|
|
36
37
|
Requires-Dist: numpy<3,>=1.23.5
|
|
37
|
-
Requires-Dist: pandas<
|
|
38
|
+
Requires-Dist: pandas<4,>=2.3.3
|
|
38
39
|
Requires-Dist: pyarrow<25,>=24
|
|
39
40
|
Requires-Dist: pydantic<3,>=2.9.2
|
|
40
|
-
Requires-Dist: pyjwt[crypto]<3,>=2.
|
|
41
|
+
Requires-Dist: pyjwt[crypto]<3,>=2.15.0
|
|
41
42
|
Requires-Dist: python-multipart<1,>=0.0.32
|
|
42
43
|
Requires-Dist: rich<15,>=13.7.1
|
|
43
44
|
Requires-Dist: ruff<1,>=0.14.10
|
|
@@ -34,9 +34,10 @@ bump = true
|
|
|
34
34
|
[tool.hatch.metadata.hooks.uv-dynamic-versioning]
|
|
35
35
|
dependencies = [
|
|
36
36
|
"anyascii>=0.3.3,<1",
|
|
37
|
+
"anyio>=4.14.2,<5", # 4.14.2 fixes AnyIO security advisories pulled in by HTTP clients
|
|
37
38
|
"asciichartpy>=1.5.25,<2",
|
|
38
39
|
"chardet>=3.0.2,<6", # Pulled in by sqlfluff
|
|
39
|
-
"cryptography>=
|
|
40
|
+
"cryptography>=50.0.0,<51", # 50.0.0 fixes certificate and PKCS#7 security advisories
|
|
40
41
|
"data-designer-config=={{ version }}",
|
|
41
42
|
"duckdb>=1.5.0,<2",
|
|
42
43
|
"faker>=20.1.0,<21",
|
|
@@ -53,10 +54,10 @@ dependencies = [
|
|
|
53
54
|
"mcp>=1.29.0,<2", # 1.29.0 fixes MCP security advisories
|
|
54
55
|
"networkx>=3.0,<4",
|
|
55
56
|
"numpy>=1.23.5,<3",
|
|
56
|
-
"pandas>=2.3.3,<
|
|
57
|
+
"pandas>=2.3.3,<4",
|
|
57
58
|
"pyarrow>=24,<25", # 24.0.0 fixes PyArrow security advisories
|
|
58
59
|
"pydantic>=2.9.2,<3",
|
|
59
|
-
"pyjwt[crypto]>=2.
|
|
60
|
+
"pyjwt[crypto]>=2.15.0,<3", # 2.15.0 fixes PyJWT security advisories pulled in by mcp
|
|
60
61
|
"python-multipart>=0.0.32,<1", # 0.0.32 addresses multipart security advisories pulled in by mcp
|
|
61
62
|
"rich>=13.7.1,<15",
|
|
62
63
|
"ruff>=0.14.10,<1",
|
|
@@ -119,7 +119,7 @@ class ValidationColumnGenerator(ColumnGeneratorFullColumn[ValidationColumnConfig
|
|
|
119
119
|
column_name=self.config.name,
|
|
120
120
|
result_callback=result_callback,
|
|
121
121
|
error_callback=error_callback,
|
|
122
|
-
shutdown_error_rate=settings.
|
|
122
|
+
shutdown_error_rate=settings.effective_shutdown_error_rate,
|
|
123
123
|
shutdown_error_window=settings.shutdown_error_window,
|
|
124
124
|
disable_early_shutdown=settings.disable_early_shutdown,
|
|
125
125
|
) as executor:
|
|
@@ -843,7 +843,7 @@ class DatasetBuilder:
|
|
|
843
843
|
num_records,
|
|
844
844
|
buffer_size,
|
|
845
845
|
on_finalize_row_group=finalize_row_group,
|
|
846
|
-
shutdown_error_rate=settings.
|
|
846
|
+
shutdown_error_rate=settings.effective_shutdown_error_rate,
|
|
847
847
|
shutdown_error_window=settings.shutdown_error_window,
|
|
848
848
|
disable_early_shutdown=settings.disable_early_shutdown,
|
|
849
849
|
trace=trace_enabled,
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
|
|
4
4
|
from __future__ import annotations
|
|
5
5
|
|
|
6
|
+
import asyncio
|
|
7
|
+
import importlib
|
|
6
8
|
import threading
|
|
7
9
|
from abc import ABC, abstractmethod
|
|
8
10
|
from typing import TYPE_CHECKING, Any
|
|
@@ -15,10 +17,11 @@ from data_designer.engine.models.clients.adapters.http_helpers import (
|
|
|
15
17
|
wrap_transport_error,
|
|
16
18
|
)
|
|
17
19
|
from data_designer.engine.models.clients.errors import SyncClientUnavailableError, map_http_error_to_provider_error
|
|
18
|
-
from data_designer.engine.models.clients.retry import RetryConfig,
|
|
20
|
+
from data_designer.engine.models.clients.retry import RetryConfig, create_retry_transport
|
|
19
21
|
|
|
20
22
|
if TYPE_CHECKING:
|
|
21
23
|
import httpx
|
|
24
|
+
from httpx_retries import RetryTransport
|
|
22
25
|
|
|
23
26
|
|
|
24
27
|
class ClientConcurrencyMode(StrEnum):
|
|
@@ -66,6 +69,7 @@ class HttpModelClient(ABC):
|
|
|
66
69
|
self._timeout_s = timeout_s
|
|
67
70
|
self._retry_config = retry_config
|
|
68
71
|
self._mode: ClientConcurrencyMode = concurrency_mode
|
|
72
|
+
self._shard_count = min(16, max(1, max_parallel_requests))
|
|
69
73
|
|
|
70
74
|
pool_max = max(_MIN_MAX_CONNECTIONS, _POOL_MAX_MULTIPLIER * max_parallel_requests)
|
|
71
75
|
pool_keepalive = max(_MIN_KEEPALIVE_CONNECTIONS, max_parallel_requests)
|
|
@@ -78,6 +82,7 @@ class HttpModelClient(ABC):
|
|
|
78
82
|
self._aclient: httpx.AsyncClient | None = async_client
|
|
79
83
|
self._init_lock = threading.Lock()
|
|
80
84
|
self._closed = False
|
|
85
|
+
self._close_future: asyncio.Future[list[None | BaseException]] | None = None
|
|
81
86
|
|
|
82
87
|
@property
|
|
83
88
|
def concurrency_mode(self) -> ClientConcurrencyMode:
|
|
@@ -120,7 +125,8 @@ class HttpModelClient(ABC):
|
|
|
120
125
|
raise RuntimeError("Model client is closed.")
|
|
121
126
|
if self._aclient is None:
|
|
122
127
|
if self._transport is None:
|
|
123
|
-
|
|
128
|
+
sharding = importlib.import_module("data_designer.engine.models.clients.adapters.httpx_sharding")
|
|
129
|
+
inner = sharding.ShardedAsyncHTTPTransport(limits=self._limits, shard_count=self._shard_count)
|
|
124
130
|
self._transport = create_retry_transport(
|
|
125
131
|
self._retry_config, strip_rate_limit_codes=True, transport=inner
|
|
126
132
|
)
|
|
@@ -152,15 +158,18 @@ class HttpModelClient(ABC):
|
|
|
152
158
|
if self._mode != ClientConcurrencyMode.ASYNC:
|
|
153
159
|
return
|
|
154
160
|
with self._init_lock:
|
|
155
|
-
async_client = self._aclient
|
|
156
|
-
transport = self._transport
|
|
157
161
|
self._closed = True
|
|
162
|
+
resource = self._aclient if self._aclient is not None else self._transport
|
|
163
|
+
if self._close_future is None and resource is not None:
|
|
164
|
+
self._close_future = asyncio.gather(resource.aclose(), return_exceptions=True)
|
|
165
|
+
elif self._close_future is None:
|
|
166
|
+
return
|
|
158
167
|
self._aclient = None
|
|
159
168
|
self._transport = None
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
169
|
+
results = await asyncio.shield(self._close_future)
|
|
170
|
+
for result in results:
|
|
171
|
+
if isinstance(result, BaseException):
|
|
172
|
+
raise result
|
|
164
173
|
|
|
165
174
|
# --- HTTP helpers ---
|
|
166
175
|
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
"""Public-API HTTPX transport sharding."""
|
|
5
|
+
|
|
6
|
+
from __future__ import annotations
|
|
7
|
+
|
|
8
|
+
import asyncio
|
|
9
|
+
from collections.abc import Callable
|
|
10
|
+
from typing import TYPE_CHECKING
|
|
11
|
+
|
|
12
|
+
# RetryTransport requires concrete AsyncBaseTransport inheritance.
|
|
13
|
+
# This module is loaded only when constructing an async transport.
|
|
14
|
+
from httpx import AsyncBaseTransport
|
|
15
|
+
|
|
16
|
+
import data_designer.lazy_heavy_imports as lazy
|
|
17
|
+
|
|
18
|
+
if TYPE_CHECKING:
|
|
19
|
+
import httpx
|
|
20
|
+
|
|
21
|
+
_DEFAULT_SHARD_COUNT = 16
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def _split_limit(total: int, shard_count: int) -> list[int]:
|
|
25
|
+
base, remainder = divmod(total, shard_count)
|
|
26
|
+
return [base + (index < remainder) for index in range(shard_count)]
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class ShardedAsyncHTTPTransport(AsyncBaseTransport):
|
|
30
|
+
"""Distribute requests round-robin across ordinary HTTPX transports."""
|
|
31
|
+
|
|
32
|
+
def __init__(
|
|
33
|
+
self,
|
|
34
|
+
*,
|
|
35
|
+
limits: httpx.Limits,
|
|
36
|
+
shard_count: int = _DEFAULT_SHARD_COUNT,
|
|
37
|
+
transport_factory: Callable[[httpx.Limits], httpx.AsyncBaseTransport] | None = None,
|
|
38
|
+
) -> None:
|
|
39
|
+
if shard_count <= 0:
|
|
40
|
+
raise ValueError("shard_count must be positive")
|
|
41
|
+
if limits.max_connections is None or limits.max_keepalive_connections is None:
|
|
42
|
+
raise ValueError("sharded transport requires finite connection limits")
|
|
43
|
+
if limits.max_connections < shard_count or limits.max_keepalive_connections < shard_count:
|
|
44
|
+
raise ValueError("connection limits must provide at least one connection per shard")
|
|
45
|
+
|
|
46
|
+
factory = transport_factory or (lambda shard_limits: lazy.httpx.AsyncHTTPTransport(limits=shard_limits))
|
|
47
|
+
maximums = _split_limit(limits.max_connections, shard_count)
|
|
48
|
+
keepalives = _split_limit(limits.max_keepalive_connections, shard_count)
|
|
49
|
+
self._shard_limits = tuple(
|
|
50
|
+
lazy.httpx.Limits(
|
|
51
|
+
max_connections=maximum,
|
|
52
|
+
max_keepalive_connections=keepalive,
|
|
53
|
+
keepalive_expiry=limits.keepalive_expiry,
|
|
54
|
+
)
|
|
55
|
+
for maximum, keepalive in zip(maximums, keepalives, strict=True)
|
|
56
|
+
)
|
|
57
|
+
self._transports = tuple(factory(shard_limits) for shard_limits in self._shard_limits)
|
|
58
|
+
self._next_transport = 0
|
|
59
|
+
self._closed = False
|
|
60
|
+
self._close_future: asyncio.Future[list[None | BaseException]] | None = None
|
|
61
|
+
|
|
62
|
+
@property
|
|
63
|
+
def shard_limits(self) -> tuple[httpx.Limits, ...]:
|
|
64
|
+
return self._shard_limits
|
|
65
|
+
|
|
66
|
+
async def handle_async_request(self, request: httpx.Request) -> httpx.Response:
|
|
67
|
+
if self._closed:
|
|
68
|
+
raise RuntimeError("Transport is closed.")
|
|
69
|
+
transport = self._transports[self._next_transport]
|
|
70
|
+
self._next_transport = (self._next_transport + 1) % len(self._transports)
|
|
71
|
+
return await transport.handle_async_request(request)
|
|
72
|
+
|
|
73
|
+
async def aclose(self) -> None:
|
|
74
|
+
self._closed = True
|
|
75
|
+
if self._close_future is None:
|
|
76
|
+
self._close_future = asyncio.gather(
|
|
77
|
+
*(transport.aclose() for transport in self._transports), return_exceptions=True
|
|
78
|
+
)
|
|
79
|
+
results = await asyncio.shield(self._close_future)
|
|
80
|
+
for result in results:
|
|
81
|
+
if isinstance(result, BaseException):
|
|
82
|
+
raise result
|
|
@@ -7,10 +7,11 @@ import logging
|
|
|
7
7
|
from dataclasses import dataclass, field
|
|
8
8
|
from typing import TYPE_CHECKING
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
import data_designer.lazy_heavy_imports as lazy
|
|
11
11
|
|
|
12
12
|
if TYPE_CHECKING:
|
|
13
13
|
import httpx
|
|
14
|
+
from httpx_retries import RetryTransport
|
|
14
15
|
|
|
15
16
|
logger = logging.getLogger(__name__)
|
|
16
17
|
|
|
@@ -72,13 +73,13 @@ def create_retry_transport(
|
|
|
72
73
|
sorted(reserved_overlap),
|
|
73
74
|
)
|
|
74
75
|
status_codes = status_codes - _RESERVED_STATUS_CODES
|
|
75
|
-
retry = Retry(
|
|
76
|
+
retry = lazy.httpx_retries.Retry(
|
|
76
77
|
total=cfg.max_retries,
|
|
77
78
|
backoff_factor=cfg.backoff_factor,
|
|
78
79
|
backoff_jitter=cfg.backoff_jitter,
|
|
79
80
|
max_backoff_wait=cfg.max_backoff_wait,
|
|
80
81
|
status_forcelist=status_codes,
|
|
81
82
|
respect_retry_after_header=True,
|
|
82
|
-
allowed_methods=Retry.RETRYABLE_METHODS | frozenset(["POST"]),
|
|
83
|
+
allowed_methods=lazy.httpx_retries.Retry.RETRYABLE_METHODS | frozenset(["POST"]),
|
|
83
84
|
)
|
|
84
|
-
return RetryTransport(transport=transport, retry=retry)
|
|
85
|
+
return lazy.httpx_retries.RetryTransport(transport=transport, retry=retry)
|
|
@@ -3,6 +3,9 @@
|
|
|
3
3
|
|
|
4
4
|
from __future__ import annotations
|
|
5
5
|
|
|
6
|
+
import json
|
|
7
|
+
from typing import NoReturn
|
|
8
|
+
|
|
6
9
|
import json_repair
|
|
7
10
|
|
|
8
11
|
from data_designer.engine.models.parsers.types import (
|
|
@@ -41,6 +44,7 @@ def merge_text_blocks(
|
|
|
41
44
|
def deserialize_json_code(
|
|
42
45
|
structured_response: LLMStructuredResponse,
|
|
43
46
|
) -> LLMStructuredResponse:
|
|
47
|
+
"""Deserialize fenced JSON, falling back to a complete bare JSON response."""
|
|
44
48
|
processed_response = structured_response.model_copy()
|
|
45
49
|
processed_response.parsed = []
|
|
46
50
|
|
|
@@ -54,4 +58,15 @@ def deserialize_json_code(
|
|
|
54
58
|
else:
|
|
55
59
|
processed_response.parsed.append(block)
|
|
56
60
|
|
|
61
|
+
if not any(isinstance(block, StructuredDataBlock) for block in processed_response.parsed):
|
|
62
|
+
try:
|
|
63
|
+
deserialized = json.loads(structured_response.response, parse_constant=_reject_json_constant)
|
|
64
|
+
except ValueError:
|
|
65
|
+
return processed_response
|
|
66
|
+
processed_response.parsed = [StructuredDataBlock(serialized=structured_response.response, obj=deserialized)]
|
|
67
|
+
|
|
57
68
|
return processed_response
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def _reject_json_constant(value: str) -> NoReturn:
|
|
72
|
+
raise ValueError(f"Non-standard JSON constant: {value}")
|
|
@@ -82,7 +82,7 @@ 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`, then validation will fail
|
|
85
|
+
no_extra_properties (bool): If `True`, then validation will fail
|
|
86
86
|
if extra properties are encountered in the returned JSON response.
|
|
87
87
|
Default=True.
|
|
88
88
|
"""
|
|
@@ -139,7 +139,7 @@ class StructuredResponseRecipe(ResponseRecipe[dict]):
|
|
|
139
139
|
return validate(obj, **self._validate_args)
|
|
140
140
|
except IndexError:
|
|
141
141
|
raise ParserException(
|
|
142
|
-
"No parsable JSON
|
|
142
|
+
"No parsable JSON found: expected a ```json markdown fence or a complete bare JSON response.",
|
|
143
143
|
source=response,
|
|
144
144
|
) from None
|
|
145
145
|
except JSONSchemaValidationError as exc:
|
|
@@ -219,7 +219,7 @@ class PydanticResponseRecipe(ResponseRecipe[BaseModel]):
|
|
|
219
219
|
return self.data_type.model_validate(obj)
|
|
220
220
|
except IndexError:
|
|
221
221
|
raise ParserException(
|
|
222
|
-
"No parsable JSON
|
|
222
|
+
"No parsable JSON found: expected a ```json markdown fence or a complete bare JSON response.",
|
|
223
223
|
source=response,
|
|
224
224
|
) from None
|
|
225
225
|
except Exception as exc:
|
|
@@ -51,7 +51,6 @@ class RequestFairQueue:
|
|
|
51
51
|
self._queued: dict[str, RequestWaiter] = {}
|
|
52
52
|
self._waiter_groups: dict[str, RequestResourceKey] = {}
|
|
53
53
|
self._group_finish: dict[RequestResourceKey, float] = {}
|
|
54
|
-
self._heap: list[tuple[float, int, RequestResourceKey]] = []
|
|
55
54
|
self._active_heap_entries: dict[RequestResourceKey, tuple[float, int]] = {}
|
|
56
55
|
self._sequence = 0
|
|
57
56
|
self._sequence_version = 0
|
|
@@ -83,7 +82,11 @@ class RequestFairQueue:
|
|
|
83
82
|
waiter = self._queued.pop(waiter_id, None)
|
|
84
83
|
if waiter is None:
|
|
85
84
|
return None
|
|
86
|
-
self._waiter_groups.pop(waiter_id, None)
|
|
85
|
+
key = self._waiter_groups.pop(waiter_id, None)
|
|
86
|
+
if key is not None:
|
|
87
|
+
self._purge_queue_head(key)
|
|
88
|
+
if not self._queues.get(key):
|
|
89
|
+
self._active_heap_entries.pop(key, None)
|
|
87
90
|
self._sequence_version += 1
|
|
88
91
|
return waiter
|
|
89
92
|
|
|
@@ -91,7 +94,7 @@ class RequestFairQueue:
|
|
|
91
94
|
self, is_eligible: Callable[[RequestWaiter, RequestQueueView], bool]
|
|
92
95
|
) -> RequestQueueSelection | None:
|
|
93
96
|
view = self.view()
|
|
94
|
-
heap_copy =
|
|
97
|
+
heap_copy = [(finish, sequence, key) for key, (finish, sequence) in self._active_heap_entries.items()]
|
|
95
98
|
heapq.heapify(heap_copy)
|
|
96
99
|
active_seen: set[RequestResourceKey] = set()
|
|
97
100
|
while heap_copy:
|
|
@@ -165,7 +168,6 @@ class RequestFairQueue:
|
|
|
165
168
|
return
|
|
166
169
|
self._sequence += 1
|
|
167
170
|
finish = self._group_finish.get(key, self._virtual_time)
|
|
168
|
-
heapq.heappush(self._heap, (finish, self._sequence, key))
|
|
169
171
|
self._active_heap_entries[key] = (finish, self._sequence)
|
|
170
172
|
|
|
171
173
|
def _first_valid_waiter(self, key: RequestResourceKey) -> RequestWaiter | None:
|
|
@@ -62,6 +62,7 @@ def ast_count_name_references(ast: j_nodes.Node, name: str) -> int:
|
|
|
62
62
|
|
|
63
63
|
Args:
|
|
64
64
|
ast (jinja2.nodes.Node): The starting Jinja2 AST node
|
|
65
|
+
name (str): The variable name to count references to.
|
|
65
66
|
|
|
66
67
|
Returns:
|
|
67
68
|
int: The number of nodes descended from the provided node whose
|
{data_designer_engine-0.9.3 → data_designer_engine-0.9.4}/src/data_designer/engine/validation.py
RENAMED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
from __future__ import annotations
|
|
5
5
|
|
|
6
|
+
import re
|
|
6
7
|
from enum import Enum
|
|
7
8
|
from fnmatch import fnmatch
|
|
8
9
|
from string import Formatter
|
|
@@ -451,9 +452,28 @@ def validate_skip_references(
|
|
|
451
452
|
return violations
|
|
452
453
|
|
|
453
454
|
|
|
455
|
+
_FORMAT_FIELD_REFERENCE_PATTERN = re.compile(
|
|
456
|
+
r"(?<!\{)\{"
|
|
457
|
+
r"([^{}!:]+)"
|
|
458
|
+
r"(?:![sra])?"
|
|
459
|
+
r"(?::[^{}]*(?:\{[^{}]*\}[^{}]*)*)?"
|
|
460
|
+
r"\}"
|
|
461
|
+
)
|
|
462
|
+
|
|
463
|
+
|
|
454
464
|
def _get_string_formatter_references(template: str, allowed_references: list[str]) -> list[str]:
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
465
|
+
try:
|
|
466
|
+
return [
|
|
467
|
+
k[1].strip()
|
|
468
|
+
for k in Formatter().parse(template)
|
|
469
|
+
if len(k) > 1 and k[1] is not None and k[1].strip() in allowed_references
|
|
470
|
+
]
|
|
471
|
+
except ValueError:
|
|
472
|
+
# Unmatched literal braces (e.g. JSON examples like 'output format: }') are
|
|
473
|
+
# invalid f-string syntax but valid Jinja text, so ``Formatter().parse`` can
|
|
474
|
+
# raise ``ValueError``. Fall back to a tolerant regex scan that skips Jinja
|
|
475
|
+
# ``{{ ... }}`` expressions so the advisory check still detects ``{column}``
|
|
476
|
+
# references without crashing validation.
|
|
477
|
+
return [
|
|
478
|
+
ref for m in _FORMAT_FIELD_REFERENCE_PATTERN.findall(template) if (ref := m.strip()) in allowed_references
|
|
479
|
+
]
|
|
@@ -9,6 +9,7 @@ import pytest
|
|
|
9
9
|
|
|
10
10
|
import data_designer.lazy_heavy_imports as lazy
|
|
11
11
|
from data_designer.config.column_configs import ValidationColumnConfig
|
|
12
|
+
from data_designer.config.run_config import RunConfig
|
|
12
13
|
from data_designer.config.utils.code_lang import CodeLang
|
|
13
14
|
from data_designer.config.validator_params import (
|
|
14
15
|
CodeValidatorParams,
|
|
@@ -203,8 +204,16 @@ def test_validation_column_generator_generate_with_different_strategies(
|
|
|
203
204
|
assert len(result["validation_column"]) == len(df)
|
|
204
205
|
|
|
205
206
|
|
|
207
|
+
@pytest.mark.parametrize(
|
|
208
|
+
("disable", "rate", "expected_rate"),
|
|
209
|
+
[(True, 0.2, 1.0), (False, 0.2, 0.2)],
|
|
210
|
+
ids=["disabled-passes-effective-rate", "enabled-passes-configured-rate"],
|
|
211
|
+
)
|
|
206
212
|
@patch("data_designer.engine.column_generators.generators.validation.get_validator_from_params", autospec=True)
|
|
207
|
-
def test_validation_column_generator_validate_in_parallel_failure(
|
|
213
|
+
def test_validation_column_generator_validate_in_parallel_failure(
|
|
214
|
+
mock_get_validator: Mock, stub_resource_provider: Mock, disable: bool, rate: float, expected_rate: float
|
|
215
|
+
) -> None:
|
|
216
|
+
stub_resource_provider.run_config = RunConfig(disable_early_shutdown=disable, shutdown_error_rate=rate)
|
|
208
217
|
mock_validator = Mock()
|
|
209
218
|
mock_validator.run_validation.return_value = ValidationResult(data=[ValidationOutput(is_valid=True)])
|
|
210
219
|
mock_get_validator.return_value = mock_validator
|
|
@@ -242,3 +251,4 @@ def test_validation_column_generator_validate_in_parallel_failure(mock_get_valid
|
|
|
242
251
|
|
|
243
252
|
call_kwargs = mock_executor_class.call_args[1]
|
|
244
253
|
assert call_kwargs["disable_early_shutdown"] == stub_resource_provider.run_config.disable_early_shutdown
|
|
254
|
+
assert call_kwargs["shutdown_error_rate"] == expected_rate
|
|
@@ -4989,7 +4989,6 @@ async def test_scheduler_request_resource_admission_avoids_creating_waiters() ->
|
|
|
4989
4989
|
request_admission = AdaptiveRequestAdmissionController(
|
|
4990
4990
|
RequestAdmissionConfig(
|
|
4991
4991
|
initial_limits={resource: 4},
|
|
4992
|
-
default_queue_wait_timeout_seconds=0.02,
|
|
4993
4992
|
),
|
|
4994
4993
|
event_sink=sink,
|
|
4995
4994
|
)
|