sql-assignment-generator 0.0.13__tar.gz → 0.0.14__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 (129) hide show
  1. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/PKG-INFO +1 -1
  2. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/pyproject.toml +1 -1
  3. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/__init__.py +6 -2
  4. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/.env.template +0 -0
  5. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/.gitattributes +0 -0
  6. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/.gitignore +0 -0
  7. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/.readthedocs.yaml +0 -0
  8. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/LICENSE +0 -0
  9. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/Makefile +0 -0
  10. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/README.md +0 -0
  11. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/docs/Makefile +0 -0
  12. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/docs/conf.py +0 -0
  13. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/docs/index.rst +0 -0
  14. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/docs/make.bat +0 -0
  15. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/docs/requirements.txt +0 -0
  16. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/requirements.txt +0 -0
  17. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/assignments/__init__.py +0 -0
  18. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/assignments/assignment.py +0 -0
  19. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/assignments/dataset/__init__.py +0 -0
  20. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/assignments/dataset/dataset.py +0 -0
  21. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/assignments/dataset/strings.py +0 -0
  22. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/assignments/exercise/__init__.py +0 -0
  23. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/assignments/exercise/exercise.py +0 -0
  24. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/assignments/exercise/strings.py +0 -0
  25. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/constraints/__init__.py +0 -0
  26. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/constraints/base.py +0 -0
  27. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/constraints/costraintType.py +0 -0
  28. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/constraints/query/__init__.py +0 -0
  29. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/constraints/query/aggregation.py +0 -0
  30. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/constraints/query/base.py +0 -0
  31. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/constraints/query/clause_from.py +0 -0
  32. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/constraints/query/clause_group_by.py +0 -0
  33. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/constraints/query/clause_having.py +0 -0
  34. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/constraints/query/clause_order_by.py +0 -0
  35. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/constraints/query/clause_select.py +0 -0
  36. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/constraints/query/clause_where.py +0 -0
  37. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/constraints/query/rows.py +0 -0
  38. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/constraints/query/set_operations.py +0 -0
  39. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/constraints/query/subquery.py +0 -0
  40. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/constraints/schema/__init__.py +0 -0
  41. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/constraints/schema/base.py +0 -0
  42. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/constraints/schema/tables.py +0 -0
  43. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/constraints/schema/values.py +0 -0
  44. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/difficulty_level.py +0 -0
  45. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/domains.py +0 -0
  46. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/__init__.py +0 -0
  47. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/base.py +0 -0
  48. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_002.py +0 -0
  49. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_004.py +0 -0
  50. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_007.py +0 -0
  51. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_009.py +0 -0
  52. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_010.py +0 -0
  53. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_011.py +0 -0
  54. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_012.py +0 -0
  55. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_015.py +0 -0
  56. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_019.py +0 -0
  57. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_021.py +0 -0
  58. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_026.py +0 -0
  59. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_035.py +0 -0
  60. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_039.py +0 -0
  61. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_040.py +0 -0
  62. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_041.py +0 -0
  63. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_042.py +0 -0
  64. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_043.py +0 -0
  65. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_044.py +0 -0
  66. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_045.py +0 -0
  67. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_046.py +0 -0
  68. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_049.py +0 -0
  69. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_052.py +0 -0
  70. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_053.py +0 -0
  71. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_054.py +0 -0
  72. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_055.py +0 -0
  73. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_057.py +0 -0
  74. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_058.py +0 -0
  75. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_059.py +0 -0
  76. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_060.py +0 -0
  77. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_062.py +0 -0
  78. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_063.py +0 -0
  79. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_064.py +0 -0
  80. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_066.py +0 -0
  81. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_067.py +0 -0
  82. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_068.py +0 -0
  83. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_069.py +0 -0
  84. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_070.py +0 -0
  85. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_071.py +0 -0
  86. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_072.py +0 -0
  87. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_073.py +0 -0
  88. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_074.py +0 -0
  89. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_075.py +0 -0
  90. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_076.py +0 -0
  91. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_077.py +0 -0
  92. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_078.py +0 -0
  93. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_079.py +0 -0
  94. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_080.py +0 -0
  95. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_081.py +0 -0
  96. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_083.py +0 -0
  97. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_084.py +0 -0
  98. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_086.py +0 -0
  99. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_088.py +0 -0
  100. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_089.py +0 -0
  101. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_091.py +0 -0
  102. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_093.py +0 -0
  103. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_095.py +0 -0
  104. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_096.py +0 -0
  105. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_097.py +0 -0
  106. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_098.py +0 -0
  107. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_099.py +0 -0
  108. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_102.py +0 -0
  109. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_104.py +0 -0
  110. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/error_requirements/err_105.py +0 -0
  111. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/exceptions.py +0 -0
  112. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/llm/__init__.py +0 -0
  113. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/llm/chatgpt.py +0 -0
  114. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/llm/message.py +0 -0
  115. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/src/sql_assignment_generator/llm/models.py +0 -0
  116. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/test.py +0 -0
  117. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/tests/constraints/query/test_aggregation.py +0 -0
  118. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/tests/constraints/query/test_clause_from.py +0 -0
  119. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/tests/constraints/query/test_clause_group_by.py +0 -0
  120. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/tests/constraints/query/test_clause_having.py +0 -0
  121. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/tests/constraints/query/test_clause_order_by.py +0 -0
  122. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/tests/constraints/query/test_clause_select.py +0 -0
  123. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/tests/constraints/query/test_clause_where.py +0 -0
  124. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/tests/constraints/query/test_rows.py +0 -0
  125. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/tests/constraints/query/test_set_operation.py +0 -0
  126. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/tests/constraints/query/test_subquery.py +0 -0
  127. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/tests/constraints/schema/__init__.py +0 -0
  128. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/tests/constraints/schema/test_tables.py +0 -0
  129. {sql_assignment_generator-0.0.13 → sql_assignment_generator-0.0.14}/tests/constraints/schema/test_values.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sql_assignment_generator
3
- Version: 0.0.13
3
+ Version: 0.0.14
4
4
  Summary: This project generates SQL assignments based on common mistakes made by learners.
5
5
  Project-URL: Repository, https://github.com/DavidePonzini/sql_assignment_generator
6
6
  Project-URL: Documentation, https://sql-assignment-generator.readthedocs.io/en/latest/index.html
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "sql_assignment_generator"
7
- version = "0.0.13"
7
+ version = "0.0.14"
8
8
  authors = [
9
9
  { name="Davide Ponzini", email="davide.ponzini95@gmail.com" },
10
10
  ]
@@ -24,6 +24,8 @@ def generate_assignment(
24
24
  *,
25
25
  shuffle_exercises: bool = False,
26
26
  naming_func: Callable[[SqlErrors, DifficultyLevel], str] = lambda error, difficulty: f'{error.name} - {difficulty.name}',
27
+ max_dataset_attempts: int = 3,
28
+ max_exercise_attempts: int = 3,
27
29
  max_unique_attempts: int = 3,
28
30
  max_workers: int | None = None
29
31
  ) -> Assignment:
@@ -39,6 +41,8 @@ def generate_assignment(
39
41
  domain (str | None): The domain for the assignments. If None, a random domain will be selected.
40
42
  shuffle_exercises (bool): Whether to shuffle exercises to prevent ordering bias (shuffles input order).
41
43
  naming_func (Callable[[SqlErrors, DifficultyLevel], str]): Generates exercise titles.
44
+ max_dataset_attempts (int): Maximum retries for generating a valid dataset before skipping.
45
+ max_exercise_attempts (int): Maximum retries for generating a valid exercise before skipping.
42
46
  max_unique_attempts (int): Maximum retries to avoid duplicate solutions per (error, difficulty).
43
47
  max_workers (int | None): Thread pool size. If None, uses ThreadPoolExecutor default.
44
48
 
@@ -82,7 +86,7 @@ def generate_assignment(
82
86
  dataset_extra_details = list(set(dataset_extra_details)) # deduplicate details
83
87
 
84
88
  dav_tools.messages.info(f'Generating dataset for domain: {domain}')
85
- dataset = Dataset.generate(domain, dataset_requirements, dataset_extra_details)
89
+ dataset = Dataset.generate(domain, dataset_requirements, dataset_extra_details, max_attempts=max_dataset_attempts)
86
90
 
87
91
  generated_solutions_hashes: set[str] = set()
88
92
  hashes_lock = threading.Lock()
@@ -105,7 +109,7 @@ def generate_assignment(
105
109
 
106
110
  for attempt in range(max_unique_attempts):
107
111
  try:
108
- generated_exercise = Exercise.generate(error, difficulty, constraints, extra_details, dataset=dataset, title=title)
112
+ generated_exercise = Exercise.generate(error, difficulty, constraints, extra_details, dataset=dataset, title=title, max_attempts=max_exercise_attempts)
109
113
  except ExerciseGenerationError:
110
114
  with log_lock:
111
115
  dav_tools.messages.warning(f'{title}: Skipping exercise generation for {error.name} due to validation failures.')