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