simplint 0.2.2__tar.gz → 0.4.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 (996) hide show
  1. simplint-0.4.0/CHANGELOG.md +727 -0
  2. simplint-0.4.0/CONTRIBUTING.md +276 -0
  3. simplint-0.4.0/Cargo.lock +3957 -0
  4. simplint-0.4.0/Cargo.toml +84 -0
  5. simplint-0.4.0/PKG-INFO +91 -0
  6. simplint-0.4.0/README.md +60 -0
  7. simplint-0.4.0/build.rs +38 -0
  8. simplint-0.4.0/docs/_static/rules.js +243 -0
  9. simplint-0.4.0/docs/_static/simplint.css +919 -0
  10. simplint-0.4.0/docs/cli.rst +85 -0
  11. simplint-0.4.0/docs/conf.py +545 -0
  12. simplint-0.4.0/docs/configuration/project.rst +152 -0
  13. simplint-0.4.0/docs/configuration/rule-settings.rst +108 -0
  14. simplint-0.4.0/docs/configuration/running.rst +55 -0
  15. simplint-0.4.0/docs/configuration.rst +84 -0
  16. simplint-0.4.0/docs/explanation/how-it-works.rst +138 -0
  17. simplint-0.4.0/docs/explanation/simplint-and-ruff.rst +28 -0
  18. simplint-0.4.0/docs/how-it-works.rst +10 -0
  19. simplint-0.4.0/docs/how-to/index.rst +22 -0
  20. simplint-0.4.0/docs/how-to/library-api.rst +28 -0
  21. simplint-0.4.0/docs/how-to/pair-with-ruff.rst +58 -0
  22. simplint-0.4.0/docs/how-to/pre-commit.rst +30 -0
  23. simplint-0.4.0/docs/how-to/resolve-ruff-conflicts.rst +67 -0
  24. simplint-0.4.0/docs/how-to/select-rules.rst +88 -0
  25. simplint-0.4.0/docs/how-to/suppress-a-report.rst +53 -0
  26. simplint-0.4.0/docs/index.rst +121 -0
  27. simplint-0.4.0/docs/rules.rst +13 -0
  28. simplint-0.4.0/docs/tutorial/getting-started.rst +131 -0
  29. simplint-0.4.0/ignore-words.txt +6 -0
  30. simplint-0.4.0/pylock.toml +3039 -0
  31. simplint-0.4.0/pyproject.toml +211 -0
  32. simplint-0.4.0/src/cli/args.rs +617 -0
  33. simplint-0.4.0/src/cli/check.rs +729 -0
  34. simplint-0.4.0/src/cli/conflicts.rs +288 -0
  35. simplint-0.4.0/src/cli/diagnostics.rs +240 -0
  36. simplint-0.4.0/src/cli/mod.rs +7 -0
  37. simplint-0.4.0/src/cli/printer.rs +379 -0
  38. simplint-0.4.0/src/cli/subcommands.rs +387 -0
  39. simplint-0.4.0/src/fix/cleanup.rs +91 -0
  40. simplint-0.4.0/src/fix/mod.rs +305 -0
  41. simplint-0.4.0/src/lint/checker.rs +270 -0
  42. simplint-0.4.0/src/lint/examples.rs +212 -0
  43. simplint-0.4.0/src/lint/mod.rs +97 -0
  44. simplint-0.4.0/src/lint/noqa.rs +273 -0
  45. simplint-0.4.0/src/lint/registry.rs +337 -0
  46. simplint-0.4.0/src/lint/ruff.rs +238 -0
  47. simplint-0.4.0/src/lint/walker.rs +130 -0
  48. simplint-0.4.0/src/main.rs +139 -0
  49. simplint-0.4.0/src/project/cache.rs +408 -0
  50. simplint-0.4.0/src/project/constructors.rs +569 -0
  51. simplint-0.4.0/src/project/facts.rs +512 -0
  52. simplint-0.4.0/src/project/index.rs +1263 -0
  53. simplint-0.4.0/src/project/mod.rs +8 -0
  54. simplint-0.4.0/src/project/receivers.rs +531 -0
  55. simplint-0.4.0/src/rules/api/all_format.md +236 -0
  56. simplint-0.4.0/src/rules/api/all_format.rs +91 -0
  57. simplint-0.4.0/src/rules/api/all_not_last.md +254 -0
  58. simplint-0.4.0/src/rules/api/all_not_last.rs +53 -0
  59. simplint-0.4.0/src/rules/api/init_module_content.md +219 -0
  60. simplint-0.4.0/src/rules/api/init_module_content.rs +44 -0
  61. simplint-0.4.0/src/rules/api/missing_from_all.md +525 -0
  62. simplint-0.4.0/src/rules/api/missing_from_all.rs +133 -0
  63. simplint-0.4.0/src/rules/api/mod.rs +26 -0
  64. simplint-0.4.0/src/rules/api/module_variable_prefix.md +144 -0
  65. simplint-0.4.0/src/rules/api/module_variable_prefix.rs +29 -0
  66. simplint-0.4.0/src/rules/api/test_only_code.md +237 -0
  67. simplint-0.4.0/src/rules/api/test_only_code.rs +48 -0
  68. simplint-0.4.0/src/rules/api/unexported_public_name.md +361 -0
  69. simplint-0.4.0/src/rules/api/unexported_public_name.rs +51 -0
  70. simplint-0.4.0/src/rules/api/unused_export.md +439 -0
  71. simplint-0.4.0/src/rules/api/unused_export.rs +152 -0
  72. simplint-0.4.0/src/rules/classes/dataclass_frozen.md +414 -0
  73. simplint-0.4.0/src/rules/classes/dataclass_frozen.rs +15 -0
  74. simplint-0.4.0/src/rules/classes/dataclass_hazards.rs +212 -0
  75. simplint-0.4.0/src/rules/classes/dataclass_kw_only.md +419 -0
  76. simplint-0.4.0/src/rules/classes/dataclass_kw_only.rs +175 -0
  77. simplint-0.4.0/src/rules/classes/dataclass_slots.md +462 -0
  78. simplint-0.4.0/src/rules/classes/dataclass_slots.rs +15 -0
  79. simplint-0.4.0/src/rules/classes/indistinct_error_class.md +252 -0
  80. simplint-0.4.0/src/rules/classes/indistinct_error_class.rs +46 -0
  81. simplint-0.4.0/src/rules/classes/mod.rs +108 -0
  82. simplint-0.4.0/src/rules/comments/blanket_ignore.md +125 -0
  83. simplint-0.4.0/src/rules/comments/blanket_ignore.rs +20 -0
  84. simplint-0.4.0/src/rules/comments/directive.rs +120 -0
  85. simplint-0.4.0/src/rules/comments/long_paragraph.md +94 -0
  86. simplint-0.4.0/src/rules/comments/long_paragraph.rs +44 -0
  87. simplint-0.4.0/src/rules/comments/mod.rs +10 -0
  88. simplint-0.4.0/src/rules/comments/section_comment.md +144 -0
  89. simplint-0.4.0/src/rules/comments/suppression_without_reason.md +105 -0
  90. simplint-0.4.0/src/rules/comments/suppression_without_reason.rs +16 -0
  91. simplint-0.4.0/src/rules/docstrings/function_docstring.md +384 -0
  92. simplint-0.4.0/src/rules/docstrings/function_docstring.rs +300 -0
  93. simplint-0.4.0/src/rules/docstrings/long_docstring_paragraph.md +106 -0
  94. simplint-0.4.0/src/rules/docstrings/long_docstring_paragraph.rs +44 -0
  95. simplint-0.4.0/src/rules/docstrings/mod.rs +245 -0
  96. simplint-0.4.0/src/rules/docstrings/rst/attributes.rs +133 -0
  97. simplint-0.4.0/src/rules/docstrings/rst/edits.rs +149 -0
  98. simplint-0.4.0/src/rules/docstrings/rst/mod.rs +11 -0
  99. simplint-0.4.0/src/rules/docstrings/rst/parse.rs +275 -0
  100. simplint-0.4.0/src/rules/docstrings/rst/targets.rs +192 -0
  101. simplint-0.4.0/src/rules/docstrings/rst_attribute_kind.md +180 -0
  102. simplint-0.4.0/src/rules/docstrings/rst_attribute_kind.rs +39 -0
  103. simplint-0.4.0/src/rules/docstrings/rst_duplicate_param.md +152 -0
  104. simplint-0.4.0/src/rules/docstrings/rst_duplicate_param.rs +33 -0
  105. simplint-0.4.0/src/rules/docstrings/rst_empty_field.md +100 -0
  106. simplint-0.4.0/src/rules/docstrings/rst_empty_field.rs +23 -0
  107. simplint-0.4.0/src/rules/docstrings/rst_field_syntax.md +313 -0
  108. simplint-0.4.0/src/rules/docstrings/rst_field_syntax.rs +91 -0
  109. simplint-0.4.0/src/rules/docstrings/rst_inline_markup.md +177 -0
  110. simplint-0.4.0/src/rules/docstrings/rst_inline_markup.rs +169 -0
  111. simplint-0.4.0/src/rules/docstrings/rst_missing_attribute.md +268 -0
  112. simplint-0.4.0/src/rules/docstrings/rst_missing_attribute.rs +40 -0
  113. simplint-0.4.0/src/rules/docstrings/rst_missing_param.md +265 -0
  114. simplint-0.4.0/src/rules/docstrings/rst_missing_param.rs +35 -0
  115. simplint-0.4.0/src/rules/docstrings/rst_missing_raises.md +380 -0
  116. simplint-0.4.0/src/rules/docstrings/rst_missing_raises.rs +132 -0
  117. simplint-0.4.0/src/rules/docstrings/rst_param_order.md +97 -0
  118. simplint-0.4.0/src/rules/docstrings/rst_param_order.rs +32 -0
  119. simplint-0.4.0/src/rules/docstrings/rst_private_field.md +207 -0
  120. simplint-0.4.0/src/rules/docstrings/rst_private_field.rs +26 -0
  121. simplint-0.4.0/src/rules/docstrings/rst_restating_field.md +112 -0
  122. simplint-0.4.0/src/rules/docstrings/rst_restating_field.rs +54 -0
  123. simplint-0.4.0/src/rules/docstrings/rst_returns.md +347 -0
  124. simplint-0.4.0/src/rules/docstrings/rst_returns.rs +148 -0
  125. simplint-0.4.0/src/rules/docstrings/rst_type_field.md +182 -0
  126. simplint-0.4.0/src/rules/docstrings/rst_type_field.rs +53 -0
  127. simplint-0.4.0/src/rules/docstrings/rst_unknown_attribute.md +155 -0
  128. simplint-0.4.0/src/rules/docstrings/rst_unknown_attribute.rs +35 -0
  129. simplint-0.4.0/src/rules/docstrings/rst_unknown_param.md +191 -0
  130. simplint-0.4.0/src/rules/docstrings/rst_unknown_param.rs +27 -0
  131. simplint-0.4.0/src/rules/docstrings/test_module_docstring.md +111 -0
  132. simplint-0.4.0/src/rules/docstrings/undocumented_public_api.md +295 -0
  133. simplint-0.4.0/src/rules/docstrings/undocumented_public_api.rs +41 -0
  134. simplint-0.4.0/src/rules/imports/absolute_sibling_import.md +182 -0
  135. simplint-0.4.0/src/rules/imports/absolute_sibling_import.rs +109 -0
  136. simplint-0.4.0/src/rules/imports/dependency_import_guard.md +360 -0
  137. simplint-0.4.0/src/rules/imports/dependency_import_guard.rs +127 -0
  138. simplint-0.4.0/src/rules/imports/future_annotations.md +220 -0
  139. simplint-0.4.0/src/rules/imports/mod.rs +9 -0
  140. simplint-0.4.0/src/rules/imports/module_attribute_import.md +284 -0
  141. simplint-0.4.0/src/rules/imports/module_attribute_import.rs +140 -0
  142. simplint-0.4.0/src/rules/layout/definition_before_use.md +299 -0
  143. simplint-0.4.0/src/rules/layout/definition_before_use.rs +365 -0
  144. simplint-0.4.0/src/rules/layout/mod.rs +5 -0
  145. simplint-0.4.0/src/rules/layout/single_user_constant.md +370 -0
  146. simplint-0.4.0/src/rules/layout/single_user_constant.rs +336 -0
  147. simplint-0.4.0/src/rules/logic/error_message_matching.md +143 -0
  148. simplint-0.4.0/src/rules/logic/error_message_matching.rs +83 -0
  149. simplint-0.4.0/src/rules/logic/forwarding_function.md +172 -0
  150. simplint-0.4.0/src/rules/logic/forwarding_function.rs +94 -0
  151. simplint-0.4.0/src/rules/logic/inline.rs +74 -0
  152. simplint-0.4.0/src/rules/logic/kinds.rs +1222 -0
  153. simplint-0.4.0/src/rules/logic/mod.rs +16 -0
  154. simplint-0.4.0/src/rules/logic/single_caller_helper.md +257 -0
  155. simplint-0.4.0/src/rules/logic/single_caller_helper.rs +126 -0
  156. simplint-0.4.0/src/rules/logic/single_use_variable.md +219 -0
  157. simplint-0.4.0/src/rules/logic/single_use_variable.rs +337 -0
  158. simplint-0.4.0/src/rules/logic/string_concatenation.md +201 -0
  159. simplint-0.4.0/src/rules/logic/string_concatenation.rs +201 -0
  160. simplint-0.4.0/src/rules/logic/unused_default.md +261 -0
  161. simplint-0.4.0/src/rules/logic/unused_default.rs +214 -0
  162. simplint-0.4.0/src/rules/logic/walrus_candidate.md +351 -0
  163. simplint-0.4.0/src/rules/logic/walrus_candidate.rs +204 -0
  164. simplint-0.4.0/src/rules/mod.rs +224 -0
  165. simplint-0.4.0/src/rules/module_variable.rs +281 -0
  166. simplint-0.4.0/src/rules/naming/mod.rs +5 -0
  167. simplint-0.4.0/src/rules/naming/module_variable_case.md +378 -0
  168. simplint-0.4.0/src/rules/naming/module_variable_case.rs +23 -0
  169. simplint-0.4.0/src/rules/naming/single_letter_name.md +180 -0
  170. simplint-0.4.0/src/rules/naming/single_letter_name.rs +92 -0
  171. simplint-0.4.0/src/rules/rename.rs +64 -0
  172. simplint-0.4.0/src/rules/testing/conditional_in_test.md +99 -0
  173. simplint-0.4.0/src/rules/testing/constant_assert.md +164 -0
  174. simplint-0.4.0/src/rules/testing/constant_assert.rs +55 -0
  175. simplint-0.4.0/src/rules/testing/mock_attribute_assignment.md +151 -0
  176. simplint-0.4.0/src/rules/testing/mock_attribute_assignment.rs +120 -0
  177. simplint-0.4.0/src/rules/testing/mock_without_spec.md +104 -0
  178. simplint-0.4.0/src/rules/testing/mock_without_spec.rs +68 -0
  179. simplint-0.4.0/src/rules/testing/mod.rs +27 -0
  180. simplint-0.4.0/src/rules/testing/parametrize_without_id.md +106 -0
  181. simplint-0.4.0/src/rules/testing/sleep_in_test.md +90 -0
  182. simplint-0.4.0/src/rules/testing/sleep_in_test.rs +75 -0
  183. simplint-0.4.0/src/rules/testing/split_composite_assert.md +127 -0
  184. simplint-0.4.0/src/rules/testing/split_composite_assert.rs +116 -0
  185. simplint-0.4.0/src/rules/testing/stdlib_mock.md +94 -0
  186. simplint-0.4.0/src/rules/testing/stdlib_mock.rs +35 -0
  187. simplint-0.4.0/src/rules/testing/test_class.md +86 -0
  188. simplint-0.4.0/src/rules/testing/test_class.rs +131 -0
  189. simplint-0.4.0/src/rules/typing/callable_ellipsis.md +82 -0
  190. simplint-0.4.0/src/rules/typing/imprecise_annotation.md +139 -0
  191. simplint-0.4.0/src/rules/typing/imprecise_annotation.rs +55 -0
  192. simplint-0.4.0/src/rules/typing/missing_final.md +408 -0
  193. simplint-0.4.0/src/rules/typing/missing_final.rs +250 -0
  194. simplint-0.4.0/src/rules/typing/mod.rs +6 -0
  195. simplint-0.4.0/src/rules/typing/vars_call.md +81 -0
  196. simplint-0.4.0/src/settings/api.rs +194 -0
  197. simplint-0.4.0/src/settings/file.rs +67 -0
  198. simplint-0.4.0/src/settings/metadata.rs +132 -0
  199. simplint-0.4.0/src/settings/mod.rs +431 -0
  200. simplint-0.4.0/src/settings/options.rs +563 -0
  201. simplint-0.4.0/src/syntax.rs +300 -0
  202. simplint-0.4.0/tasks/assemble_release.py +103 -0
  203. simplint-0.4.0/tasks/cargo_version.py +22 -0
  204. simplint-0.4.0/tasks/check_sdist.py +52 -0
  205. simplint-0.4.0/tasks/ecosystem.py +300 -0
  206. simplint-0.4.0/tasks/generate_changelog.py +91 -0
  207. simplint-0.4.0/tasks/pgo.py +348 -0
  208. simplint-0.4.0/tasks/pgo.toml +8 -0
  209. simplint-0.4.0/tasks/python_versions.py +158 -0
  210. simplint-0.4.0/tests/cache.rs +395 -0
  211. simplint-0.4.0/tests/check.rs +350 -0
  212. simplint-0.4.0/tests/common/mod.rs +281 -0
  213. simplint-0.4.0/tests/configuration.rs +634 -0
  214. simplint-0.4.0/tests/conflicts.rs +145 -0
  215. simplint-0.4.0/tests/examples.rs +90 -0
  216. simplint-0.4.0/tests/fix.rs +503 -0
  217. simplint-0.4.0/tests/fixtures/api/all_format/all_format.snap +34 -0
  218. simplint-0.4.0/tests/fixtures/api/all_format/all_format_bare.snap +14 -0
  219. simplint-0.4.0/tests/fixtures/api/all_format/all_format_tuple.snap +25 -0
  220. simplint-0.4.0/tests/fixtures/api/all_not_last/all_not_last.snap +15 -0
  221. simplint-0.4.0/tests/fixtures/api/all_not_last/all_not_last_ann.snap +5 -0
  222. simplint-0.4.0/tests/fixtures/api/all_not_last/all_not_last_eof.snap +10 -0
  223. simplint-0.4.0/tests/fixtures/api/all_not_last/all_not_last_fenced.snap +19 -0
  224. simplint-0.4.0/tests/fixtures/api/all_not_last/all_not_last_mutated.py +7 -0
  225. simplint-0.4.0/tests/fixtures/api/all_not_last/all_not_last_mutated_before_definition.py +6 -0
  226. simplint-0.4.0/tests/fixtures/api/all_not_last/all_not_last_mutated_before_definition.snap +5 -0
  227. simplint-0.4.0/tests/fixtures/api/all_not_last/all_not_last_negated.snap +15 -0
  228. simplint-0.4.0/tests/fixtures/api/all_not_last/all_not_last_nested.snap +5 -0
  229. simplint-0.4.0/tests/fixtures/api/all_not_last/all_not_last_nonl.snap +10 -0
  230. simplint-0.4.0/tests/fixtures/api/all_not_last/all_not_last_reversed.snap +15 -0
  231. simplint-0.4.0/tests/fixtures/api/init_module_content/_hidden/__init__.py +5 -0
  232. simplint-0.4.0/tests/fixtures/api/init_module_content/_hidden/parts.py +1 -0
  233. simplint-0.4.0/tests/fixtures/api/init_module_content/init_module_content__hidden___init__.snap +6 -0
  234. simplint-0.4.0/tests/fixtures/api/init_module_content/init_module_content_facade___init__.snap +6 -0
  235. simplint-0.4.0/tests/fixtures/api/init_module_content/init_module_content_loose___init__.snap +5 -0
  236. simplint-0.4.0/tests/fixtures/api/missing_from_all/missing_from_all.snap +23 -0
  237. simplint-0.4.0/tests/fixtures/api/missing_from_all/missing_from_all_aug.snap +14 -0
  238. simplint-0.4.0/tests/fixtures/api/missing_from_all/missing_from_all_bare.snap +23 -0
  239. simplint-0.4.0/tests/fixtures/api/missing_from_all/missing_from_all_empty.snap +13 -0
  240. simplint-0.4.0/tests/fixtures/api/missing_from_all/missing_from_all_guard.snap +17 -0
  241. simplint-0.4.0/tests/fixtures/api/missing_from_all/missing_from_all_hanging.snap +28 -0
  242. simplint-0.4.0/tests/fixtures/api/missing_from_all/missing_from_all_hanging_comment.snap +21 -0
  243. simplint-0.4.0/tests/fixtures/api/missing_from_all/missing_from_all_imported.snap +19 -0
  244. simplint-0.4.0/tests/fixtures/api/missing_from_all/missing_from_all_multiline.snap +20 -0
  245. simplint-0.4.0/tests/fixtures/api/missing_from_all/missing_from_all_noall.snap +13 -0
  246. simplint-0.4.0/tests/fixtures/api/missing_from_all/missing_from_all_scripts.snap +13 -0
  247. simplint-0.4.0/tests/fixtures/api/missing_from_all/missing_from_all_sorted.snap +30 -0
  248. simplint-0.4.0/tests/fixtures/api/module_variable_prefix/module_variable_prefix.py +17 -0
  249. simplint-0.4.0/tests/fixtures/api/module_variable_prefix/module_variable_prefix.snap +26 -0
  250. simplint-0.4.0/tests/fixtures/api/test_only_code/test_only_code_tonly_builders.snap +6 -0
  251. simplint-0.4.0/tests/fixtures/api/test_only_code/test_tonly_builders.py +23 -0
  252. simplint-0.4.0/tests/fixtures/api/test_only_code/tonly_app.py +5 -0
  253. simplint-0.4.0/tests/fixtures/api/test_only_code/tonly_builders.py +54 -0
  254. simplint-0.4.0/tests/fixtures/api/unexported_public_name/unexported_public_name.snap +39 -0
  255. simplint-0.4.0/tests/fixtures/api/unexported_public_name/unexported_public_name_extend.snap +25 -0
  256. simplint-0.4.0/tests/fixtures/api/unexported_public_name/unexported_public_name_ply.snap +25 -0
  257. simplint-0.4.0/tests/fixtures/api/unused_export/exporting/__init__.py +1 -0
  258. simplint-0.4.0/tests/fixtures/api/unused_export/exporting/sub/__init__.py +5 -0
  259. simplint-0.4.0/tests/fixtures/api/unused_export/exporting/sub/inner.py +1 -0
  260. simplint-0.4.0/tests/fixtures/api/unused_export/exporting/unused_export.py +14 -0
  261. simplint-0.4.0/tests/fixtures/api/unused_export/exporting/unused_export_all.py +4 -0
  262. simplint-0.4.0/tests/fixtures/api/unused_export/exporting/unused_export_call.py +8 -0
  263. simplint-0.4.0/tests/fixtures/api/unused_export/exporting/unused_export_comment.py +9 -0
  264. simplint-0.4.0/tests/fixtures/api/unused_export/exporting/unused_export_comment_all.py +7 -0
  265. simplint-0.4.0/tests/fixtures/api/unused_export/exporting/unused_export_double.py +5 -0
  266. simplint-0.4.0/tests/fixtures/api/unused_export/exporting/unused_export_extend.py +8 -0
  267. simplint-0.4.0/tests/fixtures/api/unused_export/exporting/unused_export_inline.py +7 -0
  268. simplint-0.4.0/tests/fixtures/api/unused_export/exporting/unused_export_lazy.py +5 -0
  269. simplint-0.4.0/tests/fixtures/api/unused_export/exporting/unused_export_noted.py +10 -0
  270. simplint-0.4.0/tests/fixtures/api/unused_export/exporting/unused_export_packed.py +12 -0
  271. simplint-0.4.0/tests/fixtures/api/unused_export/exporting/unused_export_star.py +4 -0
  272. simplint-0.4.0/tests/fixtures/api/unused_export/exporting/unused_export_tuple.py +7 -0
  273. simplint-0.4.0/tests/fixtures/api/unused_export/exporting/unused_export_tuple_end.py +7 -0
  274. simplint-0.4.0/tests/fixtures/api/unused_export/exporting/unused_export_user.py +12 -0
  275. simplint-0.4.0/tests/fixtures/api/unused_export/unused_export.snap +19 -0
  276. simplint-0.4.0/tests/fixtures/api/unused_export/unused_export_all.snap +10 -0
  277. simplint-0.4.0/tests/fixtures/api/unused_export/unused_export_call.snap +5 -0
  278. simplint-0.4.0/tests/fixtures/api/unused_export/unused_export_comment.snap +15 -0
  279. simplint-0.4.0/tests/fixtures/api/unused_export/unused_export_comment_all.snap +5 -0
  280. simplint-0.4.0/tests/fixtures/api/unused_export/unused_export_double.snap +6 -0
  281. simplint-0.4.0/tests/fixtures/api/unused_export/unused_export_extend.snap +5 -0
  282. simplint-0.4.0/tests/fixtures/api/unused_export/unused_export_inline.snap +13 -0
  283. simplint-0.4.0/tests/fixtures/api/unused_export/unused_export_noted.snap +5 -0
  284. simplint-0.4.0/tests/fixtures/api/unused_export/unused_export_packed.snap +19 -0
  285. simplint-0.4.0/tests/fixtures/api/unused_export/unused_export_root.py +4 -0
  286. simplint-0.4.0/tests/fixtures/api/unused_export/unused_export_tuple.snap +13 -0
  287. simplint-0.4.0/tests/fixtures/api/unused_export/unused_export_tuple_end.snap +13 -0
  288. simplint-0.4.0/tests/fixtures/classes/dataclass_frozen/dataclass_frozen.snap +93 -0
  289. simplint-0.4.0/tests/fixtures/classes/dataclass_frozen/dataclass_frozen_receivers.snap +141 -0
  290. simplint-0.4.0/tests/fixtures/classes/dataclass_frozen/dataclass_frozen_runtime.snap +99 -0
  291. simplint-0.4.0/tests/fixtures/classes/dataclass_kw_only/dataclass_kw_only.snap +30 -0
  292. simplint-0.4.0/tests/fixtures/classes/dataclass_kw_only/dataclass_kw_only_calls.snap +141 -0
  293. simplint-0.4.0/tests/fixtures/classes/dataclass_slots/dataclass_slots.py +125 -0
  294. simplint-0.4.0/tests/fixtures/classes/dataclass_slots/dataclass_slots.snap +144 -0
  295. simplint-0.4.0/tests/fixtures/classes/indistinct_error_class/ierr_app.py +37 -0
  296. simplint-0.4.0/tests/fixtures/classes/indistinct_error_class/ierr_errors.py +72 -0
  297. simplint-0.4.0/tests/fixtures/classes/indistinct_error_class/ierr_loop_a.py +1 -0
  298. simplint-0.4.0/tests/fixtures/classes/indistinct_error_class/ierr_loop_b.py +1 -0
  299. simplint-0.4.0/tests/fixtures/classes/indistinct_error_class/ierr_reexport.py +3 -0
  300. simplint-0.4.0/tests/fixtures/classes/indistinct_error_class/indistinct_error_class_ierr_errors.snap +9 -0
  301. simplint-0.4.0/tests/fixtures/classes/indistinct_error_class/test_ierr_errors.py +16 -0
  302. simplint-0.4.0/tests/fixtures/comments/blanket_ignore/blanket_ignore.py +17 -0
  303. simplint-0.4.0/tests/fixtures/comments/blanket_ignore/blanket_ignore.snap +15 -0
  304. simplint-0.4.0/tests/fixtures/comments/long_paragraph/long_paragraph.snap +5 -0
  305. simplint-0.4.0/tests/fixtures/comments/suppression_without_reason/suppression_without_reason.py +27 -0
  306. simplint-0.4.0/tests/fixtures/comments/suppression_without_reason/suppression_without_reason.snap +21 -0
  307. simplint-0.4.0/tests/fixtures/docstrings/function_docstring/function_docstring.snap +54 -0
  308. simplint-0.4.0/tests/fixtures/docstrings/function_docstring/function_docstring_contract.snap +148 -0
  309. simplint-0.4.0/tests/fixtures/docstrings/function_docstring/function_docstring_dynamic.snap +19 -0
  310. simplint-0.4.0/tests/fixtures/docstrings/function_docstring/function_docstring_exported.snap +26 -0
  311. simplint-0.4.0/tests/fixtures/docstrings/function_docstring/function_docstring_facade__core.snap +25 -0
  312. simplint-0.4.0/tests/fixtures/docstrings/function_docstring/function_docstring_facade__helpers.snap +9 -0
  313. simplint-0.4.0/tests/fixtures/docstrings/function_docstring/function_docstring_runtime.snap +86 -0
  314. simplint-0.4.0/tests/fixtures/docstrings/long_docstring_paragraph/long_docstring_paragraph.py +53 -0
  315. simplint-0.4.0/tests/fixtures/docstrings/long_docstring_paragraph/long_docstring_paragraph.snap +7 -0
  316. simplint-0.4.0/tests/fixtures/docstrings/rst_attribute_kind/rst_attribute_kind.py +57 -0
  317. simplint-0.4.0/tests/fixtures/docstrings/rst_attribute_kind/rst_attribute_kind.snap +64 -0
  318. simplint-0.4.0/tests/fixtures/docstrings/rst_duplicate_param/rst_duplicate_param.py +35 -0
  319. simplint-0.4.0/tests/fixtures/docstrings/rst_duplicate_param/rst_duplicate_param.snap +40 -0
  320. simplint-0.4.0/tests/fixtures/docstrings/rst_empty_field/rst_empty_field.py +75 -0
  321. simplint-0.4.0/tests/fixtures/docstrings/rst_empty_field/rst_empty_field.snap +14 -0
  322. simplint-0.4.0/tests/fixtures/docstrings/rst_field_syntax/rst_field_syntax.py +135 -0
  323. simplint-0.4.0/tests/fixtures/docstrings/rst_field_syntax/rst_field_syntax.snap +164 -0
  324. simplint-0.4.0/tests/fixtures/docstrings/rst_inline_markup/rst_inline_markup.py +39 -0
  325. simplint-0.4.0/tests/fixtures/docstrings/rst_inline_markup/rst_inline_markup.snap +53 -0
  326. simplint-0.4.0/tests/fixtures/docstrings/rst_missing_attribute/rst_missing_attribute.py +95 -0
  327. simplint-0.4.0/tests/fixtures/docstrings/rst_missing_attribute/rst_missing_attribute.snap +118 -0
  328. simplint-0.4.0/tests/fixtures/docstrings/rst_missing_param/rst_missing_param.py +120 -0
  329. simplint-0.4.0/tests/fixtures/docstrings/rst_missing_param/rst_missing_param.snap +162 -0
  330. simplint-0.4.0/tests/fixtures/docstrings/rst_missing_raises/rst_missing_raises.py +148 -0
  331. simplint-0.4.0/tests/fixtures/docstrings/rst_missing_raises/rst_missing_raises.snap +165 -0
  332. simplint-0.4.0/tests/fixtures/docstrings/rst_param_order/rst_param_order.py +16 -0
  333. simplint-0.4.0/tests/fixtures/docstrings/rst_param_order/rst_param_order.snap +5 -0
  334. simplint-0.4.0/tests/fixtures/docstrings/rst_private_field/rst_private_field.py +47 -0
  335. simplint-0.4.0/tests/fixtures/docstrings/rst_private_field/rst_private_field.snap +52 -0
  336. simplint-0.4.0/tests/fixtures/docstrings/rst_restating_field/rst_restating_field.py +19 -0
  337. simplint-0.4.0/tests/fixtures/docstrings/rst_restating_field/rst_restating_field.snap +7 -0
  338. simplint-0.4.0/tests/fixtures/docstrings/rst_returns/rst_returns.py +159 -0
  339. simplint-0.4.0/tests/fixtures/docstrings/rst_returns/rst_returns.snap +172 -0
  340. simplint-0.4.0/tests/fixtures/docstrings/rst_type_field/rst_type_field.py +56 -0
  341. simplint-0.4.0/tests/fixtures/docstrings/rst_type_field/rst_type_field.snap +67 -0
  342. simplint-0.4.0/tests/fixtures/docstrings/rst_unknown_attribute/rst_unknown_attribute.py +96 -0
  343. simplint-0.4.0/tests/fixtures/docstrings/rst_unknown_attribute/rst_unknown_attribute.snap +99 -0
  344. simplint-0.4.0/tests/fixtures/docstrings/rst_unknown_param/rst_unknown_param.py +134 -0
  345. simplint-0.4.0/tests/fixtures/docstrings/rst_unknown_param/rst_unknown_param.snap +141 -0
  346. simplint-0.4.0/tests/fixtures/docstrings/test_module_docstring/test_module_docstring.snap +11 -0
  347. simplint-0.4.0/tests/fixtures/docstrings/test_module_docstring/test_module_docstring_inline.snap +9 -0
  348. simplint-0.4.0/tests/fixtures/docstrings/undocumented_public_api/facade/__init__.py +11 -0
  349. simplint-0.4.0/tests/fixtures/docstrings/undocumented_public_api/facade/_core.py +19 -0
  350. simplint-0.4.0/tests/fixtures/docstrings/undocumented_public_api/facade/_helpers.py +2 -0
  351. simplint-0.4.0/tests/fixtures/docstrings/undocumented_public_api/loose/__init__.py +6 -0
  352. simplint-0.4.0/tests/fixtures/docstrings/undocumented_public_api/loose/_deep.py +1 -0
  353. simplint-0.4.0/tests/fixtures/docstrings/undocumented_public_api/loose/_extra.py +4 -0
  354. simplint-0.4.0/tests/fixtures/docstrings/undocumented_public_api/loose/_impl.py +4 -0
  355. simplint-0.4.0/tests/fixtures/docstrings/undocumented_public_api/loose/_stars.py +10 -0
  356. simplint-0.4.0/tests/fixtures/docstrings/undocumented_public_api/switched.py +59 -0
  357. simplint-0.4.0/tests/fixtures/docstrings/undocumented_public_api/undocumented_public_api.snap +10 -0
  358. simplint-0.4.0/tests/fixtures/docstrings/undocumented_public_api/undocumented_public_api_facade__core.snap +9 -0
  359. simplint-0.4.0/tests/fixtures/docstrings/undocumented_public_api/undocumented_public_api_imported.snap +5 -0
  360. simplint-0.4.0/tests/fixtures/docstrings/undocumented_public_api/undocumented_public_api_loose__deep.snap +5 -0
  361. simplint-0.4.0/tests/fixtures/docstrings/undocumented_public_api/undocumented_public_api_loose__extra.snap +5 -0
  362. simplint-0.4.0/tests/fixtures/docstrings/undocumented_public_api/undocumented_public_api_loose__impl.snap +5 -0
  363. simplint-0.4.0/tests/fixtures/docstrings/undocumented_public_api/undocumented_public_api_loose__stars.snap +5 -0
  364. simplint-0.4.0/tests/fixtures/docstrings/undocumented_public_api/undocumented_public_api_switched.snap +7 -0
  365. simplint-0.4.0/tests/fixtures/imports/absolute_sibling_import/absolute_sibling_import_package___init__.snap +11 -0
  366. simplint-0.4.0/tests/fixtures/imports/absolute_sibling_import/absolute_sibling_import_package_sub_module.snap +14 -0
  367. simplint-0.4.0/tests/fixtures/imports/absolute_sibling_import/absolute_sibling_import_package_sub_remote_worker.snap +56 -0
  368. simplint-0.4.0/tests/fixtures/imports/dependency_import_guard/dependency_import_guard.snap +65 -0
  369. simplint-0.4.0/tests/fixtures/imports/dependency_import_guard/dependency_import_guard_py310.snap +68 -0
  370. simplint-0.4.0/tests/fixtures/imports/future_annotations/future_annotations.snap +11 -0
  371. simplint-0.4.0/tests/fixtures/imports/future_annotations/future_annotations_checking.snap +14 -0
  372. simplint-0.4.0/tests/fixtures/imports/future_annotations/future_annotations_joined.snap +5 -0
  373. simplint-0.4.0/tests/fixtures/imports/future_annotations/future_annotations_py310.snap +5 -0
  374. simplint-0.4.0/tests/fixtures/imports/module_attribute_import/module_attribute_import_writers_module_alias.snap +9 -0
  375. simplint-0.4.0/tests/fixtures/imports/module_attribute_import/module_attribute_import_writers_module_clash.snap +5 -0
  376. simplint-0.4.0/tests/fixtures/imports/module_attribute_import/module_attribute_import_writers_module_dunder.snap +5 -0
  377. simplint-0.4.0/tests/fixtures/imports/module_attribute_import/module_attribute_import_writers_module_fix.snap +11 -0
  378. simplint-0.4.0/tests/fixtures/imports/module_attribute_import/module_attribute_import_writers_module_mixed.snap +5 -0
  379. simplint-0.4.0/tests/fixtures/imports/module_attribute_import/module_attribute_import_writers_module_patched.snap +5 -0
  380. simplint-0.4.0/tests/fixtures/imports/module_attribute_import/module_attribute_import_writers_module_rebound.snap +5 -0
  381. simplint-0.4.0/tests/fixtures/imports/module_attribute_import/module_attribute_import_writers_module_third_party.snap +5 -0
  382. simplint-0.4.0/tests/fixtures/imports/module_attribute_import/module_attribute_import_writers_module_undefined.snap +5 -0
  383. simplint-0.4.0/tests/fixtures/imports/module_attribute_import/module_attribute_import_writers_module_value.snap +5 -0
  384. simplint-0.4.0/tests/fixtures/imports/module_attribute_import/tests/test_writers_patch.py +6 -0
  385. simplint-0.4.0/tests/fixtures/imports/module_attribute_import/writers/__init__.py +1 -0
  386. simplint-0.4.0/tests/fixtures/imports/module_attribute_import/writers/findings.py +5 -0
  387. simplint-0.4.0/tests/fixtures/imports/module_attribute_import/writers/module_alias.py +3 -0
  388. simplint-0.4.0/tests/fixtures/imports/module_attribute_import/writers/module_clash.py +4 -0
  389. simplint-0.4.0/tests/fixtures/imports/module_attribute_import/writers/module_dunder.py +3 -0
  390. simplint-0.4.0/tests/fixtures/imports/module_attribute_import/writers/module_fix.py +4 -0
  391. simplint-0.4.0/tests/fixtures/imports/module_attribute_import/writers/module_mixed.py +4 -0
  392. simplint-0.4.0/tests/fixtures/imports/module_attribute_import/writers/module_patched.py +3 -0
  393. simplint-0.4.0/tests/fixtures/imports/module_attribute_import/writers/module_rebound.py +4 -0
  394. simplint-0.4.0/tests/fixtures/imports/module_attribute_import/writers/module_third_party.py +3 -0
  395. simplint-0.4.0/tests/fixtures/imports/module_attribute_import/writers/module_undefined.py +3 -0
  396. simplint-0.4.0/tests/fixtures/imports/module_attribute_import/writers/module_value.py +3 -0
  397. simplint-0.4.0/tests/fixtures/imports/module_attribute_import/writers/patched.py +2 -0
  398. simplint-0.4.0/tests/fixtures/imports/module_attribute_import/writers/registry.py +2 -0
  399. simplint-0.4.0/tests/fixtures/layout/definition_before_use/definition_before_use.snap +136 -0
  400. simplint-0.4.0/tests/fixtures/layout/definition_before_use/definition_before_use_annotations.snap +18 -0
  401. simplint-0.4.0/tests/fixtures/layout/definition_before_use/definition_before_use_annotations_py310.snap +5 -0
  402. simplint-0.4.0/tests/fixtures/layout/definition_before_use/definition_before_use_classbody.snap +5 -0
  403. simplint-0.4.0/tests/fixtures/layout/definition_before_use/definition_before_use_decorated.snap +49 -0
  404. simplint-0.4.0/tests/fixtures/layout/definition_before_use/definition_before_use_decorated_py310.snap +49 -0
  405. simplint-0.4.0/tests/fixtures/layout/definition_before_use/definition_before_use_floating.snap +5 -0
  406. simplint-0.4.0/tests/fixtures/layout/definition_before_use/definition_before_use_import_time.snap +55 -0
  407. simplint-0.4.0/tests/fixtures/layout/definition_before_use/definition_before_use_nonl.snap +12 -0
  408. simplint-0.4.0/tests/fixtures/layout/single_user_constant/single_user_constant.snap +214 -0
  409. simplint-0.4.0/tests/fixtures/layout/single_user_constant/single_user_constant_all.snap +30 -0
  410. simplint-0.4.0/tests/fixtures/layout/single_user_constant/single_user_constant_dynamic.snap +14 -0
  411. simplint-0.4.0/tests/fixtures/layout/single_user_constant/single_user_constant_spacing.snap +16 -0
  412. simplint-0.4.0/tests/fixtures/logic/error_message_matching/error_message_matching.py +39 -0
  413. simplint-0.4.0/tests/fixtures/logic/error_message_matching/error_message_matching.snap +11 -0
  414. simplint-0.4.0/tests/fixtures/logic/forwarding_function/forwarding_function.snap +7 -0
  415. simplint-0.4.0/tests/fixtures/logic/single_caller_helper/single_caller_helper.py +172 -0
  416. simplint-0.4.0/tests/fixtures/logic/single_caller_helper/single_caller_helper.snap +8 -0
  417. simplint-0.4.0/tests/fixtures/logic/single_caller_helper/single_caller_helper_dynamic.py +9 -0
  418. simplint-0.4.0/tests/fixtures/logic/single_caller_helper/single_caller_helper_dynamic.snap +5 -0
  419. simplint-0.4.0/tests/fixtures/logic/single_use_variable/single_use_variable.py +291 -0
  420. simplint-0.4.0/tests/fixtures/logic/single_use_variable/single_use_variable.snap +295 -0
  421. simplint-0.4.0/tests/fixtures/logic/single_use_variable/single_use_variable_width.py +32 -0
  422. simplint-0.4.0/tests/fixtures/logic/single_use_variable/single_use_variable_width.snap +37 -0
  423. simplint-0.4.0/tests/fixtures/logic/string_concatenation/string_concatenation.snap +60 -0
  424. simplint-0.4.0/tests/fixtures/logic/string_concatenation/string_concatenation_kinds.py +473 -0
  425. simplint-0.4.0/tests/fixtures/logic/string_concatenation/string_concatenation_kinds.snap +630 -0
  426. simplint-0.4.0/tests/fixtures/logic/string_concatenation/string_concatenation_old_py310.snap +24 -0
  427. simplint-0.4.0/tests/fixtures/logic/string_concatenation/string_concatenation_types.snap +177 -0
  428. simplint-0.4.0/tests/fixtures/logic/unused_default/unused_default.py +107 -0
  429. simplint-0.4.0/tests/fixtures/logic/unused_default/unused_default.snap +121 -0
  430. simplint-0.4.0/tests/fixtures/logic/walrus_candidate/walrus_candidate.snap +123 -0
  431. simplint-0.4.0/tests/fixtures/logic/walrus_candidate/walrus_candidate_dynamic.snap +5 -0
  432. simplint-0.4.0/tests/fixtures/logic/walrus_candidate/walrus_candidate_gate.snap +5 -0
  433. simplint-0.4.0/tests/fixtures/logic/walrus_candidate/walrus_candidate_listed.snap +5 -0
  434. simplint-0.4.0/tests/fixtures/logic/walrus_candidate/walrus_candidate_py37.snap +5 -0
  435. simplint-0.4.0/tests/fixtures/logic/walrus_candidate/walrus_candidate_width.py +86 -0
  436. simplint-0.4.0/tests/fixtures/logic/walrus_candidate/walrus_candidate_width.snap +91 -0
  437. simplint-0.4.0/tests/fixtures/naming/module_variable_case/module_variable_case.snap +39 -0
  438. simplint-0.4.0/tests/fixtures/naming/module_variable_case/module_variable_case_alembic.snap +23 -0
  439. simplint-0.4.0/tests/fixtures/naming/module_variable_case/module_variable_case_ann.snap +9 -0
  440. simplint-0.4.0/tests/fixtures/naming/module_variable_case/module_variable_case_conflict.snap +10 -0
  441. simplint-0.4.0/tests/fixtures/naming/module_variable_case/module_variable_case_dbapi.snap +10 -0
  442. simplint-0.4.0/tests/fixtures/naming/module_variable_case/module_variable_case_frameworks.snap +15 -0
  443. simplint-0.4.0/tests/fixtures/naming/module_variable_case/module_variable_case_gunicorn.snap +12 -0
  444. simplint-0.4.0/tests/fixtures/naming/module_variable_case/module_variable_case_kinds.snap +27 -0
  445. simplint-0.4.0/tests/fixtures/naming/module_variable_case/module_variable_case_lookalikes.snap +29 -0
  446. simplint-0.4.0/tests/fixtures/naming/module_variable_case/module_variable_case_noall.snap +17 -0
  447. simplint-0.4.0/tests/fixtures/naming/module_variable_case/module_variable_case_ply.snap +26 -0
  448. simplint-0.4.0/tests/fixtures/naming/module_variable_case/module_variable_case_ply_table.snap +5 -0
  449. simplint-0.4.0/tests/fixtures/naming/module_variable_case/module_variable_case_rename.snap +57 -0
  450. simplint-0.4.0/tests/fixtures/naming/module_variable_case/module_variable_case_scopes.snap +5 -0
  451. simplint-0.4.0/tests/fixtures/naming/module_variable_case/module_variable_case_strings.snap +15 -0
  452. simplint-0.4.0/tests/fixtures/naming/module_variable_case/module_variable_case_typer.snap +10 -0
  453. simplint-0.4.0/tests/fixtures/naming/single_letter_name/single_letter_name.py +47 -0
  454. simplint-0.4.0/tests/fixtures/naming/single_letter_name/single_letter_name.snap +20 -0
  455. simplint-0.4.0/tests/fixtures/testing/conditional_in_test/conditional_in_test.snap +7 -0
  456. simplint-0.4.0/tests/fixtures/testing/conditional_in_test/conditional_in_test_multiline_module_docstring_ok.snap +5 -0
  457. simplint-0.4.0/tests/fixtures/testing/constant_assert/constant_assert.snap +73 -0
  458. simplint-0.4.0/tests/fixtures/testing/mock_attribute_assignment/mock_attribute_assignment.snap +69 -0
  459. simplint-0.4.0/tests/fixtures/testing/mock_without_spec/mock_without_spec.snap +10 -0
  460. simplint-0.4.0/tests/fixtures/testing/parametrize_without_id/parametrize_without_id.snap +7 -0
  461. simplint-0.4.0/tests/fixtures/testing/sleep_in_test/sleep_in_test.snap +8 -0
  462. simplint-0.4.0/tests/fixtures/testing/sleep_in_test/sleep_in_test_tests_test_sleep_patched.snap +5 -0
  463. simplint-0.4.0/tests/fixtures/testing/sleep_in_test/tests/test_sleep_in_test.py +32 -0
  464. simplint-0.4.0/tests/fixtures/testing/sleep_in_test/tests/test_sleep_patched.py +16 -0
  465. simplint-0.4.0/tests/fixtures/testing/split_composite_assert/split_composite_assert.snap +62 -0
  466. simplint-0.4.0/tests/fixtures/testing/split_composite_assert/tests/test_split_composite_assert.py +55 -0
  467. simplint-0.4.0/tests/fixtures/testing/test_class/test_class.snap +131 -0
  468. simplint-0.4.0/tests/fixtures/testing/test_class/test_class_multiline_module_docstring_ok.snap +5 -0
  469. simplint-0.4.0/tests/fixtures/testing/test_class/tests/test_class.py +114 -0
  470. simplint-0.4.0/tests/fixtures/typing/callable_ellipsis/callable_ellipsis.snap +6 -0
  471. simplint-0.4.0/tests/fixtures/typing/imprecise_annotation/imprecise_annotation.py +72 -0
  472. simplint-0.4.0/tests/fixtures/typing/imprecise_annotation/imprecise_annotation.snap +14 -0
  473. simplint-0.4.0/tests/fixtures/typing/missing_final/missing_final.py +37 -0
  474. simplint-0.4.0/tests/fixtures/typing/missing_final/missing_final.snap +56 -0
  475. simplint-0.4.0/tests/fixtures/typing/missing_final/missing_final_alias.snap +9 -0
  476. simplint-0.4.0/tests/fixtures/typing/missing_final/missing_final_bare.snap +12 -0
  477. simplint-0.4.0/tests/fixtures/typing/missing_final/missing_final_branch.snap +15 -0
  478. simplint-0.4.0/tests/fixtures/typing/missing_final/missing_final_checking.snap +12 -0
  479. simplint-0.4.0/tests/fixtures/typing/missing_final/missing_final_checking_py310.snap +12 -0
  480. simplint-0.4.0/tests/fixtures/typing/missing_final/missing_final_future_py310.snap +14 -0
  481. simplint-0.4.0/tests/fixtures/typing/missing_final/missing_final_gate.snap +5 -0
  482. simplint-0.4.0/tests/fixtures/typing/missing_final/missing_final_module.snap +13 -0
  483. simplint-0.4.0/tests/fixtures/typing/missing_final/missing_final_new.snap +13 -0
  484. simplint-0.4.0/tests/fixtures/typing/missing_final/missing_final_order.snap +15 -0
  485. simplint-0.4.0/tests/fixtures/typing/missing_final/missing_final_py37.snap +5 -0
  486. simplint-0.4.0/tests/fixtures/typing/missing_final/missing_final_sorted.snap +9 -0
  487. simplint-0.4.0/tests/fixtures/typing/missing_final/missing_final_typing.snap +9 -0
  488. simplint-0.4.0/tests/fixtures/typing/vars_call/vars_call.snap +5 -0
  489. simplint-0.4.0/tests/fixtures/typing/vars_call/vars_call_bound.snap +5 -0
  490. simplint-0.4.0/tests/input.rs +57 -0
  491. simplint-0.4.0/tests/layout.rs +246 -0
  492. simplint-0.4.0/tests/output.rs +195 -0
  493. simplint-0.4.0/tests/project_index.rs +676 -0
  494. simplint-0.4.0/tests/rules/api.rs +88 -0
  495. simplint-0.4.0/tests/rules/classes.rs +18 -0
  496. simplint-0.4.0/tests/rules/comments.rs +11 -0
  497. simplint-0.4.0/tests/rules/docstrings.rs +169 -0
  498. simplint-0.4.0/tests/rules/imports.rs +32 -0
  499. simplint-0.4.0/tests/rules/layout.rs +37 -0
  500. simplint-0.4.0/tests/rules/logic.rs +171 -0
  501. simplint-0.4.0/tests/rules/main.rs +13 -0
  502. simplint-0.4.0/tests/rules/naming.rs +48 -0
  503. simplint-0.4.0/tests/rules/testing.rs +18 -0
  504. simplint-0.4.0/tests/rules/typing.rs +25 -0
  505. simplint-0.4.0/tests/snapshots/output__format_azure.snap +7 -0
  506. simplint-0.4.0/tests/snapshots/output__format_concise.snap +9 -0
  507. simplint-0.4.0/tests/snapshots/output__format_full.snap +27 -0
  508. simplint-0.4.0/tests/snapshots/output__format_github.snap +7 -0
  509. simplint-0.4.0/tests/snapshots/output__format_gitlab.snap +45 -0
  510. simplint-0.4.0/tests/snapshots/output__format_grouped.snap +11 -0
  511. simplint-0.4.0/tests/snapshots/output__format_json-lines.snap +7 -0
  512. simplint-0.4.0/tests/snapshots/output__format_json.snap +61 -0
  513. simplint-0.4.0/tests/snapshots/output__format_junit.snap +22 -0
  514. simplint-0.4.0/tests/snapshots/output__format_pylint.snap +7 -0
  515. simplint-0.4.0/tests/snapshots/output__format_rdjson.snap +69 -0
  516. simplint-0.4.0/tests/snapshots/output__format_sarif.snap +138 -0
  517. simplint-0.4.0/tests/subcommands.rs +254 -0
  518. simplint-0.4.0/tests/suppressions.rs +185 -0
  519. simplint-0.4.0/tests/tasks/test_check_sdist.py +39 -0
  520. simplint-0.4.0/tests/tasks/test_ecosystem.py +239 -0
  521. simplint-0.4.0/tests/tasks/test_generate_changelog.py +119 -0
  522. simplint-0.4.0/tests/tasks/test_pgo.py +315 -0
  523. simplint-0.4.0/tests/watch.rs +66 -0
  524. simplint-0.4.0/tests/wheel/test_cli.py +52 -0
  525. simplint-0.4.0/tox.toml +182 -0
  526. simplint-0.2.2/CHANGELOG.md +0 -520
  527. simplint-0.2.2/CONTRIBUTING.md +0 -157
  528. simplint-0.2.2/Cargo.lock +0 -3944
  529. simplint-0.2.2/Cargo.toml +0 -84
  530. simplint-0.2.2/PKG-INFO +0 -410
  531. simplint-0.2.2/README.md +0 -35
  532. simplint-0.2.2/README.rst +0 -379
  533. simplint-0.2.2/docs/_static/rules.js +0 -54
  534. simplint-0.2.2/docs/_static/simplint.css +0 -634
  535. simplint-0.2.2/docs/cli.rst +0 -11
  536. simplint-0.2.2/docs/conf.py +0 -297
  537. simplint-0.2.2/docs/configuration.rst +0 -257
  538. simplint-0.2.2/docs/index.rst +0 -190
  539. simplint-0.2.2/docs/rules.rst +0 -60
  540. simplint-0.2.2/ignore-words.txt +0 -5
  541. simplint-0.2.2/pylock.toml +0 -3039
  542. simplint-0.2.2/pyproject.toml +0 -211
  543. simplint-0.2.2/src/cli/args.rs +0 -611
  544. simplint-0.2.2/src/cli/check.rs +0 -517
  545. simplint-0.2.2/src/cli/diagnostics.rs +0 -178
  546. simplint-0.2.2/src/cli/mod.rs +0 -6
  547. simplint-0.2.2/src/cli/printer.rs +0 -373
  548. simplint-0.2.2/src/cli/subcommands.rs +0 -290
  549. simplint-0.2.2/src/fix/mod.rs +0 -274
  550. simplint-0.2.2/src/fix/ruff.rs +0 -320
  551. simplint-0.2.2/src/lint/checker.rs +0 -235
  552. simplint-0.2.2/src/lint/mod.rs +0 -112
  553. simplint-0.2.2/src/lint/noqa.rs +0 -262
  554. simplint-0.2.2/src/lint/registry.rs +0 -237
  555. simplint-0.2.2/src/lint/walker.rs +0 -144
  556. simplint-0.2.2/src/main.rs +0 -123
  557. simplint-0.2.2/src/project/cache.rs +0 -330
  558. simplint-0.2.2/src/project/constructors.rs +0 -457
  559. simplint-0.2.2/src/project/facts.rs +0 -343
  560. simplint-0.2.2/src/project/index.rs +0 -546
  561. simplint-0.2.2/src/project/mod.rs +0 -8
  562. simplint-0.2.2/src/project/receivers.rs +0 -545
  563. simplint-0.2.2/src/rules/comments/long_paragraph.md +0 -35
  564. simplint-0.2.2/src/rules/comments/long_paragraph.rs +0 -84
  565. simplint-0.2.2/src/rules/comments/mod.rs +0 -7
  566. simplint-0.2.2/src/rules/comments/section_comment.md +0 -45
  567. simplint-0.2.2/src/rules/comments/suppression_without_reason.md +0 -50
  568. simplint-0.2.2/src/rules/comments/suppression_without_reason.rs +0 -104
  569. simplint-0.2.2/src/rules/dataclasses/dataclass_kw_only.md +0 -73
  570. simplint-0.2.2/src/rules/dataclasses/dataclass_kw_only.rs +0 -151
  571. simplint-0.2.2/src/rules/dataclasses/dataclass_options.md +0 -78
  572. simplint-0.2.2/src/rules/dataclasses/dataclass_options.rs +0 -191
  573. simplint-0.2.2/src/rules/dataclasses/mod.rs +0 -99
  574. simplint-0.2.2/src/rules/docstrings/function_docstring.md +0 -129
  575. simplint-0.2.2/src/rules/docstrings/function_docstring.rs +0 -283
  576. simplint-0.2.2/src/rules/docstrings/mod.rs +0 -143
  577. simplint-0.2.2/src/rules/docstrings/multiline_module_docstring.md +0 -29
  578. simplint-0.2.2/src/rules/docstrings/multiline_module_docstring.rs +0 -20
  579. simplint-0.2.2/src/rules/docstrings/test_module_docstring.md +0 -52
  580. simplint-0.2.2/src/rules/docstrings/undocumented_public_api.md +0 -67
  581. simplint-0.2.2/src/rules/docstrings/undocumented_public_api.rs +0 -48
  582. simplint-0.2.2/src/rules/exports/all_format.md +0 -49
  583. simplint-0.2.2/src/rules/exports/all_format.rs +0 -91
  584. simplint-0.2.2/src/rules/exports/all_not_last.md +0 -52
  585. simplint-0.2.2/src/rules/exports/all_not_last.rs +0 -52
  586. simplint-0.2.2/src/rules/exports/missing_from_all.md +0 -107
  587. simplint-0.2.2/src/rules/exports/missing_from_all.rs +0 -145
  588. simplint-0.2.2/src/rules/exports/mod.rs +0 -127
  589. simplint-0.2.2/src/rules/imports/absolute_sibling_import.md +0 -60
  590. simplint-0.2.2/src/rules/imports/absolute_sibling_import.rs +0 -110
  591. simplint-0.2.2/src/rules/imports/dependency_import_guard.md +0 -61
  592. simplint-0.2.2/src/rules/imports/dependency_import_guard.rs +0 -126
  593. simplint-0.2.2/src/rules/imports/future_annotations.md +0 -54
  594. simplint-0.2.2/src/rules/imports/init_module_content.md +0 -34
  595. simplint-0.2.2/src/rules/imports/init_module_content.rs +0 -14
  596. simplint-0.2.2/src/rules/imports/mod.rs +0 -9
  597. simplint-0.2.2/src/rules/mod.rs +0 -213
  598. simplint-0.2.2/src/rules/naming/mod.rs +0 -125
  599. simplint-0.2.2/src/rules/naming/module_variable_case.md +0 -122
  600. simplint-0.2.2/src/rules/naming/module_variable_case.rs +0 -265
  601. simplint-0.2.2/src/rules/naming/single_letter_name.md +0 -48
  602. simplint-0.2.2/src/rules/naming/single_letter_name.rs +0 -81
  603. simplint-0.2.2/src/rules/naming/unexported_public_name.md +0 -74
  604. simplint-0.2.2/src/rules/naming/unexported_public_name.rs +0 -50
  605. simplint-0.2.2/src/rules/strings/kinds.rs +0 -1197
  606. simplint-0.2.2/src/rules/strings/mod.rs +0 -2
  607. simplint-0.2.2/src/rules/strings/string_concatenation.md +0 -72
  608. simplint-0.2.2/src/rules/strings/string_concatenation.rs +0 -201
  609. simplint-0.2.2/src/rules/structure/definition_before_use.md +0 -105
  610. simplint-0.2.2/src/rules/structure/definition_before_use.rs +0 -370
  611. simplint-0.2.2/src/rules/structure/forwarding_function.md +0 -47
  612. simplint-0.2.2/src/rules/structure/forwarding_function.rs +0 -82
  613. simplint-0.2.2/src/rules/structure/mod.rs +0 -16
  614. simplint-0.2.2/src/rules/structure/single_user_constant.md +0 -89
  615. simplint-0.2.2/src/rules/structure/single_user_constant.rs +0 -337
  616. simplint-0.2.2/src/rules/structure/walrus_candidate.md +0 -80
  617. simplint-0.2.2/src/rules/structure/walrus_candidate.rs +0 -239
  618. simplint-0.2.2/src/rules/testing/conditional_in_test.md +0 -40
  619. simplint-0.2.2/src/rules/testing/constant_assert.md +0 -39
  620. simplint-0.2.2/src/rules/testing/constant_assert.rs +0 -54
  621. simplint-0.2.2/src/rules/testing/mock_attribute_assignment.md +0 -45
  622. simplint-0.2.2/src/rules/testing/mock_attribute_assignment.rs +0 -119
  623. simplint-0.2.2/src/rules/testing/mock_without_spec.md +0 -47
  624. simplint-0.2.2/src/rules/testing/mock_without_spec.rs +0 -68
  625. simplint-0.2.2/src/rules/testing/mod.rs +0 -21
  626. simplint-0.2.2/src/rules/testing/parametrize_without_id.md +0 -46
  627. simplint-0.2.2/src/rules/testing/test_class.md +0 -45
  628. simplint-0.2.2/src/rules/testing/test_class.rs +0 -124
  629. simplint-0.2.2/src/rules/typing/callable_ellipsis.md +0 -37
  630. simplint-0.2.2/src/rules/typing/missing_final.md +0 -84
  631. simplint-0.2.2/src/rules/typing/missing_final.rs +0 -220
  632. simplint-0.2.2/src/rules/typing/mod.rs +0 -6
  633. simplint-0.2.2/src/rules/typing/object_annotation.md +0 -40
  634. simplint-0.2.2/src/rules/typing/object_annotation.rs +0 -44
  635. simplint-0.2.2/src/rules/typing/vars_call.md +0 -37
  636. simplint-0.2.2/src/settings/conflicts.rs +0 -257
  637. simplint-0.2.2/src/settings/file.rs +0 -75
  638. simplint-0.2.2/src/settings/metadata.rs +0 -67
  639. simplint-0.2.2/src/settings/mod.rs +0 -353
  640. simplint-0.2.2/src/settings/options.rs +0 -402
  641. simplint-0.2.2/tasks/assemble_release.py +0 -110
  642. simplint-0.2.2/tasks/cargo_version.py +0 -24
  643. simplint-0.2.2/tasks/check_sdist.py +0 -56
  644. simplint-0.2.2/tasks/ecosystem.py +0 -309
  645. simplint-0.2.2/tasks/generate_changelog.py +0 -89
  646. simplint-0.2.2/tasks/generate_readme.py +0 -135
  647. simplint-0.2.2/tasks/pgo.py +0 -371
  648. simplint-0.2.2/tasks/pgo.toml +0 -8
  649. simplint-0.2.2/tasks/python_versions.py +0 -177
  650. simplint-0.2.2/tasks/update_cargo_edit.py +0 -159
  651. simplint-0.2.2/tests/cache.rs +0 -248
  652. simplint-0.2.2/tests/check.rs +0 -350
  653. simplint-0.2.2/tests/common/mod.rs +0 -280
  654. simplint-0.2.2/tests/configuration.rs +0 -472
  655. simplint-0.2.2/tests/conflicts.rs +0 -132
  656. simplint-0.2.2/tests/fix.rs +0 -465
  657. simplint-0.2.2/tests/fixtures/comments/long_paragraph/long_paragraph.snap +0 -7
  658. simplint-0.2.2/tests/fixtures/comments/suppression_without_reason/suppression_without_reason.py +0 -23
  659. simplint-0.2.2/tests/fixtures/comments/suppression_without_reason/suppression_without_reason.snap +0 -18
  660. simplint-0.2.2/tests/fixtures/dataclasses/dataclass_kw_only/dataclass_kw_only.snap +0 -30
  661. simplint-0.2.2/tests/fixtures/dataclasses/dataclass_kw_only/dataclass_kw_only_calls.snap +0 -141
  662. simplint-0.2.2/tests/fixtures/dataclasses/dataclass_options/dataclass_options.snap +0 -93
  663. simplint-0.2.2/tests/fixtures/dataclasses/dataclass_options/dataclass_options_receivers.snap +0 -141
  664. simplint-0.2.2/tests/fixtures/dataclasses/dataclass_options/dataclass_options_runtime.snap +0 -100
  665. simplint-0.2.2/tests/fixtures/docstrings/function_docstring/function_docstring.snap +0 -54
  666. simplint-0.2.2/tests/fixtures/docstrings/function_docstring/function_docstring_contract.snap +0 -148
  667. simplint-0.2.2/tests/fixtures/docstrings/function_docstring/function_docstring_dynamic.snap +0 -19
  668. simplint-0.2.2/tests/fixtures/docstrings/function_docstring/function_docstring_exported.snap +0 -26
  669. simplint-0.2.2/tests/fixtures/docstrings/function_docstring/function_docstring_runtime.snap +0 -86
  670. simplint-0.2.2/tests/fixtures/docstrings/function_docstring/function_docstring_undocumented_public_api_imported.snap +0 -17
  671. simplint-0.2.2/tests/fixtures/docstrings/multiline_module_docstring/multiline_module_docstring.snap +0 -5
  672. simplint-0.2.2/tests/fixtures/docstrings/test_module_docstring/test_module_docstring.snap +0 -11
  673. simplint-0.2.2/tests/fixtures/docstrings/test_module_docstring/test_module_docstring_inline.snap +0 -9
  674. simplint-0.2.2/tests/fixtures/docstrings/undocumented_public_api/undocumented_public_api.snap +0 -10
  675. simplint-0.2.2/tests/fixtures/docstrings/undocumented_public_api/undocumented_public_api_imported.snap +0 -5
  676. simplint-0.2.2/tests/fixtures/exports/all_format/all_format.snap +0 -34
  677. simplint-0.2.2/tests/fixtures/exports/all_format/all_format_bare.snap +0 -14
  678. simplint-0.2.2/tests/fixtures/exports/all_format/all_format_tuple.snap +0 -25
  679. simplint-0.2.2/tests/fixtures/exports/all_not_last/all_not_last.snap +0 -15
  680. simplint-0.2.2/tests/fixtures/exports/all_not_last/all_not_last_ann.snap +0 -5
  681. simplint-0.2.2/tests/fixtures/exports/all_not_last/all_not_last_eof.snap +0 -10
  682. simplint-0.2.2/tests/fixtures/exports/all_not_last/all_not_last_fenced.snap +0 -19
  683. simplint-0.2.2/tests/fixtures/exports/all_not_last/all_not_last_negated.snap +0 -15
  684. simplint-0.2.2/tests/fixtures/exports/all_not_last/all_not_last_nested.snap +0 -5
  685. simplint-0.2.2/tests/fixtures/exports/all_not_last/all_not_last_nonl.snap +0 -10
  686. simplint-0.2.2/tests/fixtures/exports/all_not_last/all_not_last_reversed.snap +0 -15
  687. simplint-0.2.2/tests/fixtures/exports/missing_from_all/missing_from_all.snap +0 -23
  688. simplint-0.2.2/tests/fixtures/exports/missing_from_all/missing_from_all_aug.snap +0 -14
  689. simplint-0.2.2/tests/fixtures/exports/missing_from_all/missing_from_all_bare.snap +0 -23
  690. simplint-0.2.2/tests/fixtures/exports/missing_from_all/missing_from_all_empty.snap +0 -13
  691. simplint-0.2.2/tests/fixtures/exports/missing_from_all/missing_from_all_guard.snap +0 -17
  692. simplint-0.2.2/tests/fixtures/exports/missing_from_all/missing_from_all_hanging.snap +0 -28
  693. simplint-0.2.2/tests/fixtures/exports/missing_from_all/missing_from_all_hanging_comment.snap +0 -21
  694. simplint-0.2.2/tests/fixtures/exports/missing_from_all/missing_from_all_imported.snap +0 -19
  695. simplint-0.2.2/tests/fixtures/exports/missing_from_all/missing_from_all_multiline.snap +0 -20
  696. simplint-0.2.2/tests/fixtures/exports/missing_from_all/missing_from_all_noall.snap +0 -13
  697. simplint-0.2.2/tests/fixtures/exports/missing_from_all/missing_from_all_scripts.snap +0 -13
  698. simplint-0.2.2/tests/fixtures/exports/missing_from_all/missing_from_all_sorted.snap +0 -30
  699. simplint-0.2.2/tests/fixtures/imports/absolute_sibling_import/absolute_sibling_import_package___init__.snap +0 -11
  700. simplint-0.2.2/tests/fixtures/imports/absolute_sibling_import/absolute_sibling_import_package_sub_module.snap +0 -14
  701. simplint-0.2.2/tests/fixtures/imports/absolute_sibling_import/absolute_sibling_import_package_sub_remote_worker.snap +0 -56
  702. simplint-0.2.2/tests/fixtures/imports/dependency_import_guard/dependency_import_guard.snap +0 -65
  703. simplint-0.2.2/tests/fixtures/imports/dependency_import_guard/dependency_import_guard_py310.snap +0 -68
  704. simplint-0.2.2/tests/fixtures/imports/future_annotations/future_annotations.snap +0 -11
  705. simplint-0.2.2/tests/fixtures/imports/future_annotations/future_annotations_checking.snap +0 -14
  706. simplint-0.2.2/tests/fixtures/imports/future_annotations/future_annotations_joined.snap +0 -5
  707. simplint-0.2.2/tests/fixtures/imports/init_module_content/init_module_content_package___init__.snap +0 -6
  708. simplint-0.2.2/tests/fixtures/naming/module_variable_case/module_variable_case.snap +0 -40
  709. simplint-0.2.2/tests/fixtures/naming/module_variable_case/module_variable_case_alembic.snap +0 -23
  710. simplint-0.2.2/tests/fixtures/naming/module_variable_case/module_variable_case_ann.snap +0 -9
  711. simplint-0.2.2/tests/fixtures/naming/module_variable_case/module_variable_case_conflict.snap +0 -10
  712. simplint-0.2.2/tests/fixtures/naming/module_variable_case/module_variable_case_dbapi.snap +0 -10
  713. simplint-0.2.2/tests/fixtures/naming/module_variable_case/module_variable_case_frameworks.snap +0 -15
  714. simplint-0.2.2/tests/fixtures/naming/module_variable_case/module_variable_case_gunicorn.snap +0 -12
  715. simplint-0.2.2/tests/fixtures/naming/module_variable_case/module_variable_case_kinds.snap +0 -27
  716. simplint-0.2.2/tests/fixtures/naming/module_variable_case/module_variable_case_lookalikes.snap +0 -29
  717. simplint-0.2.2/tests/fixtures/naming/module_variable_case/module_variable_case_noall.snap +0 -18
  718. simplint-0.2.2/tests/fixtures/naming/module_variable_case/module_variable_case_ply.snap +0 -26
  719. simplint-0.2.2/tests/fixtures/naming/module_variable_case/module_variable_case_rename.snap +0 -57
  720. simplint-0.2.2/tests/fixtures/naming/module_variable_case/module_variable_case_scopes.snap +0 -5
  721. simplint-0.2.2/tests/fixtures/naming/module_variable_case/module_variable_case_strings.snap +0 -15
  722. simplint-0.2.2/tests/fixtures/naming/module_variable_case/module_variable_case_typer.snap +0 -10
  723. simplint-0.2.2/tests/fixtures/naming/single_letter_name/single_letter_name.py +0 -45
  724. simplint-0.2.2/tests/fixtures/naming/single_letter_name/single_letter_name.snap +0 -18
  725. simplint-0.2.2/tests/fixtures/naming/unexported_public_name/unexported_public_name.snap +0 -39
  726. simplint-0.2.2/tests/fixtures/naming/unexported_public_name/unexported_public_name_extend.snap +0 -25
  727. simplint-0.2.2/tests/fixtures/naming/unexported_public_name/unexported_public_name_ply.snap +0 -25
  728. simplint-0.2.2/tests/fixtures/strings/string_concatenation/string_concatenation.snap +0 -60
  729. simplint-0.2.2/tests/fixtures/strings/string_concatenation/string_concatenation_kinds.py +0 -383
  730. simplint-0.2.2/tests/fixtures/strings/string_concatenation/string_concatenation_kinds.snap +0 -538
  731. simplint-0.2.2/tests/fixtures/strings/string_concatenation/string_concatenation_old_py310.snap +0 -24
  732. simplint-0.2.2/tests/fixtures/strings/string_concatenation/string_concatenation_types.snap +0 -177
  733. simplint-0.2.2/tests/fixtures/structure/definition_before_use/definition_before_use.snap +0 -136
  734. simplint-0.2.2/tests/fixtures/structure/definition_before_use/definition_before_use_annotations.snap +0 -18
  735. simplint-0.2.2/tests/fixtures/structure/definition_before_use/definition_before_use_decorated.snap +0 -49
  736. simplint-0.2.2/tests/fixtures/structure/definition_before_use/definition_before_use_decorated_py310.snap +0 -49
  737. simplint-0.2.2/tests/fixtures/structure/definition_before_use/definition_before_use_floating.snap +0 -5
  738. simplint-0.2.2/tests/fixtures/structure/definition_before_use/definition_before_use_import_time.snap +0 -55
  739. simplint-0.2.2/tests/fixtures/structure/definition_before_use/definition_before_use_nonl.snap +0 -12
  740. simplint-0.2.2/tests/fixtures/structure/forwarding_function/forwarding_function.snap +0 -7
  741. simplint-0.2.2/tests/fixtures/structure/single_user_constant/single_user_constant.snap +0 -214
  742. simplint-0.2.2/tests/fixtures/structure/single_user_constant/single_user_constant_all.snap +0 -30
  743. simplint-0.2.2/tests/fixtures/structure/single_user_constant/single_user_constant_dynamic.snap +0 -14
  744. simplint-0.2.2/tests/fixtures/structure/single_user_constant/single_user_constant_spacing.snap +0 -16
  745. simplint-0.2.2/tests/fixtures/structure/walrus_candidate/walrus_candidate.snap +0 -123
  746. simplint-0.2.2/tests/fixtures/structure/walrus_candidate/walrus_candidate_width.py +0 -68
  747. simplint-0.2.2/tests/fixtures/structure/walrus_candidate/walrus_candidate_width.snap +0 -73
  748. simplint-0.2.2/tests/fixtures/testing/conditional_in_test/conditional_in_test.snap +0 -7
  749. simplint-0.2.2/tests/fixtures/testing/constant_assert/constant_assert.snap +0 -73
  750. simplint-0.2.2/tests/fixtures/testing/mock_attribute_assignment/mock_attribute_assignment.snap +0 -69
  751. simplint-0.2.2/tests/fixtures/testing/mock_without_spec/mock_without_spec.snap +0 -10
  752. simplint-0.2.2/tests/fixtures/testing/parametrize_without_id/parametrize_without_id.snap +0 -7
  753. simplint-0.2.2/tests/fixtures/testing/test_class/test_class.snap +0 -124
  754. simplint-0.2.2/tests/fixtures/testing/test_class/tests/test_class.py +0 -107
  755. simplint-0.2.2/tests/fixtures/typing/callable_ellipsis/callable_ellipsis.snap +0 -6
  756. simplint-0.2.2/tests/fixtures/typing/missing_final/missing_final.py +0 -31
  757. simplint-0.2.2/tests/fixtures/typing/missing_final/missing_final.snap +0 -46
  758. simplint-0.2.2/tests/fixtures/typing/missing_final/missing_final_alias.snap +0 -9
  759. simplint-0.2.2/tests/fixtures/typing/missing_final/missing_final_bare.snap +0 -12
  760. simplint-0.2.2/tests/fixtures/typing/missing_final/missing_final_branch.snap +0 -15
  761. simplint-0.2.2/tests/fixtures/typing/missing_final/missing_final_checking.snap +0 -12
  762. simplint-0.2.2/tests/fixtures/typing/missing_final/missing_final_checking_py310.snap +0 -12
  763. simplint-0.2.2/tests/fixtures/typing/missing_final/missing_final_future_py310.snap +0 -14
  764. simplint-0.2.2/tests/fixtures/typing/missing_final/missing_final_module.snap +0 -13
  765. simplint-0.2.2/tests/fixtures/typing/missing_final/missing_final_new.snap +0 -13
  766. simplint-0.2.2/tests/fixtures/typing/missing_final/missing_final_order.snap +0 -15
  767. simplint-0.2.2/tests/fixtures/typing/missing_final/missing_final_sorted.snap +0 -9
  768. simplint-0.2.2/tests/fixtures/typing/missing_final/missing_final_typing.snap +0 -9
  769. simplint-0.2.2/tests/fixtures/typing/object_annotation/object_annotation.py +0 -22
  770. simplint-0.2.2/tests/fixtures/typing/object_annotation/object_annotation.snap +0 -7
  771. simplint-0.2.2/tests/fixtures/typing/vars_call/vars_call.snap +0 -5
  772. simplint-0.2.2/tests/layout.rs +0 -246
  773. simplint-0.2.2/tests/output.rs +0 -195
  774. simplint-0.2.2/tests/project_index.rs +0 -441
  775. simplint-0.2.2/tests/rules/comments.rs +0 -10
  776. simplint-0.2.2/tests/rules/dataclasses.rs +0 -13
  777. simplint-0.2.2/tests/rules/docstrings.rs +0 -112
  778. simplint-0.2.2/tests/rules/exports.rs +0 -53
  779. simplint-0.2.2/tests/rules/imports.rs +0 -25
  780. simplint-0.2.2/tests/rules/main.rs +0 -13
  781. simplint-0.2.2/tests/rules/naming.rs +0 -54
  782. simplint-0.2.2/tests/rules/strings.rs +0 -11
  783. simplint-0.2.2/tests/rules/structure.rs +0 -139
  784. simplint-0.2.2/tests/rules/testing.rs +0 -15
  785. simplint-0.2.2/tests/rules/typing.rs +0 -25
  786. simplint-0.2.2/tests/snapshots/output__format_azure.snap +0 -7
  787. simplint-0.2.2/tests/snapshots/output__format_concise.snap +0 -9
  788. simplint-0.2.2/tests/snapshots/output__format_full.snap +0 -27
  789. simplint-0.2.2/tests/snapshots/output__format_github.snap +0 -7
  790. simplint-0.2.2/tests/snapshots/output__format_gitlab.snap +0 -45
  791. simplint-0.2.2/tests/snapshots/output__format_grouped.snap +0 -11
  792. simplint-0.2.2/tests/snapshots/output__format_json-lines.snap +0 -7
  793. simplint-0.2.2/tests/snapshots/output__format_json.snap +0 -61
  794. simplint-0.2.2/tests/snapshots/output__format_junit.snap +0 -22
  795. simplint-0.2.2/tests/snapshots/output__format_pylint.snap +0 -7
  796. simplint-0.2.2/tests/snapshots/output__format_rdjson.snap +0 -69
  797. simplint-0.2.2/tests/snapshots/output__format_sarif.snap +0 -138
  798. simplint-0.2.2/tests/subcommands.rs +0 -199
  799. simplint-0.2.2/tests/suppressions.rs +0 -176
  800. simplint-0.2.2/tests/tasks/test_check_sdist.py +0 -40
  801. simplint-0.2.2/tests/tasks/test_ecosystem.py +0 -240
  802. simplint-0.2.2/tests/tasks/test_generate_changelog.py +0 -67
  803. simplint-0.2.2/tests/tasks/test_generate_readme.py +0 -53
  804. simplint-0.2.2/tests/tasks/test_pgo.py +0 -305
  805. simplint-0.2.2/tests/tasks/test_update_cargo_edit.py +0 -162
  806. simplint-0.2.2/tests/watch.rs +0 -66
  807. simplint-0.2.2/tests/wheel/test_cli.py +0 -52
  808. simplint-0.2.2/tox.toml +0 -190
  809. simplint-0.2.2/uv.lock +0 -2431
  810. {simplint-0.2.2 → simplint-0.4.0}/CODE_OF_CONDUCT.md +0 -0
  811. {simplint-0.2.2 → simplint-0.4.0}/LICENSE.txt +0 -0
  812. {simplint-0.2.2 → simplint-0.4.0}/codecov.yml +0 -0
  813. {simplint-0.2.2 → simplint-0.4.0}/docs/__init__.py +0 -0
  814. {simplint-0.2.2 → simplint-0.4.0}/docs/_static/apple-touch-icon.png +0 -0
  815. {simplint-0.2.2 → simplint-0.4.0}/docs/_static/favicon.ico +0 -0
  816. {simplint-0.2.2 → simplint-0.4.0}/docs/_static/favicon.svg +0 -0
  817. {simplint-0.2.2 → simplint-0.4.0}/docs/_static/logo-192.png +0 -0
  818. {simplint-0.2.2 → simplint-0.4.0}/docs/_static/logo-512.png +0 -0
  819. {simplint-0.2.2 → simplint-0.4.0}/docs/_static/logo.png +0 -0
  820. {simplint-0.2.2 → simplint-0.4.0}/docs/_static/site.webmanifest +0 -0
  821. {simplint-0.2.2 → simplint-0.4.0}/docs/_static/wordmark-dark.png +0 -0
  822. {simplint-0.2.2 → simplint-0.4.0}/docs/_static/wordmark-light.png +0 -0
  823. {simplint-0.2.2 → simplint-0.4.0}/docs/_templates/base.html +0 -0
  824. {simplint-0.2.2 → simplint-0.4.0}/docs/simplint_cli.py +0 -0
  825. {simplint-0.2.2 → simplint-0.4.0}/rust-toolchain.toml +0 -0
  826. {simplint-0.2.2 → simplint-0.4.0}/src/cli/watch.rs +0 -0
  827. {simplint-0.2.2 → simplint-0.4.0}/src/fix/apply.rs +0 -0
  828. {simplint-0.2.2 → simplint-0.4.0}/src/fix/errors.rs +0 -0
  829. {simplint-0.2.2/src/fix → simplint-0.4.0/src}/layout.rs +0 -0
  830. {simplint-0.2.2 → simplint-0.4.0}/src/rules/comments/section_comment.rs +0 -0
  831. {simplint-0.2.2 → simplint-0.4.0}/src/rules/docstrings/test_module_docstring.rs +0 -0
  832. {simplint-0.2.2 → simplint-0.4.0}/src/rules/imports/future_annotations.rs +0 -0
  833. {simplint-0.2.2 → simplint-0.4.0}/src/rules/testing/conditional_in_test.rs +0 -0
  834. {simplint-0.2.2 → simplint-0.4.0}/src/rules/testing/parametrize_without_id.rs +0 -0
  835. {simplint-0.2.2 → simplint-0.4.0}/src/rules/typing/callable_ellipsis.rs +0 -0
  836. {simplint-0.2.2 → simplint-0.4.0}/src/rules/typing/vars_call.rs +0 -0
  837. {simplint-0.2.2 → simplint-0.4.0}/src/semantic/builder.rs +0 -0
  838. {simplint-0.2.2 → simplint-0.4.0}/src/semantic/mod.rs +0 -0
  839. {simplint-0.2.2 → simplint-0.4.0}/tasks/pgo_corpus.toml +0 -0
  840. {simplint-0.2.2/tests/fixtures/exports → simplint-0.4.0/tests/fixtures/api}/all_format/all_format.py +0 -0
  841. {simplint-0.2.2/tests/fixtures/exports → simplint-0.4.0/tests/fixtures/api}/all_format/all_format_bare.py +0 -0
  842. {simplint-0.2.2/tests/fixtures/exports → simplint-0.4.0/tests/fixtures/api}/all_format/all_format_tuple.py +0 -0
  843. {simplint-0.2.2/tests/fixtures/exports → simplint-0.4.0/tests/fixtures/api}/all_not_last/all_not_last.py +0 -0
  844. {simplint-0.2.2/tests/fixtures/exports → simplint-0.4.0/tests/fixtures/api}/all_not_last/all_not_last_ann.py +0 -0
  845. {simplint-0.2.2/tests/fixtures/exports → simplint-0.4.0/tests/fixtures/api}/all_not_last/all_not_last_eof.py +0 -0
  846. {simplint-0.2.2/tests/fixtures/exports → simplint-0.4.0/tests/fixtures/api}/all_not_last/all_not_last_fenced.py +0 -0
  847. {simplint-0.2.2/tests/fixtures/exports → simplint-0.4.0/tests/fixtures/api}/all_not_last/all_not_last_multiline_module_docstring_ok.snap +0 -0
  848. /simplint-0.2.2/tests/fixtures/dataclasses/dataclass_kw_only/dataclass_kw_only_py39.snap → /simplint-0.4.0/tests/fixtures/api/all_not_last/all_not_last_mutated.snap +0 -0
  849. {simplint-0.2.2/tests/fixtures/exports → simplint-0.4.0/tests/fixtures/api}/all_not_last/all_not_last_negated.py +0 -0
  850. {simplint-0.2.2/tests/fixtures/exports → simplint-0.4.0/tests/fixtures/api}/all_not_last/all_not_last_nested.py +0 -0
  851. {simplint-0.2.2/tests/fixtures/exports → simplint-0.4.0/tests/fixtures/api}/all_not_last/all_not_last_nonl.py +0 -0
  852. {simplint-0.2.2/tests/fixtures/exports → simplint-0.4.0/tests/fixtures/api}/all_not_last/all_not_last_reversed.py +0 -0
  853. {simplint-0.2.2/tests/fixtures/imports → simplint-0.4.0/tests/fixtures/api}/init_module_content/init_module_content_multiline_module_docstring_ok.snap +0 -0
  854. /simplint-0.2.2/tests/fixtures/docstrings/function_docstring/function_docstring_undocumented_public_api.snap → /simplint-0.4.0/tests/fixtures/api/init_module_content/init_module_content_package___init__.snap +0 -0
  855. {simplint-0.2.2/tests/fixtures/imports → simplint-0.4.0/tests/fixtures/api}/init_module_content/init_module_content_package_sub___init__.snap +0 -0
  856. {simplint-0.2.2/tests/fixtures/exports → simplint-0.4.0/tests/fixtures/api}/missing_from_all/consumer/use.py +0 -0
  857. {simplint-0.2.2/tests/fixtures/exports → simplint-0.4.0/tests/fixtures/api}/missing_from_all/missing_from_all.py +0 -0
  858. {simplint-0.2.2/tests/fixtures/exports → simplint-0.4.0/tests/fixtures/api}/missing_from_all/missing_from_all_aug.py +0 -0
  859. {simplint-0.2.2/tests/fixtures/exports → simplint-0.4.0/tests/fixtures/api}/missing_from_all/missing_from_all_bare.py +0 -0
  860. {simplint-0.2.2/tests/fixtures/exports → simplint-0.4.0/tests/fixtures/api}/missing_from_all/missing_from_all_call.py +0 -0
  861. {simplint-0.2.2/tests/fixtures/exports → simplint-0.4.0/tests/fixtures/api}/missing_from_all/missing_from_all_call.snap +0 -0
  862. {simplint-0.2.2/tests/fixtures/exports → simplint-0.4.0/tests/fixtures/api}/missing_from_all/missing_from_all_empty.py +0 -0
  863. {simplint-0.2.2/tests/fixtures/exports → simplint-0.4.0/tests/fixtures/api}/missing_from_all/missing_from_all_guard.py +0 -0
  864. {simplint-0.2.2/tests/fixtures/exports → simplint-0.4.0/tests/fixtures/api}/missing_from_all/missing_from_all_hanging.py +0 -0
  865. {simplint-0.2.2/tests/fixtures/exports → simplint-0.4.0/tests/fixtures/api}/missing_from_all/missing_from_all_hanging_comment.py +0 -0
  866. {simplint-0.2.2/tests/fixtures/exports → simplint-0.4.0/tests/fixtures/api}/missing_from_all/missing_from_all_imported.py +0 -0
  867. {simplint-0.2.2/tests/fixtures/exports → simplint-0.4.0/tests/fixtures/api}/missing_from_all/missing_from_all_multiline.py +0 -0
  868. {simplint-0.2.2/tests/fixtures/exports → simplint-0.4.0/tests/fixtures/api}/missing_from_all/missing_from_all_nested.py +0 -0
  869. {simplint-0.2.2/tests/fixtures/exports → simplint-0.4.0/tests/fixtures/api}/missing_from_all/missing_from_all_nested.snap +0 -0
  870. {simplint-0.2.2/tests/fixtures/exports → simplint-0.4.0/tests/fixtures/api}/missing_from_all/missing_from_all_noall.py +0 -0
  871. {simplint-0.2.2/tests/fixtures/exports → simplint-0.4.0/tests/fixtures/api}/missing_from_all/missing_from_all_package___init__.snap +0 -0
  872. {simplint-0.2.2/tests/fixtures/exports → simplint-0.4.0/tests/fixtures/api}/missing_from_all/missing_from_all_reexport.py +0 -0
  873. {simplint-0.2.2/tests/fixtures/exports → simplint-0.4.0/tests/fixtures/api}/missing_from_all/missing_from_all_reexport.snap +0 -0
  874. {simplint-0.2.2/tests/fixtures/exports → simplint-0.4.0/tests/fixtures/api}/missing_from_all/missing_from_all_scripts.py +0 -0
  875. {simplint-0.2.2/tests/fixtures/exports → simplint-0.4.0/tests/fixtures/api}/missing_from_all/missing_from_all_sorted.py +0 -0
  876. {simplint-0.2.2/tests/fixtures/exports → simplint-0.4.0/tests/fixtures/api}/missing_from_all/missing_from_all_tests_test_module_docstring.snap +0 -0
  877. /simplint-0.2.2/tests/fixtures/docstrings/multiline_module_docstring/multiline_module_docstring_ok.snap → /simplint-0.4.0/tests/fixtures/api/test_only_code/test_only_code_test_tonly_builders.snap +0 -0
  878. /simplint-0.2.2/tests/fixtures/docstrings/multiline_module_docstring/multiline_module_docstring_tests_test_module_docstring.snap → /simplint-0.4.0/tests/fixtures/api/test_only_code/test_only_code_tonly_app.snap +0 -0
  879. {simplint-0.2.2/tests/fixtures/naming → simplint-0.4.0/tests/fixtures/api}/unexported_public_name/unexported_public_name.py +0 -0
  880. {simplint-0.2.2/tests/fixtures/naming → simplint-0.4.0/tests/fixtures/api}/unexported_public_name/unexported_public_name_extend.py +0 -0
  881. {simplint-0.2.2/tests/fixtures/naming → simplint-0.4.0/tests/fixtures/api}/unexported_public_name/unexported_public_name_multiline_module_docstring_ok.snap +0 -0
  882. {simplint-0.2.2/tests/fixtures/naming → simplint-0.4.0/tests/fixtures/api}/unexported_public_name/unexported_public_name_ply.py +0 -0
  883. {simplint-0.2.2/tests/fixtures/naming → simplint-0.4.0/tests/fixtures/api}/unexported_public_name/unexported_public_name_remove.py +0 -0
  884. {simplint-0.2.2/tests/fixtures/naming → simplint-0.4.0/tests/fixtures/api}/unexported_public_name/unexported_public_name_remove.snap +0 -0
  885. {simplint-0.2.2/tests/fixtures/naming → simplint-0.4.0/tests/fixtures/api}/unexported_public_name/unexported_public_name_tests_test_module_docstring.snap +0 -0
  886. /simplint-0.2.2/tests/fixtures/docstrings/test_module_docstring/test_module_docstring_multiline_module_docstring.snap → /simplint-0.4.0/tests/fixtures/api/unused_export/unused_export_exporting_sub___init__.snap +0 -0
  887. /simplint-0.2.2/tests/fixtures/docstrings/undocumented_public_api/undocumented_public_api_function_docstring_dynamic.snap → /simplint-0.4.0/tests/fixtures/api/unused_export/unused_export_lazy.snap +0 -0
  888. /simplint-0.2.2/tests/fixtures/docstrings/undocumented_public_api/undocumented_public_api_tests_test_module_docstring.snap → /simplint-0.4.0/tests/fixtures/api/unused_export/unused_export_root.snap +0 -0
  889. /simplint-0.2.2/tests/fixtures/imports/absolute_sibling_import/absolute_sibling_import_multiline_module_docstring_ok.snap → /simplint-0.4.0/tests/fixtures/api/unused_export/unused_export_star.snap +0 -0
  890. /simplint-0.2.2/tests/fixtures/imports/absolute_sibling_import/absolute_sibling_import_package_sub_channel_exec.snap → /simplint-0.4.0/tests/fixtures/api/unused_export/unused_export_tests_test_module_docstring.snap +0 -0
  891. /simplint-0.2.2/tests/fixtures/dataclasses/dataclass_options/dataclass_options.py → /simplint-0.4.0/tests/fixtures/classes/dataclass_frozen/dataclass_frozen.py +0 -0
  892. /simplint-0.2.2/tests/fixtures/dataclasses/dataclass_options/dataclass_options_receivers.py → /simplint-0.4.0/tests/fixtures/classes/dataclass_frozen/dataclass_frozen_receivers.py +0 -0
  893. /simplint-0.2.2/tests/fixtures/dataclasses/dataclass_options/dataclass_options_runtime.py → /simplint-0.4.0/tests/fixtures/classes/dataclass_frozen/dataclass_frozen_runtime.py +0 -0
  894. {simplint-0.2.2/tests/fixtures/dataclasses → simplint-0.4.0/tests/fixtures/classes}/dataclass_kw_only/dataclass_kw_only.py +0 -0
  895. {simplint-0.2.2/tests/fixtures/dataclasses → simplint-0.4.0/tests/fixtures/classes}/dataclass_kw_only/dataclass_kw_only_calls.py +0 -0
  896. /simplint-0.2.2/tests/fixtures/imports/absolute_sibling_import/absolute_sibling_import_package_sub_reversed_guard.snap → /simplint-0.4.0/tests/fixtures/classes/dataclass_kw_only/dataclass_kw_only_py39.snap +0 -0
  897. /simplint-0.2.2/tests/fixtures/imports/absolute_sibling_import/absolute_sibling_import_package_sub_script.snap → /simplint-0.4.0/tests/fixtures/classes/indistinct_error_class/indistinct_error_class_ierr_app.snap +0 -0
  898. /simplint-0.2.2/tests/fixtures/imports/future_annotations/future_annotations_py310.snap → /simplint-0.4.0/tests/fixtures/classes/indistinct_error_class/indistinct_error_class_ierr_reexport.snap +0 -0
  899. /simplint-0.2.2/tests/fixtures/naming/module_variable_case/module_variable_case_ply_table.snap → /simplint-0.4.0/tests/fixtures/classes/indistinct_error_class/indistinct_error_class_test_ierr_errors.snap +0 -0
  900. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/comments/long_paragraph/long_paragraph.py +0 -0
  901. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/comments/section_comment/section_comment.py +0 -0
  902. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/comments/section_comment/section_comment.snap +0 -0
  903. {simplint-0.2.2/tests/fixtures/docstrings/function_docstring → simplint-0.4.0/tests/fixtures/docstrings/function_docstring/_internal}/function_docstring.py +0 -0
  904. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/docstrings/function_docstring/function_docstring_contract.py +0 -0
  905. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/docstrings/function_docstring/function_docstring_dynamic.py +0 -0
  906. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/docstrings/function_docstring/function_docstring_exported.py +0 -0
  907. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/docstrings/function_docstring/function_docstring_runtime.py +0 -0
  908. /simplint-0.2.2/tests/fixtures/structure/definition_before_use/definition_before_use_annotations_py310.snap → /simplint-0.4.0/tests/fixtures/docstrings/function_docstring/function_docstring_switched.snap +0 -0
  909. /simplint-0.2.2/tests/fixtures/structure/definition_before_use/definition_before_use_classbody.snap → /simplint-0.4.0/tests/fixtures/docstrings/function_docstring/function_docstring_undocumented_public_api.snap +0 -0
  910. /simplint-0.2.2/tests/fixtures/structure/walrus_candidate/walrus_candidate_dynamic.snap → /simplint-0.4.0/tests/fixtures/docstrings/function_docstring/function_docstring_undocumented_public_api_imported.snap +0 -0
  911. {simplint-0.2.2/tests/fixtures/docstrings/multiline_module_docstring → simplint-0.4.0/tests/fixtures/docstrings/test_module_docstring}/multiline_module_docstring.py +0 -0
  912. {simplint-0.2.2/tests/fixtures/docstrings/multiline_module_docstring → simplint-0.4.0/tests/fixtures/docstrings/test_module_docstring}/multiline_module_docstring_ok.py +0 -0
  913. /simplint-0.2.2/tests/fixtures/structure/walrus_candidate/walrus_candidate_gate.snap → /simplint-0.4.0/tests/fixtures/docstrings/test_module_docstring/test_module_docstring_multiline_module_docstring.snap +0 -0
  914. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/docstrings/test_module_docstring/tests/test_module_docstring.py +0 -0
  915. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/docstrings/test_module_docstring/tests/test_module_docstring_inline.py +0 -0
  916. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/docstrings/undocumented_public_api/undocumented_public_api.py +0 -0
  917. /simplint-0.2.2/tests/fixtures/structure/walrus_candidate/walrus_candidate_listed.snap → /simplint-0.4.0/tests/fixtures/docstrings/undocumented_public_api/undocumented_public_api_facade__helpers.snap +0 -0
  918. /simplint-0.2.2/tests/fixtures/structure/walrus_candidate/walrus_candidate_py37.snap → /simplint-0.4.0/tests/fixtures/docstrings/undocumented_public_api/undocumented_public_api_function_docstring_dynamic.snap +0 -0
  919. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/docstrings/undocumented_public_api/undocumented_public_api_imported.py +0 -0
  920. /simplint-0.2.2/tests/fixtures/testing/conditional_in_test/conditional_in_test_multiline_module_docstring_ok.snap → /simplint-0.4.0/tests/fixtures/docstrings/undocumented_public_api/undocumented_public_api_tests_test_module_docstring.snap +0 -0
  921. /simplint-0.2.2/tests/fixtures/testing/test_class/test_class_multiline_module_docstring_ok.snap → /simplint-0.4.0/tests/fixtures/imports/absolute_sibling_import/absolute_sibling_import_multiline_module_docstring_ok.snap +0 -0
  922. /simplint-0.2.2/tests/fixtures/typing/missing_final/missing_final_gate.snap → /simplint-0.4.0/tests/fixtures/imports/absolute_sibling_import/absolute_sibling_import_package_sub_channel_exec.snap +0 -0
  923. /simplint-0.2.2/tests/fixtures/typing/missing_final/missing_final_py37.snap → /simplint-0.4.0/tests/fixtures/imports/absolute_sibling_import/absolute_sibling_import_package_sub_reversed_guard.snap +0 -0
  924. /simplint-0.2.2/tests/fixtures/typing/vars_call/vars_call_bound.snap → /simplint-0.4.0/tests/fixtures/imports/absolute_sibling_import/absolute_sibling_import_package_sub_script.snap +0 -0
  925. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/imports/absolute_sibling_import/package/__init__.py +0 -0
  926. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/imports/absolute_sibling_import/package/sub/__init__.py +0 -0
  927. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/imports/absolute_sibling_import/package/sub/channel_exec.py +0 -0
  928. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/imports/absolute_sibling_import/package/sub/module.py +0 -0
  929. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/imports/absolute_sibling_import/package/sub/remote_worker.py +0 -0
  930. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/imports/absolute_sibling_import/package/sub/reversed_guard.py +0 -0
  931. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/imports/absolute_sibling_import/package/sub/script.py +0 -0
  932. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/imports/dependency_import_guard/dependency_import_guard.py +0 -0
  933. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/imports/future_annotations/future_annotations.py +0 -0
  934. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/imports/future_annotations/future_annotations_checking.py +0 -0
  935. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/imports/future_annotations/future_annotations_joined.py +0 -0
  936. {simplint-0.2.2/tests/fixtures/structure → simplint-0.4.0/tests/fixtures/layout}/definition_before_use/definition_before_use.py +0 -0
  937. {simplint-0.2.2/tests/fixtures/structure → simplint-0.4.0/tests/fixtures/layout}/definition_before_use/definition_before_use_annotations.py +0 -0
  938. {simplint-0.2.2/tests/fixtures/structure → simplint-0.4.0/tests/fixtures/layout}/definition_before_use/definition_before_use_classbody.py +0 -0
  939. {simplint-0.2.2/tests/fixtures/structure → simplint-0.4.0/tests/fixtures/layout}/definition_before_use/definition_before_use_decorated.py +0 -0
  940. {simplint-0.2.2/tests/fixtures/structure → simplint-0.4.0/tests/fixtures/layout}/definition_before_use/definition_before_use_floating.py +0 -0
  941. {simplint-0.2.2/tests/fixtures/structure → simplint-0.4.0/tests/fixtures/layout}/definition_before_use/definition_before_use_import_time.py +0 -0
  942. {simplint-0.2.2/tests/fixtures/structure → simplint-0.4.0/tests/fixtures/layout}/definition_before_use/definition_before_use_nonl.py +0 -0
  943. {simplint-0.2.2/tests/fixtures/structure → simplint-0.4.0/tests/fixtures/layout}/single_user_constant/single_user_constant.py +0 -0
  944. {simplint-0.2.2/tests/fixtures/structure → simplint-0.4.0/tests/fixtures/layout}/single_user_constant/single_user_constant_all.py +0 -0
  945. {simplint-0.2.2/tests/fixtures/structure → simplint-0.4.0/tests/fixtures/layout}/single_user_constant/single_user_constant_dynamic.py +0 -0
  946. {simplint-0.2.2/tests/fixtures/structure → simplint-0.4.0/tests/fixtures/layout}/single_user_constant/single_user_constant_spacing.py +0 -0
  947. {simplint-0.2.2/tests/fixtures/structure → simplint-0.4.0/tests/fixtures/logic}/forwarding_function/forwarding_function.py +0 -0
  948. {simplint-0.2.2/tests/fixtures/strings → simplint-0.4.0/tests/fixtures/logic}/string_concatenation/string_concatenation.py +0 -0
  949. {simplint-0.2.2/tests/fixtures/strings → simplint-0.4.0/tests/fixtures/logic}/string_concatenation/string_concatenation_old.py +0 -0
  950. {simplint-0.2.2/tests/fixtures/strings → simplint-0.4.0/tests/fixtures/logic}/string_concatenation/string_concatenation_types.py +0 -0
  951. {simplint-0.2.2/tests/fixtures/structure → simplint-0.4.0/tests/fixtures/logic}/walrus_candidate/walrus_candidate.py +0 -0
  952. {simplint-0.2.2/tests/fixtures/structure → simplint-0.4.0/tests/fixtures/logic}/walrus_candidate/walrus_candidate_dynamic.py +0 -0
  953. {simplint-0.2.2/tests/fixtures/structure → simplint-0.4.0/tests/fixtures/logic}/walrus_candidate/walrus_candidate_gate.py +0 -0
  954. {simplint-0.2.2/tests/fixtures/structure → simplint-0.4.0/tests/fixtures/logic}/walrus_candidate/walrus_candidate_listed.py +0 -0
  955. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/naming/module_variable_case/module_variable_case.py +0 -0
  956. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/naming/module_variable_case/module_variable_case_alembic.py +0 -0
  957. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/naming/module_variable_case/module_variable_case_ann.py +0 -0
  958. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/naming/module_variable_case/module_variable_case_call.py +0 -0
  959. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/naming/module_variable_case/module_variable_case_call.snap +0 -0
  960. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/naming/module_variable_case/module_variable_case_conflict.py +0 -0
  961. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/naming/module_variable_case/module_variable_case_dbapi.py +0 -0
  962. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/naming/module_variable_case/module_variable_case_frameworks.py +0 -0
  963. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/naming/module_variable_case/module_variable_case_gunicorn.py +0 -0
  964. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/naming/module_variable_case/module_variable_case_kinds.py +0 -0
  965. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/naming/module_variable_case/module_variable_case_lookalikes.py +0 -0
  966. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/naming/module_variable_case/module_variable_case_noall.py +0 -0
  967. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/naming/module_variable_case/module_variable_case_ply.py +0 -0
  968. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/naming/module_variable_case/module_variable_case_ply_table.py +0 -0
  969. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/naming/module_variable_case/module_variable_case_rename.py +0 -0
  970. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/naming/module_variable_case/module_variable_case_scopes.py +0 -0
  971. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/naming/module_variable_case/module_variable_case_strings.py +0 -0
  972. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/naming/module_variable_case/module_variable_case_typer.py +0 -0
  973. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/naming/module_variable_case/module_variable_case_version.py +0 -0
  974. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/naming/module_variable_case/module_variable_case_version.snap +0 -0
  975. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/testing/conditional_in_test/tests/test_conditional_in_test.py +0 -0
  976. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/testing/constant_assert/constant_assert.py +0 -0
  977. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/testing/mock_attribute_assignment/tests/test_mock_attribute_assignment.py +0 -0
  978. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/testing/mock_without_spec/tests/test_mock_without_spec.py +0 -0
  979. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/testing/parametrize_without_id/tests/test_parametrize_without_id.py +0 -0
  980. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/typing/callable_ellipsis/callable_ellipsis.py +0 -0
  981. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/typing/missing_final/missing_final_alias.py +0 -0
  982. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/typing/missing_final/missing_final_bare.py +0 -0
  983. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/typing/missing_final/missing_final_branch.py +0 -0
  984. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/typing/missing_final/missing_final_checking.py +0 -0
  985. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/typing/missing_final/missing_final_future.py +0 -0
  986. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/typing/missing_final/missing_final_gate.py +0 -0
  987. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/typing/missing_final/missing_final_module.py +0 -0
  988. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/typing/missing_final/missing_final_new.py +0 -0
  989. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/typing/missing_final/missing_final_order.py +0 -0
  990. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/typing/missing_final/missing_final_sorted.py +0 -0
  991. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/typing/missing_final/missing_final_typing.py +0 -0
  992. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/typing/vars_call/vars_call.py +0 -0
  993. {simplint-0.2.2 → simplint-0.4.0}/tests/fixtures/typing/vars_call/vars_call_bound.py +0 -0
  994. {simplint-0.2.2 → simplint-0.4.0}/tests/tasks/test_assemble_release.py +0 -0
  995. {simplint-0.2.2 → simplint-0.4.0}/tests/tasks/test_cargo_version.py +0 -0
  996. {simplint-0.2.2 → simplint-0.4.0}/tests/tasks/test_python_versions.py +0 -0
@@ -0,0 +1,727 @@
1
+ # Changelog
2
+
3
+ ## 0.4.0 (2026-11-04)
4
+
5
+ <a name="release-0-4-0"></a>
6
+
7
+ <a name="release-0-4-0-added"></a>
8
+
9
+ ### Added
10
+
11
+ - `blanket-ignore` (SMP004) flags every suppression comment that names no error code, such as a bare `# noqa`, a
12
+ `# ruff: noqa`, or a `# type: ignore` or `# ty: ignore` without brackets
13
+ ([#34](https://github.com/gaborbernat/simplint/pull/34)) by [@gaborbernat](https://github.com/gaborbernat).
14
+ - `simplint rule`, its JSON output and the documentation mark the rules that read other files of the run, whose results
15
+ another file can change ([#34](https://github.com/gaborbernat/simplint/pull/34)) by
16
+ [@gaborbernat](https://github.com/gaborbernat).
17
+ - `dataclass-slots` (SMP702) asks for `slots=True` on a dataclass decorator and its fix adds it, unless checked code
18
+ breaks the slotted class ([#34](https://github.com/gaborbernat/simplint/pull/34)) by
19
+ [@gaborbernat](https://github.com/gaborbernat).
20
+ - Telling exceptions apart by the text of their message is reported as `error-message-matching` (SMP507)
21
+ ([#34](https://github.com/gaborbernat/simplint/pull/34)) by [@gaborbernat](https://github.com/gaborbernat).
22
+ - Flags exception classes that no `except` clause names, so a built-in exception could replace them
23
+ ([#34](https://github.com/gaborbernat/simplint/pull/34)) by [@gaborbernat](https://github.com/gaborbernat).
24
+ - `long-docstring-paragraph` (SMP904) flags a docstring paragraph longer than `max-paragraph-words` words, as
25
+ `long-paragraph` (SMP002) does for comments ([#34](https://github.com/gaborbernat/simplint/pull/34)) by
26
+ [@gaborbernat](https://github.com/gaborbernat).
27
+ - `module-attribute-import` (SMP304) flags `module.Name` access to a module of the project, which an import of `Name`
28
+ replaces. The new `imports.module-attributes` option leaves the modules it lists alone
29
+ ([#34](https://github.com/gaborbernat/simplint/pull/34)) by [@gaborbernat](https://github.com/gaborbernat).
30
+ - `module-variable-prefix` (SMP404) flags a module variable whose leading underscore does not match its visibility: a
31
+ name that no other module imports and `__all__` does not list needs one, and a name `__all__` lists must not have one
32
+ ([#34](https://github.com/gaborbernat/simplint/pull/34)) by [@gaborbernat](https://github.com/gaborbernat).
33
+ - `long-paragraph` (SMP002) and the new `long-docstring-paragraph` (SMP904) read their limit from the new
34
+ `max-paragraph-words` option, 100 words by default ([#34](https://github.com/gaborbernat/simplint/pull/34)) by
35
+ [@gaborbernat](https://github.com/gaborbernat).
36
+ - `rst-empty-field` (SMP914) reports `:param:`, `:raises:`, `:returns:`, `:yields:` and `:var:` fields with no
37
+ description, which `rst-field-syntax` reported before. The fixes of the missing-field rules add such fields, so this
38
+ rule can be turned off on its own ([#34](https://github.com/gaborbernat/simplint/pull/34)) by
39
+ [@gaborbernat](https://github.com/gaborbernat).
40
+ - `simplint rules --output-format json` now lists each rule's examples as parsed blocks with their line numbers, and
41
+ each rule's short group title. A rule page whose examples do not parse reports the error in place of its examples
42
+ ([#34](https://github.com/gaborbernat/simplint/pull/34)) by [@gaborbernat](https://github.com/gaborbernat).
43
+ - SMP505 flags a private helper with one short call site, which inlining into its caller would keep short
44
+ ([#34](https://github.com/gaborbernat/simplint/pull/34)) by [@gaborbernat](https://github.com/gaborbernat).
45
+ - SMP504 flags a function local that is assigned once and read once, right below the assignment
46
+ ([#34](https://github.com/gaborbernat/simplint/pull/34)) by [@gaborbernat](https://github.com/gaborbernat).
47
+ - `sleep-in-test` (SMP808) flags `time.sleep` and `asyncio.sleep` calls in test modules that wait on a fixed time
48
+ ([#34](https://github.com/gaborbernat/simplint/pull/34)) by [@gaborbernat](https://github.com/gaborbernat).
49
+ - `split-composite-assert` (SMP807) flags consecutive asserts that compare fields of one object one by one, and its
50
+ unsafe fix joins them into one assert over a tuple ([#34](https://github.com/gaborbernat/simplint/pull/34)) by
51
+ [@gaborbernat](https://github.com/gaborbernat).
52
+ - `stdlib-mock` (SMP809) flags `unittest.mock` imports in test modules of projects that depend on pytest-mock
53
+ ([#34](https://github.com/gaborbernat/simplint/pull/34)) by [@gaborbernat](https://github.com/gaborbernat).
54
+ - Flags module-level functions and classes that only test modules use, so they can move into the tests
55
+ ([#34](https://github.com/gaborbernat/simplint/pull/34)) by [@gaborbernat](https://github.com/gaborbernat).
56
+ - A parameter default that every call in the run passes explicitly is reported as `unused-default` (SMP506), with an
57
+ unsafe fix that removes it ([#34](https://github.com/gaborbernat/simplint/pull/34)) by
58
+ [@gaborbernat](https://github.com/gaborbernat).
59
+
60
+ <a name="release-0-4-0-changes"></a>
61
+
62
+ ### Changes
63
+
64
+ - missing-final (SMP601) also reports a bare `Final` annotation and fills in its type
65
+ ([#34](https://github.com/gaborbernat/simplint/pull/34)) by [@gaborbernat](https://github.com/gaborbernat).
66
+ - `dataclass-options` (SMP701) is renamed to `dataclass-frozen` and asks only for `frozen=True`. Its fix no longer adds
67
+ `slots=True`, which `dataclass-slots` (SMP702) now asks for ([#34](https://github.com/gaborbernat/simplint/pull/34))
68
+ by [@gaborbernat](https://github.com/gaborbernat).
69
+ - `rst-field-syntax` now reports aliases of field names, such as `:arg:` or `:return:`, and its fix renames them to
70
+ `:param:`, `:raises:`, `:returns:` or `:yields:`. `:var:`, `:ivar:` and `:cvar:` stay distinct
71
+ ([#34](https://github.com/gaborbernat/simplint/pull/34)) by [@gaborbernat](https://github.com/gaborbernat).
72
+ - `imprecise-annotation` (SMP602) reports `object` in any annotation and `Any` where Ruff's ANN401 does not: in variable
73
+ annotations and nested positions such as `dict[str, Any]` ([#34](https://github.com/gaborbernat/simplint/pull/34)) by
74
+ [@gaborbernat](https://github.com/gaborbernat).
75
+ - `module-variable-case` (SMP102) checks only the case of module variables, `UPPER_CASE`, and keeps the leading
76
+ underscore a name has. The underscore is checked by the new `module-variable-prefix` (SMP404)
77
+ ([#34](https://github.com/gaborbernat/simplint/pull/34)) by [@gaborbernat](https://github.com/gaborbernat).
78
+ - Rule codes now follow their group: the first digit names one of ten groups, so a prefix selects a whole group, such as
79
+ `SMP4` for Public API. The groups are Comments (`SMP0`), Naming (`SMP1`), Module layout (`SMP2`), Imports and
80
+ dependencies (`SMP3`), Public API (`SMP4`), Logic (`SMP5`), Typing (`SMP6`), Classes (`SMP7`), Tests (`SMP8`) and
81
+ Docstrings (`SMP9`) ([#34](https://github.com/gaborbernat/simplint/pull/34)) by
82
+ [@gaborbernat](https://github.com/gaborbernat).
83
+ - `rst-field-syntax` no longer reports fields with no description; `rst-empty-field` does
84
+ ([#34](https://github.com/gaborbernat/simplint/pull/34)) by [@gaborbernat](https://github.com/gaborbernat).
85
+ - The `docstring-style` value and the reStructuredText rule names use `rst`, such as `docstring-style = "rst"` and
86
+ `rst-field-syntax` ([#34](https://github.com/gaborbernat/simplint/pull/34)) by
87
+ [@gaborbernat](https://github.com/gaborbernat).
88
+ - Rules now group by what they check, one group per topic such as Naming, Public API or Docstrings, instead of four
89
+ groups by code range. `simplint linter` lists each group with its rule codes
90
+ ([#34](https://github.com/gaborbernat/simplint/pull/34)) by [@gaborbernat](https://github.com/gaborbernat).
91
+ - `single-letter-name` (SMP101) now reports `for` loop targets such as `i` in `for i in range(3)`, since a loop body can
92
+ run far from the line that says what the name holds. Names inside comprehensions stay exempt
93
+ ([#35](https://github.com/gaborbernat/simplint/pull/35)) by [@gaborbernat](https://github.com/gaborbernat).
94
+
95
+ <a name="release-0-4-0-fixed"></a>
96
+
97
+ ### Fixed
98
+
99
+ - A `cache-dir` in `pyproject.toml` that points outside the project is ignored, and the cache goes to Ruff's default
100
+ directory inside it. Stale cache removal now touches only directories of other simplint builds, so a `cache-dir` can
101
+ no longer delete directories outside the project. The command line and `RUFF_CACHE_DIR` still choose any directory
102
+ ([#34](https://github.com/gaborbernat/simplint/pull/34)) by [@gaborbernat](https://github.com/gaborbernat).
103
+ - Deeply nested expressions, such as a list nested ten thousand levels deep or a `+` chain of that length, no longer
104
+ crash simplint with a stack overflow ([#34](https://github.com/gaborbernat/simplint/pull/34)) by
105
+ [@gaborbernat](https://github.com/gaborbernat).
106
+ - `--fix` and `--diff` give the same result on every run; some fixes used to vary between runs because they followed the
107
+ iteration order of randomly seeded hash maps ([#34](https://github.com/gaborbernat/simplint/pull/34)) by
108
+ [@gaborbernat](https://github.com/gaborbernat).
109
+ - With `--diff` on several files, the diffs print in the same file order on every run, instead of in the order the files
110
+ finished linting ([#34](https://github.com/gaborbernat/simplint/pull/34)) by
111
+ [@gaborbernat](https://github.com/gaborbernat).
112
+ - When an `extend`ed configuration file outside the project is not valid, simplint reports its path without its text, so
113
+ the first line of an arbitrary file no longer appears in the error
114
+ ([#34](https://github.com/gaborbernat/simplint/pull/34)) by [@gaborbernat](https://github.com/gaborbernat).
115
+ - A fix loop that does not settle stops with a "Failed to converge" error after 100 rounds, as the loop within a round
116
+ already did, instead of running on ([#34](https://github.com/gaborbernat/simplint/pull/34)) by
117
+ [@gaborbernat](https://github.com/gaborbernat).
118
+ - A symlink to a file outside the paths being checked is skipped with a warning. `--fix` no longer writes through it,
119
+ and the report no longer shows the text of the file it points at
120
+ ([#34](https://github.com/gaborbernat/simplint/pull/34)) by [@gaborbernat](https://github.com/gaborbernat).
121
+
122
+ <a name="release-0-4-0-documentation"></a>
123
+
124
+ ### Documentation
125
+
126
+ - The README and documentation pages are split into short sections, with tables, admonitions and diagrams of how
127
+ configuration, the cache, the public API and fix rounds resolve
128
+ ([#34](https://github.com/gaborbernat/simplint/pull/34)) by [@gaborbernat](https://github.com/gaborbernat).
129
+
130
+ ## 0.3.0 (2026-11-04)
131
+
132
+ <a name="release-0-3-0"></a>
133
+
134
+ <a name="release-0-3-0-added"></a>
135
+
136
+ ### Added
137
+
138
+ - The docstring rules share the new `SMP3` group, so `select = ["SMP3"]` picks all of them: `function-docstring` is
139
+ SMP300 (was SMP002), `test-module-docstring` SMP301 (was SMP004) and `undocumented-public-api` SMP302 (was SMP116);
140
+ update `select`, `ignore` and `noqa` comments that name the old codes. Docstrings no longer have a length limit:
141
+ `multiline-module-docstring` (SMP003) is gone, and `long-paragraph` (SMP005) checks comments only
142
+ ([#27](https://github.com/gaborbernat/simplint/pull/27)) by [@gaborbernat](https://github.com/gaborbernat).
143
+ - `undocumented-public-api` (SMP302) and `function-docstring` (SMP300) now follow a library's public API as the typing
144
+ spec and PEP 8 define it: modules under a `_`-prefixed path are internal, a public module without `__all__` offers
145
+ every name without a leading underscore, and a name a public module re-exports through `__all__`,
146
+ `from m import name as name` or `import *` needs its docstring where it is defined. A name another module imports
147
+ counts as public only in a public module, where `missing-from-all` (SMP113) lists it in `__all__`, and an application,
148
+ which nothing installs, has no public API at all. The new `project-kind`, `api-packages` and `api-modules` settings
149
+ tune this ([#27](https://github.com/gaborbernat/simplint/pull/27)) by [@gaborbernat](https://github.com/gaborbernat).
150
+ - `init-module-content` (SMP109) lets a public package of a library re-export its API from private modules
151
+ ([#27](https://github.com/gaborbernat/simplint/pull/27)) by [@gaborbernat](https://github.com/gaborbernat).
152
+ - The new reStructuredText rules, SMP310 to SMP323, check reStructuredText field lists in docstrings when
153
+ `docstring-style = "rest"`: every field is well formed, described with more than its name and separated from the text
154
+ above by a blank line, documents a parameter or attribute that exists, with `:ivar:` or `:cvar:` as fits, once, and
155
+ carries no type, which belongs in annotations; roles keep their backticks and inline literals close; a public function
156
+ or class documents each parameter, attribute, return or yield value and exception it raises itself, and no internal
157
+ name. Their fixes add each missing field with an empty description for you to fill in, and remove or correct fields
158
+ for what no longer exists ([#27](https://github.com/gaborbernat/simplint/pull/27)) by
159
+ [@gaborbernat](https://github.com/gaborbernat).
160
+ - `unused-export` (SMP117) removes names from `__all__` that no other module of the run imports, keeping the `__all__`
161
+ of a library's top-level package and of the modules `api-modules` names as written
162
+ ([#27](https://github.com/gaborbernat/simplint/pull/27)) by [@gaborbernat](https://github.com/gaborbernat).
163
+
164
+ <a name="release-0-3-0-fixed"></a>
165
+
166
+ ### Fixed
167
+
168
+ - `--fix`, `--add-noqa` and `--add-ignore` write a file by renaming a complete copy over it, so a failed write no longer
169
+ leaves a cut-short source, and a file edited during the run keeps the edit. A symlink stays a symlink and the file
170
+ keeps its permissions ([#33](https://github.com/gaborbernat/simplint/pull/33)) by
171
+ [@gaborbernat](https://github.com/gaborbernat).
172
+ - A run no longer deletes the new, still empty cache directory of another simplint version running at the same time, as
173
+ pre-commit and the command line can, which made that other run fail
174
+ ([#33](https://github.com/gaborbernat/simplint/pull/33)) by [@gaborbernat](https://github.com/gaborbernat).
175
+ - A development build no longer warns that it cannot read the cache an earlier build of the same version wrote, and the
176
+ caches of other builds go away once no run has written to them for 30 days
177
+ ([#27](https://github.com/gaborbernat/simplint/pull/27)) by [@gaborbernat](https://github.com/gaborbernat).
178
+ - A file that linted clean is checked again when a name moves between two of the run's sets, as from a name read off a
179
+ module to a base class, instead of reusing its stale cached result
180
+ ([#33](https://github.com/gaborbernat/simplint/pull/33)) by [@gaborbernat](https://github.com/gaborbernat).
181
+ - `dataclass-kw-only` (SMP114) rewrites a positional call that a `noqa` comment for another code sits on, or that holds
182
+ `noqa` in a string, instead of leaving the dataclass without `kw_only=True`; only a comment that suppresses SMP114
183
+ keeps the call as it is ([#33](https://github.com/gaborbernat/simplint/pull/33)) by
184
+ [@gaborbernat](https://github.com/gaborbernat).
185
+ - `string-concatenation` (SMP112) no longer slows to a crawl on a function where many names each extend themselves in
186
+ turn, as `text = text + "!"` does; such chains now take time in proportion to their length
187
+ ([#33](https://github.com/gaborbernat/simplint/pull/33)) by [@gaborbernat](https://github.com/gaborbernat).
188
+ - `suppression-without-reason` (SMP060) reads suppression comments the way they take effect, so it now also flags
189
+ `# flake8: noqa` and a directive with extra space around its colon, such as `# ruff : ignore[...]`
190
+ ([#33](https://github.com/gaborbernat/simplint/pull/33)) by [@gaborbernat](https://github.com/gaborbernat).
191
+ - `test-class` (SMP200) now fixes a class whose methods have docstrings spanning several lines, as it does once
192
+ `ruff format` has joined them, so one round of fixes settles ([#28](https://github.com/gaborbernat/simplint/pull/28))
193
+ by [@gaborbernat](https://github.com/gaborbernat).
194
+ - `undocumented-public-api` (SMP302) and the reStructuredText attribute rules now see the docstring under a variable
195
+ defined in an `if` or `try` block, so they no longer report it as undocumented
196
+ ([#33](https://github.com/gaborbernat/simplint/pull/33)) by [@gaborbernat](https://github.com/gaborbernat).
197
+
198
+ <a name="release-0-3-0-documentation"></a>
199
+
200
+ ### Documentation
201
+
202
+ - The changelog page renders again when a release lists no changes
203
+ ([#18](https://github.com/gaborbernat/simplint/pull/18)) by [@gaborbernat](https://github.com/gaborbernat).
204
+ - The pre-commit setup uses the `simplint-pre-commit` mirror, which installs the released wheel and so runs on
205
+ pre-commit.ci without a Rust toolchain ([#27](https://github.com/gaborbernat/simplint/pull/27)) by
206
+ [@gaborbernat](https://github.com/gaborbernat).
207
+ - The PyPI page shows a short introduction with links to the documentation instead of the full documentation pages
208
+ ([#20](https://github.com/gaborbernat/simplint/pull/20)) by [@gaborbernat](https://github.com/gaborbernat).
209
+
210
+ ## 0.2.2 (2026-11-02)
211
+
212
+ <a name="release-0-2-2"></a>
213
+
214
+ <a name="release-0-2-2-fixed"></a>
215
+
216
+ ### Fixed
217
+
218
+ - Release wheels build again: the profile-guided optimization run no longer stops on the Ruff docstring rules simplint
219
+ refuses to run beside ([#17](https://github.com/gaborbernat/simplint/pull/17)) by
220
+ [@gaborbernat](https://github.com/gaborbernat).
221
+
222
+ ## 0.2.1 (2026-11-02)
223
+
224
+ <a name="release-0-2-1"></a>
225
+
226
+ ## 0.2.0 (2026-11-02)
227
+
228
+ <a name="release-0-2-0"></a>
229
+
230
+ <a name="release-0-2-0-added"></a>
231
+
232
+ ### Added
233
+
234
+ - `all-format` follows Ruff's `skip-magic-trailing-comma`: with it set, `ruff format` drops the trailing comma, so the
235
+ rule only asks for a list ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
236
+ [@gaborbernat](https://github.com/gaborbernat).
237
+ - `all-format` requires `__all__` to be a list with a trailing comma, so the formatter keeps one name per line
238
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
239
+ - Like Ruff, `simplint check` caches which files had nothing to report, and with them the import facts of each file, so
240
+ later runs skip unchanged files. A cached result is reused only while the file, its settings and the names other files
241
+ use from it are unchanged. The cache lives in Ruff's cache directory, `.ruff_cache` unless Ruff's `cache-dir`,
242
+ `--cache-dir` or `RUFF_CACHE_DIR` names another, under `simplint/<version>`, next to Ruff's own files, which it leaves
243
+ alone. It is a compact binary file per package, written only when it changed, and keeps files other runs checked for
244
+ 30 days, as Ruff's does. `--no-cache` or `SIMPLINT_NO_CACHE` turns it off, and `simplint clean` removes simplint's
245
+ part of each `.ruff_cache` ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
246
+ [@gaborbernat](https://github.com/gaborbernat).
247
+ - `constant-assert` (SMP205) reads truthiness the way Ruff does, so it also reports assertions on non-empty list, set
248
+ and dict literals, f-strings and lambdas, such as `assert [value]`. A tuple holding only starred elements, which may
249
+ be empty, is no longer reported. An assertion that calls something, such as `assert [compute()]`, gets no fix
250
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
251
+ - `[tool.simplint]` takes `fixable`, `unfixable`, `extend-fixable`, `extend-unfixable`, `extend-safe-fixes`,
252
+ `extend-unsafe-fixes` and `extend-per-file-ignores`, with Ruff's meaning, and a `per-file-ignores` pattern starting
253
+ with `!` applies to every file it does not match ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
254
+ [@gaborbernat](https://github.com/gaborbernat).
255
+ - Every fix carries a title saying what it changes, such as "Annotate `LIMIT` with `Final`", shown as the `help:` line
256
+ of the full output and as the fix message of the JSON, SARIF and GitHub formats, as Ruff does for its own fixes
257
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
258
+ - `--config`, `--isolated` and the new `--color` flag go before or after the subcommand, as in Ruff. `--config` also
259
+ takes `KEY = VALUE` overrides: a `[tool.simplint]` key, such as `--config "select = ['SMP1']"`, overrides simplint's
260
+ setting, and any other key Ruff's, such as `--config "target-version = 'py312'"`. `FORCE_COLOR` turns colors on as in
261
+ Ruff ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
262
+ - Add the `naming.keep-names` option, a list of module-scope names `module-variable-case` (SMP102) leaves as they are,
263
+ for frameworks simplint does not recognize; `--config "naming.keep-names = [...]"` overrides it
264
+ ([#8](https://github.com/gaborbernat/simplint/pull/8)) by [@gaborbernat](https://github.com/gaborbernat).
265
+ - `simplint check` now behaves like `ruff check`: it prints reports in any of Ruff's output formats (`full` by default,
266
+ `concise`, `grouped`, `json`, `json-lines`, `junit`, `github`, `gitlab`, `pylint`, `rdjson`, `azure` and `sarif`),
267
+ with Ruff's summary lines and exit codes, and takes Ruff's flags: `--fix-only`, `--show-fixes`, `--statistics`,
268
+ `--exit-zero`, `--exit-non-zero-on-fix`, `--ignore-noqa`, `--output-file`, `--extend-select`, `--stdin-filename` or
269
+ `-`, and the `--quiet`, `--silent` and `--verbose` log levels. A file that does not parse or cannot be read is
270
+ reported as an `invalid-syntax` or `io-error` diagnostic, and the rest of the run goes on
271
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
272
+ - `simplint check` takes the rest of `ruff check`'s flags: `--watch` checks again whenever a Python or TOML file
273
+ changes, `--add-noqa[=REASON]` and `--add-ignore[=REASON]` write suppression comments for every report, `--show-files`
274
+ and `--show-settings` print the files and settings a check would use, and `--preview`, `--extend-ignore`,
275
+ `--per-file-ignores`, `--extend-per-file-ignores`, `--fixable`, `--unfixable`, `--extend-fixable` and
276
+ `--extend-unfixable` work as in Ruff, with Ruff's conflicts between flags
277
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
278
+ - Fixes now leave nothing for Ruff to redo when `simplint check --fix` runs between `ruff check --fix` and
279
+ `ruff format`: a Ruff violation a fix introduces, or a Ruff fix it makes possible such as a return type Ruff can now
280
+ infer, gets Ruff's own fix in the same run, and otherwise the fix is withdrawn and the report kept. Layout is left to
281
+ `ruff format`, save a line no formatting can bring under the line length, such as a name or string too long by itself
282
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
283
+ - `simplint rule --all`, `simplint config [KEY]`, `simplint linter`, `simplint clean`, `simplint version` and
284
+ `simplint generate-shell-completion SHELL` work like Ruff's subcommands of the same names, and `rule`, `config`,
285
+ `linter` and `version` take `--output-format json` ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
286
+ [@gaborbernat](https://github.com/gaborbernat).
287
+ - simplint stops with exit status 2 before linting when a simplint rule and a Ruff rule on for the same file work
288
+ against each other: `function-docstring` with Ruff's missing-docstring rules D101 to D107, `test-module-docstring`
289
+ with D100 or D104 on test modules, `future-annotations` with I002 adding `from __future__ import annotations` on
290
+ Python 3.14 and newer, and `absolute-sibling-import` with TID252 banning every relative import. The error names both
291
+ rules, the configuration files that enable them, the first file affected and how to resolve the clash. Before, the fix
292
+ loop kept the report forever, or gave up after 100 passes ([#4](https://github.com/gaborbernat/simplint/pull/4)) by
293
+ [@gaborbernat](https://github.com/gaborbernat).
294
+ - A `# simplint: ignore[SMP010]` comment suppresses the listed rules on its line, as `# ruff: ignore[...]` does for
295
+ Ruff's rules, and `suppression-without-reason` asks for a reason after it
296
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
297
+ - `string-concatenation` joins strings in different quote styles when one delimiter fits them all, joins implicitly
298
+ concatenated literals, puts an expression written over several lines on one, and before Python 3.12 switches the
299
+ quotes of string literals inside an expression that would clash with the f-string's own. It leaves alone a literal
300
+ with a named escape such as `\N{BULLET}`, and inside another f-string's replacement field keeps the quotes as written
301
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
302
+ - `undocumented-public-api` requires a docstring on every function, class and public method the module exports through
303
+ `__all__`, and a docstring or `#:` comment on every exported variable
304
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
305
+ - `walrus-candidate` also takes an assignment joined by `;` to the statements before it on its line, as `ruff format`
306
+ puts it on a line of its own either way ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
307
+ [@gaborbernat](https://github.com/gaborbernat).
308
+
309
+ <a name="release-0-2-0-changes"></a>
310
+
311
+ ### Changes
312
+
313
+ - `single-letter-name` no longer checks anything inside a comprehension or generator expression; single-letter names
314
+ there are fine ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
315
+ [@gaborbernat](https://github.com/gaborbernat).
316
+ - `definition-before-use` offers its fix on the first report of each body only: that one fix reorders the whole body,
317
+ and repeating it on every report made the default output slow on files with many misplaced definitions
318
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
319
+ - A file that cannot be read, parsed or fixed is reported as an error and left unchanged, and the other files are still
320
+ checked ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
321
+ - `missing-from-all` and `all-format` write `__all__` one name per line with a trailing comma, the layout `ruff format`
322
+ gives it, and `missing-from-all` inserts names in sorted order and above a closing `if __name__ == "__main__":` block
323
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
324
+ - `function-docstring` (SMP002) keeps the text of a docstring that may state a contract: its fix turns any docstring
325
+ longer than one line of five words into a `#` comment block in its place, wrapped to Ruff's line and doc line limits,
326
+ instead of deleting it. A one-line docstring of at most five words, such as `"""Return the value."""`, is still
327
+ deleted ([#7](https://github.com/gaborbernat/simplint/pull/7)) by [@gaborbernat](https://github.com/gaborbernat).
328
+ - `function-docstring` no longer reports docstrings on the public API, the names `__all__` exports and the public
329
+ methods of exported classes, which `undocumented-public-api` now requires
330
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
331
+ - `missing-final`'s fix is now unsafe, since the added `Final` shows in the module's runtime `__annotations__`
332
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
333
+ - `missing-from-all` writes a trailing comma when it creates `__all__`, and creating `__all__` is now an unsafe fix,
334
+ since it narrows what `from module import *` exports ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
335
+ [@gaborbernat](https://github.com/gaborbernat).
336
+ - Module names in imports, attribute access, patch targets and entry points now resolve to files with ty's module
337
+ resolver, the one behind `ruff analyze graph`, searching Ruff's `src` directories and package roots. Cross-file rules
338
+ such as `missing-from-all` and the rename fixes see `src` layouts and pytest rootdir test packages correctly and no
339
+ longer match a module by a guessed dotted suffix of its path ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
340
+ [@gaborbernat](https://github.com/gaborbernat).
341
+ - simplint no longer repeats Ruff's warnings about Ruff's own configuration, such as a removed rule left in `ignore` or
342
+ a deprecated top-level setting, on every run; `ruff check` already shows them. Warnings about simplint's own work stay
343
+ ([#8](https://github.com/gaborbernat/simplint/pull/8)) by [@gaborbernat](https://github.com/gaborbernat).
344
+ - Files and the target Python version now come from Ruff's own configuration resolution: `--config`, `--isolated`,
345
+ `extend` chains, user-level Ruff configuration, Ruff's built-in excludes, `lint.exclude`, `respect-gitignore`,
346
+ `force-exclude` and `per-file-target-version` all apply, and `--target-version`, `--exclude`, `--extend-exclude`,
347
+ `--respect-gitignore` and `--force-exclude` override them. Without any version setting the target is Ruff's default,
348
+ Python 3.14, instead of 3.11. `[tool.simplint]` also takes `fix`, `fix-only`, `unsafe-fixes`, `show-fixes` and
349
+ `output-format`, and rejects unknown keys ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
350
+ [@gaborbernat](https://github.com/gaborbernat).
351
+ - Imports resolve with `ruff_graph`'s module database and Ruff's import helpers, so a file's package follows Ruff's
352
+ package detection, including `namespace-packages`, and a relative import reaching above the top-level package resolves
353
+ to nothing, as in Python ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
354
+ [@gaborbernat](https://github.com/gaborbernat).
355
+ - `simplint rule` prints like `ruff rule`: a rule without a fix no longer says so, and an unknown rule is rejected as an
356
+ invalid argument ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
357
+ [@gaborbernat](https://github.com/gaborbernat).
358
+ - When `select` and `ignore` both match a rule, the more specific entry wins, as in Ruff:
359
+ `--select SMP001 --ignore SMP0` keeps `SMP001`. Before, `ignore` always won
360
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
361
+ - `mock-without-spec`, `mock-attribute-assignment`, `parametrize-without-id`, the dataclass rules, `missing-final` and
362
+ `callable-ellipsis` resolve `patch`, `pytest.mark.parametrize`, `pytest.param`, `dataclass`, `TypeVar` and `Callable`
363
+ through the module's imports, as Ruff does, instead of matching the last part of the name
364
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
365
+ - `single-user-constant` (SMP050) reports only constants whose value is written out in the source: strings, bytes,
366
+ numbers, booleans, `None`, operations between them, `frozenset` of them, and tuple, list, set and dict displays of
367
+ them. A call result such as a cache, a logger, a compiled pattern, a path or a client, and a name or attribute read
368
+ from elsewhere, stays at module level, since moving it would build a new object on every call and break tests that
369
+ patch it ([#7](https://github.com/gaborbernat/simplint/pull/7)) by [@gaborbernat](https://github.com/gaborbernat).
370
+ - `string-concatenation` turns `str(x)`, `repr(x)` and `ascii(x)` into `!s`, `!r` and `!a` conversions and offers no fix
371
+ when a comment sits between the operands ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
372
+ [@gaborbernat](https://github.com/gaborbernat).
373
+ - The `test-module-docstring` fix is now unsafe, since a fixture package under `tests` may read its docstring
374
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
375
+
376
+ <a name="release-0-2-0-fixed"></a>
377
+
378
+ ### Fixed
379
+
380
+ - `absolute-sibling-import` (SMP110) no longer reports an import in a directory without an `__init__.py` that Ruff's
381
+ `namespace-packages` makes a package, such as a pytest `tests` directory, where the relative import would fail
382
+ ([#8](https://github.com/gaborbernat/simplint/pull/8)) by [@gaborbernat](https://github.com/gaborbernat).
383
+ - `absolute-sibling-import` (SMP110) no longer reports imports in a module that compares `__name__` with a string, such
384
+ as a script with a `__main__` guard or an execnet `__channelexec__` module, nor imports inside a function passed to
385
+ `remote_exec` or `inspect.getsource`. That code runs outside its package, where the relative import fails
386
+ ([#13](https://github.com/gaborbernat/simplint/pull/13)) by [@gaborbernat](https://github.com/gaborbernat).
387
+ - `all-format` writes a multi-line `__all__` whose closing bracket follows the last name one name per line, instead of a
388
+ comma before the bracket that Ruff's COM819 removes again ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
389
+ [@gaborbernat](https://github.com/gaborbernat).
390
+ - `all-not-last` moves a `# fmt: off` / `# fmt: on` pair that fences `__all__` along with it, so `ruff format` does not
391
+ reformat the list and strand a suppression comment that covers several names on one line
392
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
393
+ - `all-not-last` offers no fix when a later block extends `__all__` with `+=`, which the move would leave without a list
394
+ to extend ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
395
+ - `all-not-last` keeps two blank lines before the moved `__all__` when the file has no final newline
396
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
397
+ - A file starting with a byte order mark no longer crashes `definition-before-use` and the rules that look for a comment
398
+ above a statement ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
399
+ [@gaborbernat](https://github.com/gaborbernat).
400
+ - `definition-before-use` no longer moves a definition below a class body that reads it, as in
401
+ `Interrupted = Interrupted` ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
402
+ [@gaborbernat](https://github.com/gaborbernat).
403
+ - Ruff's cleanup after a fix keeps every rule on and only limits which ones it fixes, so it no longer drops suppression
404
+ comments such as `# ruff: ignore[unused-import]` as unused and then removes the imports they kept for other modules
405
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
406
+ - `long-paragraph` treats each reST field, such as `:param name:`, as its own paragraph, and `section-comment` no longer
407
+ deletes a prose line that ends in `===` ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
408
+ [@gaborbernat](https://github.com/gaborbernat).
409
+ - `constant-assert` keeps an element of `assert (check, message)` that is written over several lines inside parentheses
410
+ when it rewrites the assertion, instead of leaving a syntax error
411
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
412
+ - `single-user-constant` (SMP050) keeps a local name for a string whose one use calls `format`, since Ruff's f-string
413
+ rule (UP032) would treat the inlined literal differently depending on the layout
414
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
415
+ - `dataclass-kw-only` (SMP114) no longer breaks positional calls such as `Partition(msg.topic(), msg.partition())`: its
416
+ fix passes the arguments of the calls in the same module by keyword, and reports each positional call in other checked
417
+ files with a safe fix of its own, which the same run applies. The fix of the decorator is not offered while a use
418
+ could still pass fields by position, such as a call unpacking `*args` (`**kwargs` passes by keyword and does not block
419
+ it), a subclass, a star import of the module, or a call in a file that ignores the rule
420
+ ([#9](https://github.com/gaborbernat/simplint/pull/9)) by [@gaborbernat](https://github.com/gaborbernat).
421
+ - `dataclass-options` (SMP111) no longer freezes a dataclass when a field name is written on an object simplint cannot
422
+ type, such as `envs[name].active = True`, or when the class has a base class other than `Generic[...]` or a subclass.
423
+ It no longer adds `slots=True` when a subclass has several bases, such as `threading.local`, whose layout conflicts
424
+ ([#9](https://github.com/gaborbernat/simplint/pull/9)) by [@gaborbernat](https://github.com/gaborbernat).
425
+ - `dataclass-options` (SMP111) now sees writes on instances of classes defined in a package's `__init__.py`, and no
426
+ longer adds `slots=True` to a class that writes a `ClassVar` through an instance, reaches its `__dict__`, is pickled
427
+ with protocol 0 or 1 while mutable, or is frozen with subclasses that store attributes. It offers no fix for a class
428
+ without fields or one a test creates inside `pytest.raises`. `dataclass-kw-only` (SMP114) treats `module.Name(...)`
429
+ positional calls on a module no import binds as uses it cannot rewrite
430
+ ([#14](https://github.com/gaborbernat/simplint/pull/14)) by [@gaborbernat](https://github.com/gaborbernat).
431
+ - `dataclass-options` and `dataclass-kw-only` stay silent for targets below Python 3.10, where those dataclass arguments
432
+ do not exist ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
433
+ - `definition-before-use` (SMP020) no longer moves a class below a decorated function or class that names it in an
434
+ annotation, such as a pydantic model in a FastAPI route's return annotation: the decorator reads the annotation while
435
+ the module loads, so after the move it met an unresolved forward reference. A name a function uses only in annotations
436
+ inside its body no longer counts as a helper to place below it ([#9](https://github.com/gaborbernat/simplint/pull/9))
437
+ by [@gaborbernat](https://github.com/gaborbernat).
438
+ - `definition-before-use` (SMP020) no longer moves a helper below a lambda that runs while the module loads, such as
439
+ `(lambda: helper())()` or a callback passed to a module-level call, or below a class body that calls one of its own
440
+ functions which reads the helper ([#11](https://github.com/gaborbernat/simplint/pull/11)) by
441
+ [@gaborbernat](https://github.com/gaborbernat).
442
+ - `function-docstring` (SMP002) drops a pragma comment such as `# noqa: E501` that followed a docstring it replaces with
443
+ `...` ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
444
+ - Removing the docstring of a test module that is left with comments only no longer leaves blank lines at the end of the
445
+ file, which `ruff format` keeps and Ruff reports ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
446
+ [@gaborbernat](https://github.com/gaborbernat).
447
+ - `function-docstring` (SMP002) leaves alone docstrings code reads at runtime: those holding a `>>>` doctest, those of
448
+ objects decorated by anything but a known decorator such as `property` or `pytest.fixture`, and all of them when the
449
+ run reads `__doc__` or calls `getdoc` ([#16](https://github.com/gaborbernat/simplint/pull/16)) by
450
+ [@gaborbernat](https://github.com/gaborbernat).
451
+ - `parametrize-without-id` reports `pytest.param(..., id=None)`, and `mock-without-spec` reports `spec=None` and
452
+ `autospec=False`, since both leave the default in place ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
453
+ [@gaborbernat](https://github.com/gaborbernat).
454
+ - File-level `# ruff: noqa`, `# flake8: noqa` and `# ruff: file-ignore[...]` comments now suppress simplint rules, as
455
+ they do in Ruff ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
456
+ [@gaborbernat](https://github.com/gaborbernat).
457
+ - With `--fix`, a fix that changes what other files learn from the project index, such as `mock-attribute-assignment`
458
+ (SMP203) folding `user.uuid = 7` into the mock constructor, now gets the files depending on it linted and fixed again
459
+ in the same run, so `dataclass-options` (SMP111) freezes the dataclass whose `uuid` field the fix stopped assigning
460
+ without a second run ([#5](https://github.com/gaborbernat/simplint/pull/5)) by
461
+ [@gaborbernat](https://github.com/gaborbernat).
462
+ - Fixes whose edits interleave, such as renames of names used across a module, apply in the same pass, so a module with
463
+ more than a hundred of them no longer fails to converge ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
464
+ [@gaborbernat](https://github.com/gaborbernat).
465
+ - `simplint check --fix` runs its fixes again until they change nothing, so a fix that Ruff's cleanup makes possible,
466
+ such as joining the f-string Ruff writes for `%` formatting, or one withdrawn only next to another rule's pending
467
+ fixes, no longer waits for a second run ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
468
+ [@gaborbernat](https://github.com/gaborbernat).
469
+ - `forwarding-function` no longer reports a function that calls a method on a computed value, such as
470
+ `return make(name).strip()`, or that calls one of its own parameters
471
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
472
+ - `forwarding-function` skips wrappers with parameter defaults and functions other code patches by name
473
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
474
+ - `module-variable-case` (SMP102) no longer asks to rename module variables a framework reads by name: the revision
475
+ identifiers of an Alembic migration, the settings of a gunicorn configuration file, and an `app` or `application` that
476
+ builds a WSGI or ASGI application with Flask, FastAPI, Starlette, Django, Quart, Sanic, aiohttp, Litestar, Falcon,
477
+ Bottle or Pyramid ([#8](https://github.com/gaborbernat/simplint/pull/8)) by
478
+ [@gaborbernat](https://github.com/gaborbernat).
479
+ - `dependency-import-guard` (SMP040) no longer reports `from` imports, which can fail on a module that lacks the name on
480
+ some platform or version, such as `from os import geteuid` ([#10](https://github.com/gaborbernat/simplint/pull/10)) by
481
+ [@gaborbernat](https://github.com/gaborbernat).
482
+ - `function-docstring` (SMP002) and `test-module-docstring` (SMP004) fix a docstring that shares its line with the
483
+ signature or the next statement, as in `def run(): """Run."""`, instead of only after `ruff format` splits the line
484
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
485
+ - `future-annotations` marks its fix unsafe only when the code refers to `TYPE_CHECKING`, not when a comment mentions it
486
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
487
+ - `dependency-import-guard` no longer reports a guarded import of your own package, such as an optional compiled
488
+ extension, and recognizes `builtins.ImportError` ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
489
+ [@gaborbernat](https://github.com/gaborbernat).
490
+ - `single-user-constant` and `walrus-candidate` parenthesize an inlined value that starts with a parenthesis without
491
+ being wrapped in one, such as `(RuntimeError,) if old else ()`, keep a tuple's parentheses, and inline a value written
492
+ over several lines on one; `single-user-constant` no longer derives a local name that starts with a digit or is a
493
+ keyword ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
494
+ - The JSON and JSON Lines outputs fill `noqa_row` for simplint's reports with the line a `noqa` comment belongs on, as
495
+ Ruff does, instead of `null` ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
496
+ [@gaborbernat](https://github.com/gaborbernat).
497
+ - Fixes are withdrawn when they make a line no `ruff format` layout can fit in more cases: the first line of a string
498
+ over several lines, a `def` line with empty parentheses, an operand after the operator of a split operation, comments
499
+ moved deeper, code under `# fmt: off` or `# fmt: skip` or in a file `ruff format` excludes, and a pragma comment that
500
+ an added annotation moves. Lines Ruff does not report, such as one ending in a URL, or code after a bracket the
501
+ formatter splits, no longer withdraw a fix ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
502
+ [@gaborbernat](https://github.com/gaborbernat).
503
+ - `dependency-import-guard` no longer calls a standard library module such as `tomllib` a required dependency,
504
+ `suppression-without-reason` says to list the codes a blanket suppression silences, and `definition-before-use` says
505
+ which definition to move a misplaced one below ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
506
+ [@gaborbernat](https://github.com/gaborbernat).
507
+ - `missing-final` skips implicit type aliases and names another module assigns, adds `Final` to a `from typing import`
508
+ line in isort order, places a new import in the standard library section, and writes `t.Final` for
509
+ `import typing as t` ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
510
+ [@gaborbernat](https://github.com/gaborbernat).
511
+ - `missing-final` treats `Annotated[Final[...], ...]` as already final
512
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
513
+ - `missing-from-all` (SMP113) no longer asks to list in `__all__` a name the module imports and uses itself, such as
514
+ `sys` or `Path`, when another module reaches it through this one. An import the module never uses still counts as a
515
+ re-export ([#5](https://github.com/gaborbernat/simplint/pull/5)) by [@gaborbernat](https://github.com/gaborbernat).
516
+ - `missing-from-all` no longer appends a second `__all__` when the module assigns one inside an `if` or `try`
517
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
518
+ - `mock-attribute-assignment` wraps a bare tuple, `:=` or `yield` value in parentheses when it moves it into the mock
519
+ constructor, so `return_value = "a", {}` no longer turns into two arguments
520
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
521
+ - `mock-without-spec` accepts `new=None` and `new=False`, `mock-attribute-assignment` also reports annotated
522
+ assignments, and its fix is unsafe for `create_autospec` attributes other than `return_value` and `side_effect`
523
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
524
+ - Names imported through a directory without `__init__.py`, such as `from tests.helpers import mark` with pytest's
525
+ rootdir on `sys.path`, now count as imported, so `module-variable-case`, `unexported-public-name` and
526
+ `single-user-constant` no longer rename or move them ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
527
+ [@gaborbernat](https://github.com/gaborbernat).
528
+ - `module-variable-case` (SMP102) and `unexported-public-name` (SMP103) keep the names PLY, PEP 249 and the `typer`
529
+ command read by name, and names read off modules loaded by a computed name, such as a test fixture's
530
+ `importlib.import_module`. Relative imports in namespace packages now count as imports, and `missing-from-all`
531
+ (SMP113) no longer lists a name that would shadow the module itself in its package's `import *`
532
+ ([#15](https://github.com/gaborbernat/simplint/pull/15)) by [@gaborbernat](https://github.com/gaborbernat).
533
+ - A nested `pyproject.toml` without a `[tool.simplint]` table no longer hides the settings of a parent directory,
534
+ matching how Ruff skips one without `[tool.ruff]` ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
535
+ [@gaborbernat](https://github.com/gaborbernat).
536
+ - A fix that Ruff's cleanup undoes, such as `absolute-sibling-import` in a project that bans relative imports, no longer
537
+ counts as a fix: the file is left alone and `--diff` and `--exit-non-zero-on-fix` see no change
538
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
539
+ - A `noqa` comment on the last line of a multi-line string or a backslash continuation suppresses a report that starts
540
+ on an earlier line of it, as in Ruff, instead of being ignored ([#2](https://github.com/gaborbernat/simplint/pull/2))
541
+ by [@gaborbernat](https://github.com/gaborbernat).
542
+ - `single-letter-name` skips the parameters of `@override` methods
543
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
544
+ - `missing-from-all` and `undocumented-public-api` no longer treat a name reached only by a dotted string, such as a
545
+ `mocker.patch` target through a module's `import os`, as an export. Fixes that rename or move names still leave such
546
+ names alone ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
547
+ - The `--preview` help text and docs no longer promise unstable rules and fixes; simplint has none, and the flag
548
+ switches the output to rule names ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
549
+ [@gaborbernat](https://github.com/gaborbernat).
550
+ - `function-docstring` keeps the docstrings of dunder methods, overrides and property setters of an exported class, and
551
+ `undocumented-public-api` no longer asks for them. It accepts a trailing `#:` comment on a variable and names
552
+ properties as such ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
553
+ [@gaborbernat](https://github.com/gaborbernat).
554
+ - `missing-from-all` no longer adds `__all__` to a module that imports it from elsewhere
555
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
556
+ - Rename fixes skip names that shadow a builtin, as in `zip = zip`
557
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
558
+ - `module-variable-case` (SMP102) looks for the name in the text strings hold rather than in their source, so whether
559
+ the rename is offered no longer depends on escapes that `ruff format` rewrites, such as `\N{latin small letter x}`
560
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
561
+ - The cache now accounts for `skip-magic-trailing-comma`; a relative `--config` path anchors per-file ignores at its
562
+ directory; a per-file-ignore pattern such as `./tests/*.py` matches as in Ruff; an empty rule selector is an error; a
563
+ file simplint cannot read is reported as `io-error` only while Ruff's `E902` is on, and otherwise logged as
564
+ `ruff check` does; and the "No Python files found" warning shows once
565
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
566
+ - Fixes no longer leave Ruff work that only shows up after `ruff format`: a nested `if` or `with` that a fix lets fit on
567
+ one line gets merged, an import block a fix joins across a `;` gets sorted, and a `# noqa: E501` on a line a fix
568
+ changes stays ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
569
+ [@gaborbernat](https://github.com/gaborbernat).
570
+ - Ruff's cleanup after a fix also takes in the rules its own fixes give new work, such as the import sort after an
571
+ import moves to the top, and a fix that would make `ruff format` split a line carrying a `noqa` or other pragma
572
+ comment is withdrawn, since the split moves the comment off the code it applies to
573
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
574
+ - Ruff fixes that depend on the line length, such as collapsing nested `if` statements, are judged the same before and
575
+ after `ruff format`, so a second run no longer applies what the first withdrew
576
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
577
+ - `suppression-without-reason` recognizes `# ruff: ignore[...]`, `# ruff: file-ignore[...]` and
578
+ `# pyrefly: ignore[...]`, and directives written without a space after the colon
579
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
580
+ - `simplint rule` and the rule selection settings now say when a code or selector names a Ruff rule and point to Ruff,
581
+ instead of rejecting it as unknown ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
582
+ [@gaborbernat](https://github.com/gaborbernat).
583
+ - A file simplint cannot read or write is reported with Ruff's own `io-error` (`E902`) diagnostic, at `1:1` as Ruff puts
584
+ it, and with Ruff's `preview` on, reports and the fix summary name rules as Ruff does, unless
585
+ `output-prefer-rule-codes` is set ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
586
+ [@gaborbernat](https://github.com/gaborbernat).
587
+ - The semantic model behind the rules is now Ruff's own, so names follow Python's scoping more closely: PEP 695 type
588
+ parameters and match captures resolve to their own scope, a star import no longer counts as a binding, and a class
589
+ body that annotates `type` without a value no longer hides the builtin
590
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
591
+ - `simplint rules --output-format json` names a rule's fix availability as `ruff rule --all --output-format json` does:
592
+ `"Always"`, `"Sometimes"` or `"None"`, no longer lowercase ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
593
+ [@gaborbernat](https://github.com/gaborbernat).
594
+ - The SARIF output links to simplint's repository instead of a non-existent `astral-sh/simplint`, and the rdjson output
595
+ names simplint and its documentation as the source instead of Ruff
596
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
597
+ - `section-comment` (SMP001) no longer deletes the text of a decorated comment with more than three words, such as
598
+ `# *** remove return to update cron`: its fix strips the decoration and keeps the text. Dividers, and banners around
599
+ a title of up to three words such as `# === helpers ===`, are still deleted. A pair of divider characters joined to a
600
+ word, such as the underscores of `__init__`, no longer makes a comment a section comment
601
+ ([#8](https://github.com/gaborbernat/simplint/pull/8)) by [@gaborbernat](https://github.com/gaborbernat).
602
+ - An unknown rule selector error now names the setting and the file it came from, or the command line, as Ruff does
603
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
604
+ - `single-user-constant`, `missing-from-all` and `all-format` take the indentation of a statement that follows a `;`
605
+ from its line instead of copying the statements before it, which duplicated them
606
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
607
+ - A second run of the documented pipeline no longer changes code: `single-user-constant` counts a comment that
608
+ `ruff format` moved inside the parentheses around a value as trailing it and handles a function body on the `def`
609
+ line, `dependency-import-guard` unwraps a one-line `try: import x` instead of breaking the syntax, and the fixes run
610
+ again on the code Ruff's cleanup leaves ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
611
+ [@gaborbernat](https://github.com/gaborbernat).
612
+ - `single-user-constant` no longer reports a constant whose only use is a module-level lambda, which it cannot fix
613
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
614
+ - `single-user-constant` no longer reports module values a function mutates, such as a set of warnings already shown or
615
+ a lock, and offers no fix for a constant with a trailing comment or a value that reads a name the module later
616
+ deletes. Its fix keeps the annotation of a new local, and inlines into an f-string only a plain name or number
617
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
618
+ - `module-variable-case` skips Sphinx `conf.py` settings and `TYPE_CHECKING`, `walrus-candidate` and `missing-final`
619
+ skip `TYPE_CHECKING`, and `unexported-public-name` skips Sphinx's `setup` hook
620
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
621
+ - The line length model no longer treats an augmented assignment such as `|=` as an operator `ruff format` moves to the
622
+ start of a line, and now does for the `not` of `not in`, so a fix is no longer kept when the line it makes stays too
623
+ long, or withdrawn when `ruff format` can split the line to fit ([#2](https://github.com/gaborbernat/simplint/pull/2))
624
+ by [@gaborbernat](https://github.com/gaborbernat).
625
+ - When withdrawing either of two rules would settle a conflict with Ruff, simplint withdraws the one a second run would
626
+ withdraw again, so a single `simplint check --fix` leaves nothing for the next
627
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
628
+ - Names a `from module import *` can reach count as used: renames to `_`-names by `module-variable-case` (SMP102),
629
+ `unexported-public-name` (SMP103), `single-user-constant` (SMP050) and other rules leave them alone, a name imported
630
+ from a package counts in the module its `__init__.py` star-imports it from, and `missing-from-all` (SMP113) no longer
631
+ creates an `__all__` that would narrow what `import *` takes. A star import that resolves to no file of the run keeps
632
+ the names of every file named after its module ([#5](https://github.com/gaborbernat/simplint/pull/5)) by
633
+ [@gaborbernat](https://github.com/gaborbernat).
634
+ - Source read from standard input is linted as the file `--stdin-filename` names would be: it gets that file's
635
+ `per-file-target-version`, its package, and the directory above its package as an import search root, so entry points
636
+ outside the `src` directories count as uses ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
637
+ [@gaborbernat](https://github.com/gaborbernat).
638
+ - `string-concatenation` (SMP112) offers its fix only when the code shows every operand is a `str`, so it no longer
639
+ turns `+` on an object with its own `__add__` or `__radd__`, such as `Markup`, a path or a `PageRange`, into an
640
+ f-string that formats it instead. It reads that from literals, `str` methods, annotations, loops, the module's own
641
+ functions and classes, and common standard library values such as `os.sep` or `os.path.join`
642
+ ([#12](https://github.com/gaborbernat/simplint/pull/12)) by [@gaborbernat](https://github.com/gaborbernat).
643
+ - Names a `.pyi` stub declares count as the public API of the module it describes, so fixes no longer rename them out of
644
+ step with the stub ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
645
+ [@gaborbernat](https://github.com/gaborbernat).
646
+ - `suppression-without-reason` no longer reads words such as `# noqa-ish` as a suppression directive
647
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
648
+ - `walrus-candidate` and `missing-final` do not run below Python 3.8, and `dependency-import-guard` treats a module as
649
+ standard library only when every supported version ships it, so guards around `distutils`, `ctypes`, `ssl`, `sqlite3`
650
+ or `tkinter` are no longer reported ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
651
+ [@gaborbernat](https://github.com/gaborbernat).
652
+ - `test-class` offers no fix for a class another class extends or the file refers to
653
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
654
+ - `module-variable-case` (SMP102) no longer renames `version`, `version_tuple` and `commit_id` in a module that binds
655
+ `__version__`, the names of the version file setuptools-scm writes
656
+ ([#10](https://github.com/gaborbernat/simplint/pull/10)) by [@gaborbernat](https://github.com/gaborbernat).
657
+ - `walrus-candidate` (SMP100) and `missing-final` (SMP101) no longer run in a module with a version gate, a top-level
658
+ `if` on `sys.version_info` that raises or exits, since such a module runs on interpreters that lack `:=` or
659
+ `typing.Final` ([#10](https://github.com/gaborbernat/simplint/pull/10)) by
660
+ [@gaborbernat](https://github.com/gaborbernat).
661
+ - `walrus-candidate` (SMP100) no longer reports an assignment when folding it into the `if` test would make the header
662
+ too wide for one line, which `ruff format` then split over several. The header is measured joined on one line at its
663
+ block's indentation, so the result does not depend on how the code is laid out
664
+ ([#8](https://github.com/gaborbernat/simplint/pull/8)) by [@gaborbernat](https://github.com/gaborbernat).
665
+ - `walrus-candidate` (SMP100) now also fixes values continued with a backslash, and when its fix leaves an `if` that
666
+ Ruff's collapsible-if (SIM102) asks to merge, the merge happens in the same run whatever the line length, so a second
667
+ run of the pipeline changes nothing ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
668
+ [@gaborbernat](https://github.com/gaborbernat).
669
+ - `walrus-candidate` no longer deletes a module-level name that `__all__` lists, or a class attribute assigned inside a
670
+ block of a class body ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
671
+ [@gaborbernat](https://github.com/gaborbernat).
672
+
673
+ <a name="release-0-2-0-documentation"></a>
674
+
675
+ ### Documentation
676
+
677
+ - Every color pair in the documentation, including code tokens, badges, form fields, focus rings and diagram nodes, now
678
+ reaches a WCAG contrast of 4.5:1 in the light, dark and automatic themes, with calmer diagram colors and a softer page
679
+ background and text ([#3](https://github.com/gaborbernat/simplint/pull/3)) by
680
+ [@gaborbernat](https://github.com/gaborbernat).
681
+ - Pages no longer grow wider than the window when a code block holds a long line, as the configuration page did; the
682
+ line scrolls inside its block, and diagrams fit their column ([#6](https://github.com/gaborbernat/simplint/pull/6)) by
683
+ [@gaborbernat](https://github.com/gaborbernat).
684
+ - Redesigned documentation with the project branding, a filterable rules index, side-by-side examples, diagrams and a
685
+ generated command-line reference; `simplint rule` leaves the diagram source out of terminal output
686
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
687
+
688
+ <a name="release-0-2-0-performance"></a>
689
+
690
+ ### Performance
691
+
692
+ - With `--fix` or `--diff`, the cache also remembers files the fixes leave as they are, together with the rules whose
693
+ fixes simplint held back for them, so a later run reports such a file from a single lint instead of running the whole
694
+ fix loop again. On an already fixed copy of `sympy`, a repeat `--fix --unsafe-fixes` run takes about a quarter of the
695
+ CPU time it did ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
696
+ [@gaborbernat](https://github.com/gaborbernat).
697
+ - `simplint check --fix` runs Ruff's findings checks without the whitespace, blank line and line length rules, whose
698
+ findings it ignores, unless a file's suppression comments may name one of them; the fix loop on `sympy` does about 6%
699
+ less work ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
700
+ - `simplint check` renders its default `full` output on all cores, so a report with many fix diffs, such as renames that
701
+ span whole modules, prints sooner: on `sympy` the run takes about 40% less wall time
702
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
703
+ - Release wheels for x86_64 Linux (glibc and musl), x64 Windows and arm64 macOS are built with profile-guided
704
+ optimization, trained on `simplint check` and `simplint check --fix` over pinned sdists of black, pip and botocore. On
705
+ `sympy` and `django` this runs about 6% fewer instructions in check mode and about 12% fewer with `--fix`
706
+ ([#2](https://github.com/gaborbernat/simplint/pull/2)) by [@gaborbernat](https://github.com/gaborbernat).
707
+ - The rules that look at statements and expressions share one walk over each file instead of walking it once each, so
708
+ `simplint check` takes about 7% less time ([#2](https://github.com/gaborbernat/simplint/pull/2)) by
709
+ [@gaborbernat](https://github.com/gaborbernat).
710
+
711
+ <a name="release-0-2-0-new-contributors"></a>
712
+
713
+ ### New Contributors
714
+
715
+ - [@gaborbernat](https://github.com/gaborbernat) made their first contribution in
716
+ [#2](https://github.com/gaborbernat/simplint/pull/2)
717
+
718
+ ## 0.1.0 (2026-10-30)
719
+
720
+ <a name="release-0-1-0"></a>
721
+
722
+ <a name="release-0-1-0-added"></a>
723
+
724
+ ### Added
725
+
726
+ - First release: 32 rules for code that is easier to read and review, beyond what Ruff checks, with safe and unsafe
727
+ fixes and a cross-module import index by Bernát Gábor.