pynguin 0.43.0__tar.gz → 0.44.0__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 (533) hide show
  1. {pynguin-0.43.0 → pynguin-0.44.0}/PKG-INFO +27 -11
  2. {pynguin-0.43.0 → pynguin-0.44.0}/README.md +5 -2
  3. {pynguin-0.43.0 → pynguin-0.44.0}/pyproject.toml +26 -32
  4. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/__init__.py +27 -4
  5. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/__main__.py +0 -1
  6. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/__version__.py +1 -1
  7. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/analyses/constants.py +2 -5
  8. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/analyses/module.py +264 -75
  9. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/analyses/modulecomplexity.py +0 -2
  10. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/analyses/seeding.py +5 -15
  11. pynguin-0.44.0/src/pynguin/analyses/string_subtypes.py +166 -0
  12. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/analyses/syntaxtree.py +12 -21
  13. pynguin-0.44.0/src/pynguin/analyses/type_inference.py +319 -0
  14. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/analyses/typesystem.py +303 -85
  15. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/assertion/assertion.py +2 -6
  16. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/assertion/assertion_to_ast.py +0 -1
  17. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/assertion/assertion_trace.py +0 -2
  18. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/assertion/assertiongenerator.py +13 -107
  19. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/assertion/assertiontraceobserver.py +8 -11
  20. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/assertion/llmassertiongenerator.py +0 -3
  21. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/assertion/mutation_analysis/controller.py +0 -4
  22. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/assertion/mutation_analysis/mutators.py +2 -7
  23. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/assertion/mutation_analysis/operators/__init__.py +10 -27
  24. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/assertion/mutation_analysis/operators/arithmetic.py +1 -1
  25. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/assertion/mutation_analysis/operators/base.py +2 -8
  26. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/assertion/mutation_analysis/operators/decorator.py +1 -2
  27. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/assertion/mutation_analysis/operators/inheritance.py +8 -8
  28. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/assertion/mutation_analysis/operators/logical.py +2 -3
  29. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/assertion/mutation_analysis/operators/loop.py +1 -3
  30. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/assertion/mutation_analysis/operators/misc.py +6 -1
  31. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/assertion/mutation_analysis/strategies.py +0 -2
  32. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/assertion/mutation_analysis/transformer.py +0 -1
  33. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/cli.py +26 -7
  34. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/configuration.py +157 -11
  35. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/ga/algorithms/abstractmosaalgorithm.py +1 -6
  36. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/ga/algorithms/archive.py +2 -7
  37. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/ga/algorithms/dynamosaalgorithm.py +34 -7
  38. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/ga/algorithms/generationalgorithm.py +1 -7
  39. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/ga/algorithms/llmosalgorithm.py +3 -9
  40. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/ga/algorithms/mioalgorithm.py +0 -3
  41. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/ga/algorithms/mosaalgorithm.py +0 -3
  42. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/ga/algorithms/randomalgorithm.py +1 -6
  43. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/ga/algorithms/randomsearchalgorithm.py +0 -2
  44. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/ga/algorithms/wholesuitealgorithm.py +1 -5
  45. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/ga/chromosome.py +18 -3
  46. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/ga/chromosomefactory.py +1 -3
  47. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/ga/chromosomevisitor.py +1 -2
  48. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/ga/computations.py +22 -11
  49. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/ga/coveragegoals.py +1 -5
  50. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/ga/generationalgorithmfactory.py +21 -29
  51. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/ga/llmtestsuitechromosomefactory.py +0 -4
  52. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/ga/operators/comparator.py +1 -4
  53. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/ga/operators/crossover.py +1 -4
  54. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/ga/operators/ranking.py +3 -10
  55. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/ga/operators/selection.py +1 -4
  56. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/ga/postprocess.py +45 -25
  57. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/ga/searchobserver.py +1 -4
  58. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/ga/stoppingcondition.py +9 -15
  59. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/ga/testcasechromosome.py +4 -3
  60. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/ga/testcasechromosomefactory.py +0 -3
  61. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/ga/testcasefactory.py +0 -3
  62. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/ga/testsuitechromosome.py +0 -2
  63. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/ga/testsuitechromosomefactory.py +0 -3
  64. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/generator.py +104 -67
  65. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/instrumentation/__init__.py +0 -2
  66. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/instrumentation/controlflow.py +4 -20
  67. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/instrumentation/machinery.py +40 -22
  68. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/instrumentation/tracer.py +24 -36
  69. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/instrumentation/transformer.py +575 -31
  70. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/instrumentation/version/__init__.py +8 -10
  71. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/instrumentation/version/common.py +5 -9
  72. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/instrumentation/version/python3_10.py +106 -48
  73. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/instrumentation/version/python3_11.py +49 -38
  74. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/instrumentation/version/python3_12.py +35 -35
  75. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/instrumentation/version/python3_13.py +59 -40
  76. pynguin-0.44.0/src/pynguin/instrumentation/version/python3_14.py +314 -0
  77. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/large_language_model/helpers/testcasereferencecopier.py +1 -4
  78. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/large_language_model/llmagent.py +97 -6
  79. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/large_language_model/llmtestcasehandler.py +2 -5
  80. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/large_language_model/parsing/astscoping.py +0 -2
  81. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/large_language_model/parsing/deserializer.py +18 -17
  82. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/large_language_model/parsing/helpers.py +14 -1
  83. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/large_language_model/parsing/rewriter.py +60 -19
  84. pynguin-0.44.0/src/pynguin/large_language_model/parsing/type_str_parser.py +182 -0
  85. pynguin-0.44.0/src/pynguin/large_language_model/prompts/localsearchprompt.py +69 -0
  86. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/large_language_model/prompts/testcasegenerationprompt.py +2 -1
  87. pynguin-0.44.0/src/pynguin/large_language_model/prompts/typeinferenceprompt.py +201 -0
  88. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/large_language_model/prompts/uncoveredtargetsprompt.py +3 -3
  89. pynguin-0.44.0/src/pynguin/master_worker/__init__.py +7 -0
  90. pynguin-0.44.0/src/pynguin/master_worker/client.py +104 -0
  91. pynguin-0.44.0/src/pynguin/master_worker/master.py +214 -0
  92. pynguin-0.44.0/src/pynguin/master_worker/worker.py +142 -0
  93. pynguin-0.44.0/src/pynguin/resources/fans/__init__.py +7 -0
  94. pynguin-0.44.0/src/pynguin/resources/fans/camel_case.fan +11 -0
  95. pynguin-0.44.0/src/pynguin/resources/fans/colour.fan +9 -0
  96. pynguin-0.44.0/src/pynguin/resources/fans/csv.fan +24 -0
  97. pynguin-0.44.0/src/pynguin/resources/fans/delimited.fan +13 -0
  98. pynguin-0.44.0/src/pynguin/resources/fans/email.fan +18 -0
  99. pynguin-0.44.0/src/pynguin/resources/fans/faker/__init__.py +7 -0
  100. pynguin-0.44.0/src/pynguin/resources/fans/faker/camel_case.fan +11 -0
  101. pynguin-0.44.0/src/pynguin/resources/fans/faker/colour.fan +11 -0
  102. pynguin-0.44.0/src/pynguin/resources/fans/faker/csv.fan +12 -0
  103. pynguin-0.44.0/src/pynguin/resources/fans/faker/delimited.fan +11 -0
  104. pynguin-0.44.0/src/pynguin/resources/fans/faker/email.fan +11 -0
  105. pynguin-0.44.0/src/pynguin/resources/fans/faker/ipv4.fan +11 -0
  106. pynguin-0.44.0/src/pynguin/resources/fans/faker/standard_date.fan +11 -0
  107. pynguin-0.44.0/src/pynguin/resources/fans/faker/unix_path.fan +11 -0
  108. pynguin-0.44.0/src/pynguin/resources/fans/faker/xml.fan +11 -0
  109. pynguin-0.44.0/src/pynguin/resources/fans/ipv4.fan +11 -0
  110. pynguin-0.44.0/src/pynguin/resources/fans/numeric.fan +14 -0
  111. pynguin-0.44.0/src/pynguin/resources/fans/standard_date.fan +24 -0
  112. pynguin-0.44.0/src/pynguin/resources/fans/unix_path.fan +14 -0
  113. pynguin-0.44.0/src/pynguin/resources/fans/xml.fan +24 -0
  114. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/slicer/dynamicslicer.py +27 -27
  115. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/slicer/executionflowbuilder.py +14 -19
  116. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/slicer/stack/stacksimulation.py +2 -6
  117. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/slicer/statementslicingobserver.py +0 -1
  118. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/testcase/defaulttestcase.py +0 -3
  119. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/testcase/execution.py +101 -117
  120. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/testcase/export.py +9 -2
  121. pynguin-0.44.0/src/pynguin/testcase/llmlocalsearch.py +230 -0
  122. pynguin-0.44.0/src/pynguin/testcase/localsearch.py +304 -0
  123. pynguin-0.44.0/src/pynguin/testcase/localsearchobjective.py +143 -0
  124. pynguin-0.44.0/src/pynguin/testcase/localsearchstatement.py +1493 -0
  125. pynguin-0.44.0/src/pynguin/testcase/localsearchtimer.py +42 -0
  126. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/testcase/statement.py +432 -35
  127. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/testcase/statement_to_ast.py +25 -31
  128. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/testcase/testcase.py +1 -4
  129. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/testcase/testcase_to_ast.py +0 -2
  130. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/testcase/testcasevisitor.py +1 -2
  131. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/testcase/testfactory.py +173 -20
  132. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/testcase/variablereference.py +3 -8
  133. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/utils/ast_util.py +0 -1
  134. pynguin-0.44.0/src/pynguin/utils/configuration_writer.py +241 -0
  135. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/utils/controlflowdistance.py +1 -2
  136. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/utils/exceptions.py +4 -8
  137. pynguin-0.44.0/src/pynguin/utils/execution_recorder.py +96 -0
  138. pynguin-0.44.0/src/pynguin/utils/fandango_faker_utils.py +43 -0
  139. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/utils/generic/genericaccessibleobject.py +17 -13
  140. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/utils/llm.py +9 -9
  141. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/utils/mutation_utils.py +1 -4
  142. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/utils/namingscope.py +9 -10
  143. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/utils/orderedset.py +2 -12
  144. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/utils/pynguinml/ml_parsing_utils.py +0 -2
  145. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/utils/pynguinml/ml_testfactory_utils.py +4 -9
  146. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/utils/pynguinml/ml_testing_resources.py +14 -9
  147. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/utils/pynguinml/mlparameter.py +0 -3
  148. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/utils/randomness.py +49 -6
  149. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/utils/report.py +3 -8
  150. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/utils/statistics/outputvariablefactory.py +2 -8
  151. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/utils/statistics/runtimevariable.py +64 -0
  152. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/utils/statistics/statisticsbackend.py +2 -6
  153. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/utils/statistics/statisticsobserver.py +0 -2
  154. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/utils/statistics/stats.py +25 -6
  155. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/utils/type_utils.py +0 -2
  156. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/utils/typeevalpy_json_schema.py +18 -22
  157. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/utils/typetracing.py +85 -59
  158. {pynguin-0.43.0 → pynguin-0.44.0}/tests/analyses/test_constants.py +6 -5
  159. {pynguin-0.43.0 → pynguin-0.44.0}/tests/analyses/test_initialpopulationseeding.py +1 -3
  160. {pynguin-0.43.0 → pynguin-0.44.0}/tests/analyses/test_module.py +40 -33
  161. {pynguin-0.43.0 → pynguin-0.44.0}/tests/analyses/test_modulecomplexity.py +0 -1
  162. {pynguin-0.43.0 → pynguin-0.44.0}/tests/analyses/test_seeding.py +0 -1
  163. pynguin-0.44.0/tests/analyses/test_string_subtypes.py +125 -0
  164. {pynguin-0.43.0 → pynguin-0.44.0}/tests/analyses/test_syntaxtree.py +216 -8
  165. pynguin-0.44.0/tests/analyses/test_type_inference.py +124 -0
  166. {pynguin-0.43.0 → pynguin-0.44.0}/tests/analyses/test_typesystem.py +70 -40
  167. pynguin-0.44.0/tests/analyses/test_typesystem_string_subtypes.py +56 -0
  168. {pynguin-0.43.0 → pynguin-0.44.0}/tests/assertion/mutation_analysis/operators/test_arithmetic.py +0 -2
  169. {pynguin-0.43.0 → pynguin-0.44.0}/tests/assertion/mutation_analysis/operators/test_exception.py +1 -1
  170. {pynguin-0.43.0 → pynguin-0.44.0}/tests/assertion/mutation_analysis/operators/test_inheritance.py +1 -7
  171. {pynguin-0.43.0 → pynguin-0.44.0}/tests/assertion/mutation_analysis/operators/test_logical.py +0 -10
  172. {pynguin-0.43.0 → pynguin-0.44.0}/tests/assertion/mutation_analysis/operators/test_loop.py +5 -3
  173. {pynguin-0.43.0 → pynguin-0.44.0}/tests/assertion/mutation_analysis/operators/test_misc.py +35 -3
  174. {pynguin-0.43.0 → pynguin-0.44.0}/tests/assertion/mutation_analysis/test_controller.py +1 -7
  175. {pynguin-0.43.0 → pynguin-0.44.0}/tests/assertion/mutation_analysis/test_mutators.py +7 -6
  176. {pynguin-0.43.0 → pynguin-0.44.0}/tests/assertion/mutation_analysis/test_strategies.py +11 -7
  177. {pynguin-0.43.0 → pynguin-0.44.0}/tests/assertion/test_assertion.py +1 -4
  178. {pynguin-0.43.0 → pynguin-0.44.0}/tests/assertion/test_assertion_generation_integration.py +7 -17
  179. {pynguin-0.43.0 → pynguin-0.44.0}/tests/assertion/test_assertion_to_ast.py +0 -2
  180. {pynguin-0.43.0 → pynguin-0.44.0}/tests/assertion/test_assertion_trace.py +0 -1
  181. {pynguin-0.43.0 → pynguin-0.44.0}/tests/assertion/test_assertiontraceobserver.py +1 -4
  182. {pynguin-0.43.0 → pynguin-0.44.0}/tests/assertion/test_llmassertiongenerator.py +6 -8
  183. {pynguin-0.43.0 → pynguin-0.44.0}/tests/conftest.py +33 -26
  184. pynguin-0.44.0/tests/fixtures/examples/type_tracing/string_subtype.py +10 -0
  185. pynguin-0.44.0/tests/fixtures/instrumentation/covered_branches.py +95 -0
  186. pynguin-0.44.0/tests/fixtures/instrumentation/covered_classes.py +18 -0
  187. pynguin-0.44.0/tests/fixtures/instrumentation/covered_functions.py +28 -0
  188. pynguin-0.44.0/tests/fixtures/instrumentation/covered_lines.py +65 -0
  189. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/linecoverage/artificial_none.py +5 -0
  190. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/algorithms/test_archive.py +6 -5
  191. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/algorithms/test_dynamosaalgorithm.py +14 -6
  192. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/algorithms/test_integration_mosaalgorithm.py +0 -2
  193. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/algorithms/test_integration_varioussearchalgorithms.py +0 -3
  194. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/algorithms/test_llmosalgorithm.py +2 -6
  195. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/algorithms/test_mioalgorithm.py +1 -3
  196. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/algorithms/test_mosaalgorithm.py +0 -1
  197. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/algorithms/test_randomalgorithm.py +2 -4
  198. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/operators/ranking/test_rankingfunction.py +1 -4
  199. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/operators/selection/test_selection.py +0 -1
  200. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/operators/selection/test_tournamentselection.py +0 -1
  201. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/operators/test_dominancecomparator.py +0 -1
  202. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/stoppingconditions/test_coverageplateaustoppingcondition.py +0 -2
  203. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/stoppingconditions/test_maxcoveragestoppingcondition.py +0 -2
  204. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/stoppingconditions/test_maxtimestoppingcondition.py +0 -1
  205. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/stoppingconditions/test_minimumcoverageplateaustoppingcondition.py +1 -4
  206. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/test_chromosome.py +0 -1
  207. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/test_chromosomefactory.py +0 -1
  208. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/test_computations.py +2 -5
  209. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/test_computations_cache.py +46 -0
  210. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/test_computations_fitness_utilities.py +9 -11
  211. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/test_coveragegoals.py +23 -10
  212. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/test_generationalgorithmfactory.py +9 -8
  213. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/test_llmtestsuitechromosomefactory.py +0 -1
  214. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/test_postprocess.py +136 -52
  215. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/test_testcasechromosome.py +2 -5
  216. {pynguin-0.43.0 → pynguin-0.44.0}/tests/instrumentation/test_adapters.py +99 -96
  217. pynguin-0.44.0/tests/instrumentation/test_ast_info.py +315 -0
  218. {pynguin-0.43.0 → pynguin-0.44.0}/tests/instrumentation/test_cfg.py +223 -6
  219. pynguin-0.44.0/tests/instrumentation/test_controldependencegraph.py +507 -0
  220. pynguin-0.44.0/tests/instrumentation/test_machinery.py +124 -0
  221. {pynguin-0.43.0 → pynguin-0.44.0}/tests/instrumentation/test_programgraph.py +1 -3
  222. {pynguin-0.43.0 → pynguin-0.44.0}/tests/instrumentation/test_tracer.py +13 -12
  223. {pynguin-0.43.0 → pynguin-0.44.0}/tests/instrumentation/test_version.py +12 -9
  224. {pynguin-0.43.0 → pynguin-0.44.0}/tests/large_language_model/helpers/test_testcasereferencecopier.py +1 -4
  225. {pynguin-0.43.0 → pynguin-0.44.0}/tests/large_language_model/parsing/test_astscoping.py +5 -9
  226. {pynguin-0.43.0 → pynguin-0.44.0}/tests/large_language_model/parsing/test_helpers.py +18 -9
  227. pynguin-0.44.0/tests/large_language_model/parsing/test_type_str_parser.py +111 -0
  228. {pynguin-0.43.0 → pynguin-0.44.0}/tests/large_language_model/prompts/test_testcasegenerationprompt.py +1 -1
  229. {pynguin-0.43.0 → pynguin-0.44.0}/tests/large_language_model/prompts/test_uncovered_targets_prompt.py +5 -3
  230. {pynguin-0.43.0 → pynguin-0.44.0}/tests/large_language_model/test_caching.py +1 -3
  231. {pynguin-0.43.0 → pynguin-0.44.0}/tests/large_language_model/test_llm_caching.py +1 -2
  232. {pynguin-0.43.0 → pynguin-0.44.0}/tests/large_language_model/test_llm_deserializer.py +11 -18
  233. {pynguin-0.43.0 → pynguin-0.44.0}/tests/large_language_model/test_llmagent.py +6 -6
  234. {pynguin-0.43.0 → pynguin-0.44.0}/tests/large_language_model/test_llmagent_extended.py +100 -8
  235. {pynguin-0.43.0 → pynguin-0.44.0}/tests/large_language_model/test_llmtestcasehandler.py +107 -2
  236. {pynguin-0.43.0 → pynguin-0.44.0}/tests/large_language_model/test_llmtestcasehandler_coverage.py +1 -3
  237. {pynguin-0.43.0 → pynguin-0.44.0}/tests/large_language_model/test_rewriter.py +8 -3
  238. pynguin-0.44.0/tests/master_worker/__init__.py +7 -0
  239. pynguin-0.44.0/tests/master_worker/test_client.py +139 -0
  240. pynguin-0.44.0/tests/master_worker/test_master.py +113 -0
  241. pynguin-0.44.0/tests/master_worker/test_worker.py +146 -0
  242. {pynguin-0.43.0 → pynguin-0.44.0}/tests/slicer/test_assertionslicer.py +3 -7
  243. {pynguin-0.43.0 → pynguin-0.44.0}/tests/slicer/test_dependencies.py +79 -51
  244. {pynguin-0.43.0 → pynguin-0.44.0}/tests/slicer/test_expected_failures.py +128 -51
  245. {pynguin-0.43.0 → pynguin-0.44.0}/tests/slicer/test_language_features.py +178 -80
  246. {pynguin-0.43.0 → pynguin-0.44.0}/tests/slicer/test_statementslicer.py +4 -4
  247. {pynguin-0.43.0 → pynguin-0.44.0}/tests/slicer/util.py +23 -18
  248. {pynguin-0.43.0 → pynguin-0.44.0}/tests/test___main__.py +0 -1
  249. {pynguin-0.43.0 → pynguin-0.44.0}/tests/test_cli.py +73 -9
  250. {pynguin-0.43.0 → pynguin-0.44.0}/tests/test_generator.py +20 -2
  251. {pynguin-0.43.0 → pynguin-0.44.0}/tests/testcase/execution/test_executioncontext.py +1 -3
  252. {pynguin-0.43.0 → pynguin-0.44.0}/tests/testcase/execution/test_executiontrace.py +1 -2
  253. {pynguin-0.43.0 → pynguin-0.44.0}/tests/testcase/execution/test_moduleprovider.py +0 -2
  254. {pynguin-0.43.0 → pynguin-0.44.0}/tests/testcase/execution/test_subprocesstestcaseexecutor.py +2 -6
  255. {pynguin-0.43.0 → pynguin-0.44.0}/tests/testcase/execution/test_subprocesstestcaseexecutor_differential.py +1 -3
  256. {pynguin-0.43.0 → pynguin-0.44.0}/tests/testcase/execution/test_subprocesstestcaseexecutor_integration.py +2 -6
  257. {pynguin-0.43.0 → pynguin-0.44.0}/tests/testcase/execution/test_testcaseexecutor_integration.py +3 -8
  258. {pynguin-0.43.0 → pynguin-0.44.0}/tests/testcase/execution/test_typetracing.py +8 -10
  259. {pynguin-0.43.0 → pynguin-0.44.0}/tests/testcase/export/conftest.py +7 -6
  260. {pynguin-0.43.0 → pynguin-0.44.0}/tests/testcase/export/test_export.py +28 -0
  261. {pynguin-0.43.0 → pynguin-0.44.0}/tests/testcase/statements/test_assignmentstatement.py +0 -1
  262. {pynguin-0.43.0 → pynguin-0.44.0}/tests/testcase/statements/test_collectionstatements.py +24 -0
  263. {pynguin-0.43.0 → pynguin-0.44.0}/tests/testcase/statements/test_fieldstatement.py +0 -1
  264. {pynguin-0.43.0 → pynguin-0.44.0}/tests/testcase/statements/test_parameterizedstatements.py +1 -4
  265. {pynguin-0.43.0 → pynguin-0.44.0}/tests/testcase/statements/test_primitivestatements.py +155 -13
  266. {pynguin-0.43.0 → pynguin-0.44.0}/tests/testcase/test_ast_assign_statement.py +1 -4
  267. {pynguin-0.43.0 → pynguin-0.44.0}/tests/testcase/test_benchmark.py +0 -1
  268. {pynguin-0.43.0 → pynguin-0.44.0}/tests/testcase/test_defaulttestcase.py +0 -1
  269. pynguin-0.44.0/tests/testcase/test_llmlocalsearch.py +77 -0
  270. pynguin-0.44.0/tests/testcase/test_localsearch.py +1366 -0
  271. pynguin-0.44.0/tests/testcase/test_localsearchtimer.py +28 -0
  272. {pynguin-0.43.0 → pynguin-0.44.0}/tests/testcase/test_statement_to_ast.py +5 -5
  273. {pynguin-0.43.0 → pynguin-0.44.0}/tests/testcase/test_testcase_integration.py +0 -1
  274. {pynguin-0.43.0 → pynguin-0.44.0}/tests/testcase/test_testcase_to_ast_integration.py +0 -2
  275. {pynguin-0.43.0 → pynguin-0.44.0}/tests/testcase/test_testfactory.py +59 -9
  276. {pynguin-0.43.0 → pynguin-0.44.0}/tests/testcase/variable/test_variablereference.py +1 -3
  277. {pynguin-0.43.0 → pynguin-0.44.0}/tests/testutils.py +9 -9
  278. {pynguin-0.43.0 → pynguin-0.44.0}/tests/utils/generic/test_genericaccessibleobject.py +8 -8
  279. {pynguin-0.43.0 → pynguin-0.44.0}/tests/utils/pynguinml/test_ml_parsing_utils.py +0 -1
  280. {pynguin-0.43.0 → pynguin-0.44.0}/tests/utils/pynguinml/test_ml_testfactory_utils.py +2 -5
  281. {pynguin-0.43.0 → pynguin-0.44.0}/tests/utils/pynguinml/test_ml_testing_resources.py +1 -4
  282. {pynguin-0.43.0 → pynguin-0.44.0}/tests/utils/pynguinml/test_mlparameter.py +1 -2
  283. {pynguin-0.43.0 → pynguin-0.44.0}/tests/utils/pynguinml/test_pynguinml_integration.py +3 -2
  284. {pynguin-0.43.0 → pynguin-0.44.0}/tests/utils/stats/test_outputvariablefactory.py +1 -4
  285. {pynguin-0.43.0 → pynguin-0.44.0}/tests/utils/stats/test_searchstatistics.py +5 -5
  286. {pynguin-0.43.0 → pynguin-0.44.0}/tests/utils/stats/test_statistics.py +0 -1
  287. {pynguin-0.43.0 → pynguin-0.44.0}/tests/utils/stats/test_statisticsbackend.py +5 -4
  288. {pynguin-0.43.0 → pynguin-0.44.0}/tests/utils/test_configuration_writer.py +423 -38
  289. {pynguin-0.43.0 → pynguin-0.44.0}/tests/utils/test_controlflowdistance.py +2 -6
  290. {pynguin-0.43.0 → pynguin-0.44.0}/tests/utils/test_exceptions.py +5 -3
  291. pynguin-0.44.0/tests/utils/test_execution_recorder.py +78 -0
  292. pynguin-0.44.0/tests/utils/test_fandango_faker_utils.py +33 -0
  293. {pynguin-0.43.0 → pynguin-0.44.0}/tests/utils/test_namingscope.py +1 -2
  294. {pynguin-0.43.0 → pynguin-0.44.0}/tests/utils/test_orderedset.py +1 -2
  295. {pynguin-0.43.0 → pynguin-0.44.0}/tests/utils/test_randomness.py +47 -1
  296. {pynguin-0.43.0 → pynguin-0.44.0}/tests/utils/test_report.py +13 -20
  297. pynguin-0.44.0/tests/utils/test_string_subtype_integration.py +50 -0
  298. {pynguin-0.43.0 → pynguin-0.44.0}/tests/utils/test_type_utils.py +18 -17
  299. {pynguin-0.43.0 → pynguin-0.44.0}/tests/utils/test_typeevalpy_json_schema.py +24 -27
  300. {pynguin-0.43.0 → pynguin-0.44.0}/tests/utils/test_typetracing.py +37 -3
  301. pynguin-0.43.0/src/pynguin/utils/configuration_writer.py +0 -126
  302. pynguin-0.43.0/tests/instrumentation/test_controldependencegraph.py +0 -241
  303. pynguin-0.43.0/tests/instrumentation/test_machinery.py +0 -52
  304. {pynguin-0.43.0 → pynguin-0.44.0}/LICENSE.rst +0 -0
  305. {pynguin-0.43.0 → pynguin-0.44.0}/LICENSES/Apache-2.0.txt +0 -0
  306. {pynguin-0.43.0 → pynguin-0.44.0}/LICENSES/BSD-2-Clause.txt +0 -0
  307. {pynguin-0.43.0 → pynguin-0.44.0}/LICENSES/CC-BY-4.0.txt +0 -0
  308. {pynguin-0.43.0 → pynguin-0.44.0}/LICENSES/CC0-1.0.txt +0 -0
  309. {pynguin-0.43.0 → pynguin-0.44.0}/LICENSES/MIT.txt +0 -0
  310. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/analyses/__init__.py +0 -0
  311. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/assertion/__init__.py +0 -0
  312. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/assertion/mutation_analysis/__init__.py +0 -0
  313. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/assertion/mutation_analysis/operators/exception.py +0 -0
  314. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/ga/__init__.py +0 -0
  315. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/ga/algorithms/__init__.py +0 -0
  316. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/ga/operators/__init__.py +0 -0
  317. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/large_language_model/__init__.py +0 -0
  318. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/large_language_model/caching.py +0 -0
  319. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/large_language_model/helpers/__init__.py +0 -0
  320. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/large_language_model/parsing/__init__.py +0 -0
  321. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/large_language_model/prompts/__init__.py +0 -0
  322. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/large_language_model/prompts/assertiongenerationprompt.py +0 -0
  323. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/large_language_model/prompts/prompt.py +0 -0
  324. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/resources/__init__.py +0 -0
  325. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/resources/coverage-template.html +0 -0
  326. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/slicer/__init__.py +0 -0
  327. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/slicer/executedinstruction.py +0 -0
  328. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/slicer/stack/__init__.py +0 -0
  329. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/testcase/__init__.py +0 -0
  330. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/utils/__init__.py +0 -0
  331. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/utils/atomicinteger.py +0 -0
  332. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/utils/collection_utils.py +0 -0
  333. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/utils/generic/__init__.py +0 -0
  334. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/utils/mirror.py +0 -0
  335. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/utils/pynguinml/__init__.py +0 -0
  336. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/utils/pynguinml/np_rng.py +0 -0
  337. {pynguin-0.43.0 → pynguin-0.44.0}/src/pynguin/utils/statistics/__init__.py +0 -0
  338. {pynguin-0.43.0 → pynguin-0.44.0}/tests/__init__.py +0 -0
  339. {pynguin-0.43.0 → pynguin-0.44.0}/tests/analyses/__init__.py +0 -0
  340. {pynguin-0.43.0 → pynguin-0.44.0}/tests/analyses/test_staticconstantseeding.py +0 -0
  341. {pynguin-0.43.0 → pynguin-0.44.0}/tests/assertion/__init__.py +0 -0
  342. {pynguin-0.43.0 → pynguin-0.44.0}/tests/assertion/mutation_analysis/__init__.py +0 -0
  343. {pynguin-0.43.0 → pynguin-0.44.0}/tests/assertion/mutation_analysis/operators/__init__.py +0 -0
  344. {pynguin-0.43.0 → pynguin-0.44.0}/tests/assertion/mutation_analysis/operators/test_decorator.py +0 -0
  345. {pynguin-0.43.0 → pynguin-0.44.0}/tests/assertion/test_assertiongenerator.py +0 -0
  346. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/__init__.py +0 -0
  347. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/accessibles/__init__.py +0 -0
  348. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/accessibles/accessible.py +0 -0
  349. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/branchcoverage/__init__.py +0 -0
  350. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/branchcoverage/nestedbranches.py +0 -0
  351. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/branchcoverage/nobranches.py +0 -0
  352. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/branchcoverage/simplenesting.py +0 -0
  353. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/branchcoverage/singlebranches.py +0 -0
  354. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/branchcoverage/twomethodsinglebranches.py +0 -0
  355. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/c/__init__.py +0 -0
  356. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/c/my_ctypes.py +0 -0
  357. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/cluster/__init__.py +0 -0
  358. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/cluster/abstract.py +0 -0
  359. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/cluster/alias_module.py +0 -0
  360. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/cluster/async_class_gen.py +0 -0
  361. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/cluster/async_class_method.py +0 -0
  362. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/cluster/async_func.py +0 -0
  363. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/cluster/async_gen.py +0 -0
  364. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/cluster/attributes.py +0 -0
  365. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/cluster/blacklist.py +0 -0
  366. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/cluster/blacklist_transitive.py +0 -0
  367. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/cluster/comments.py +0 -0
  368. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/cluster/complex_dependencies.py +0 -0
  369. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/cluster/complex_dependency.py +0 -0
  370. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/cluster/conditional_import.py +0 -0
  371. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/cluster/dependency.py +0 -0
  372. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/cluster/diamond_bottom.py +0 -0
  373. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/cluster/diamond_left.py +0 -0
  374. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/cluster/diamond_right.py +0 -0
  375. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/cluster/diamond_top.py +0 -0
  376. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/cluster/enums.py +0 -0
  377. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/cluster/import_dependency.py +0 -0
  378. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/cluster/inheritance.py +0 -0
  379. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/cluster/lambda.py +0 -0
  380. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/cluster/nested_functions.py +0 -0
  381. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/cluster/no_any_annotations.py +0 -0
  382. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/cluster/no_dependencies.py +0 -0
  383. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/cluster/overridden_inherited_methods.py +0 -0
  384. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/cluster/simple_dependencies.py +0 -0
  385. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/cluster/typing_parameters.py +0 -0
  386. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/cluster/uses_async_dependency.py +0 -0
  387. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/crash/__init__.py +0 -0
  388. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/crash/partly_crashing.py +0 -0
  389. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/crash/seg_fault.py +0 -0
  390. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/duckmock/__init__.py +0 -0
  391. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/duckmock/complex.py +0 -0
  392. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/errors/__init__.py +0 -0
  393. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/errors/import_error.py +0 -0
  394. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/examples/__init__.py +0 -0
  395. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/examples/assertions.py +0 -0
  396. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/examples/basket.py +0 -0
  397. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/examples/calculator.py +0 -0
  398. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/examples/calculator_simple.py +0 -0
  399. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/examples/collections.py +0 -0
  400. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/examples/difficult.py +0 -0
  401. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/examples/dummies.py +0 -0
  402. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/examples/dynamosa_example.py +0 -0
  403. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/examples/enums.py +0 -0
  404. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/examples/exceptions.py +0 -0
  405. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/examples/flaky.py +0 -0
  406. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/examples/impossible.py +0 -0
  407. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/examples/inheritance.py +0 -0
  408. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/examples/loop.py +0 -0
  409. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/examples/module_alias.py +0 -0
  410. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/examples/monkey.py +0 -0
  411. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/examples/nested.py +0 -0
  412. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/examples/objects.py +0 -0
  413. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/examples/private_methods.py +0 -0
  414. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/examples/queue.py +0 -0
  415. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/examples/simple.py +0 -0
  416. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/examples/triangle.py +0 -0
  417. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/examples/type_inference.py +0 -0
  418. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/examples/type_tracing/__init__.py +0 -0
  419. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/examples/type_tracing/geometry.py +0 -0
  420. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/examples/type_tracing/invoice.py +0 -0
  421. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/examples/type_tracing/large_test_cluster.py +0 -0
  422. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/examples/type_tracing/mixed.py +0 -0
  423. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/grammar/__init__.py +0 -0
  424. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/grammar/parameters.py +0 -0
  425. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/instrumentation/__init__.py +0 -0
  426. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/instrumentation/comparison.py +0 -0
  427. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/instrumentation/inherited.py +0 -0
  428. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/instrumentation/mixed.py +0 -0
  429. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/instrumentation/simple.py +0 -0
  430. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/linecoverage/__init__.py +0 -0
  431. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/linecoverage/emptyfile.py +0 -0
  432. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/linecoverage/exception.py +0 -0
  433. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/linecoverage/list.py +0 -0
  434. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/linecoverage/plus.py +0 -0
  435. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/linecoverage/setter_getter.py +0 -0
  436. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/mutation/__init__.py +0 -0
  437. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/mutation/exception.py +0 -0
  438. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/mutation/expected.py +0 -0
  439. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/mutation/mutation.py +0 -0
  440. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/mutation/timeout.py +0 -0
  441. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/programgraph/__init__.py +0 -0
  442. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/programgraph/samples.py +0 -0
  443. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/programgraph/whileloop.py +0 -0
  444. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/programgraph/yield_fun.py +0 -0
  445. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/regression/__init__.py +0 -0
  446. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/regression/argparse_sys_exit.py +0 -0
  447. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/regression/custom_error.py +0 -0
  448. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/regression/not_main.py +0 -0
  449. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/seeding/__init__.py +0 -0
  450. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/seeding/dynamicseeding/__init__.py +0 -0
  451. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/seeding/dynamicseeding/dynamicseedingdummies.py +0 -0
  452. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/seeding/initialpopulationseeding/__init__.py +0 -0
  453. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/seeding/initialpopulationseeding/dummycontainer.py +0 -0
  454. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/seeding/initialpopulationseeding/seedmodules/__init__.py +0 -0
  455. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/seeding/initialpopulationseeding/seedmodules/assertseed_test_.py +0 -0
  456. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/seeding/initialpopulationseeding/seedmodules/classseed_test_.py +0 -0
  457. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/seeding/initialpopulationseeding/seedmodules/collfuncseed_test_.py +0 -0
  458. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/seeding/initialpopulationseeding/seedmodules/collseed_test_.py +0 -0
  459. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/seeding/initialpopulationseeding/seedmodules/nestedseed_test_.py +0 -0
  460. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/seeding/initialpopulationseeding/seedmodules/notknowncall_test_.py +0 -0
  461. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/seeding/initialpopulationseeding/seedmodules/notprimseed_test_.py +0 -0
  462. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/seeding/initialpopulationseeding/seedmodules/primitiveseed_test_.py +0 -0
  463. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/seeding/initialpopulationseeding/seedmodules/triangleseed_test_.py +0 -0
  464. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/seeding/initialpopulationseeding/seedmodules/wrongassignseed_test_.py +0 -0
  465. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/seeding/initialpopulationseeding/seedmodules/wrongfunctionnameseed_test_.py +0 -0
  466. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/seeding/staticconstantseeding/__init__.py +0 -0
  467. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/seeding/staticconstantseeding/dummy/__init__.py +0 -0
  468. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/seeding/staticconstantseeding/dummy/dummy.py +0 -0
  469. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/seeding/staticconstantseeding/dummy/empty.so +0 -0
  470. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/slicer/__init__.py +0 -0
  471. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/slicer/attribute_dependencies.py +0 -0
  472. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/slicer/closure.py +0 -0
  473. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/slicer/generator.py +0 -0
  474. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/slicer/immutable_attribute_dependency.py +0 -0
  475. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/slicer/import_star_def.py +0 -0
  476. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/slicer/import_star_main.py +0 -0
  477. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/slicer/partial_cover_dependency.py +0 -0
  478. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/slicer/simple_call.py +0 -0
  479. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/slicer/simple_call_arg.py +0 -0
  480. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/test.conf +0 -0
  481. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/test.conf.license +0 -0
  482. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/tests/typeinference/test_stubstrategy.pyi +0 -0
  483. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/type_tracing/__init__.py +0 -0
  484. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/type_tracing/guess_params.py +0 -0
  485. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/type_tracing/return_types.py +0 -0
  486. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/type_tracing/union_type.py +0 -0
  487. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/types/__init__.py +0 -0
  488. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/types/outside.py +0 -0
  489. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/types/subtyping.py +0 -0
  490. {pynguin-0.43.0 → pynguin-0.44.0}/tests/fixtures/types/symbols.py +0 -0
  491. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/__init__.py +0 -0
  492. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/algorithms/__init__.py +0 -0
  493. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/algorithms/test_generationalgorithm.py +0 -0
  494. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/operators/__init__.py +0 -0
  495. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/operators/crossover/__init__.py +0 -0
  496. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/operators/crossover/test_singlepointrelativecrossover.py +0 -0
  497. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/operators/ranking/__init__.py +0 -0
  498. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/operators/selection/__init__.py +0 -0
  499. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/operators/selection/test_rankselection.py +0 -0
  500. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/operators/test_preferencesortingcomparator.py +0 -0
  501. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/stoppingconditions/__init__.py +0 -0
  502. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/stoppingconditions/test_maxiterationsstoppingcondition.py +0 -0
  503. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/stoppingconditions/test_maxmemorystoppingcondition.py +0 -0
  504. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/stoppingconditions/test_maxstatementstoppingcondition.py +0 -0
  505. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/stoppingconditions/test_maxtestsstoppingcondition.py +0 -0
  506. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/stoppingconditions/test_stoppingcondition.py +0 -0
  507. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/test_testcasefactory.py +0 -0
  508. {pynguin-0.43.0 → pynguin-0.44.0}/tests/ga/test_testsuitechromosome.py +0 -0
  509. {pynguin-0.43.0 → pynguin-0.44.0}/tests/instrumentation/__init__.py +0 -0
  510. {pynguin-0.43.0 → pynguin-0.44.0}/tests/large_language_model/__init__.py +0 -0
  511. {pynguin-0.43.0 → pynguin-0.44.0}/tests/large_language_model/prompts/__init__.py +0 -0
  512. {pynguin-0.43.0 → pynguin-0.44.0}/tests/large_language_model/prompts/test_assertiongenerationprompt.py +0 -0
  513. {pynguin-0.43.0 → pynguin-0.44.0}/tests/slicer/__init__.py +0 -0
  514. {pynguin-0.43.0 → pynguin-0.44.0}/tests/testcase/__init__.py +0 -0
  515. {pynguin-0.43.0 → pynguin-0.44.0}/tests/testcase/execution/__init__.py +0 -0
  516. {pynguin-0.43.0 → pynguin-0.44.0}/tests/testcase/execution/test_executedinstruction.py +0 -0
  517. {pynguin-0.43.0 → pynguin-0.44.0}/tests/testcase/execution/test_executionmocking.py +0 -0
  518. {pynguin-0.43.0 → pynguin-0.44.0}/tests/testcase/execution/test_executionresult.py +0 -0
  519. {pynguin-0.43.0 → pynguin-0.44.0}/tests/testcase/export/__init__.py +0 -0
  520. {pynguin-0.43.0 → pynguin-0.44.0}/tests/testcase/statements/__init__.py +0 -0
  521. {pynguin-0.43.0 → pynguin-0.44.0}/tests/testcase/variable/__init__.py +0 -0
  522. {pynguin-0.43.0 → pynguin-0.44.0}/tests/utils/__init__.py +0 -0
  523. {pynguin-0.43.0 → pynguin-0.44.0}/tests/utils/generic/__init__.py +0 -0
  524. {pynguin-0.43.0 → pynguin-0.44.0}/tests/utils/pynguinml/__init__.py +0 -0
  525. {pynguin-0.43.0 → pynguin-0.44.0}/tests/utils/pynguinml/test_np_rng.py +0 -0
  526. {pynguin-0.43.0 → pynguin-0.44.0}/tests/utils/stats/__init__.py +0 -0
  527. {pynguin-0.43.0 → pynguin-0.44.0}/tests/utils/stats/test_runtimevariable.py +0 -0
  528. {pynguin-0.43.0 → pynguin-0.44.0}/tests/utils/test_atomicinteger.py +0 -0
  529. {pynguin-0.43.0 → pynguin-0.44.0}/tests/utils/test_collection_utils.py +0 -0
  530. {pynguin-0.43.0 → pynguin-0.44.0}/tests/utils/test_llm.py +0 -0
  531. {pynguin-0.43.0 → pynguin-0.44.0}/tests/utils/test_mirror.py +0 -0
  532. {pynguin-0.43.0 → pynguin-0.44.0}/tests/utils/test_mutation_utils.py +0 -0
  533. {pynguin-0.43.0 → pynguin-0.44.0}/tests/utils/utils.py +0 -0
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pynguin
3
- Version: 0.43.0
3
+ Version: 0.44.0
4
4
  Summary: Pynguin is a tool for automated unit test generation for Python
5
5
  License: MIT
6
6
  Keywords: unit test,random testing,search based,test generation
7
7
  Author: Stephan Lukasczyk
8
8
  Author-email: stephan@pynguin.eu
9
- Requires-Python: >=3.10,<3.14
9
+ Requires-Python: >=3.10,<3.15
10
10
  Classifier: Development Status :: 3 - Alpha
11
11
  Classifier: Environment :: Console
12
12
  Classifier: Intended Audience :: Developers
@@ -21,28 +21,41 @@ Classifier: Programming Language :: Python :: 3.10
21
21
  Classifier: Programming Language :: Python :: 3.11
22
22
  Classifier: Programming Language :: Python :: 3.12
23
23
  Classifier: Programming Language :: Python :: 3.13
24
+ Classifier: Programming Language :: Python :: 3.14
24
25
  Classifier: Programming Language :: Python :: Implementation :: CPython
25
26
  Classifier: Topic :: Education :: Testing
26
27
  Classifier: Topic :: Software Development :: Testing
27
28
  Classifier: Topic :: Software Development :: Testing :: Unit
28
29
  Classifier: Typing :: Typed
30
+ Provides-Extra: fandango-faker
31
+ Provides-Extra: numpy
32
+ Provides-Extra: openai
33
+ Provides-Extra: typing
29
34
  Requires-Dist: Jinja2 (>=3.1.6,<4.0.0)
30
35
  Requires-Dist: Pygments (>=2.19.2,<3.0.0)
31
36
  Requires-Dist: asciitree (>=0.3.3,<0.4.0)
32
- Requires-Dist: astroid (>=3.3.9,<4.0.0)
37
+ Requires-Dist: astroid (>=4.0.1,<5.0.0)
33
38
  Requires-Dist: black (>=25.1.0,<26.0.0)
34
- Requires-Dist: bytecode (>=0.16.1,<0.17.0)
35
- Requires-Dist: dill (>=0.3.9,<0.4.0)
39
+ Requires-Dist: bytecode (==0.17.0)
40
+ Requires-Dist: dill (>=0.4.0,<0.5.0)
41
+ Requires-Dist: faker (>=37.3.0,<38.0.0) ; extra == "fandango-faker"
42
+ Requires-Dist: fandango-fuzzer (>=0.8.2,<0.9.0) ; extra == "fandango-faker"
36
43
  Requires-Dist: libcst (>=1.7.0,<2.0.0)
37
- Requires-Dist: multiprocess (>=0.70.16,<0.71.0)
38
- Requires-Dist: networkx (>=3.4,<4.0)
39
- Requires-Dist: psutil (>=7.0.0,<8.0.0)
44
+ Requires-Dist: multiprocess (>=0.70.18,<0.71.0)
45
+ Requires-Dist: mypy (>=1.15.0,<2.0.0) ; extra == "typing"
46
+ Requires-Dist: networkx (>=3.4.2,<4.0.0)
47
+ Requires-Dist: numpy (>=1.26.4,<2.0.0) ; extra == "numpy"
48
+ Requires-Dist: openai (>=1.72.0,<2.0.0) ; extra == "openai"
49
+ Requires-Dist: psutil (>=7.1.1,<8.0.0)
40
50
  Requires-Dist: pytest (>=8.3.5,<9.0.0)
41
51
  Requires-Dist: rich (>=14.0.0,<15.0.0)
42
- Requires-Dist: setuptools (>=78.1,<79.0)
52
+ Requires-Dist: rstr (>=3.2.2,<4.0.0)
53
+ Requires-Dist: setuptools (>=80.9.0,<81.0.0)
43
54
  Requires-Dist: simple-parsing (>=0.1.7,<0.2.0)
44
55
  Requires-Dist: toml (>=0.10.2,<0.11.0)
56
+ Requires-Dist: typing-extensions (>=4.12.2,<5.0.0) ; extra == "typing"
45
57
  Requires-Dist: typing_inspect (>=0.9.0,<0.10.0)
58
+ Requires-Dist: xmltodict (>=0.14.2,<0.15.0) ; extra == "fandango-faker"
46
59
  Project-URL: Documentation, https://pynguin.readthedocs.io
47
60
  Project-URL: Homepage, https://www.pynguin.eu
48
61
  Project-URL: Repository, https://github.com/se2p/pynguin
@@ -86,7 +99,7 @@ and allows the automated generation of unit tests for Python programs.
86
99
  [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
87
100
  [![PyPI version](https://badge.fury.io/py/pynguin.svg)](https://badge.fury.io/py/pynguin)
88
101
  [![Supported Python Versions](https://img.shields.io/pypi/pyversions/pynguin.svg)](https://github.com/se2p/pynguin)
89
- [![Documentation Status](https://readthedocs.org/projects/pynguin/badge/?version=latest)](https://pynguin.readthedocs.io/en/latest/?badge=latest)
102
+ [![Documentation Status](https://readthedocs.org/projects/pynguin/badge/?version=latest)](https://pynguin.readthedocs.io/)
90
103
  [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3989840.svg)](https://doi.org/10.5281/zenodo.3989840)
91
104
  [![REUSE status](https://api.reuse.software/badge/github.com/se2p/pynguin)](https://api.reuse.software/info/github.com/se2p/pynguin)
92
105
  [![Downloads](https://static.pepy.tech/personalized-badge/pynguin?period=total&units=international_system&left_color=grey&right_color=blue&left_text=Downloads)](https://pepy.tech/project/pynguin)
@@ -116,7 +129,7 @@ please report your experiences in using Pynguin to us.
116
129
  ## Prerequisites
117
130
 
118
131
  Before you begin, ensure you have met the following requirements:
119
- - You have installed Python 3.10 (the support for 3.11, 3.12 and 3.13 is experimental).
132
+ - You have installed Python 3.10 (the support for 3.11, 3.12, 3.13 and 3.14 is experimental).
120
133
 
121
134
  **Attention:** Pynguin now requires Python 3.10! Older versions are no longer
122
135
  supported!
@@ -180,6 +193,9 @@ of the [University of Passau](https://www.uni-passau.de).
180
193
  Maintainers: [Stephan Lukasczyk](https://github.com/stephanlukasczyk), [Lukas Krodinger](https://github.com/LuKrO2011)
181
194
 
182
195
  Contributors:
196
+ - [Lukas Vögl](https://github.com/lvoegl)
197
+ - [Louis Leppelmann](https://github.com/Tudeldu)
198
+ - [Alexander Wüst](https://github.com/Ravaqor)
183
199
  - [Altin Hajdari](https://github.com/AltinHajdari)
184
200
  - [Abdelillah Aissani](https://github.com/Abassion)
185
201
  - [Juan Altmayer Pizzorno](https://github.com/jaltmayerpizzorno)
@@ -36,7 +36,7 @@ and allows the automated generation of unit tests for Python programs.
36
36
  [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
37
37
  [![PyPI version](https://badge.fury.io/py/pynguin.svg)](https://badge.fury.io/py/pynguin)
38
38
  [![Supported Python Versions](https://img.shields.io/pypi/pyversions/pynguin.svg)](https://github.com/se2p/pynguin)
39
- [![Documentation Status](https://readthedocs.org/projects/pynguin/badge/?version=latest)](https://pynguin.readthedocs.io/en/latest/?badge=latest)
39
+ [![Documentation Status](https://readthedocs.org/projects/pynguin/badge/?version=latest)](https://pynguin.readthedocs.io/)
40
40
  [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3989840.svg)](https://doi.org/10.5281/zenodo.3989840)
41
41
  [![REUSE status](https://api.reuse.software/badge/github.com/se2p/pynguin)](https://api.reuse.software/info/github.com/se2p/pynguin)
42
42
  [![Downloads](https://static.pepy.tech/personalized-badge/pynguin?period=total&units=international_system&left_color=grey&right_color=blue&left_text=Downloads)](https://pepy.tech/project/pynguin)
@@ -66,7 +66,7 @@ please report your experiences in using Pynguin to us.
66
66
  ## Prerequisites
67
67
 
68
68
  Before you begin, ensure you have met the following requirements:
69
- - You have installed Python 3.10 (the support for 3.11, 3.12 and 3.13 is experimental).
69
+ - You have installed Python 3.10 (the support for 3.11, 3.12, 3.13 and 3.14 is experimental).
70
70
 
71
71
  **Attention:** Pynguin now requires Python 3.10! Older versions are no longer
72
72
  supported!
@@ -130,6 +130,9 @@ of the [University of Passau](https://www.uni-passau.de).
130
130
  Maintainers: [Stephan Lukasczyk](https://github.com/stephanlukasczyk), [Lukas Krodinger](https://github.com/LuKrO2011)
131
131
 
132
132
  Contributors:
133
+ - [Lukas Vögl](https://github.com/lvoegl)
134
+ - [Louis Leppelmann](https://github.com/Tudeldu)
135
+ - [Alexander Wüst](https://github.com/Ravaqor)
133
136
  - [Altin Hajdari](https://github.com/AltinHajdari)
134
137
  - [Abdelillah Aissani](https://github.com/Abassion)
135
138
  - [Juan Altmayer Pizzorno](https://github.com/jaltmayerpizzorno)
@@ -4,7 +4,7 @@
4
4
 
5
5
  [tool.poetry]
6
6
  name = "pynguin"
7
- version = "0.43.0"
7
+ version = "0.44.0"
8
8
  description = "Pynguin is a tool for automated unit test generation for Python"
9
9
  authors = [
10
10
  "Stephan Lukasczyk <stephan@pynguin.eu>",
@@ -35,6 +35,7 @@ classifiers = [
35
35
  "Programming Language :: Python :: 3.11",
36
36
  "Programming Language :: Python :: 3.12",
37
37
  "Programming Language :: Python :: 3.13",
38
+ "Programming Language :: Python :: 3.14",
38
39
  "Programming Language :: Python :: Implementation :: CPython",
39
40
  "Topic :: Education :: Testing",
40
41
  "Topic :: Software Development :: Testing",
@@ -49,14 +50,14 @@ include = [
49
50
  ]
50
51
 
51
52
  [tool.poetry.dependencies]
52
- python = ">=3.10, <3.14"
53
- astroid = "^3.3.9"
53
+ python = ">=3.10, <3.15"
54
+ astroid = "^4.0.1"
54
55
  black = "^25.1.0"
55
- bytecode = "^0.16.1"
56
- dill = "^0.3.9"
56
+ bytecode = "0.17.0"
57
+ dill = "^0.4.0"
57
58
  Jinja2 = "^3.1.6"
58
- networkx = "^3.4"
59
- multiprocess = "^0.70.16"
59
+ networkx = "^3.4.2"
60
+ multiprocess = "^0.70.18"
60
61
  rich = "^14.0.0"
61
62
  Pygments = "^2.19.2"
62
63
  pytest = "^8.3.5"
@@ -64,12 +65,19 @@ simple-parsing = "^0.1.7"
64
65
  typing_inspect = "^0.9.0"
65
66
  asciitree = "^0.3.3"
66
67
  libcst = "^1.7.0"
67
- setuptools = "^78.1"
68
+ setuptools = "^80.9.0"
68
69
  toml = "^0.10.2"
69
- psutil = "^7.0.0"
70
+ psutil = "^7.1.1"
71
+ rstr = "^3.2.2"
72
+ openai = { version = "^1.72.0", optional = true }
73
+ numpy = { version = "^1.26.4", optional = true }
74
+ mypy = { version = "^1.15.0", optional = true }
75
+ typing-extensions = { version = "^4.12.2", optional = true }
76
+ faker = { version = "^37.3.0", optional = true }
77
+ fandango-fuzzer = { version = "^0.8.2", optional = true }
78
+ xmltodict = { version = "^0.14.2", optional = true }
70
79
 
71
80
  [tool.poetry.group.dev.dependencies]
72
- isort = { extras = ["pyproject"], version = "^6.0.1" }
73
81
  mypy = "^1.15.0"
74
82
  pre-commit = "^4.2.0"
75
83
  ruff = "^0.11"
@@ -91,17 +99,11 @@ pytest-mock = "^3.14.0"
91
99
  pytest-picked = "^0.5.1"
92
100
  pytest-sugar = "^1.0.0"
93
101
 
94
- [tool.poetry.group.openai]
95
- optional = true
96
-
97
- [tool.poetry.group.openai.dependencies]
98
- openai = "^1.72.0"
99
-
100
- [tool.poetry.group.numpy]
101
- optional = true
102
-
103
- [tool.poetry.group.numpy.dependencies]
104
- numpy = "^1.26.4"
102
+ [tool.poetry.extras]
103
+ openai = [ "openai" ]
104
+ numpy = [ "numpy" ]
105
+ typing = [ "mypy", "typing-extensions" ]
106
+ fandango-faker = [ "faker", "fandango-fuzzer", "xmltodict" ]
105
107
 
106
108
  [tool.poetry.scripts]
107
109
  pynguin = "pynguin.cli:main"
@@ -127,15 +129,6 @@ exclude_lines = [
127
129
  [tool.coverage.html]
128
130
  directory = "cov_html"
129
131
 
130
- [tool.isort]
131
- py_version = 310
132
- profile = "black"
133
- force_single_line = true
134
- combine_as_imports = true
135
- lines_between_types = 1
136
- lines_after_imports = 2
137
- src_paths = ["src", "tests"]
138
-
139
132
  [tool.mypy]
140
133
  files = "src"
141
134
  mypy_path = "src"
@@ -218,6 +211,7 @@ select = [
218
211
  "FLY", # flynt
219
212
  "FURB", # refurb
220
213
  "G", # flake8-logging-format
214
+ "I", # isort
221
215
  "ICN", # flake8-import-conventions
222
216
  "INT", # flake8-gettext
223
217
  "ISC", # flake8-implicit-str-concat
@@ -284,14 +278,14 @@ convention = "google"
284
278
 
285
279
  [tool.tox]
286
280
  requires = ["tox~=4.28"]
287
- env_list = ["3.10", "3.11", "3.12", "3.13"]
281
+ env_list = ["3.10", "3.11", "3.12", "3.13", "3.14"]
288
282
 
289
283
  [tool.tox.env_run_base]
290
284
  skip_install = true
291
285
  allowlist_externals = ["make", "poetry"]
292
286
  commands_pre = [
293
287
  ["poetry", "env", "use", "{env_name}"],
294
- ["poetry", "install", "--with", "openai,numpy"],
288
+ ["poetry", "install", "--extras", "openai numpy fandango-faker"]
295
289
  ]
296
290
  commands = [
297
291
  ["make", "check"],
@@ -7,16 +7,18 @@
7
7
  """Pynguin is an automated unit test generation framework for Python."""
8
8
 
9
9
  import copyreg
10
-
10
+ import logging
11
+ import threading
11
12
  from collections.abc import Callable
12
13
 
13
- from bytecode.instr import _UNSET # noqa: PLC2701
14
- from bytecode.instr import InstrLocation
14
+ from bytecode.instr import (
15
+ _UNSET, # noqa: PLC2701
16
+ InstrLocation,
17
+ )
15
18
 
16
19
  import pynguin.configuration as config
17
20
  import pynguin.generator as gen
18
21
 
19
-
20
22
  set_configuration = gen.set_configuration
21
23
  run_pynguin = gen.run_pynguin
22
24
  Configuration = config.Configuration
@@ -62,3 +64,24 @@ def _pickle_unset(unset: _UNSET) -> tuple[Callable[[], _UNSET], tuple]: # noqa:
62
64
 
63
65
 
64
66
  copyreg.pickle(_UNSET, _pickle_unset)
67
+
68
+
69
+ _LOGGER = logging.getLogger(__name__)
70
+
71
+
72
+ def _log_thread_exception(arg: threading.ExceptHookArgs) -> None:
73
+ _LOGGER.warning(
74
+ "Exception in Thread: %s",
75
+ arg.thread,
76
+ exc_info=( # noqa: LOG014
77
+ arg.exc_type,
78
+ arg.exc_value, # type: ignore[arg-type]
79
+ arg.exc_traceback,
80
+ ),
81
+ )
82
+
83
+
84
+ # Set our own exception hook, so timeout related errors in executing threads
85
+ # are not spilled out to stderr and clutter our formatted output but are send
86
+ # to the logger
87
+ threading.excepthook = _log_thread_exception
@@ -13,6 +13,5 @@ import sys
13
13
 
14
14
  from pynguin.cli import main
15
15
 
16
-
17
16
  if __name__ == "__main__":
18
17
  sys.exit(main(sys.argv))
@@ -6,4 +6,4 @@
6
6
  #
7
7
  """Specifies the version of Pynguin."""
8
8
 
9
- __version__ = "0.43.0"
9
+ __version__ = "0.44.0"
@@ -14,7 +14,6 @@ import logging
14
14
  import os
15
15
  import string
16
16
  import typing
17
-
18
17
  from abc import ABC
19
18
  from pathlib import Path
20
19
  from pkgutil import iter_modules
@@ -27,11 +26,9 @@ from pynguin.utils.orderedset import OrderedSet
27
26
  # Used for type hinting and for restricting stored types
28
27
  from pynguin.utils.typetracing import unwrap
29
28
 
30
-
31
29
  if typing.TYPE_CHECKING:
32
30
  from collections.abc import Callable
33
- from typing import Any
34
- from typing import ClassVar
31
+ from typing import Any, ClassVar
35
32
 
36
33
 
37
34
  ConstantTypes = float | int | str | bytes | complex
@@ -306,7 +303,7 @@ class _ConstantCollector(ast.NodeVisitor):
306
303
 
307
304
  def visit_Constant(self, node: ast.Constant): # noqa: N802
308
305
  if type(node.value) in typing.get_args(ConstantTypes):
309
- self._pool.add_constant(node.value)
306
+ self._pool.add_constant(node.value) # type: ignore[arg-type]
310
307
  return self.generic_visit(node)
311
308
 
312
309
  def visit_Module(self, node: ast.Module): # noqa: N802