data-designer 0.3.7__tar.gz → 0.3.8rc1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (433) hide show
  1. {data_designer-0.3.7 → data_designer-0.3.8rc1}/PKG-INFO +1 -1
  2. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/_version.py +2 -2
  3. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/column_generators/generators/llm_completion.py +15 -3
  4. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/compiler.py +32 -1
  5. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/processing/utils.py +15 -8
  6. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/column_generators/generators/test_llm_completion_generators.py +79 -0
  7. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/dataset_builders/test_column_wise_builder.py +18 -10
  8. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/test_compiler.py +68 -2
  9. {data_designer-0.3.7 → data_designer-0.3.8rc1}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  10. {data_designer-0.3.7 → data_designer-0.3.8rc1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  11. {data_designer-0.3.7 → data_designer-0.3.8rc1}/.github/ISSUE_TEMPLATE/development-task.yml +0 -0
  12. {data_designer-0.3.7 → data_designer-0.3.8rc1}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
  13. {data_designer-0.3.7 → data_designer-0.3.8rc1}/.github/workflows/build-docs.yml +0 -0
  14. {data_designer-0.3.7 → data_designer-0.3.8rc1}/.github/workflows/build-notebooks.yml +0 -0
  15. {data_designer-0.3.7 → data_designer-0.3.8rc1}/.github/workflows/check-colab-notebooks.yml +0 -0
  16. {data_designer-0.3.7 → data_designer-0.3.8rc1}/.github/workflows/ci.yml +0 -0
  17. {data_designer-0.3.7 → data_designer-0.3.8rc1}/.github/workflows/dco-assistant.yml +0 -0
  18. {data_designer-0.3.7 → data_designer-0.3.8rc1}/.github/workflows/pack-tutorials.yml +0 -0
  19. {data_designer-0.3.7 → data_designer-0.3.8rc1}/.github/workflows/semantic-pull-requests.yml +0 -0
  20. {data_designer-0.3.7 → data_designer-0.3.8rc1}/.gitignore +0 -0
  21. {data_designer-0.3.7 → data_designer-0.3.8rc1}/.pre-commit-config.yaml +0 -0
  22. {data_designer-0.3.7 → data_designer-0.3.8rc1}/AGENTS.md +0 -0
  23. {data_designer-0.3.7 → data_designer-0.3.8rc1}/CLAUDE.md +0 -0
  24. {data_designer-0.3.7 → data_designer-0.3.8rc1}/CODE_OF_CONDUCT.md +0 -0
  25. {data_designer-0.3.7 → data_designer-0.3.8rc1}/CONTRIBUTING.md +0 -0
  26. {data_designer-0.3.7 → data_designer-0.3.8rc1}/DCO +0 -0
  27. {data_designer-0.3.7 → data_designer-0.3.8rc1}/LICENSE +0 -0
  28. {data_designer-0.3.7 → data_designer-0.3.8rc1}/Makefile +0 -0
  29. {data_designer-0.3.7 → data_designer-0.3.8rc1}/README.md +0 -0
  30. {data_designer-0.3.7 → data_designer-0.3.8rc1}/VERSIONING.md +0 -0
  31. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/CONTRIBUTING.md +0 -0
  32. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/assets/palette-favicon.png +0 -0
  33. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/assets/recipes/code_generation/text_to_python.py +0 -0
  34. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/assets/recipes/code_generation/text_to_sql.py +0 -0
  35. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/assets/recipes/qa_and_chat/multi_turn_chat.py +0 -0
  36. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/assets/recipes/qa_and_chat/product_info_qa.py +0 -0
  37. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/code_reference/analysis.md +0 -0
  38. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/code_reference/column_configs.md +0 -0
  39. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/code_reference/config_builder.md +0 -0
  40. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/code_reference/data_designer_config.md +0 -0
  41. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/code_reference/models.md +0 -0
  42. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/code_reference/processors.md +0 -0
  43. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/code_reference/sampler_params.md +0 -0
  44. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/code_reference/validator_params.md +0 -0
  45. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/colab_notebooks/1-the-basics.ipynb +0 -0
  46. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/colab_notebooks/2-structured-outputs-and-jinja-expressions.ipynb +0 -0
  47. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/colab_notebooks/3-seeding-with-a-dataset.ipynb +0 -0
  48. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/colab_notebooks/4-providing-images-as-context.ipynb +0 -0
  49. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/concepts/columns.md +0 -0
  50. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/concepts/models/configure-model-settings-with-the-cli.md +0 -0
  51. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/concepts/models/custom-model-settings.md +0 -0
  52. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/concepts/models/default-model-settings.md +0 -0
  53. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/concepts/models/inference-parameters.md +0 -0
  54. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/concepts/models/model-configs.md +0 -0
  55. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/concepts/models/model-providers.md +0 -0
  56. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/concepts/person_sampling.md +0 -0
  57. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/concepts/processors.md +0 -0
  58. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/concepts/validators.md +0 -0
  59. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/css/mkdocstrings.css +0 -0
  60. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/css/style.css +0 -0
  61. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/images/top-models.png +0 -0
  62. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/index.md +0 -0
  63. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/installation.md +0 -0
  64. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/js/toc-toggle.js +0 -0
  65. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/notebook_source/1-the-basics.py +0 -0
  66. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/notebook_source/2-structured-outputs-and-jinja-expressions.py +0 -0
  67. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/notebook_source/3-seeding-with-a-dataset.py +0 -0
  68. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/notebook_source/4-providing-images-as-context.py +0 -0
  69. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/notebook_source/README.md +0 -0
  70. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/notebook_source/_README.md +0 -0
  71. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/notebook_source/_pyproject.toml +0 -0
  72. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/overrides/main.html +0 -0
  73. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/plugins/available.md +0 -0
  74. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/plugins/example.md +0 -0
  75. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/plugins/overview.md +0 -0
  76. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/quick-start.md +0 -0
  77. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/recipes/cards.md +0 -0
  78. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/recipes/code_generation/text_to_python.md +0 -0
  79. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/recipes/code_generation/text_to_sql.md +0 -0
  80. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/recipes/qa_and_chat/multi_turn_chat.md +0 -0
  81. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/recipes/qa_and_chat/product_info_qa.md +0 -0
  82. {data_designer-0.3.7 → data_designer-0.3.8rc1}/docs/scripts/generate_colab_notebooks.py +0 -0
  83. {data_designer-0.3.7 → data_designer-0.3.8rc1}/mkdocs.yml +0 -0
  84. {data_designer-0.3.7 → data_designer-0.3.8rc1}/pyproject.toml +0 -0
  85. {data_designer-0.3.7 → data_designer-0.3.8rc1}/scripts/test_license_headers.py +0 -0
  86. {data_designer-0.3.7 → data_designer-0.3.8rc1}/scripts/update_license_headers.py +0 -0
  87. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/__init__.py +0 -0
  88. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/cli/README.md +0 -0
  89. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/cli/__init__.py +0 -0
  90. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/cli/commands/__init__.py +0 -0
  91. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/cli/commands/download.py +0 -0
  92. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/cli/commands/list.py +0 -0
  93. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/cli/commands/models.py +0 -0
  94. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/cli/commands/providers.py +0 -0
  95. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/cli/commands/reset.py +0 -0
  96. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/cli/controllers/__init__.py +0 -0
  97. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/cli/controllers/download_controller.py +0 -0
  98. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/cli/controllers/model_controller.py +0 -0
  99. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/cli/controllers/provider_controller.py +0 -0
  100. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/cli/forms/__init__.py +0 -0
  101. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/cli/forms/builder.py +0 -0
  102. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/cli/forms/field.py +0 -0
  103. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/cli/forms/form.py +0 -0
  104. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/cli/forms/model_builder.py +0 -0
  105. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/cli/forms/provider_builder.py +0 -0
  106. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/cli/main.py +0 -0
  107. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/cli/repositories/__init__.py +0 -0
  108. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/cli/repositories/base.py +0 -0
  109. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/cli/repositories/model_repository.py +0 -0
  110. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/cli/repositories/persona_repository.py +0 -0
  111. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/cli/repositories/provider_repository.py +0 -0
  112. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/cli/services/__init__.py +0 -0
  113. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/cli/services/download_service.py +0 -0
  114. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/cli/services/model_service.py +0 -0
  115. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/cli/services/provider_service.py +0 -0
  116. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/cli/ui.py +0 -0
  117. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/cli/utils.py +0 -0
  118. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/__init__.py +0 -0
  119. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/analysis/__init__.py +0 -0
  120. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/analysis/column_profilers.py +0 -0
  121. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/analysis/column_statistics.py +0 -0
  122. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/analysis/dataset_profiler.py +0 -0
  123. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/analysis/utils/errors.py +0 -0
  124. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/analysis/utils/reporting.py +0 -0
  125. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/base.py +0 -0
  126. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/column_configs.py +0 -0
  127. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/column_types.py +0 -0
  128. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/config_builder.py +0 -0
  129. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/data_designer_config.py +0 -0
  130. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/dataset_builders.py +0 -0
  131. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/dataset_metadata.py +0 -0
  132. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/default_model_settings.py +0 -0
  133. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/errors.py +0 -0
  134. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/exports.py +0 -0
  135. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/interface.py +0 -0
  136. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/models.py +0 -0
  137. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/preview_results.py +0 -0
  138. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/processors.py +0 -0
  139. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/run_config.py +0 -0
  140. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/sampler_constraints.py +0 -0
  141. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/sampler_params.py +0 -0
  142. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/seed.py +0 -0
  143. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/seed_source.py +0 -0
  144. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/seed_source_types.py +0 -0
  145. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/utils/code_lang.py +0 -0
  146. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/utils/constants.py +0 -0
  147. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/utils/errors.py +0 -0
  148. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/utils/info.py +0 -0
  149. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/utils/io_helpers.py +0 -0
  150. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/utils/misc.py +0 -0
  151. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/utils/numerical_helpers.py +0 -0
  152. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/utils/type_helpers.py +0 -0
  153. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/utils/visualization.py +0 -0
  154. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/config/validator_params.py +0 -0
  155. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/__init__.py +0 -0
  156. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/analysis/column_profilers/base.py +0 -0
  157. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/analysis/column_profilers/judge_score_profiler.py +0 -0
  158. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/analysis/column_profilers/registry.py +0 -0
  159. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/analysis/column_statistics.py +0 -0
  160. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/analysis/dataset_profiler.py +0 -0
  161. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/analysis/errors.py +0 -0
  162. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/analysis/utils/column_statistics_calculations.py +0 -0
  163. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/analysis/utils/judge_score_processing.py +0 -0
  164. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/column_generators/__init__.py +0 -0
  165. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/column_generators/generators/__init__.py +0 -0
  166. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/column_generators/generators/base.py +0 -0
  167. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/column_generators/generators/embedding.py +0 -0
  168. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/column_generators/generators/expression.py +0 -0
  169. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/column_generators/generators/samplers.py +0 -0
  170. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/column_generators/generators/seed_dataset.py +0 -0
  171. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/column_generators/generators/validation.py +0 -0
  172. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/column_generators/registry.py +0 -0
  173. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/column_generators/utils/errors.py +0 -0
  174. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/column_generators/utils/generator_classification.py +0 -0
  175. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/column_generators/utils/judge_score_factory.py +0 -0
  176. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/column_generators/utils/prompt_renderer.py +0 -0
  177. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/configurable_task.py +0 -0
  178. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/dataset_builders/artifact_storage.py +0 -0
  179. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/dataset_builders/column_wise_builder.py +0 -0
  180. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/dataset_builders/errors.py +0 -0
  181. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/dataset_builders/multi_column_configs.py +0 -0
  182. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/dataset_builders/utils/__init__.py +0 -0
  183. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/dataset_builders/utils/concurrency.py +0 -0
  184. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/dataset_builders/utils/config_compiler.py +0 -0
  185. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/dataset_builders/utils/dag.py +0 -0
  186. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/dataset_builders/utils/dataset_batch_manager.py +0 -0
  187. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/dataset_builders/utils/errors.py +0 -0
  188. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/errors.py +0 -0
  189. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/model_provider.py +0 -0
  190. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/models/__init__.py +0 -0
  191. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/models/errors.py +0 -0
  192. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/models/facade.py +0 -0
  193. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/models/factory.py +0 -0
  194. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/models/litellm_overrides.py +0 -0
  195. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/models/parsers/__init__.py +0 -0
  196. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/models/parsers/errors.py +0 -0
  197. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/models/parsers/parser.py +0 -0
  198. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/models/parsers/postprocessors.py +0 -0
  199. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/models/parsers/tag_parsers.py +0 -0
  200. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/models/parsers/types.py +0 -0
  201. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/models/recipes/base.py +0 -0
  202. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/models/recipes/response_recipes.py +0 -0
  203. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/models/registry.py +0 -0
  204. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/models/telemetry.py +0 -0
  205. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/models/usage.py +0 -0
  206. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/models/utils.py +0 -0
  207. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/processing/ginja/__init__.py +0 -0
  208. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/processing/ginja/ast.py +0 -0
  209. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/processing/ginja/environment.py +0 -0
  210. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/processing/ginja/exceptions.py +0 -0
  211. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/processing/ginja/record.py +0 -0
  212. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/processing/gsonschema/__init__.py +0 -0
  213. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/processing/gsonschema/exceptions.py +0 -0
  214. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/processing/gsonschema/schema_transformers.py +0 -0
  215. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/processing/gsonschema/types.py +0 -0
  216. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/processing/gsonschema/validators.py +0 -0
  217. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/processing/processors/base.py +0 -0
  218. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/processing/processors/drop_columns.py +0 -0
  219. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/processing/processors/registry.py +0 -0
  220. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/processing/processors/schema_transform.py +0 -0
  221. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/registry/base.py +0 -0
  222. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/registry/data_designer_registry.py +0 -0
  223. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/registry/errors.py +0 -0
  224. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/resources/managed_dataset_generator.py +0 -0
  225. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/resources/managed_dataset_repository.py +0 -0
  226. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/resources/managed_storage.py +0 -0
  227. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/resources/resource_provider.py +0 -0
  228. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/resources/seed_reader.py +0 -0
  229. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/sampling_gen/column.py +0 -0
  230. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/sampling_gen/constraints.py +0 -0
  231. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/sampling_gen/data_sources/base.py +0 -0
  232. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/sampling_gen/data_sources/errors.py +0 -0
  233. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/sampling_gen/data_sources/sources.py +0 -0
  234. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/sampling_gen/entities/__init__.py +0 -0
  235. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/sampling_gen/entities/assets/zip_area_code_map.parquet +0 -0
  236. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/sampling_gen/entities/dataset_based_person_fields.py +0 -0
  237. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/sampling_gen/entities/email_address_utils.py +0 -0
  238. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/sampling_gen/entities/errors.py +0 -0
  239. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/sampling_gen/entities/national_id_utils.py +0 -0
  240. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/sampling_gen/entities/person.py +0 -0
  241. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/sampling_gen/entities/phone_number.py +0 -0
  242. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/sampling_gen/errors.py +0 -0
  243. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/sampling_gen/generator.py +0 -0
  244. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/sampling_gen/jinja_utils.py +0 -0
  245. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/sampling_gen/people_gen.py +0 -0
  246. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/sampling_gen/person_constants.py +0 -0
  247. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/sampling_gen/schema.py +0 -0
  248. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/sampling_gen/schema_builder.py +0 -0
  249. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/sampling_gen/utils.py +0 -0
  250. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/secret_resolver.py +0 -0
  251. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/validation.py +0 -0
  252. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/validators/__init__.py +0 -0
  253. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/validators/base.py +0 -0
  254. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/validators/local_callable.py +0 -0
  255. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/validators/python.py +0 -0
  256. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/validators/remote.py +0 -0
  257. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/engine/validators/sql.py +0 -0
  258. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/errors.py +0 -0
  259. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/essentials/__init__.py +0 -0
  260. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/interface/__init__.py +0 -0
  261. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/interface/data_designer.py +0 -0
  262. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/interface/errors.py +0 -0
  263. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/interface/results.py +0 -0
  264. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/lazy_heavy_imports.py +0 -0
  265. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/logging.py +0 -0
  266. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/plugin_manager.py +0 -0
  267. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/plugins/__init__.py +0 -0
  268. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/plugins/errors.py +0 -0
  269. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/plugins/plugin.py +0 -0
  270. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/plugins/registry.py +0 -0
  271. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/plugins/testing/__init__.py +0 -0
  272. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/plugins/testing/stubs.py +0 -0
  273. {data_designer-0.3.7 → data_designer-0.3.8rc1}/src/data_designer/plugins/testing/utils.py +0 -0
  274. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/cli/commands/test_download_command.py +0 -0
  275. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/cli/commands/test_list_command.py +0 -0
  276. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/cli/commands/test_models_command.py +0 -0
  277. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/cli/commands/test_providers_command.py +0 -0
  278. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/cli/commands/test_reset_command.py +0 -0
  279. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/cli/conftest.py +0 -0
  280. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/cli/controllers/test_download_controller.py +0 -0
  281. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/cli/controllers/test_model_controller.py +0 -0
  282. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/cli/controllers/test_provider_controller.py +0 -0
  283. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/cli/forms/test_field.py +0 -0
  284. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/cli/forms/test_form.py +0 -0
  285. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/cli/forms/test_model_builder.py +0 -0
  286. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/cli/forms/test_provider_builder.py +0 -0
  287. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/cli/repositories/test_model_repository.py +0 -0
  288. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/cli/repositories/test_persona_repository.py +0 -0
  289. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/cli/repositories/test_provider_repository.py +0 -0
  290. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/cli/services/test_download_service.py +0 -0
  291. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/cli/services/test_model_service.py +0 -0
  292. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/cli/services/test_provider_service.py +0 -0
  293. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/cli/test_cli_utils.py +0 -0
  294. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/config/analysis/conftest.py +0 -0
  295. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/config/analysis/test_column_statistics.py +0 -0
  296. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/config/analysis/test_dataset_profiler_results.py +0 -0
  297. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/config/analysis/utils/test_reporting.py +0 -0
  298. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/config/test_columns.py +0 -0
  299. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/config/test_config_builder.py +0 -0
  300. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/config/test_data_designer_config.py +0 -0
  301. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/config/test_default_model_settings.py +0 -0
  302. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/config/test_models.py +0 -0
  303. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/config/test_processors.py +0 -0
  304. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/config/test_sampler_constraints.py +0 -0
  305. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/config/test_sampler_params.py +0 -0
  306. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/config/test_seed.py +0 -0
  307. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/config/test_seed_source.py +0 -0
  308. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/config/test_validator_params.py +0 -0
  309. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/config/utils/__init__.py +0 -0
  310. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/config/utils/test_code_lang.py +0 -0
  311. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/config/utils/test_info.py +0 -0
  312. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/config/utils/test_io_helpers.py +0 -0
  313. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/config/utils/test_misc.py +0 -0
  314. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/config/utils/test_type_helpers.py +0 -0
  315. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/config/utils/test_visualization.py +0 -0
  316. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/conftest.py +0 -0
  317. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/analysis/column_profilers/test_base.py +0 -0
  318. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/analysis/column_profilers/test_judge_score_profiler.py +0 -0
  319. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/analysis/conftest.py +0 -0
  320. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/analysis/test_column_statistics_calculator.py +0 -0
  321. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/analysis/test_data/artifacts/dataset/column_configs.json +0 -0
  322. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/analysis/test_data/artifacts/dataset/dataset.json +0 -0
  323. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/analysis/test_data/artifacts/dataset/metadata.json +0 -0
  324. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/analysis/test_dataset_profiler.py +0 -0
  325. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/analysis/test_errors.py +0 -0
  326. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/analysis/utils/test_column_statistics_calculations.py +0 -0
  327. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/analysis/utils/test_judge_score_processing.py +0 -0
  328. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/column_generators/generators/__init__.py +0 -0
  329. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/column_generators/generators/test_column_generator_base.py +0 -0
  330. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/column_generators/generators/test_embedding.py +0 -0
  331. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/column_generators/generators/test_expression.py +0 -0
  332. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/column_generators/generators/test_samplers.py +0 -0
  333. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/column_generators/generators/test_seed_dataset.py +0 -0
  334. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/column_generators/generators/test_validation.py +0 -0
  335. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/column_generators/test_registry.py +0 -0
  336. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/column_generators/utils/test_column_generator_errors.py +0 -0
  337. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/column_generators/utils/test_generator_classification.py +0 -0
  338. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/column_generators/utils/test_judge_score_factory.py +0 -0
  339. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/column_generators/utils/test_prompt_renderer.py +0 -0
  340. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/conftest.py +0 -0
  341. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/dataset_builders/test_artifact_storage.py +0 -0
  342. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/dataset_builders/test_multi_column_configs.py +0 -0
  343. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/dataset_builders/utils/test_concurrency.py +0 -0
  344. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/dataset_builders/utils/test_config_compiler.py +0 -0
  345. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/dataset_builders/utils/test_dag.py +0 -0
  346. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/dataset_builders/utils/test_dataset_batch_manager.py +0 -0
  347. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/models/conftest.py +0 -0
  348. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/models/parsers/test_parser.py +0 -0
  349. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/models/parsers/test_parsers_types.py +0 -0
  350. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/models/parsers/test_postprocessors.py +0 -0
  351. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/models/parsers/test_tag_parsers.py +0 -0
  352. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/models/recipes/test_recipe_base.py +0 -0
  353. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/models/recipes/test_response_recipes.py +0 -0
  354. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/models/stub_secrets.json +0 -0
  355. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/models/test_facade.py +0 -0
  356. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/models/test_litellm_overrides.py +0 -0
  357. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/models/test_model_errors.py +0 -0
  358. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/models/test_model_registry.py +0 -0
  359. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/models/test_model_utils.py +0 -0
  360. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/models/test_usage.py +0 -0
  361. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/processing/__init__.py +0 -0
  362. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/processing/ginja/__init__.py +0 -0
  363. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/processing/ginja/test_ast.py +0 -0
  364. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/processing/ginja/test_environment.py +0 -0
  365. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/processing/ginja/test_exceptions.py +0 -0
  366. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/processing/ginja/test_record.py +0 -0
  367. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/processing/gsonschema/__init__.py +0 -0
  368. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/processing/gsonschema/test_exceptions.py +0 -0
  369. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/processing/gsonschema/test_schema_transformers.py +0 -0
  370. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/processing/gsonschema/test_types.py +0 -0
  371. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/processing/gsonschema/test_validators.py +0 -0
  372. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/processing/processors/__init__.py +0 -0
  373. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/processing/processors/test_drop_columns.py +0 -0
  374. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/processing/processors/test_registry.py +0 -0
  375. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/processing/processors/test_schema_transform.py +0 -0
  376. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/processing/test_utils.py +0 -0
  377. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/registry/__init__.py +0 -0
  378. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/registry/conftest.py +0 -0
  379. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/registry/test_base.py +0 -0
  380. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/registry/test_data_designer_registry.py +0 -0
  381. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/registry/test_errors.py +0 -0
  382. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/resources/__init__.py +0 -0
  383. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/resources/conftest.py +0 -0
  384. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/resources/test_managed_dataset_generator.py +0 -0
  385. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/resources/test_managed_dataset_repository.py +0 -0
  386. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/resources/test_managed_storage.py +0 -0
  387. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/resources/test_resource_provider.py +0 -0
  388. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/resources/test_seed_reader.py +0 -0
  389. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/sampling_gen/conftest.py +0 -0
  390. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/sampling_gen/data_sources/test_sampler_errors.py +0 -0
  391. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/sampling_gen/data_sources/test_sources.py +0 -0
  392. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/sampling_gen/entities/test_email_address_utils.py +0 -0
  393. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/sampling_gen/entities/test_national_id_utils.py +0 -0
  394. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/sampling_gen/entities/test_person.py +0 -0
  395. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/sampling_gen/entities/test_phone_number.py +0 -0
  396. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/sampling_gen/test_column.py +0 -0
  397. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/sampling_gen/test_constraints.py +0 -0
  398. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/sampling_gen/test_generator.py +0 -0
  399. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/sampling_gen/test_jinja_utils.py +0 -0
  400. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/sampling_gen/test_people_gen.py +0 -0
  401. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/sampling_gen/test_schema.py +0 -0
  402. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/sampling_gen/test_utils.py +0 -0
  403. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/test_configurable_task.py +0 -0
  404. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/test_dataset_metadata.py +0 -0
  405. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/test_engine_errors.py +0 -0
  406. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/test_model_provider.py +0 -0
  407. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/test_secret_resolver.py +0 -0
  408. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/test_validation.py +0 -0
  409. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/validators/test_local_callable.py +0 -0
  410. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/validators/test_python.py +0 -0
  411. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/validators/test_remote.py +0 -0
  412. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/engine/validators/test_sql.py +0 -0
  413. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/essentials/test_init.py +0 -0
  414. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/interface/test_data_designer.py +0 -0
  415. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/interface/test_results.py +0 -0
  416. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/plugins/test_plugin.py +0 -0
  417. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/plugins/test_plugin_registry.py +0 -0
  418. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/test_import_perf.py +0 -0
  419. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/test_logging.py +0 -0
  420. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests/test_plugin_manager.py +0 -0
  421. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests_e2e/pyproject.toml +0 -0
  422. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests_e2e/src/data_designer_e2e_tests/plugins/__init__.py +0 -0
  423. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests_e2e/src/data_designer_e2e_tests/plugins/column_generator/__init__.py +0 -0
  424. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests_e2e/src/data_designer_e2e_tests/plugins/column_generator/config.py +0 -0
  425. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests_e2e/src/data_designer_e2e_tests/plugins/column_generator/impl.py +0 -0
  426. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests_e2e/src/data_designer_e2e_tests/plugins/column_generator/plugin.py +0 -0
  427. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests_e2e/src/data_designer_e2e_tests/plugins/seed_reader/__init__.py +0 -0
  428. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests_e2e/src/data_designer_e2e_tests/plugins/seed_reader/config.py +0 -0
  429. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests_e2e/src/data_designer_e2e_tests/plugins/seed_reader/impl.py +0 -0
  430. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests_e2e/src/data_designer_e2e_tests/plugins/seed_reader/plugin.py +0 -0
  431. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests_e2e/tests/test_e2e.py +0 -0
  432. {data_designer-0.3.7 → data_designer-0.3.8rc1}/tests_e2e/tests/test_seed.csv +0 -0
  433. {data_designer-0.3.7 → data_designer-0.3.8rc1}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: data-designer
3
- Version: 0.3.7
3
+ Version: 0.3.8rc1
4
4
  Summary: General framework for synthetic data generation
5
5
  License-Expression: Apache-2.0
6
6
  License-File: LICENSE
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '0.3.7'
32
- __version_tuple__ = version_tuple = (0, 3, 7)
31
+ __version__ = version = '0.3.8rc1'
32
+ __version_tuple__ = version_tuple = (0, 3, 8, 'rc1')
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -55,6 +55,9 @@ class ColumnGeneratorWithModelChatCompletion(ColumnGeneratorWithModel[TaskConfig
55
55
  )
56
56
 
57
57
  def generate(self, data: dict) -> dict:
58
+ # Deserialize input data from previous columns so Jinja2 templates can access nested fields
59
+ # Example: If prev column stored '{"key": "value"}', templates can use {{ prev_column.key }}
60
+ # Note: This creates a new dict and doesn't mutate the original `data` argument
58
61
  deserialized_record = deserialize_json_values(data)
59
62
 
60
63
  multi_modal_context = None
@@ -81,13 +84,18 @@ class ColumnGeneratorWithModelChatCompletion(ColumnGeneratorWithModel[TaskConfig
81
84
  purpose=f"running generation for column '{self.config.name}'",
82
85
  )
83
86
 
84
- data[self.config.name] = deserialize_json_values(self.response_recipe.serialize_output(response))
87
+ serialized_output = self.response_recipe.serialize_output(response)
88
+ data[self.config.name] = self._process_serialized_output(serialized_output)
85
89
 
86
90
  if reasoning_trace:
87
91
  data[self.config.name + REASONING_TRACE_COLUMN_POSTFIX] = reasoning_trace
88
92
 
89
93
  return data
90
94
 
95
+ def _process_serialized_output(self, serialized_output: str) -> str | dict | list:
96
+ """Process the serialized output from the model. Subclasses can override to customize deserialization."""
97
+ return serialized_output
98
+
91
99
 
92
100
  class LLMTextCellGenerator(ColumnGeneratorWithModelChatCompletion[LLMTextColumnConfig]): ...
93
101
 
@@ -95,7 +103,11 @@ class LLMTextCellGenerator(ColumnGeneratorWithModelChatCompletion[LLMTextColumnC
95
103
  class LLMCodeCellGenerator(ColumnGeneratorWithModelChatCompletion[LLMCodeColumnConfig]): ...
96
104
 
97
105
 
98
- class LLMStructuredCellGenerator(ColumnGeneratorWithModelChatCompletion[LLMStructuredColumnConfig]): ...
106
+ class LLMStructuredCellGenerator(ColumnGeneratorWithModelChatCompletion[LLMStructuredColumnConfig]):
107
+ def _process_serialized_output(self, serialized_output: str) -> dict | list:
108
+ return deserialize_json_values(serialized_output)
99
109
 
100
110
 
101
- class LLMJudgeCellGenerator(ColumnGeneratorWithModelChatCompletion[LLMJudgeColumnConfig]): ...
111
+ class LLMJudgeCellGenerator(ColumnGeneratorWithModelChatCompletion[LLMJudgeColumnConfig]):
112
+ def _process_serialized_output(self, serialized_output: str) -> dict | list:
113
+ return deserialize_json_values(serialized_output)
@@ -5,9 +5,10 @@ from __future__ import annotations
5
5
 
6
6
  import logging
7
7
 
8
- from data_designer.config.column_configs import SeedDatasetColumnConfig
8
+ from data_designer.config.column_configs import SamplerColumnConfig, SeedDatasetColumnConfig
9
9
  from data_designer.config.data_designer_config import DataDesignerConfig
10
10
  from data_designer.config.errors import InvalidConfigError
11
+ from data_designer.config.sampler_params import UUIDSamplerParams
11
12
  from data_designer.engine.resources.resource_provider import ResourceProvider
12
13
  from data_designer.engine.resources.seed_reader import SeedReader
13
14
  from data_designer.engine.validation import ViolationLevel, rich_print_violations, validate_data_designer_config
@@ -17,6 +18,7 @@ logger = logging.getLogger(__name__)
17
18
 
18
19
  def compile_data_designer_config(config: DataDesignerConfig, resource_provider: ResourceProvider) -> DataDesignerConfig:
19
20
  _resolve_and_add_seed_columns(config, resource_provider.seed_reader)
21
+ _add_internal_row_id_column_if_needed(config)
20
22
  _validate(config)
21
23
  return config
22
24
 
@@ -41,6 +43,35 @@ def _resolve_and_add_seed_columns(config: DataDesignerConfig, seed_reader: SeedR
41
43
  config.columns.extend([SeedDatasetColumnConfig(name=col_name) for col_name in seed_col_names])
42
44
 
43
45
 
46
+ def _add_internal_row_id_column_if_needed(config: DataDesignerConfig) -> None:
47
+ """Adds a UUID sampler column named '_internal_row_id' (set to drop) if needed to enable generation.
48
+
49
+ Generation requires either:
50
+ - At least one sampler column (which can generate data from scratch), OR
51
+ - A seed dataset (which provides initial data rows)
52
+
53
+ If neither exists, a UUID sampler column '_internal_row_id' is automatically added and marked for drop
54
+ to enable the generation process to start.
55
+
56
+ Args:
57
+ config: The DataDesigner configuration to potentially modify.
58
+ """
59
+ has_sampler_column = any(isinstance(col, SamplerColumnConfig) for col in config.columns)
60
+ has_seed_dataset_column = any(isinstance(col, SeedDatasetColumnConfig) for col in config.columns)
61
+
62
+ if not has_sampler_column and not has_seed_dataset_column:
63
+ logger.warning(
64
+ "🔔 No sampler column or seed dataset detected. Adding UUID column '_internal_row_id' (marked for drop) to enable generation."
65
+ )
66
+ id_column = SamplerColumnConfig(
67
+ name="_internal_row_id",
68
+ sampler_type="uuid",
69
+ params=UUIDSamplerParams(),
70
+ drop=True,
71
+ )
72
+ config.columns.insert(0, id_column)
73
+
74
+
44
75
  def _validate(config: DataDesignerConfig) -> None:
45
76
  allowed_references = _get_allowed_references(config)
46
77
  violations = validate_data_designer_config(
@@ -4,6 +4,7 @@
4
4
  from __future__ import annotations
5
5
 
6
6
  import ast
7
+ import copy
7
8
  import json
8
9
  import logging
9
10
  import re
@@ -50,6 +51,8 @@ def deserialize_json_values(data: T) -> T: ...
50
51
  def deserialize_json_values(data):
51
52
  """De-serialize JSON strings in various input formats.
52
53
 
54
+ This function creates a deep copy of the input data and does not mutate the original.
55
+
53
56
  Args:
54
57
  data: Input data in one of four formats:
55
58
  - Single string (JSON string to deserialize)
@@ -63,18 +66,22 @@ def deserialize_json_values(data):
63
66
  - List of dictionaries (when input is a list of strings)
64
67
  - Dictionary (when input is a dictionary, with nested JSON strings deserialized)
65
68
  - The original object (if there is no deserialization to perform)
69
+
66
70
  """
71
+ # Create a deep copy to avoid mutating the original data
72
+ data_copy = copy.deepcopy(data)
73
+
67
74
  # Case 1: Single string input
68
- if isinstance(data, str):
75
+ if isinstance(data_copy, str):
69
76
  try:
70
- return json.loads(data)
77
+ return json.loads(data_copy)
71
78
  except json.JSONDecodeError:
72
- return data
79
+ return data_copy
73
80
 
74
81
  # Case 2: List of strings input
75
- elif isinstance(data, list):
82
+ elif isinstance(data_copy, list):
76
83
  result = []
77
- for item in data:
84
+ for item in data_copy:
78
85
  if isinstance(item, str):
79
86
  try:
80
87
  result.append(json.loads(item))
@@ -86,9 +93,9 @@ def deserialize_json_values(data):
86
93
  return result
87
94
 
88
95
  # Case 3: Dictionary input with potential nested JSON strings
89
- elif isinstance(data, dict):
96
+ elif isinstance(data_copy, dict):
90
97
  result = {}
91
- for key, value in data.items():
98
+ for key, value in data_copy.items():
92
99
  if isinstance(value, str):
93
100
  try:
94
101
  result[key] = json.loads(value)
@@ -103,7 +110,7 @@ def deserialize_json_values(data):
103
110
 
104
111
  # Fallback for other data types
105
112
  else:
106
- return data
113
+ return data_copy
107
114
 
108
115
 
109
116
  def parse_list_string(text: str) -> list[str]:
@@ -269,3 +269,82 @@ def test_generate_with_json_deserialization():
269
269
  result = generator.generate(data)
270
270
 
271
271
  assert result["test_column"] == {"result": "json_output"}
272
+
273
+
274
+ @pytest.mark.parametrize(
275
+ "generator_class,config_class,config_kwargs,serialized_output,expected_output",
276
+ [
277
+ (
278
+ LLMTextCellGenerator,
279
+ LLMTextColumnConfig,
280
+ {"name": "text_col", "prompt": "Generate text", "model_alias": "test_model"},
281
+ '["plain", "text", "output"]',
282
+ '["plain", "text", "output"]',
283
+ ),
284
+ (
285
+ LLMCodeCellGenerator,
286
+ LLMCodeColumnConfig,
287
+ {"name": "code_col", "prompt": "Generate code", "model_alias": "test_model", "code_lang": "python"},
288
+ "def hello(): pass",
289
+ "def hello(): pass",
290
+ ),
291
+ (
292
+ LLMStructuredCellGenerator,
293
+ LLMStructuredColumnConfig,
294
+ {
295
+ "name": "struct_col",
296
+ "prompt": "Generate struct",
297
+ "model_alias": "test_model",
298
+ "output_format": {"type": "object", "properties": {"field": {"type": "string"}}},
299
+ },
300
+ '{"field": "value", "nested": {"key": "val"}}',
301
+ {"field": "value", "nested": {"key": "val"}},
302
+ ),
303
+ (
304
+ LLMJudgeCellGenerator,
305
+ LLMJudgeColumnConfig,
306
+ {
307
+ "name": "judge_col",
308
+ "prompt": "Judge this",
309
+ "model_alias": "test_model",
310
+ "scores": [{"name": "quality", "description": "Quality", "options": {1: "good", 0: "bad"}}],
311
+ },
312
+ '{"quality": 1, "reasoning": "Good quality"}',
313
+ {"quality": 1, "reasoning": "Good quality"},
314
+ ),
315
+ ],
316
+ )
317
+ def test_generator_output_type_handling(
318
+ stub_resource_provider: Mock,
319
+ generator_class: type,
320
+ config_class: type,
321
+ config_kwargs: dict,
322
+ serialized_output: str,
323
+ expected_output: str | dict,
324
+ ) -> None:
325
+ """Test that each generator type correctly handles its output format via polymorphism.
326
+
327
+ - Text/Code generators return plain strings
328
+ - Structured/Judge generators deserialize JSON to Python objects
329
+ """
330
+ config = config_class(**config_kwargs)
331
+ generator = generator_class(config=config, resource_provider=stub_resource_provider)
332
+
333
+ # Mock the prompt renderer and response recipe
334
+ mock_prompt_renderer = Mock()
335
+ mock_response_recipe = Mock()
336
+ generator.prompt_renderer = mock_prompt_renderer
337
+ generator.response_recipe = mock_response_recipe
338
+
339
+ # Setup mocks
340
+ mock_prompt_renderer.render.side_effect = ["rendered_user_prompt", "rendered_system_prompt"]
341
+ mock_response_recipe.serialize_output.return_value = serialized_output
342
+ stub_resource_provider.model_registry.get_model.return_value.generate.return_value = (
343
+ {"result": "raw_output"},
344
+ None,
345
+ )
346
+
347
+ data = {"input": "test_input"}
348
+ result = generator.generate(data)
349
+
350
+ assert result[config.name] == expected_output
@@ -13,6 +13,7 @@ from data_designer.config.config_builder import DataDesignerConfigBuilder
13
13
  from data_designer.config.dataset_builders import BuildStage
14
14
  from data_designer.config.processors import DropColumnsProcessorConfig
15
15
  from data_designer.config.run_config import RunConfig
16
+ from data_designer.config.sampler_params import SamplerType, UUIDSamplerParams
16
17
  from data_designer.engine.column_generators.generators.base import GenerationStrategy
17
18
  from data_designer.engine.dataset_builders.column_wise_builder import (
18
19
  MAX_CONCURRENCY_PER_NON_LLM_GENERATOR,
@@ -31,6 +32,7 @@ if TYPE_CHECKING:
31
32
  @pytest.fixture
32
33
  def stub_test_column_configs():
33
34
  return [
35
+ SamplerColumnConfig(name="some_id", sampler_type=SamplerType.UUID, params=UUIDSamplerParams()),
34
36
  LLMTextColumnConfig(name="test_column", prompt="Test prompt", model_alias="test_model"),
35
37
  LLMTextColumnConfig(name="column_to_drop", prompt="Test prompt", model_alias="test_model"),
36
38
  ]
@@ -92,8 +94,7 @@ def test_column_wise_dataset_builder_creation(stub_resource_provider, stub_test_
92
94
  data_designer_config=stub_test_config_builder.build(),
93
95
  resource_provider=stub_resource_provider,
94
96
  )
95
-
96
- assert len(builder._column_configs) == 2
97
+ assert len(builder._column_configs) == 3
97
98
  assert builder._resource_provider == stub_resource_provider
98
99
  assert isinstance(builder._registry, DataDesignerRegistry)
99
100
 
@@ -136,26 +137,33 @@ def test_column_wise_dataset_builder_batch_manager_initialization(stub_column_wi
136
137
  def test_column_wise_dataset_builder_single_column_configs_property(
137
138
  stub_resource_provider, stub_model_configs, config_type, expected_single_configs
138
139
  ):
140
+ config_builder = DataDesignerConfigBuilder(model_configs=stub_model_configs)
141
+
139
142
  if config_type == "single":
140
- single_config = LLMTextColumnConfig(name="test_column", prompt="Test prompt", model_alias="test_model")
141
- config_builder = DataDesignerConfigBuilder(model_configs=stub_model_configs)
143
+ # Add an LLM text column - these don't get grouped into MultiColumnConfigs
144
+ single_config = expected_single_configs[0]
142
145
  config_builder.add_column(single_config)
146
+
143
147
  builder = ColumnWiseDatasetBuilder(
144
148
  data_designer_config=config_builder.build(),
145
149
  resource_provider=stub_resource_provider,
146
150
  )
147
- assert builder.single_column_configs == [single_config]
151
+
152
+ # Since there's no sampler, _internal_row_id is auto-added, plus the LLM column
153
+ configs = builder.single_column_configs
154
+ assert len(configs) == 2
155
+ assert configs[0].name == "_internal_row_id"
156
+ assert configs[1] == single_config
157
+
148
158
  else:
149
- sampler_config = SamplerColumnConfig(
150
- name="sampler_col", sampler_type="category", params={"values": ["A", "B", "C"]}
151
- )
152
- config_builder = DataDesignerConfigBuilder(model_configs=stub_model_configs)
159
+ sampler_config = expected_single_configs[0]
153
160
  config_builder.add_column(sampler_config)
161
+
154
162
  builder = ColumnWiseDatasetBuilder(
155
163
  data_designer_config=config_builder.build(),
156
164
  resource_provider=stub_resource_provider,
157
165
  )
158
- assert builder.single_column_configs == [sampler_config]
166
+ assert builder.single_column_configs == expected_single_configs
159
167
 
160
168
 
161
169
  def test_column_wise_dataset_builder_build_method_basic_flow(
@@ -5,10 +5,10 @@ from unittest.mock import patch
5
5
 
6
6
  import pytest
7
7
 
8
- from data_designer.config.column_configs import SamplerColumnConfig
8
+ from data_designer.config.column_configs import ExpressionColumnConfig, SamplerColumnConfig
9
9
  from data_designer.config.config_builder import DataDesignerConfigBuilder
10
10
  from data_designer.config.errors import InvalidConfigError
11
- from data_designer.config.sampler_params import CategorySamplerParams, SamplerType
11
+ from data_designer.config.sampler_params import CategorySamplerParams, SamplerType, UUIDSamplerParams
12
12
  from data_designer.config.seed_source import HuggingFaceSeedSource
13
13
  from data_designer.engine.compiler import compile_data_designer_config
14
14
  from data_designer.engine.resources.resource_provider import ResourceProvider
@@ -78,3 +78,69 @@ def test_validation_errors(resource_provider: ResourceProvider):
78
78
  compile_data_designer_config(builder.build(), resource_provider)
79
79
 
80
80
  assert "validation errors" in str(excinfo)
81
+
82
+
83
+ def test_adds_id_column_when_no_sampler_and_no_seed_dataset(stub_resource_provider: ResourceProvider):
84
+ """Test that a UUID '_internal_row_id' column is automatically added when there's no sampler column or seed dataset."""
85
+ builder = DataDesignerConfigBuilder()
86
+ builder.add_column(
87
+ ExpressionColumnConfig(
88
+ name="derived_value",
89
+ expr="'constant_value'",
90
+ )
91
+ )
92
+ stub_resource_provider.seed_reader = None
93
+
94
+ config = compile_data_designer_config(builder.build(), stub_resource_provider)
95
+
96
+ assert len(config.columns) == 2
97
+ assert config.columns[0].name == "_internal_row_id"
98
+ assert isinstance(config.columns[0], SamplerColumnConfig)
99
+ assert config.columns[0].sampler_type == "uuid"
100
+ assert isinstance(config.columns[0].params, UUIDSamplerParams)
101
+ assert config.columns[0].drop is True
102
+
103
+
104
+ def test_does_not_add_id_column_when_sampler_exists(stub_resource_provider: ResourceProvider):
105
+ """Test that no '_internal_row_id' column is added when a sampler column already exists."""
106
+ builder = DataDesignerConfigBuilder()
107
+ builder.add_column(
108
+ SamplerColumnConfig(
109
+ name="category",
110
+ sampler_type=SamplerType.CATEGORY,
111
+ params=CategorySamplerParams(values=["a", "b", "c"]),
112
+ )
113
+ )
114
+ builder.add_column(
115
+ ExpressionColumnConfig(
116
+ name="derived_value",
117
+ expr="{{ category }}_suffix",
118
+ )
119
+ )
120
+ stub_resource_provider.seed_reader = None
121
+
122
+ config = compile_data_designer_config(builder.build(), stub_resource_provider)
123
+
124
+ assert len(config.columns) == 2
125
+ assert config.columns[0].name == "category"
126
+ assert config.columns[1].name == "derived_value"
127
+ assert not any(col.name == "_internal_row_id" for col in config.columns)
128
+
129
+
130
+ def test_does_not_add_id_column_when_seed_dataset_exists(resource_provider: ResourceProvider):
131
+ """Test that no '_internal_row_id' column is added when a seed dataset is configured."""
132
+ builder = DataDesignerConfigBuilder()
133
+ builder.add_column(
134
+ ExpressionColumnConfig(
135
+ name="derived_value",
136
+ expr="{{ city }}_derived",
137
+ )
138
+ )
139
+ builder.with_seed_dataset(HuggingFaceSeedSource(path="hf://datasets/test/data.csv"))
140
+
141
+ config = compile_data_designer_config(builder.build(), resource_provider)
142
+
143
+ # Should have the expression column + 2 seed columns (city, country) from the fixture
144
+ assert len(config.columns) == 3
145
+ assert config.columns[0].name == "derived_value"
146
+ assert not any(col.name == "_internal_row_id" for col in config.columns)
File without changes
File without changes
File without changes