data-designer 0.3.2__tar.gz → 0.3.3__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 (427) hide show
  1. data_designer-0.3.3/.github/ISSUE_TEMPLATE/bug-report.yml +51 -0
  2. data_designer-0.3.3/.github/ISSUE_TEMPLATE/config.yml +5 -0
  3. data_designer-0.3.3/.github/ISSUE_TEMPLATE/development-task.yml +32 -0
  4. data_designer-0.3.3/.github/ISSUE_TEMPLATE/feature-request.yml +45 -0
  5. {data_designer-0.3.2 → data_designer-0.3.3}/.github/workflows/ci.yml +1 -1
  6. {data_designer-0.3.2 → data_designer-0.3.3}/Makefile +32 -1
  7. {data_designer-0.3.2 → data_designer-0.3.3}/PKG-INFO +2 -2
  8. {data_designer-0.3.2 → data_designer-0.3.3}/docs/assets/recipes/qa_and_chat/product_info_qa.py +2 -2
  9. {data_designer-0.3.2 → data_designer-0.3.3}/pyproject.toml +1 -1
  10. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/_version.py +2 -2
  11. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/dataset_builders/utils/concurrency.py +24 -2
  12. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/dataset_builders/utils/test_concurrency.py +175 -8
  13. {data_designer-0.3.2 → data_designer-0.3.3}/uv.lock +5 -6
  14. {data_designer-0.3.2 → data_designer-0.3.3}/.github/workflows/build-docs.yml +0 -0
  15. {data_designer-0.3.2 → data_designer-0.3.3}/.github/workflows/build-notebooks.yml +0 -0
  16. {data_designer-0.3.2 → data_designer-0.3.3}/.github/workflows/check-colab-notebooks.yml +0 -0
  17. {data_designer-0.3.2 → data_designer-0.3.3}/.github/workflows/dco-assistant.yml +0 -0
  18. {data_designer-0.3.2 → data_designer-0.3.3}/.github/workflows/pack-tutorials.yml +0 -0
  19. {data_designer-0.3.2 → data_designer-0.3.3}/.github/workflows/semantic-pull-requests.yml +0 -0
  20. {data_designer-0.3.2 → data_designer-0.3.3}/.gitignore +0 -0
  21. {data_designer-0.3.2 → data_designer-0.3.3}/.pre-commit-config.yaml +0 -0
  22. {data_designer-0.3.2 → data_designer-0.3.3}/AGENTS.md +0 -0
  23. {data_designer-0.3.2 → data_designer-0.3.3}/CLAUDE.md +0 -0
  24. {data_designer-0.3.2 → data_designer-0.3.3}/CODE_OF_CONDUCT.md +0 -0
  25. {data_designer-0.3.2 → data_designer-0.3.3}/CONTRIBUTING.md +0 -0
  26. {data_designer-0.3.2 → data_designer-0.3.3}/DCO +0 -0
  27. {data_designer-0.3.2 → data_designer-0.3.3}/LICENSE +0 -0
  28. {data_designer-0.3.2 → data_designer-0.3.3}/README.md +0 -0
  29. {data_designer-0.3.2 → data_designer-0.3.3}/VERSIONING.md +0 -0
  30. {data_designer-0.3.2 → data_designer-0.3.3}/docs/CONTRIBUTING.md +0 -0
  31. {data_designer-0.3.2 → data_designer-0.3.3}/docs/assets/palette-favicon.png +0 -0
  32. {data_designer-0.3.2 → data_designer-0.3.3}/docs/assets/recipes/code_generation/text_to_python.py +0 -0
  33. {data_designer-0.3.2 → data_designer-0.3.3}/docs/assets/recipes/code_generation/text_to_sql.py +0 -0
  34. {data_designer-0.3.2 → data_designer-0.3.3}/docs/assets/recipes/qa_and_chat/multi_turn_chat.py +0 -0
  35. {data_designer-0.3.2 → data_designer-0.3.3}/docs/code_reference/analysis.md +0 -0
  36. {data_designer-0.3.2 → data_designer-0.3.3}/docs/code_reference/column_configs.md +0 -0
  37. {data_designer-0.3.2 → data_designer-0.3.3}/docs/code_reference/config_builder.md +0 -0
  38. {data_designer-0.3.2 → data_designer-0.3.3}/docs/code_reference/data_designer_config.md +0 -0
  39. {data_designer-0.3.2 → data_designer-0.3.3}/docs/code_reference/models.md +0 -0
  40. {data_designer-0.3.2 → data_designer-0.3.3}/docs/code_reference/processors.md +0 -0
  41. {data_designer-0.3.2 → data_designer-0.3.3}/docs/code_reference/sampler_params.md +0 -0
  42. {data_designer-0.3.2 → data_designer-0.3.3}/docs/code_reference/validator_params.md +0 -0
  43. {data_designer-0.3.2 → data_designer-0.3.3}/docs/colab_notebooks/1-the-basics.ipynb +0 -0
  44. {data_designer-0.3.2 → data_designer-0.3.3}/docs/colab_notebooks/2-structured-outputs-and-jinja-expressions.ipynb +0 -0
  45. {data_designer-0.3.2 → data_designer-0.3.3}/docs/colab_notebooks/3-seeding-with-a-dataset.ipynb +0 -0
  46. {data_designer-0.3.2 → data_designer-0.3.3}/docs/colab_notebooks/4-providing-images-as-context.ipynb +0 -0
  47. {data_designer-0.3.2 → data_designer-0.3.3}/docs/concepts/columns.md +0 -0
  48. {data_designer-0.3.2 → data_designer-0.3.3}/docs/concepts/models/configure-model-settings-with-the-cli.md +0 -0
  49. {data_designer-0.3.2 → data_designer-0.3.3}/docs/concepts/models/custom-model-settings.md +0 -0
  50. {data_designer-0.3.2 → data_designer-0.3.3}/docs/concepts/models/default-model-settings.md +0 -0
  51. {data_designer-0.3.2 → data_designer-0.3.3}/docs/concepts/models/inference-parameters.md +0 -0
  52. {data_designer-0.3.2 → data_designer-0.3.3}/docs/concepts/models/model-configs.md +0 -0
  53. {data_designer-0.3.2 → data_designer-0.3.3}/docs/concepts/models/model-providers.md +0 -0
  54. {data_designer-0.3.2 → data_designer-0.3.3}/docs/concepts/person_sampling.md +0 -0
  55. {data_designer-0.3.2 → data_designer-0.3.3}/docs/concepts/processors.md +0 -0
  56. {data_designer-0.3.2 → data_designer-0.3.3}/docs/concepts/validators.md +0 -0
  57. {data_designer-0.3.2 → data_designer-0.3.3}/docs/css/mkdocstrings.css +0 -0
  58. {data_designer-0.3.2 → data_designer-0.3.3}/docs/css/style.css +0 -0
  59. {data_designer-0.3.2 → data_designer-0.3.3}/docs/index.md +0 -0
  60. {data_designer-0.3.2 → data_designer-0.3.3}/docs/installation.md +0 -0
  61. {data_designer-0.3.2 → data_designer-0.3.3}/docs/js/toc-toggle.js +0 -0
  62. {data_designer-0.3.2 → data_designer-0.3.3}/docs/notebook_source/1-the-basics.py +0 -0
  63. {data_designer-0.3.2 → data_designer-0.3.3}/docs/notebook_source/2-structured-outputs-and-jinja-expressions.py +0 -0
  64. {data_designer-0.3.2 → data_designer-0.3.3}/docs/notebook_source/3-seeding-with-a-dataset.py +0 -0
  65. {data_designer-0.3.2 → data_designer-0.3.3}/docs/notebook_source/4-providing-images-as-context.py +0 -0
  66. {data_designer-0.3.2 → data_designer-0.3.3}/docs/notebook_source/README.md +0 -0
  67. {data_designer-0.3.2 → data_designer-0.3.3}/docs/notebook_source/_README.md +0 -0
  68. {data_designer-0.3.2 → data_designer-0.3.3}/docs/notebook_source/_pyproject.toml +0 -0
  69. {data_designer-0.3.2 → data_designer-0.3.3}/docs/overrides/main.html +0 -0
  70. {data_designer-0.3.2 → data_designer-0.3.3}/docs/plugins/available.md +0 -0
  71. {data_designer-0.3.2 → data_designer-0.3.3}/docs/plugins/example.md +0 -0
  72. {data_designer-0.3.2 → data_designer-0.3.3}/docs/plugins/overview.md +0 -0
  73. {data_designer-0.3.2 → data_designer-0.3.3}/docs/quick-start.md +0 -0
  74. {data_designer-0.3.2 → data_designer-0.3.3}/docs/recipes/cards.md +0 -0
  75. {data_designer-0.3.2 → data_designer-0.3.3}/docs/recipes/code_generation/text_to_python.md +0 -0
  76. {data_designer-0.3.2 → data_designer-0.3.3}/docs/recipes/code_generation/text_to_sql.md +0 -0
  77. {data_designer-0.3.2 → data_designer-0.3.3}/docs/recipes/qa_and_chat/multi_turn_chat.md +0 -0
  78. {data_designer-0.3.2 → data_designer-0.3.3}/docs/recipes/qa_and_chat/product_info_qa.md +0 -0
  79. {data_designer-0.3.2 → data_designer-0.3.3}/docs/scripts/generate_colab_notebooks.py +0 -0
  80. {data_designer-0.3.2 → data_designer-0.3.3}/e2e_tests/pyproject.toml +0 -0
  81. {data_designer-0.3.2 → data_designer-0.3.3}/e2e_tests/src/data_designer_e2e_tests/plugins/__init__.py +0 -0
  82. {data_designer-0.3.2 → data_designer-0.3.3}/e2e_tests/src/data_designer_e2e_tests/plugins/column_generator/__init__.py +0 -0
  83. {data_designer-0.3.2 → data_designer-0.3.3}/e2e_tests/src/data_designer_e2e_tests/plugins/column_generator/config.py +0 -0
  84. {data_designer-0.3.2 → data_designer-0.3.3}/e2e_tests/src/data_designer_e2e_tests/plugins/column_generator/impl.py +0 -0
  85. {data_designer-0.3.2 → data_designer-0.3.3}/e2e_tests/src/data_designer_e2e_tests/plugins/column_generator/plugin.py +0 -0
  86. {data_designer-0.3.2 → data_designer-0.3.3}/e2e_tests/src/data_designer_e2e_tests/plugins/seed_reader/__init__.py +0 -0
  87. {data_designer-0.3.2 → data_designer-0.3.3}/e2e_tests/src/data_designer_e2e_tests/plugins/seed_reader/config.py +0 -0
  88. {data_designer-0.3.2 → data_designer-0.3.3}/e2e_tests/src/data_designer_e2e_tests/plugins/seed_reader/impl.py +0 -0
  89. {data_designer-0.3.2 → data_designer-0.3.3}/e2e_tests/src/data_designer_e2e_tests/plugins/seed_reader/plugin.py +0 -0
  90. {data_designer-0.3.2 → data_designer-0.3.3}/e2e_tests/tests/test_e2e.py +0 -0
  91. {data_designer-0.3.2 → data_designer-0.3.3}/e2e_tests/tests/test_seed.csv +0 -0
  92. {data_designer-0.3.2 → data_designer-0.3.3}/mkdocs.yml +0 -0
  93. {data_designer-0.3.2 → data_designer-0.3.3}/scripts/test_license_headers.py +0 -0
  94. {data_designer-0.3.2 → data_designer-0.3.3}/scripts/update_license_headers.py +0 -0
  95. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/__init__.py +0 -0
  96. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/cli/README.md +0 -0
  97. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/cli/__init__.py +0 -0
  98. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/cli/commands/__init__.py +0 -0
  99. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/cli/commands/download.py +0 -0
  100. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/cli/commands/list.py +0 -0
  101. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/cli/commands/models.py +0 -0
  102. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/cli/commands/providers.py +0 -0
  103. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/cli/commands/reset.py +0 -0
  104. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/cli/controllers/__init__.py +0 -0
  105. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/cli/controllers/download_controller.py +0 -0
  106. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/cli/controllers/model_controller.py +0 -0
  107. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/cli/controllers/provider_controller.py +0 -0
  108. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/cli/forms/__init__.py +0 -0
  109. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/cli/forms/builder.py +0 -0
  110. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/cli/forms/field.py +0 -0
  111. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/cli/forms/form.py +0 -0
  112. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/cli/forms/model_builder.py +0 -0
  113. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/cli/forms/provider_builder.py +0 -0
  114. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/cli/main.py +0 -0
  115. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/cli/repositories/__init__.py +0 -0
  116. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/cli/repositories/base.py +0 -0
  117. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/cli/repositories/model_repository.py +0 -0
  118. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/cli/repositories/persona_repository.py +0 -0
  119. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/cli/repositories/provider_repository.py +0 -0
  120. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/cli/services/__init__.py +0 -0
  121. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/cli/services/download_service.py +0 -0
  122. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/cli/services/model_service.py +0 -0
  123. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/cli/services/provider_service.py +0 -0
  124. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/cli/ui.py +0 -0
  125. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/cli/utils.py +0 -0
  126. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/__init__.py +0 -0
  127. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/analysis/__init__.py +0 -0
  128. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/analysis/column_profilers.py +0 -0
  129. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/analysis/column_statistics.py +0 -0
  130. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/analysis/dataset_profiler.py +0 -0
  131. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/analysis/utils/errors.py +0 -0
  132. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/analysis/utils/reporting.py +0 -0
  133. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/base.py +0 -0
  134. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/column_configs.py +0 -0
  135. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/column_types.py +0 -0
  136. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/config_builder.py +0 -0
  137. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/data_designer_config.py +0 -0
  138. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/dataset_builders.py +0 -0
  139. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/default_model_settings.py +0 -0
  140. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/errors.py +0 -0
  141. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/exports.py +0 -0
  142. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/interface.py +0 -0
  143. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/models.py +0 -0
  144. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/preview_results.py +0 -0
  145. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/processors.py +0 -0
  146. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/run_config.py +0 -0
  147. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/sampler_constraints.py +0 -0
  148. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/sampler_params.py +0 -0
  149. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/seed.py +0 -0
  150. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/seed_source.py +0 -0
  151. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/seed_source_types.py +0 -0
  152. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/utils/code_lang.py +0 -0
  153. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/utils/constants.py +0 -0
  154. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/utils/errors.py +0 -0
  155. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/utils/info.py +0 -0
  156. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/utils/io_helpers.py +0 -0
  157. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/utils/misc.py +0 -0
  158. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/utils/numerical_helpers.py +0 -0
  159. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/utils/type_helpers.py +0 -0
  160. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/utils/visualization.py +0 -0
  161. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/config/validator_params.py +0 -0
  162. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/__init__.py +0 -0
  163. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/analysis/column_profilers/base.py +0 -0
  164. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/analysis/column_profilers/judge_score_profiler.py +0 -0
  165. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/analysis/column_profilers/registry.py +0 -0
  166. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/analysis/column_statistics.py +0 -0
  167. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/analysis/dataset_profiler.py +0 -0
  168. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/analysis/errors.py +0 -0
  169. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/analysis/utils/column_statistics_calculations.py +0 -0
  170. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/analysis/utils/judge_score_processing.py +0 -0
  171. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/column_generators/__init__.py +0 -0
  172. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/column_generators/generators/__init__.py +0 -0
  173. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/column_generators/generators/base.py +0 -0
  174. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/column_generators/generators/embedding.py +0 -0
  175. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/column_generators/generators/expression.py +0 -0
  176. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/column_generators/generators/llm_completion.py +0 -0
  177. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/column_generators/generators/samplers.py +0 -0
  178. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/column_generators/generators/seed_dataset.py +0 -0
  179. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/column_generators/generators/validation.py +0 -0
  180. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/column_generators/registry.py +0 -0
  181. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/column_generators/utils/errors.py +0 -0
  182. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/column_generators/utils/generator_classification.py +0 -0
  183. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/column_generators/utils/judge_score_factory.py +0 -0
  184. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/column_generators/utils/prompt_renderer.py +0 -0
  185. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/compiler.py +0 -0
  186. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/configurable_task.py +0 -0
  187. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/dataset_builders/artifact_storage.py +0 -0
  188. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/dataset_builders/column_wise_builder.py +0 -0
  189. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/dataset_builders/errors.py +0 -0
  190. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/dataset_builders/multi_column_configs.py +0 -0
  191. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/dataset_builders/utils/__init__.py +0 -0
  192. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/dataset_builders/utils/config_compiler.py +0 -0
  193. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/dataset_builders/utils/dag.py +0 -0
  194. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/dataset_builders/utils/dataset_batch_manager.py +0 -0
  195. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/dataset_builders/utils/errors.py +0 -0
  196. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/errors.py +0 -0
  197. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/model_provider.py +0 -0
  198. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/models/__init__.py +0 -0
  199. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/models/errors.py +0 -0
  200. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/models/facade.py +0 -0
  201. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/models/litellm_overrides.py +0 -0
  202. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/models/parsers/__init__.py +0 -0
  203. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/models/parsers/errors.py +0 -0
  204. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/models/parsers/parser.py +0 -0
  205. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/models/parsers/postprocessors.py +0 -0
  206. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/models/parsers/tag_parsers.py +0 -0
  207. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/models/parsers/types.py +0 -0
  208. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/models/recipes/base.py +0 -0
  209. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/models/recipes/response_recipes.py +0 -0
  210. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/models/registry.py +0 -0
  211. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/models/telemetry.py +0 -0
  212. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/models/usage.py +0 -0
  213. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/models/utils.py +0 -0
  214. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/processing/ginja/__init__.py +0 -0
  215. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/processing/ginja/ast.py +0 -0
  216. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/processing/ginja/environment.py +0 -0
  217. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/processing/ginja/exceptions.py +0 -0
  218. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/processing/ginja/record.py +0 -0
  219. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/processing/gsonschema/__init__.py +0 -0
  220. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/processing/gsonschema/exceptions.py +0 -0
  221. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/processing/gsonschema/schema_transformers.py +0 -0
  222. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/processing/gsonschema/types.py +0 -0
  223. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/processing/gsonschema/validators.py +0 -0
  224. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/processing/processors/base.py +0 -0
  225. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/processing/processors/drop_columns.py +0 -0
  226. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/processing/processors/registry.py +0 -0
  227. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/processing/processors/schema_transform.py +0 -0
  228. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/processing/utils.py +0 -0
  229. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/registry/base.py +0 -0
  230. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/registry/data_designer_registry.py +0 -0
  231. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/registry/errors.py +0 -0
  232. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/resources/managed_dataset_generator.py +0 -0
  233. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/resources/managed_dataset_repository.py +0 -0
  234. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/resources/managed_storage.py +0 -0
  235. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/resources/resource_provider.py +0 -0
  236. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/resources/seed_reader.py +0 -0
  237. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/sampling_gen/column.py +0 -0
  238. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/sampling_gen/constraints.py +0 -0
  239. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/sampling_gen/data_sources/base.py +0 -0
  240. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/sampling_gen/data_sources/errors.py +0 -0
  241. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/sampling_gen/data_sources/sources.py +0 -0
  242. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/sampling_gen/entities/__init__.py +0 -0
  243. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/sampling_gen/entities/assets/zip_area_code_map.parquet +0 -0
  244. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/sampling_gen/entities/dataset_based_person_fields.py +0 -0
  245. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/sampling_gen/entities/email_address_utils.py +0 -0
  246. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/sampling_gen/entities/errors.py +0 -0
  247. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/sampling_gen/entities/national_id_utils.py +0 -0
  248. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/sampling_gen/entities/person.py +0 -0
  249. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/sampling_gen/entities/phone_number.py +0 -0
  250. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/sampling_gen/errors.py +0 -0
  251. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/sampling_gen/generator.py +0 -0
  252. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/sampling_gen/jinja_utils.py +0 -0
  253. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/sampling_gen/people_gen.py +0 -0
  254. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/sampling_gen/person_constants.py +0 -0
  255. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/sampling_gen/schema.py +0 -0
  256. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/sampling_gen/schema_builder.py +0 -0
  257. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/sampling_gen/utils.py +0 -0
  258. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/secret_resolver.py +0 -0
  259. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/validation.py +0 -0
  260. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/validators/__init__.py +0 -0
  261. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/validators/base.py +0 -0
  262. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/validators/local_callable.py +0 -0
  263. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/validators/python.py +0 -0
  264. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/validators/remote.py +0 -0
  265. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/engine/validators/sql.py +0 -0
  266. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/errors.py +0 -0
  267. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/essentials/__init__.py +0 -0
  268. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/interface/__init__.py +0 -0
  269. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/interface/data_designer.py +0 -0
  270. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/interface/errors.py +0 -0
  271. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/interface/results.py +0 -0
  272. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/logging.py +0 -0
  273. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/plugin_manager.py +0 -0
  274. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/plugins/__init__.py +0 -0
  275. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/plugins/errors.py +0 -0
  276. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/plugins/plugin.py +0 -0
  277. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/plugins/registry.py +0 -0
  278. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/plugins/testing/__init__.py +0 -0
  279. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/plugins/testing/stubs.py +0 -0
  280. {data_designer-0.3.2 → data_designer-0.3.3}/src/data_designer/plugins/testing/utils.py +0 -0
  281. {data_designer-0.3.2 → data_designer-0.3.3}/tests/cli/commands/test_download_command.py +0 -0
  282. {data_designer-0.3.2 → data_designer-0.3.3}/tests/cli/commands/test_list_command.py +0 -0
  283. {data_designer-0.3.2 → data_designer-0.3.3}/tests/cli/commands/test_models_command.py +0 -0
  284. {data_designer-0.3.2 → data_designer-0.3.3}/tests/cli/commands/test_providers_command.py +0 -0
  285. {data_designer-0.3.2 → data_designer-0.3.3}/tests/cli/commands/test_reset_command.py +0 -0
  286. {data_designer-0.3.2 → data_designer-0.3.3}/tests/cli/conftest.py +0 -0
  287. {data_designer-0.3.2 → data_designer-0.3.3}/tests/cli/controllers/test_download_controller.py +0 -0
  288. {data_designer-0.3.2 → data_designer-0.3.3}/tests/cli/controllers/test_model_controller.py +0 -0
  289. {data_designer-0.3.2 → data_designer-0.3.3}/tests/cli/controllers/test_provider_controller.py +0 -0
  290. {data_designer-0.3.2 → data_designer-0.3.3}/tests/cli/forms/test_field.py +0 -0
  291. {data_designer-0.3.2 → data_designer-0.3.3}/tests/cli/forms/test_form.py +0 -0
  292. {data_designer-0.3.2 → data_designer-0.3.3}/tests/cli/forms/test_model_builder.py +0 -0
  293. {data_designer-0.3.2 → data_designer-0.3.3}/tests/cli/forms/test_provider_builder.py +0 -0
  294. {data_designer-0.3.2 → data_designer-0.3.3}/tests/cli/repositories/test_model_repository.py +0 -0
  295. {data_designer-0.3.2 → data_designer-0.3.3}/tests/cli/repositories/test_persona_repository.py +0 -0
  296. {data_designer-0.3.2 → data_designer-0.3.3}/tests/cli/repositories/test_provider_repository.py +0 -0
  297. {data_designer-0.3.2 → data_designer-0.3.3}/tests/cli/services/test_download_service.py +0 -0
  298. {data_designer-0.3.2 → data_designer-0.3.3}/tests/cli/services/test_model_service.py +0 -0
  299. {data_designer-0.3.2 → data_designer-0.3.3}/tests/cli/services/test_provider_service.py +0 -0
  300. {data_designer-0.3.2 → data_designer-0.3.3}/tests/cli/test_cli_utils.py +0 -0
  301. {data_designer-0.3.2 → data_designer-0.3.3}/tests/config/analysis/conftest.py +0 -0
  302. {data_designer-0.3.2 → data_designer-0.3.3}/tests/config/analysis/test_column_statistics.py +0 -0
  303. {data_designer-0.3.2 → data_designer-0.3.3}/tests/config/analysis/test_dataset_profiler_results.py +0 -0
  304. {data_designer-0.3.2 → data_designer-0.3.3}/tests/config/analysis/utils/test_reporting.py +0 -0
  305. {data_designer-0.3.2 → data_designer-0.3.3}/tests/config/test_columns.py +0 -0
  306. {data_designer-0.3.2 → data_designer-0.3.3}/tests/config/test_config_builder.py +0 -0
  307. {data_designer-0.3.2 → data_designer-0.3.3}/tests/config/test_data_designer_config.py +0 -0
  308. {data_designer-0.3.2 → data_designer-0.3.3}/tests/config/test_default_model_settings.py +0 -0
  309. {data_designer-0.3.2 → data_designer-0.3.3}/tests/config/test_models.py +0 -0
  310. {data_designer-0.3.2 → data_designer-0.3.3}/tests/config/test_processors.py +0 -0
  311. {data_designer-0.3.2 → data_designer-0.3.3}/tests/config/test_sampler_constraints.py +0 -0
  312. {data_designer-0.3.2 → data_designer-0.3.3}/tests/config/test_sampler_params.py +0 -0
  313. {data_designer-0.3.2 → data_designer-0.3.3}/tests/config/test_seed.py +0 -0
  314. {data_designer-0.3.2 → data_designer-0.3.3}/tests/config/test_seed_source.py +0 -0
  315. {data_designer-0.3.2 → data_designer-0.3.3}/tests/config/test_validator_params.py +0 -0
  316. {data_designer-0.3.2 → data_designer-0.3.3}/tests/config/utils/__init__.py +0 -0
  317. {data_designer-0.3.2 → data_designer-0.3.3}/tests/config/utils/test_code_lang.py +0 -0
  318. {data_designer-0.3.2 → data_designer-0.3.3}/tests/config/utils/test_info.py +0 -0
  319. {data_designer-0.3.2 → data_designer-0.3.3}/tests/config/utils/test_io_helpers.py +0 -0
  320. {data_designer-0.3.2 → data_designer-0.3.3}/tests/config/utils/test_misc.py +0 -0
  321. {data_designer-0.3.2 → data_designer-0.3.3}/tests/config/utils/test_type_helpers.py +0 -0
  322. {data_designer-0.3.2 → data_designer-0.3.3}/tests/config/utils/test_visualization.py +0 -0
  323. {data_designer-0.3.2 → data_designer-0.3.3}/tests/conftest.py +0 -0
  324. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/analysis/column_profilers/test_base.py +0 -0
  325. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/analysis/column_profilers/test_judge_score_profiler.py +0 -0
  326. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/analysis/conftest.py +0 -0
  327. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/analysis/test_column_statistics_calculator.py +0 -0
  328. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/analysis/test_data/artifacts/dataset/column_configs.json +0 -0
  329. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/analysis/test_data/artifacts/dataset/dataset.json +0 -0
  330. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/analysis/test_data/artifacts/dataset/metadata.json +0 -0
  331. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/analysis/test_dataset_profiler.py +0 -0
  332. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/analysis/test_errors.py +0 -0
  333. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/analysis/utils/test_column_statistics_calculations.py +0 -0
  334. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/analysis/utils/test_judge_score_processing.py +0 -0
  335. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/column_generators/generators/__init__.py +0 -0
  336. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/column_generators/generators/test_column_generator_base.py +0 -0
  337. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/column_generators/generators/test_embedding.py +0 -0
  338. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/column_generators/generators/test_expression.py +0 -0
  339. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/column_generators/generators/test_llm_completion_generators.py +0 -0
  340. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/column_generators/generators/test_samplers.py +0 -0
  341. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/column_generators/generators/test_seed_dataset.py +0 -0
  342. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/column_generators/generators/test_validation.py +0 -0
  343. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/column_generators/test_registry.py +0 -0
  344. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/column_generators/utils/test_column_generator_errors.py +0 -0
  345. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/column_generators/utils/test_generator_classification.py +0 -0
  346. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/column_generators/utils/test_judge_score_factory.py +0 -0
  347. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/column_generators/utils/test_prompt_renderer.py +0 -0
  348. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/conftest.py +0 -0
  349. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/dataset_builders/test_artifact_storage.py +0 -0
  350. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/dataset_builders/test_column_wise_builder.py +0 -0
  351. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/dataset_builders/test_multi_column_configs.py +0 -0
  352. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/dataset_builders/utils/test_config_compiler.py +0 -0
  353. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/dataset_builders/utils/test_dag.py +0 -0
  354. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/dataset_builders/utils/test_dataset_batch_manager.py +0 -0
  355. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/models/conftest.py +0 -0
  356. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/models/parsers/test_parser.py +0 -0
  357. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/models/parsers/test_parsers_types.py +0 -0
  358. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/models/parsers/test_postprocessors.py +0 -0
  359. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/models/parsers/test_tag_parsers.py +0 -0
  360. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/models/recipes/test_recipe_base.py +0 -0
  361. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/models/recipes/test_response_recipes.py +0 -0
  362. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/models/stub_secrets.json +0 -0
  363. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/models/test_facade.py +0 -0
  364. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/models/test_litellm_overrides.py +0 -0
  365. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/models/test_model_errors.py +0 -0
  366. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/models/test_model_registry.py +0 -0
  367. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/models/test_model_utils.py +0 -0
  368. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/models/test_usage.py +0 -0
  369. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/processing/__init__.py +0 -0
  370. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/processing/ginja/__init__.py +0 -0
  371. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/processing/ginja/test_ast.py +0 -0
  372. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/processing/ginja/test_environment.py +0 -0
  373. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/processing/ginja/test_exceptions.py +0 -0
  374. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/processing/ginja/test_record.py +0 -0
  375. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/processing/gsonschema/__init__.py +0 -0
  376. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/processing/gsonschema/test_exceptions.py +0 -0
  377. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/processing/gsonschema/test_schema_transformers.py +0 -0
  378. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/processing/gsonschema/test_types.py +0 -0
  379. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/processing/gsonschema/test_validators.py +0 -0
  380. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/processing/processors/__init__.py +0 -0
  381. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/processing/processors/test_drop_columns.py +0 -0
  382. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/processing/processors/test_registry.py +0 -0
  383. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/processing/processors/test_schema_transform.py +0 -0
  384. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/processing/test_utils.py +0 -0
  385. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/registry/__init__.py +0 -0
  386. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/registry/conftest.py +0 -0
  387. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/registry/test_base.py +0 -0
  388. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/registry/test_data_designer_registry.py +0 -0
  389. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/registry/test_errors.py +0 -0
  390. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/resources/__init__.py +0 -0
  391. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/resources/conftest.py +0 -0
  392. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/resources/test_managed_dataset_generator.py +0 -0
  393. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/resources/test_managed_dataset_repository.py +0 -0
  394. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/resources/test_managed_storage.py +0 -0
  395. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/resources/test_resource_provider.py +0 -0
  396. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/resources/test_seed_reader.py +0 -0
  397. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/sampling_gen/conftest.py +0 -0
  398. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/sampling_gen/data_sources/test_sampler_errors.py +0 -0
  399. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/sampling_gen/data_sources/test_sources.py +0 -0
  400. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/sampling_gen/entities/test_email_address_utils.py +0 -0
  401. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/sampling_gen/entities/test_national_id_utils.py +0 -0
  402. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/sampling_gen/entities/test_person.py +0 -0
  403. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/sampling_gen/entities/test_phone_number.py +0 -0
  404. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/sampling_gen/test_column.py +0 -0
  405. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/sampling_gen/test_constraints.py +0 -0
  406. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/sampling_gen/test_generator.py +0 -0
  407. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/sampling_gen/test_jinja_utils.py +0 -0
  408. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/sampling_gen/test_people_gen.py +0 -0
  409. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/sampling_gen/test_schema.py +0 -0
  410. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/sampling_gen/test_utils.py +0 -0
  411. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/test_compiler.py +0 -0
  412. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/test_configurable_task.py +0 -0
  413. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/test_engine_errors.py +0 -0
  414. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/test_model_provider.py +0 -0
  415. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/test_secret_resolver.py +0 -0
  416. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/test_validation.py +0 -0
  417. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/validators/test_local_callable.py +0 -0
  418. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/validators/test_python.py +0 -0
  419. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/validators/test_remote.py +0 -0
  420. {data_designer-0.3.2 → data_designer-0.3.3}/tests/engine/validators/test_sql.py +0 -0
  421. {data_designer-0.3.2 → data_designer-0.3.3}/tests/essentials/test_init.py +0 -0
  422. {data_designer-0.3.2 → data_designer-0.3.3}/tests/interface/test_data_designer.py +0 -0
  423. {data_designer-0.3.2 → data_designer-0.3.3}/tests/interface/test_results.py +0 -0
  424. {data_designer-0.3.2 → data_designer-0.3.3}/tests/plugins/test_plugin.py +0 -0
  425. {data_designer-0.3.2 → data_designer-0.3.3}/tests/plugins/test_plugin_registry.py +0 -0
  426. {data_designer-0.3.2 → data_designer-0.3.3}/tests/test_logging.py +0 -0
  427. {data_designer-0.3.2 → data_designer-0.3.3}/tests/test_plugin_manager.py +0 -0
@@ -0,0 +1,51 @@
1
+ name: 🐛 Bug Report
2
+ description: Report a bug
3
+ labels: ["bug"]
4
+ body:
5
+ - type: dropdown
6
+ id: priority
7
+ attributes:
8
+ label: Priority Level
9
+ description: How urgent is this issue?
10
+ default: 2
11
+ options:
12
+ - Critical (Total blocker)
13
+ - High (Major functionality broken)
14
+ - Medium (Annoying but has workaround)
15
+ - Low (Cosmetic / Minor)
16
+ validations:
17
+ required: true
18
+ - type: textarea
19
+ id: description
20
+ attributes:
21
+ label: Describe the bug
22
+ placeholder: A clear and concise description of what the bug is.
23
+ validations:
24
+ required: true
25
+ - type: textarea
26
+ id: reproduction
27
+ attributes:
28
+ label: Steps/Code to reproduce bug
29
+ description: |
30
+ Please list *minimal* steps or code snippet for us to be able to reproduce the bug.
31
+ A helpful guide on how to craft a minimal bug report: http://matthewrocklin.com/blog/work/2018/02/28/minimal-bug-reports
32
+ placeholder: |
33
+ Please include:
34
+ - Minimal code example that reproduces the issue
35
+ - Configuration used (if applicable)
36
+ - Commands run (if applicable)
37
+ - Error traceback
38
+ validations:
39
+ required: true
40
+ - type: textarea
41
+ id: expected
42
+ attributes:
43
+ label: Expected behavior
44
+ placeholder: A clear and concise description of what you expected to happen.
45
+ validations:
46
+ required: true
47
+ - type: textarea
48
+ id: context
49
+ attributes:
50
+ label: Additional context
51
+ placeholder: Add any other context about the problem here (e.g., screenshots, logs, browser version).
@@ -0,0 +1,5 @@
1
+ blank_issues_enabled: false
2
+ contact_links:
3
+ - name: 💬 Ask a Question
4
+ url: https://github.com/NVIDIA-NeMo/DataDesigner/discussions
5
+ about: Please use GitHub Discussions for general questions.
@@ -0,0 +1,32 @@
1
+ name: 🛠️ Development Task
2
+ description: Track internal development work, refactoring, or infrastructure
3
+ labels: ["task"]
4
+ body:
5
+ - type: dropdown
6
+ id: priority
7
+ attributes:
8
+ label: Priority Level
9
+ default: 1
10
+ options:
11
+ - High
12
+ - Medium
13
+ - Low
14
+ validations:
15
+ required: true
16
+ - type: textarea
17
+ id: summary
18
+ attributes:
19
+ label: Task Summary
20
+ placeholder: What is the core objective of this task?
21
+ validations:
22
+ required: true
23
+ - type: textarea
24
+ id: technical-details
25
+ attributes:
26
+ label: Technical Details & Implementation Plan
27
+ placeholder: Describe the technical approach, files affected, or logic changes.
28
+ - type: input
29
+ id: dependencies
30
+ attributes:
31
+ label: Dependencies
32
+ placeholder: "e.g., Blocked by issue #123"
@@ -0,0 +1,45 @@
1
+ name: ✨ Feature Request
2
+ description: Put in a request for a new feature
3
+ labels: ["enhancement"]
4
+ body:
5
+ - type: markdown
6
+ attributes:
7
+ value: |
8
+ Please use this form to suggest new features or improvements.
9
+ - type: dropdown
10
+ id: priority
11
+ attributes:
12
+ label: Priority Level
13
+ description: How important is this feature to your workflow?
14
+ default: 2
15
+ options:
16
+ - Critical (Essential for use)
17
+ - High (Major improvement)
18
+ - Medium (Nice to have)
19
+ - Low (Minor tweak)
20
+ validations:
21
+ required: true
22
+ - type: textarea
23
+ id: problem
24
+ attributes:
25
+ label: Is your feature request related to a problem? Please describe.
26
+ placeholder: A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
27
+ validations:
28
+ required: true
29
+ - type: textarea
30
+ id: solution
31
+ attributes:
32
+ label: Describe the solution you'd like
33
+ placeholder: A clear and concise description of what you want to happen.
34
+ validations:
35
+ required: true
36
+ - type: textarea
37
+ id: alternatives
38
+ attributes:
39
+ label: Describe alternatives you've considered
40
+ placeholder: A clear and concise description of any alternative solutions or features you've considered.
41
+ - type: textarea
42
+ id: context
43
+ attributes:
44
+ label: Additional context
45
+ placeholder: Add any other context or screenshots about the feature request here.
@@ -54,7 +54,7 @@ jobs:
54
54
  with:
55
55
  version: "latest"
56
56
  python-version: ${{ matrix.python-version }}
57
- enable-cache: true
57
+ enable-cache: false
58
58
 
59
59
  - name: Run e2e tests
60
60
  run: |
@@ -22,6 +22,10 @@ help:
22
22
  @echo "🧪 Testing:"
23
23
  @echo " test - Run all unit tests"
24
24
  @echo " coverage - Run tests with coverage report"
25
+ @echo " test-e2e - Run e2e plugin tests"
26
+ @echo " test-run-tutorials - Run tutorial notebooks as e2e tests"
27
+ @echo " test-run-recipes - Run recipe scripts as e2e tests"
28
+ @echo " test-run-all-examples - Run all tutorials and recipes as e2e tests"
25
29
  @echo ""
26
30
  @echo "✨ Code Quality:"
27
31
  @echo " format - Format code with ruff"
@@ -91,6 +95,33 @@ test-e2e:
91
95
  @echo "🧪 Running e2e tests..."
92
96
  uv run --no-cache --refresh --directory e2e_tests pytest -s
93
97
 
98
+ test-run-tutorials:
99
+ @echo "🧪 Running tutorials as e2e tests..."
100
+ @TUTORIAL_WORKDIR=$$(mktemp -d); \
101
+ trap "rm -rf $$TUTORIAL_WORKDIR" EXIT; \
102
+ for f in docs/notebook_source/*.py; do \
103
+ echo " 📓 Running $$f..."; \
104
+ (cd "$$TUTORIAL_WORKDIR" && uv run python "$(REPO_PATH)/$$f") || exit 1; \
105
+ done; \
106
+ echo "🧹 Cleaning up tutorial artifacts..."; \
107
+ rm -rf "$$TUTORIAL_WORKDIR"; \
108
+ echo "✅ All tutorials completed successfully!"
109
+
110
+ test-run-recipes:
111
+ @echo "🧪 Running recipes as e2e tests..."
112
+ @RECIPE_WORKDIR=$$(mktemp -d); \
113
+ trap "rm -rf $$RECIPE_WORKDIR" EXIT; \
114
+ for f in docs/assets/recipes/**/*.py; do \
115
+ echo " 📜 Running $$f..."; \
116
+ (cd "$$RECIPE_WORKDIR" && uv run python "$(REPO_PATH)/$$f" --model-alias nvidia-text --artifact-path "$$RECIPE_WORKDIR" --num-records 5) || exit 1; \
117
+ done; \
118
+ echo "🧹 Cleaning up recipe artifacts..."; \
119
+ rm -rf "$$RECIPE_WORKDIR"; \
120
+ echo "✅ All recipes completed successfully!"
121
+
122
+ test-run-all-examples: test-run-tutorials test-run-recipes
123
+ @echo "✅ All examples (tutorials + recipes) completed successfully!"
124
+
94
125
  convert-execute-notebooks:
95
126
  @echo "📓 Converting Python tutorials to notebooks and executing..."
96
127
  @mkdir -p docs/notebooks
@@ -137,4 +168,4 @@ install-dev-notebooks:
137
168
  $(call install-pre-commit-hooks)
138
169
  @echo "✅ Dev + notebooks installation complete!"
139
170
 
140
- .PHONY: clean coverage format format-check lint lint-fix test check-license-headers update-license-headers check-all check-all-fix install install-dev install-dev-notebooks generate-colab-notebooks
171
+ .PHONY: clean coverage format format-check lint lint-fix test test-e2e test-run-tutorials test-run-recipes test-run-all-examples check-license-headers update-license-headers check-all check-all-fix install install-dev install-dev-notebooks generate-colab-notebooks
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: data-designer
3
- Version: 0.3.2
3
+ Version: 0.3.3
4
4
  Summary: General framework for synthetic data generation
5
5
  License-Expression: Apache-2.0
6
6
  License-File: LICENSE
@@ -37,7 +37,7 @@ Requires-Dist: pygments<3,>=2.19.2
37
37
  Requires-Dist: python-json-logger<4,>=3
38
38
  Requires-Dist: pyyaml<7,>=6.0.1
39
39
  Requires-Dist: requests<3,>=2.32.2
40
- Requires-Dist: rich<14,>=13.7.1
40
+ Requires-Dist: rich<15,>=13.7.1
41
41
  Requires-Dist: ruff<1,>=0.14.10
42
42
  Requires-Dist: scipy<2,>=1.11.0
43
43
  Requires-Dist: sqlfluff<4,>=3.2.0
@@ -150,14 +150,14 @@ def build_config(model_alias: str) -> DataDesignerConfigBuilder:
150
150
  config_builder.add_column(
151
151
  ExpressionColumnConfig(
152
152
  name="completeness_result",
153
- expr="{{ llm_answer_metrics.completeness.score }}",
153
+ expr="{{ llm_answer_metrics.Completeness.score }}",
154
154
  )
155
155
  )
156
156
 
157
157
  config_builder.add_column(
158
158
  ExpressionColumnConfig(
159
159
  name="accuracy_result",
160
- expr="{{ llm_answer_metrics.accuracy.score }}",
160
+ expr="{{ llm_answer_metrics.Accuracy.score }}",
161
161
  )
162
162
  )
163
163
 
@@ -42,7 +42,7 @@ dependencies = [
42
42
  "python-json-logger>=3,<4",
43
43
  "pyyaml>=6.0.1,<7",
44
44
  "requests<3,>=2.32.2",
45
- "rich>=13.7.1,<14",
45
+ "rich>=13.7.1,<15",
46
46
  "ruff>=0.14.10,<1",
47
47
  "scipy>=1.11.0,<2",
48
48
  "sqlfluff>=3.2.0,<4",
@@ -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.2'
32
- __version_tuple__ = version_tuple = (0, 3, 2)
31
+ __version__ = version = '0.3.3'
32
+ __version_tuple__ = version_tuple = (0, 3, 3)
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -108,6 +108,26 @@ class ConcurrentThreadExecutor:
108
108
  self._shutdown_window_size = shutdown_error_window
109
109
  self._results = ExecutorResults(failure_threshold=shutdown_error_rate)
110
110
 
111
+ @property
112
+ def results(self) -> ExecutorResults:
113
+ return self._results
114
+
115
+ @property
116
+ def max_workers(self) -> int:
117
+ return self._max_workers
118
+
119
+ @property
120
+ def shutdown_error_rate(self) -> float:
121
+ return self._shutdown_error_rate
122
+
123
+ @property
124
+ def shutdown_window_size(self) -> int:
125
+ return self._shutdown_window_size
126
+
127
+ @property
128
+ def semaphore(self) -> Semaphore:
129
+ return self._semaphore
130
+
111
131
  def __enter__(self) -> ConcurrentThreadExecutor:
112
132
  self._executor = ThreadPoolExecutor(
113
133
  max_workers=self._max_workers,
@@ -145,14 +165,16 @@ class ConcurrentThreadExecutor:
145
165
  self._raise_task_error()
146
166
 
147
167
  def _handle_future(future: Future) -> None:
148
- self._results.completed_count += 1
149
168
  try:
150
169
  result = future.result()
151
170
  if self._result_callback is not None:
152
171
  self._result_callback(result, context=context)
153
- self._results.success_count += 1
172
+ with self._lock:
173
+ self._results.completed_count += 1
174
+ self._results.success_count += 1
154
175
  except Exception as err:
155
176
  with self._lock:
177
+ self._results.completed_count += 1
156
178
  self._results.error_trap.handle_error(err)
157
179
  if self._results.is_error_rate_exceeded(self._shutdown_window_size):
158
180
  # Signal to shutdown early on the next submission (if received).
@@ -71,7 +71,7 @@ def test_executor_results_error_rate_exceeded(
71
71
 
72
72
  def test_concurrent_thread_executor_creation():
73
73
  executor = ConcurrentThreadExecutor(max_workers=2, column_name="test_column")
74
- assert executor._max_workers == 2
74
+ assert executor.max_workers == 2
75
75
 
76
76
 
77
77
  @pytest.mark.parametrize(
@@ -129,7 +129,7 @@ def test_concurrent_thread_executor_early_shutdown_behavior(
129
129
  for _ in range(5):
130
130
  executor.submit(failing_func)
131
131
  time.sleep(0.1)
132
- assert executor._results.early_shutdown is False
132
+ assert executor.results.early_shutdown is False
133
133
 
134
134
 
135
135
  def test_concurrent_thread_executor_result_callback():
@@ -211,9 +211,9 @@ def test_concurrent_thread_executor_custom_shutdown_parameters():
211
211
  max_workers=2, column_name="test_column", shutdown_error_rate=0.3, shutdown_error_window=5
212
212
  )
213
213
 
214
- assert executor._shutdown_error_rate == 0.3
215
- assert executor._shutdown_window_size == 5
216
- assert executor._results.failure_threshold == 0.3
214
+ assert executor.shutdown_error_rate == 0.3
215
+ assert executor.shutdown_window_size == 5
216
+ assert executor.results.failure_threshold == 0.3
217
217
 
218
218
 
219
219
  def test_context_variables_context_variable_propagation():
@@ -263,7 +263,7 @@ def test_edge_cases_zero_error_window():
263
263
  executor.submit(failing_func)
264
264
  time.sleep(0.1) # Wait for task to complete
265
265
 
266
- assert executor._results.completed_count == 1
266
+ assert executor.results.completed_count == 1
267
267
 
268
268
 
269
269
  def test_edge_cases_concurrent_submit_calls():
@@ -324,7 +324,7 @@ def test_edge_cases_semaphore_release_on_exception():
324
324
  executor = ConcurrentThreadExecutor(max_workers=1, column_name="test_column")
325
325
 
326
326
  with executor:
327
- original_release = executor._semaphore.release
327
+ original_release = executor.semaphore.release
328
328
  release_count = 0
329
329
 
330
330
  def counting_release():
@@ -332,7 +332,7 @@ def test_edge_cases_semaphore_release_on_exception():
332
332
  release_count += 1
333
333
  original_release()
334
334
 
335
- executor._semaphore.release = counting_release
335
+ executor.semaphore.release = counting_release
336
336
 
337
337
  def failing_func():
338
338
  raise ValueError("Test error")
@@ -364,3 +364,170 @@ def test_edge_cases_multiple_early_shutdown_attempts():
364
364
  time.sleep(0.1) # Wait for tasks to complete
365
365
 
366
366
  executor.submit(failing_func)
367
+
368
+
369
+ @pytest.mark.parametrize(
370
+ "shutdown_error_rate,num_errors,num_successes,expected_early_shutdown",
371
+ [
372
+ # Threshold 0%: Only succeeds when NO errors
373
+ (0.0, 0, 100, False), # 0% errors, 0% threshold → No shutdown
374
+ # Threshold below error rate: Should NOT shutdown
375
+ (0.5, 40, 60, False), # 40% errors, 50% threshold → No shutdown
376
+ (0.3, 20, 80, False), # 20% errors, 30% threshold → No shutdown
377
+ # Threshold 100%: Only shuts down at exactly 100% errors
378
+ (1.0, 90, 10, False), # 90% errors, 100% threshold → No shutdown
379
+ (1.0, 50, 50, False), # 50% errors, 100% threshold → No shutdown
380
+ ],
381
+ )
382
+ def test_no_early_shutdown_when_below_threshold(
383
+ shutdown_error_rate: float, num_errors: int, num_successes: int, expected_early_shutdown: bool
384
+ ):
385
+ """Test that early shutdown does NOT occur when error rate is below or at threshold."""
386
+ total_tasks = num_errors + num_successes
387
+ executor = ConcurrentThreadExecutor(
388
+ max_workers=20,
389
+ column_name="test_column",
390
+ shutdown_error_rate=shutdown_error_rate,
391
+ shutdown_error_window=20,
392
+ )
393
+
394
+ with executor:
395
+
396
+ def success_task(x: int) -> int:
397
+ return x * 2
398
+
399
+ def error_task(x: int) -> None:
400
+ raise ValueError(f"Error {x}")
401
+
402
+ # Interleave tasks to maintain consistent error rate throughout execution
403
+ # Calculate how many tasks per error to distribute evenly
404
+ if num_errors > 0:
405
+ tasks_per_error = total_tasks / num_errors
406
+ else:
407
+ tasks_per_error = float("inf")
408
+
409
+ error_index = 0
410
+ success_index = 0
411
+ for i in range(total_tasks):
412
+ # Determine if this position should be an error based on even distribution
413
+ if num_errors > 0 and error_index < num_errors and i >= int(error_index * tasks_per_error):
414
+ executor.submit(error_task, error_index)
415
+ error_index += 1
416
+ elif success_index < num_successes:
417
+ executor.submit(success_task, success_index)
418
+ success_index += 1
419
+
420
+ time.sleep(0.5) # Wait for all tasks to complete
421
+
422
+ # Verify no early shutdown occurred
423
+ assert executor.results.early_shutdown == expected_early_shutdown
424
+ assert executor.results.completed_count == total_tasks
425
+ assert executor.results.success_count == num_successes
426
+ assert executor.results.error_trap.error_count == num_errors
427
+
428
+
429
+ @pytest.mark.parametrize(
430
+ "shutdown_error_rate,num_errors,num_successes,shutdown_window",
431
+ [
432
+ # Threshold 0%: ANY error triggers shutdown
433
+ (0.0, 10, 0, 10), # 100% errors, 0% threshold → Shutdown
434
+ (0.0, 5, 5, 10), # 50% errors, 0% threshold → Shutdown
435
+ # Threshold exceeded: Should shutdown
436
+ (0.5, 60, 40, 20), # 60% errors, 50% threshold → Shutdown
437
+ (0.3, 40, 60, 20), # 40% errors, 30% threshold → Shutdown
438
+ # Threshold 100%: Shuts down when ALL tasks fail
439
+ (1.0, 20, 0, 10), # 100% errors, 100% threshold → Shutdown
440
+ ],
441
+ )
442
+ def test_early_shutdown_when_threshold_exceeded(
443
+ shutdown_error_rate: float, num_errors: int, num_successes: int, shutdown_window: int
444
+ ):
445
+ """Test that early shutdown DOES occur when error rate exceeds threshold."""
446
+ executor = ConcurrentThreadExecutor(
447
+ max_workers=10,
448
+ column_name="test_column",
449
+ shutdown_error_rate=shutdown_error_rate,
450
+ shutdown_error_window=shutdown_window,
451
+ )
452
+
453
+ with pytest.raises(DataDesignerRuntimeError, match="Data generation was terminated early"):
454
+ with executor:
455
+
456
+ def success_task(x: int) -> int:
457
+ return x * 2
458
+
459
+ def error_task(x: int) -> None:
460
+ raise ValueError(f"Error {x}")
461
+
462
+ # Interleave tasks to maintain the specified error rate
463
+ total_tasks = num_errors + num_successes
464
+
465
+ # Calculate how many tasks per error to distribute evenly
466
+ if num_errors > 0:
467
+ tasks_per_error = total_tasks / num_errors
468
+ else:
469
+ tasks_per_error = float("inf")
470
+
471
+ error_index = 0
472
+ success_index = 0
473
+ for i in range(total_tasks):
474
+ # Determine if this position should be an error based on even distribution
475
+ if num_errors > 0 and error_index < num_errors and i >= int(error_index * tasks_per_error):
476
+ executor.submit(error_task, error_index)
477
+ error_index += 1
478
+ elif success_index < num_successes:
479
+ executor.submit(success_task, success_index)
480
+ success_index += 1
481
+
482
+ time.sleep(0.3)
483
+
484
+ # Try to submit more tasks - should raise because early_shutdown is True
485
+ executor.submit(success_task, 999)
486
+
487
+
488
+ def test_thread_safety_with_high_concurrency():
489
+ """Stress test to verify thread-safe counter updates under high concurrency."""
490
+ num_tasks = 500
491
+ max_workers = 20
492
+ results_list = []
493
+ errors_list = []
494
+
495
+ def result_callback(result: int, *, context: dict | None = None) -> None:
496
+ results_list.append(result)
497
+
498
+ def error_callback(exc: Exception, *, context: dict | None = None) -> None:
499
+ errors_list.append(exc)
500
+
501
+ with ConcurrentThreadExecutor(
502
+ max_workers=max_workers,
503
+ column_name="test_column",
504
+ result_callback=result_callback,
505
+ error_callback=error_callback,
506
+ shutdown_error_rate=0.9, # High threshold to avoid shutdown
507
+ shutdown_error_window=50,
508
+ ) as executor:
509
+
510
+ def variable_task(x: int) -> int:
511
+ # Some tasks succeed, some fail, some take longer
512
+ if x % 7 == 0:
513
+ raise ValueError(f"Error {x}")
514
+ if x % 3 == 0:
515
+ time.sleep(0.001)
516
+ return x * 2
517
+
518
+ for i in range(num_tasks):
519
+ executor.submit(variable_task, i)
520
+
521
+ time.sleep(1.0) # Wait for all tasks to complete
522
+
523
+ # Calculate expected counts
524
+ expected_errors = sum(1 for i in range(num_tasks) if i % 7 == 0)
525
+ expected_successes = num_tasks - expected_errors
526
+
527
+ # Verify all counts are accurate (no race conditions)
528
+ assert executor.results.completed_count == num_tasks
529
+ assert executor.results.success_count == expected_successes
530
+ assert executor.results.error_trap.error_count == expected_errors
531
+ assert len(results_list) == expected_successes
532
+ assert len(errors_list) == expected_errors
533
+ assert executor.results.early_shutdown is False
@@ -1,5 +1,5 @@
1
1
  version = 1
2
- revision = 2
2
+ revision = 3
3
3
  requires-python = ">=3.10"
4
4
  resolution-markers = [
5
5
  "python_full_version >= '3.14'",
@@ -763,7 +763,7 @@ requires-dist = [
763
763
  { name = "python-json-logger", specifier = ">=3,<4" },
764
764
  { name = "pyyaml", specifier = ">=6.0.1,<7" },
765
765
  { name = "requests", specifier = ">=2.32.2,<3" },
766
- { name = "rich", specifier = ">=13.7.1,<14" },
766
+ { name = "rich", specifier = ">=14.0.0,<15" },
767
767
  { name = "ruff", specifier = ">=0.14.10,<1" },
768
768
  { name = "scipy", specifier = ">=1.11.0,<2" },
769
769
  { name = "sqlfluff", specifier = ">=3.2.0,<4" },
@@ -4216,16 +4216,15 @@ wheels = [
4216
4216
 
4217
4217
  [[package]]
4218
4218
  name = "rich"
4219
- version = "13.9.4"
4219
+ version = "14.2.0"
4220
4220
  source = { registry = "https://pypi.org/simple" }
4221
4221
  dependencies = [
4222
4222
  { name = "markdown-it-py" },
4223
4223
  { name = "pygments" },
4224
- { name = "typing-extensions", marker = "python_full_version < '3.11'" },
4225
4224
  ]
4226
- sdist = { url = "https://files.pythonhosted.org/packages/ab/3a/0316b28d0761c6734d6bc14e770d85506c986c85ffb239e688eeaab2c2bc/rich-13.9.4.tar.gz", hash = "sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098", size = 223149, upload-time = "2024-11-01T16:43:57.873Z" }
4225
+ sdist = { url = "https://files.pythonhosted.org/packages/fb/d2/8920e102050a0de7bfabeb4c4614a49248cf8d5d7a8d01885fbb24dc767a/rich-14.2.0.tar.gz", hash = "sha256:73ff50c7c0c1c77c8243079283f4edb376f0f6442433aecb8ce7e6d0b92d1fe4", size = 219990, upload-time = "2025-10-09T14:16:53.064Z" }
4227
4226
  wheels = [
4228
- { url = "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", size = 242424, upload-time = "2024-11-01T16:43:55.817Z" },
4227
+ { url = "https://files.pythonhosted.org/packages/25/7a/b0178788f8dc6cafce37a212c99565fa1fe7872c70c6c9c1e1a372d9d88f/rich-14.2.0-py3-none-any.whl", hash = "sha256:76bc51fe2e57d2b1be1f96c524b890b816e334ab4c1e45888799bfaab0021edd", size = 243393, upload-time = "2025-10-09T14:16:51.245Z" },
4229
4228
  ]
4230
4229
 
4231
4230
  [[package]]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes