simplint 0.2.2__tar.gz → 0.3.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 (605) hide show
  1. {simplint-0.2.2 → simplint-0.3.0}/CHANGELOG.md +80 -0
  2. {simplint-0.2.2 → simplint-0.3.0}/CONTRIBUTING.md +1 -5
  3. {simplint-0.2.2 → simplint-0.3.0}/Cargo.lock +1 -1
  4. {simplint-0.2.2 → simplint-0.3.0}/Cargo.toml +1 -1
  5. simplint-0.3.0/PKG-INFO +69 -0
  6. {simplint-0.2.2 → simplint-0.3.0}/README.md +7 -4
  7. simplint-0.3.0/build.rs +38 -0
  8. {simplint-0.2.2 → simplint-0.3.0}/docs/conf.py +2 -1
  9. {simplint-0.2.2 → simplint-0.3.0}/docs/configuration.rst +69 -5
  10. {simplint-0.2.2 → simplint-0.3.0}/docs/index.rst +10 -5
  11. {simplint-0.2.2 → simplint-0.3.0}/ignore-words.txt +1 -0
  12. {simplint-0.2.2 → simplint-0.3.0}/pylock.toml +97 -97
  13. {simplint-0.2.2 → simplint-0.3.0}/pyproject.toml +6 -7
  14. {simplint-0.2.2 → simplint-0.3.0}/src/cli/args.rs +12 -6
  15. {simplint-0.2.2 → simplint-0.3.0}/src/cli/check.rs +250 -127
  16. {simplint-0.2.2/src/settings → simplint-0.3.0/src/cli}/conflicts.rs +38 -7
  17. {simplint-0.2.2 → simplint-0.3.0}/src/cli/diagnostics.rs +39 -8
  18. {simplint-0.2.2 → simplint-0.3.0}/src/cli/mod.rs +1 -0
  19. simplint-0.3.0/src/fix/cleanup.rs +91 -0
  20. {simplint-0.2.2 → simplint-0.3.0}/src/fix/mod.rs +56 -26
  21. {simplint-0.2.2 → simplint-0.3.0}/src/lint/checker.rs +39 -4
  22. {simplint-0.2.2 → simplint-0.3.0}/src/lint/mod.rs +2 -18
  23. {simplint-0.2.2 → simplint-0.3.0}/src/lint/noqa.rs +16 -6
  24. {simplint-0.2.2 → simplint-0.3.0}/src/lint/registry.rs +25 -7
  25. {simplint-0.2.2/src/fix → simplint-0.3.0/src/lint}/ruff.rs +6 -88
  26. {simplint-0.2.2 → simplint-0.3.0}/src/lint/walker.rs +11 -11
  27. {simplint-0.2.2 → simplint-0.3.0}/src/main.rs +2 -0
  28. {simplint-0.2.2 → simplint-0.3.0}/src/project/cache.rs +49 -6
  29. {simplint-0.2.2 → simplint-0.3.0}/src/project/constructors.rs +54 -61
  30. {simplint-0.2.2 → simplint-0.3.0}/src/project/facts.rs +83 -11
  31. {simplint-0.2.2 → simplint-0.3.0}/src/project/index.rs +314 -97
  32. {simplint-0.2.2 → simplint-0.3.0}/src/project/mod.rs +1 -1
  33. {simplint-0.2.2 → simplint-0.3.0}/src/project/receivers.rs +27 -41
  34. {simplint-0.2.2 → simplint-0.3.0}/src/rules/comments/long_paragraph.md +4 -6
  35. {simplint-0.2.2 → simplint-0.3.0}/src/rules/comments/long_paragraph.rs +0 -30
  36. {simplint-0.2.2 → simplint-0.3.0}/src/rules/comments/suppression_without_reason.rs +28 -28
  37. {simplint-0.2.2 → simplint-0.3.0}/src/rules/dataclasses/dataclass_kw_only.rs +54 -28
  38. {simplint-0.2.2 → simplint-0.3.0}/src/rules/dataclasses/dataclass_options.rs +20 -16
  39. {simplint-0.2.2 → simplint-0.3.0}/src/rules/dataclasses/mod.rs +2 -2
  40. {simplint-0.2.2 → simplint-0.3.0}/src/rules/docstrings/function_docstring.md +16 -10
  41. {simplint-0.2.2 → simplint-0.3.0}/src/rules/docstrings/function_docstring.rs +30 -13
  42. simplint-0.3.0/src/rules/docstrings/mod.rs +242 -0
  43. simplint-0.3.0/src/rules/docstrings/rest/attributes.rs +135 -0
  44. simplint-0.3.0/src/rules/docstrings/rest/edits.rs +149 -0
  45. simplint-0.3.0/src/rules/docstrings/rest/mod.rs +11 -0
  46. simplint-0.3.0/src/rules/docstrings/rest/parse.rs +246 -0
  47. simplint-0.3.0/src/rules/docstrings/rest/targets.rs +195 -0
  48. simplint-0.3.0/src/rules/docstrings/rest_attribute_kind.md +45 -0
  49. simplint-0.3.0/src/rules/docstrings/rest_attribute_kind.rs +39 -0
  50. simplint-0.3.0/src/rules/docstrings/rest_duplicate_param.md +49 -0
  51. simplint-0.3.0/src/rules/docstrings/rest_duplicate_param.rs +34 -0
  52. simplint-0.3.0/src/rules/docstrings/rest_field_syntax.md +58 -0
  53. simplint-0.3.0/src/rules/docstrings/rest_field_syntax.rs +98 -0
  54. simplint-0.3.0/src/rules/docstrings/rest_inline_markup.md +43 -0
  55. simplint-0.3.0/src/rules/docstrings/rest_inline_markup.rs +169 -0
  56. simplint-0.3.0/src/rules/docstrings/rest_missing_attribute.md +63 -0
  57. simplint-0.3.0/src/rules/docstrings/rest_missing_attribute.rs +41 -0
  58. simplint-0.3.0/src/rules/docstrings/rest_missing_param.md +48 -0
  59. simplint-0.3.0/src/rules/docstrings/rest_missing_param.rs +36 -0
  60. simplint-0.3.0/src/rules/docstrings/rest_missing_raises.md +67 -0
  61. simplint-0.3.0/src/rules/docstrings/rest_missing_raises.rs +133 -0
  62. simplint-0.3.0/src/rules/docstrings/rest_param_order.md +39 -0
  63. simplint-0.3.0/src/rules/docstrings/rest_param_order.rs +32 -0
  64. simplint-0.3.0/src/rules/docstrings/rest_private_field.md +45 -0
  65. simplint-0.3.0/src/rules/docstrings/rest_private_field.rs +26 -0
  66. simplint-0.3.0/src/rules/docstrings/rest_restating_field.md +41 -0
  67. simplint-0.3.0/src/rules/docstrings/rest_restating_field.rs +54 -0
  68. simplint-0.3.0/src/rules/docstrings/rest_returns.md +73 -0
  69. simplint-0.3.0/src/rules/docstrings/rest_returns.rs +153 -0
  70. simplint-0.3.0/src/rules/docstrings/rest_type_field.md +48 -0
  71. simplint-0.3.0/src/rules/docstrings/rest_type_field.rs +53 -0
  72. simplint-0.3.0/src/rules/docstrings/rest_unknown_attribute.md +47 -0
  73. simplint-0.3.0/src/rules/docstrings/rest_unknown_attribute.rs +36 -0
  74. simplint-0.3.0/src/rules/docstrings/rest_unknown_param.md +41 -0
  75. simplint-0.3.0/src/rules/docstrings/rest_unknown_param.rs +28 -0
  76. {simplint-0.2.2 → simplint-0.3.0}/src/rules/docstrings/test_module_docstring.md +1 -1
  77. simplint-0.3.0/src/rules/docstrings/undocumented_public_api.md +83 -0
  78. simplint-0.3.0/src/rules/docstrings/undocumented_public_api.rs +41 -0
  79. {simplint-0.2.2 → simplint-0.3.0}/src/rules/exports/all_format.rs +1 -1
  80. {simplint-0.2.2 → simplint-0.3.0}/src/rules/exports/all_not_last.rs +1 -1
  81. {simplint-0.2.2 → simplint-0.3.0}/src/rules/exports/missing_from_all.md +2 -0
  82. {simplint-0.2.2 → simplint-0.3.0}/src/rules/exports/missing_from_all.rs +3 -15
  83. simplint-0.3.0/src/rules/exports/mod.rs +18 -0
  84. simplint-0.3.0/src/rules/exports/unused_export.md +62 -0
  85. simplint-0.3.0/src/rules/exports/unused_export.rs +152 -0
  86. {simplint-0.2.2 → simplint-0.3.0}/src/rules/imports/absolute_sibling_import.rs +1 -1
  87. {simplint-0.2.2 → simplint-0.3.0}/src/rules/imports/dependency_import_guard.rs +2 -1
  88. {simplint-0.2.2 → simplint-0.3.0}/src/rules/imports/init_module_content.md +18 -1
  89. simplint-0.3.0/src/rules/imports/init_module_content.rs +44 -0
  90. {simplint-0.2.2 → simplint-0.3.0}/src/rules/mod.rs +27 -49
  91. {simplint-0.2.2 → simplint-0.3.0}/src/rules/naming/mod.rs +2 -32
  92. {simplint-0.2.2 → simplint-0.3.0}/src/rules/naming/module_variable_case.rs +8 -15
  93. {simplint-0.2.2 → simplint-0.3.0}/src/rules/naming/single_letter_name.rs +23 -11
  94. {simplint-0.2.2 → simplint-0.3.0}/src/rules/naming/unexported_public_name.rs +2 -2
  95. {simplint-0.2.2 → simplint-0.3.0}/src/rules/strings/kinds.rs +142 -113
  96. {simplint-0.2.2 → simplint-0.3.0}/src/rules/strings/mod.rs +1 -1
  97. {simplint-0.2.2 → simplint-0.3.0}/src/rules/structure/definition_before_use.rs +25 -30
  98. {simplint-0.2.2 → simplint-0.3.0}/src/rules/structure/forwarding_function.rs +3 -3
  99. {simplint-0.2.2 → simplint-0.3.0}/src/rules/structure/single_user_constant.rs +34 -36
  100. {simplint-0.2.2 → simplint-0.3.0}/src/rules/structure/walrus_candidate.rs +20 -17
  101. {simplint-0.2.2 → simplint-0.3.0}/src/rules/testing/constant_assert.rs +2 -1
  102. {simplint-0.2.2 → simplint-0.3.0}/src/rules/testing/mock_attribute_assignment.rs +2 -1
  103. {simplint-0.2.2 → simplint-0.3.0}/src/rules/testing/mock_without_spec.rs +1 -1
  104. {simplint-0.2.2 → simplint-0.3.0}/src/rules/testing/test_class.md +2 -1
  105. {simplint-0.2.2 → simplint-0.3.0}/src/rules/testing/test_class.rs +9 -1
  106. {simplint-0.2.2 → simplint-0.3.0}/src/rules/typing/missing_final.rs +16 -16
  107. {simplint-0.2.2 → simplint-0.3.0}/src/rules/typing/object_annotation.rs +2 -1
  108. simplint-0.3.0/src/settings/api.rs +194 -0
  109. {simplint-0.2.2 → simplint-0.3.0}/src/settings/file.rs +1 -9
  110. {simplint-0.2.2 → simplint-0.3.0}/src/settings/metadata.rs +50 -3
  111. {simplint-0.2.2 → simplint-0.3.0}/src/settings/mod.rs +110 -82
  112. {simplint-0.2.2 → simplint-0.3.0}/src/settings/options.rs +89 -4
  113. simplint-0.3.0/src/syntax.rs +250 -0
  114. {simplint-0.2.2 → simplint-0.3.0}/tasks/assemble_release.py +16 -22
  115. {simplint-0.2.2 → simplint-0.3.0}/tasks/cargo_version.py +3 -5
  116. {simplint-0.2.2 → simplint-0.3.0}/tasks/check_sdist.py +3 -5
  117. {simplint-0.2.2 → simplint-0.3.0}/tasks/ecosystem.py +22 -30
  118. {simplint-0.2.2 → simplint-0.3.0}/tasks/generate_changelog.py +13 -16
  119. {simplint-0.2.2 → simplint-0.3.0}/tasks/pgo.py +68 -90
  120. {simplint-0.2.2 → simplint-0.3.0}/tasks/pgo.toml +1 -1
  121. {simplint-0.2.2 → simplint-0.3.0}/tasks/python_versions.py +32 -51
  122. {simplint-0.2.2 → simplint-0.3.0}/tasks/update_cargo_edit.py +26 -36
  123. {simplint-0.2.2 → simplint-0.3.0}/tests/cache.rs +82 -9
  124. {simplint-0.2.2 → simplint-0.3.0}/tests/common/mod.rs +4 -3
  125. {simplint-0.2.2 → simplint-0.3.0}/tests/configuration.rs +70 -2
  126. {simplint-0.2.2 → simplint-0.3.0}/tests/conflicts.rs +23 -10
  127. {simplint-0.2.2 → simplint-0.3.0}/tests/fix.rs +28 -7
  128. simplint-0.3.0/tests/fixtures/comments/long_paragraph/long_paragraph.snap +5 -0
  129. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/comments/suppression_without_reason/suppression_without_reason.py +4 -0
  130. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/comments/suppression_without_reason/suppression_without_reason.snap +4 -0
  131. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/docstrings/function_docstring/function_docstring.snap +10 -10
  132. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/docstrings/function_docstring/function_docstring_contract.snap +20 -20
  133. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/docstrings/function_docstring/function_docstring_dynamic.snap +1 -1
  134. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/docstrings/function_docstring/function_docstring_exported.snap +2 -2
  135. simplint-0.3.0/tests/fixtures/docstrings/function_docstring/function_docstring_facade__core.snap +25 -0
  136. simplint-0.3.0/tests/fixtures/docstrings/function_docstring/function_docstring_facade__helpers.snap +9 -0
  137. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/docstrings/function_docstring/function_docstring_runtime.snap +8 -8
  138. simplint-0.3.0/tests/fixtures/docstrings/rest_attribute_kind/rest_attribute_kind.py +57 -0
  139. simplint-0.3.0/tests/fixtures/docstrings/rest_attribute_kind/rest_attribute_kind.snap +64 -0
  140. simplint-0.3.0/tests/fixtures/docstrings/rest_duplicate_param/rest_duplicate_param.py +35 -0
  141. simplint-0.3.0/tests/fixtures/docstrings/rest_duplicate_param/rest_duplicate_param.snap +40 -0
  142. simplint-0.3.0/tests/fixtures/docstrings/rest_field_syntax/rest_field_syntax.py +95 -0
  143. simplint-0.3.0/tests/fixtures/docstrings/rest_field_syntax/rest_field_syntax.snap +113 -0
  144. simplint-0.3.0/tests/fixtures/docstrings/rest_inline_markup/rest_inline_markup.py +39 -0
  145. simplint-0.3.0/tests/fixtures/docstrings/rest_inline_markup/rest_inline_markup.snap +53 -0
  146. simplint-0.3.0/tests/fixtures/docstrings/rest_missing_attribute/rest_missing_attribute.py +95 -0
  147. simplint-0.3.0/tests/fixtures/docstrings/rest_missing_attribute/rest_missing_attribute.snap +118 -0
  148. simplint-0.3.0/tests/fixtures/docstrings/rest_missing_param/rest_missing_param.py +120 -0
  149. simplint-0.3.0/tests/fixtures/docstrings/rest_missing_param/rest_missing_param.snap +162 -0
  150. simplint-0.3.0/tests/fixtures/docstrings/rest_missing_raises/rest_missing_raises.py +148 -0
  151. simplint-0.3.0/tests/fixtures/docstrings/rest_missing_raises/rest_missing_raises.snap +165 -0
  152. simplint-0.3.0/tests/fixtures/docstrings/rest_param_order/rest_param_order.py +16 -0
  153. simplint-0.3.0/tests/fixtures/docstrings/rest_param_order/rest_param_order.snap +5 -0
  154. simplint-0.3.0/tests/fixtures/docstrings/rest_private_field/rest_private_field.py +47 -0
  155. simplint-0.3.0/tests/fixtures/docstrings/rest_private_field/rest_private_field.snap +52 -0
  156. simplint-0.3.0/tests/fixtures/docstrings/rest_restating_field/rest_restating_field.py +19 -0
  157. simplint-0.3.0/tests/fixtures/docstrings/rest_restating_field/rest_restating_field.snap +7 -0
  158. simplint-0.3.0/tests/fixtures/docstrings/rest_returns/rest_returns.py +159 -0
  159. simplint-0.3.0/tests/fixtures/docstrings/rest_returns/rest_returns.snap +172 -0
  160. simplint-0.3.0/tests/fixtures/docstrings/rest_type_field/rest_type_field.py +56 -0
  161. simplint-0.3.0/tests/fixtures/docstrings/rest_type_field/rest_type_field.snap +67 -0
  162. simplint-0.3.0/tests/fixtures/docstrings/rest_unknown_attribute/rest_unknown_attribute.py +96 -0
  163. simplint-0.3.0/tests/fixtures/docstrings/rest_unknown_attribute/rest_unknown_attribute.snap +99 -0
  164. simplint-0.3.0/tests/fixtures/docstrings/rest_unknown_param/rest_unknown_param.py +134 -0
  165. simplint-0.3.0/tests/fixtures/docstrings/rest_unknown_param/rest_unknown_param.snap +141 -0
  166. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/docstrings/test_module_docstring/test_module_docstring.snap +1 -1
  167. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/docstrings/test_module_docstring/test_module_docstring_inline.snap +1 -1
  168. simplint-0.3.0/tests/fixtures/docstrings/undocumented_public_api/facade/__init__.py +11 -0
  169. simplint-0.3.0/tests/fixtures/docstrings/undocumented_public_api/facade/_core.py +19 -0
  170. simplint-0.3.0/tests/fixtures/docstrings/undocumented_public_api/facade/_helpers.py +2 -0
  171. simplint-0.3.0/tests/fixtures/docstrings/undocumented_public_api/loose/__init__.py +6 -0
  172. simplint-0.3.0/tests/fixtures/docstrings/undocumented_public_api/loose/_deep.py +1 -0
  173. simplint-0.3.0/tests/fixtures/docstrings/undocumented_public_api/loose/_extra.py +4 -0
  174. simplint-0.3.0/tests/fixtures/docstrings/undocumented_public_api/loose/_impl.py +4 -0
  175. simplint-0.3.0/tests/fixtures/docstrings/undocumented_public_api/loose/_stars.py +10 -0
  176. simplint-0.3.0/tests/fixtures/docstrings/undocumented_public_api/switched.py +59 -0
  177. simplint-0.3.0/tests/fixtures/docstrings/undocumented_public_api/undocumented_public_api.snap +10 -0
  178. simplint-0.3.0/tests/fixtures/docstrings/undocumented_public_api/undocumented_public_api_facade__core.snap +9 -0
  179. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/docstrings/undocumented_public_api/undocumented_public_api_imported.snap +1 -1
  180. simplint-0.3.0/tests/fixtures/docstrings/undocumented_public_api/undocumented_public_api_loose__deep.snap +5 -0
  181. simplint-0.3.0/tests/fixtures/docstrings/undocumented_public_api/undocumented_public_api_loose__extra.snap +5 -0
  182. simplint-0.3.0/tests/fixtures/docstrings/undocumented_public_api/undocumented_public_api_loose__impl.snap +5 -0
  183. simplint-0.3.0/tests/fixtures/docstrings/undocumented_public_api/undocumented_public_api_loose__stars.snap +5 -0
  184. simplint-0.3.0/tests/fixtures/docstrings/undocumented_public_api/undocumented_public_api_switched.snap +7 -0
  185. simplint-0.3.0/tests/fixtures/exports/unused_export/exporting/__init__.py +1 -0
  186. simplint-0.3.0/tests/fixtures/exports/unused_export/exporting/sub/__init__.py +5 -0
  187. simplint-0.3.0/tests/fixtures/exports/unused_export/exporting/sub/inner.py +1 -0
  188. simplint-0.3.0/tests/fixtures/exports/unused_export/exporting/unused_export.py +14 -0
  189. simplint-0.3.0/tests/fixtures/exports/unused_export/exporting/unused_export_all.py +4 -0
  190. simplint-0.3.0/tests/fixtures/exports/unused_export/exporting/unused_export_call.py +8 -0
  191. simplint-0.3.0/tests/fixtures/exports/unused_export/exporting/unused_export_comment.py +9 -0
  192. simplint-0.3.0/tests/fixtures/exports/unused_export/exporting/unused_export_comment_all.py +7 -0
  193. simplint-0.3.0/tests/fixtures/exports/unused_export/exporting/unused_export_double.py +5 -0
  194. simplint-0.3.0/tests/fixtures/exports/unused_export/exporting/unused_export_extend.py +8 -0
  195. simplint-0.3.0/tests/fixtures/exports/unused_export/exporting/unused_export_inline.py +7 -0
  196. simplint-0.3.0/tests/fixtures/exports/unused_export/exporting/unused_export_lazy.py +5 -0
  197. simplint-0.3.0/tests/fixtures/exports/unused_export/exporting/unused_export_noted.py +10 -0
  198. simplint-0.3.0/tests/fixtures/exports/unused_export/exporting/unused_export_packed.py +12 -0
  199. simplint-0.3.0/tests/fixtures/exports/unused_export/exporting/unused_export_star.py +4 -0
  200. simplint-0.3.0/tests/fixtures/exports/unused_export/exporting/unused_export_tuple.py +7 -0
  201. simplint-0.3.0/tests/fixtures/exports/unused_export/exporting/unused_export_tuple_end.py +7 -0
  202. simplint-0.3.0/tests/fixtures/exports/unused_export/exporting/unused_export_user.py +12 -0
  203. simplint-0.3.0/tests/fixtures/exports/unused_export/unused_export.snap +19 -0
  204. simplint-0.3.0/tests/fixtures/exports/unused_export/unused_export_all.snap +10 -0
  205. simplint-0.3.0/tests/fixtures/exports/unused_export/unused_export_call.snap +5 -0
  206. simplint-0.3.0/tests/fixtures/exports/unused_export/unused_export_comment.snap +15 -0
  207. simplint-0.3.0/tests/fixtures/exports/unused_export/unused_export_comment_all.snap +5 -0
  208. simplint-0.3.0/tests/fixtures/exports/unused_export/unused_export_double.snap +6 -0
  209. simplint-0.3.0/tests/fixtures/exports/unused_export/unused_export_extend.snap +5 -0
  210. simplint-0.3.0/tests/fixtures/exports/unused_export/unused_export_inline.snap +13 -0
  211. simplint-0.3.0/tests/fixtures/exports/unused_export/unused_export_noted.snap +5 -0
  212. simplint-0.3.0/tests/fixtures/exports/unused_export/unused_export_packed.snap +19 -0
  213. simplint-0.3.0/tests/fixtures/exports/unused_export/unused_export_root.py +4 -0
  214. simplint-0.3.0/tests/fixtures/exports/unused_export/unused_export_tuple.snap +13 -0
  215. simplint-0.3.0/tests/fixtures/exports/unused_export/unused_export_tuple_end.snap +13 -0
  216. simplint-0.3.0/tests/fixtures/imports/init_module_content/_hidden/__init__.py +5 -0
  217. simplint-0.3.0/tests/fixtures/imports/init_module_content/_hidden/parts.py +1 -0
  218. simplint-0.3.0/tests/fixtures/imports/init_module_content/init_module_content_facade___init__.snap +6 -0
  219. simplint-0.3.0/tests/fixtures/imports/init_module_content/init_module_content_loose___init__.snap +5 -0
  220. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/strings/string_concatenation/string_concatenation_kinds.py +90 -0
  221. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/strings/string_concatenation/string_concatenation_kinds.snap +177 -85
  222. simplint-0.3.0/tests/fixtures/structure/walrus_candidate/walrus_candidate_listed.snap +5 -0
  223. simplint-0.3.0/tests/fixtures/structure/walrus_candidate/walrus_candidate_py37.snap +5 -0
  224. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/structure/walrus_candidate/walrus_candidate_width.py +18 -0
  225. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/structure/walrus_candidate/walrus_candidate_width.snap +19 -1
  226. simplint-0.3.0/tests/fixtures/testing/conditional_in_test/conditional_in_test_multiline_module_docstring_ok.snap +5 -0
  227. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/testing/test_class/test_class.snap +11 -4
  228. simplint-0.3.0/tests/fixtures/testing/test_class/test_class_multiline_module_docstring_ok.snap +5 -0
  229. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/testing/test_class/tests/test_class.py +7 -0
  230. simplint-0.3.0/tests/fixtures/typing/missing_final/missing_final_gate.snap +5 -0
  231. simplint-0.3.0/tests/fixtures/typing/missing_final/missing_final_py37.snap +5 -0
  232. simplint-0.3.0/tests/fixtures/typing/vars_call/vars_call_bound.snap +5 -0
  233. {simplint-0.2.2 → simplint-0.3.0}/tests/output.rs +2 -2
  234. {simplint-0.2.2 → simplint-0.3.0}/tests/project_index.rs +198 -5
  235. {simplint-0.2.2 → simplint-0.3.0}/tests/rules/docstrings.rs +44 -12
  236. {simplint-0.2.2 → simplint-0.3.0}/tests/rules/exports.rs +17 -0
  237. {simplint-0.2.2 → simplint-0.3.0}/tests/rules/imports.rs +3 -0
  238. {simplint-0.2.2 → simplint-0.3.0}/tests/subcommands.rs +14 -23
  239. {simplint-0.2.2 → simplint-0.3.0}/tests/suppressions.rs +9 -0
  240. {simplint-0.2.2 → simplint-0.3.0}/tests/tasks/test_generate_changelog.py +18 -0
  241. {simplint-0.2.2 → simplint-0.3.0}/tests/tasks/test_pgo.py +15 -5
  242. {simplint-0.2.2 → simplint-0.3.0}/tox.toml +0 -7
  243. {simplint-0.2.2 → simplint-0.3.0}/uv.lock +6 -7
  244. simplint-0.2.2/PKG-INFO +0 -410
  245. simplint-0.2.2/README.rst +0 -379
  246. simplint-0.2.2/src/rules/docstrings/mod.rs +0 -143
  247. simplint-0.2.2/src/rules/docstrings/multiline_module_docstring.md +0 -29
  248. simplint-0.2.2/src/rules/docstrings/multiline_module_docstring.rs +0 -20
  249. simplint-0.2.2/src/rules/docstrings/undocumented_public_api.md +0 -67
  250. simplint-0.2.2/src/rules/docstrings/undocumented_public_api.rs +0 -48
  251. simplint-0.2.2/src/rules/exports/mod.rs +0 -127
  252. simplint-0.2.2/src/rules/imports/init_module_content.rs +0 -14
  253. simplint-0.2.2/tasks/generate_readme.py +0 -135
  254. simplint-0.2.2/tests/fixtures/comments/long_paragraph/long_paragraph.snap +0 -7
  255. simplint-0.2.2/tests/fixtures/docstrings/function_docstring/function_docstring_undocumented_public_api_imported.snap +0 -17
  256. simplint-0.2.2/tests/fixtures/docstrings/multiline_module_docstring/multiline_module_docstring.snap +0 -5
  257. simplint-0.2.2/tests/fixtures/docstrings/undocumented_public_api/undocumented_public_api.snap +0 -10
  258. simplint-0.2.2/tests/tasks/test_generate_readme.py +0 -53
  259. {simplint-0.2.2 → simplint-0.3.0}/CODE_OF_CONDUCT.md +0 -0
  260. {simplint-0.2.2 → simplint-0.3.0}/LICENSE.txt +0 -0
  261. {simplint-0.2.2 → simplint-0.3.0}/codecov.yml +0 -0
  262. {simplint-0.2.2 → simplint-0.3.0}/docs/__init__.py +0 -0
  263. {simplint-0.2.2 → simplint-0.3.0}/docs/_static/apple-touch-icon.png +0 -0
  264. {simplint-0.2.2 → simplint-0.3.0}/docs/_static/favicon.ico +0 -0
  265. {simplint-0.2.2 → simplint-0.3.0}/docs/_static/favicon.svg +0 -0
  266. {simplint-0.2.2 → simplint-0.3.0}/docs/_static/logo-192.png +0 -0
  267. {simplint-0.2.2 → simplint-0.3.0}/docs/_static/logo-512.png +0 -0
  268. {simplint-0.2.2 → simplint-0.3.0}/docs/_static/logo.png +0 -0
  269. {simplint-0.2.2 → simplint-0.3.0}/docs/_static/rules.js +0 -0
  270. {simplint-0.2.2 → simplint-0.3.0}/docs/_static/simplint.css +0 -0
  271. {simplint-0.2.2 → simplint-0.3.0}/docs/_static/site.webmanifest +0 -0
  272. {simplint-0.2.2 → simplint-0.3.0}/docs/_static/wordmark-dark.png +0 -0
  273. {simplint-0.2.2 → simplint-0.3.0}/docs/_static/wordmark-light.png +0 -0
  274. {simplint-0.2.2 → simplint-0.3.0}/docs/_templates/base.html +0 -0
  275. {simplint-0.2.2 → simplint-0.3.0}/docs/cli.rst +0 -0
  276. {simplint-0.2.2 → simplint-0.3.0}/docs/rules.rst +0 -0
  277. {simplint-0.2.2 → simplint-0.3.0}/docs/simplint_cli.py +0 -0
  278. {simplint-0.2.2 → simplint-0.3.0}/rust-toolchain.toml +0 -0
  279. {simplint-0.2.2 → simplint-0.3.0}/src/cli/printer.rs +0 -0
  280. {simplint-0.2.2 → simplint-0.3.0}/src/cli/subcommands.rs +0 -0
  281. {simplint-0.2.2 → simplint-0.3.0}/src/cli/watch.rs +0 -0
  282. {simplint-0.2.2 → simplint-0.3.0}/src/fix/apply.rs +0 -0
  283. {simplint-0.2.2 → simplint-0.3.0}/src/fix/errors.rs +0 -0
  284. {simplint-0.2.2/src/fix → simplint-0.3.0/src}/layout.rs +0 -0
  285. {simplint-0.2.2 → simplint-0.3.0}/src/rules/comments/mod.rs +0 -0
  286. {simplint-0.2.2 → simplint-0.3.0}/src/rules/comments/section_comment.md +0 -0
  287. {simplint-0.2.2 → simplint-0.3.0}/src/rules/comments/section_comment.rs +0 -0
  288. {simplint-0.2.2 → simplint-0.3.0}/src/rules/comments/suppression_without_reason.md +0 -0
  289. {simplint-0.2.2 → simplint-0.3.0}/src/rules/dataclasses/dataclass_kw_only.md +0 -0
  290. {simplint-0.2.2 → simplint-0.3.0}/src/rules/dataclasses/dataclass_options.md +0 -0
  291. {simplint-0.2.2 → simplint-0.3.0}/src/rules/docstrings/test_module_docstring.rs +0 -0
  292. {simplint-0.2.2 → simplint-0.3.0}/src/rules/exports/all_format.md +0 -0
  293. {simplint-0.2.2 → simplint-0.3.0}/src/rules/exports/all_not_last.md +0 -0
  294. {simplint-0.2.2 → simplint-0.3.0}/src/rules/imports/absolute_sibling_import.md +0 -0
  295. {simplint-0.2.2 → simplint-0.3.0}/src/rules/imports/dependency_import_guard.md +0 -0
  296. {simplint-0.2.2 → simplint-0.3.0}/src/rules/imports/future_annotations.md +0 -0
  297. {simplint-0.2.2 → simplint-0.3.0}/src/rules/imports/future_annotations.rs +0 -0
  298. {simplint-0.2.2 → simplint-0.3.0}/src/rules/imports/mod.rs +0 -0
  299. {simplint-0.2.2 → simplint-0.3.0}/src/rules/naming/module_variable_case.md +0 -0
  300. {simplint-0.2.2 → simplint-0.3.0}/src/rules/naming/single_letter_name.md +0 -0
  301. {simplint-0.2.2 → simplint-0.3.0}/src/rules/naming/unexported_public_name.md +0 -0
  302. {simplint-0.2.2 → simplint-0.3.0}/src/rules/strings/string_concatenation.md +0 -0
  303. {simplint-0.2.2 → simplint-0.3.0}/src/rules/strings/string_concatenation.rs +0 -0
  304. {simplint-0.2.2 → simplint-0.3.0}/src/rules/structure/definition_before_use.md +0 -0
  305. {simplint-0.2.2 → simplint-0.3.0}/src/rules/structure/forwarding_function.md +0 -0
  306. {simplint-0.2.2 → simplint-0.3.0}/src/rules/structure/mod.rs +0 -0
  307. {simplint-0.2.2 → simplint-0.3.0}/src/rules/structure/single_user_constant.md +0 -0
  308. {simplint-0.2.2 → simplint-0.3.0}/src/rules/structure/walrus_candidate.md +0 -0
  309. {simplint-0.2.2 → simplint-0.3.0}/src/rules/testing/conditional_in_test.md +0 -0
  310. {simplint-0.2.2 → simplint-0.3.0}/src/rules/testing/conditional_in_test.rs +0 -0
  311. {simplint-0.2.2 → simplint-0.3.0}/src/rules/testing/constant_assert.md +0 -0
  312. {simplint-0.2.2 → simplint-0.3.0}/src/rules/testing/mock_attribute_assignment.md +0 -0
  313. {simplint-0.2.2 → simplint-0.3.0}/src/rules/testing/mock_without_spec.md +0 -0
  314. {simplint-0.2.2 → simplint-0.3.0}/src/rules/testing/mod.rs +0 -0
  315. {simplint-0.2.2 → simplint-0.3.0}/src/rules/testing/parametrize_without_id.md +0 -0
  316. {simplint-0.2.2 → simplint-0.3.0}/src/rules/testing/parametrize_without_id.rs +0 -0
  317. {simplint-0.2.2 → simplint-0.3.0}/src/rules/typing/callable_ellipsis.md +0 -0
  318. {simplint-0.2.2 → simplint-0.3.0}/src/rules/typing/callable_ellipsis.rs +0 -0
  319. {simplint-0.2.2 → simplint-0.3.0}/src/rules/typing/missing_final.md +0 -0
  320. {simplint-0.2.2 → simplint-0.3.0}/src/rules/typing/mod.rs +0 -0
  321. {simplint-0.2.2 → simplint-0.3.0}/src/rules/typing/object_annotation.md +0 -0
  322. {simplint-0.2.2 → simplint-0.3.0}/src/rules/typing/vars_call.md +0 -0
  323. {simplint-0.2.2 → simplint-0.3.0}/src/rules/typing/vars_call.rs +0 -0
  324. {simplint-0.2.2 → simplint-0.3.0}/src/semantic/builder.rs +0 -0
  325. {simplint-0.2.2 → simplint-0.3.0}/src/semantic/mod.rs +0 -0
  326. {simplint-0.2.2 → simplint-0.3.0}/tasks/pgo_corpus.toml +0 -0
  327. {simplint-0.2.2 → simplint-0.3.0}/tests/check.rs +0 -0
  328. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/comments/long_paragraph/long_paragraph.py +0 -0
  329. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/comments/section_comment/section_comment.py +0 -0
  330. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/comments/section_comment/section_comment.snap +0 -0
  331. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/dataclasses/dataclass_kw_only/dataclass_kw_only.py +0 -0
  332. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/dataclasses/dataclass_kw_only/dataclass_kw_only.snap +0 -0
  333. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/dataclasses/dataclass_kw_only/dataclass_kw_only_calls.py +0 -0
  334. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/dataclasses/dataclass_kw_only/dataclass_kw_only_calls.snap +0 -0
  335. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/dataclasses/dataclass_kw_only/dataclass_kw_only_py39.snap +0 -0
  336. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/dataclasses/dataclass_options/dataclass_options.py +0 -0
  337. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/dataclasses/dataclass_options/dataclass_options.snap +0 -0
  338. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/dataclasses/dataclass_options/dataclass_options_receivers.py +0 -0
  339. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/dataclasses/dataclass_options/dataclass_options_receivers.snap +0 -0
  340. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/dataclasses/dataclass_options/dataclass_options_runtime.py +0 -0
  341. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/dataclasses/dataclass_options/dataclass_options_runtime.snap +0 -0
  342. {simplint-0.2.2/tests/fixtures/docstrings/function_docstring → simplint-0.3.0/tests/fixtures/docstrings/function_docstring/_internal}/function_docstring.py +0 -0
  343. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/docstrings/function_docstring/function_docstring_contract.py +0 -0
  344. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/docstrings/function_docstring/function_docstring_dynamic.py +0 -0
  345. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/docstrings/function_docstring/function_docstring_exported.py +0 -0
  346. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/docstrings/function_docstring/function_docstring_runtime.py +0 -0
  347. /simplint-0.2.2/tests/fixtures/docstrings/function_docstring/function_docstring_undocumented_public_api.snap → /simplint-0.3.0/tests/fixtures/docstrings/function_docstring/function_docstring_switched.snap +0 -0
  348. /simplint-0.2.2/tests/fixtures/docstrings/multiline_module_docstring/multiline_module_docstring_ok.snap → /simplint-0.3.0/tests/fixtures/docstrings/function_docstring/function_docstring_undocumented_public_api.snap +0 -0
  349. /simplint-0.2.2/tests/fixtures/docstrings/multiline_module_docstring/multiline_module_docstring_tests_test_module_docstring.snap → /simplint-0.3.0/tests/fixtures/docstrings/function_docstring/function_docstring_undocumented_public_api_imported.snap +0 -0
  350. {simplint-0.2.2/tests/fixtures/docstrings/multiline_module_docstring → simplint-0.3.0/tests/fixtures/docstrings/test_module_docstring}/multiline_module_docstring.py +0 -0
  351. {simplint-0.2.2/tests/fixtures/docstrings/multiline_module_docstring → simplint-0.3.0/tests/fixtures/docstrings/test_module_docstring}/multiline_module_docstring_ok.py +0 -0
  352. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/docstrings/test_module_docstring/test_module_docstring_multiline_module_docstring.snap +0 -0
  353. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/docstrings/test_module_docstring/tests/test_module_docstring.py +0 -0
  354. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/docstrings/test_module_docstring/tests/test_module_docstring_inline.py +0 -0
  355. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/docstrings/undocumented_public_api/undocumented_public_api.py +0 -0
  356. /simplint-0.2.2/tests/fixtures/docstrings/undocumented_public_api/undocumented_public_api_function_docstring_dynamic.snap → /simplint-0.3.0/tests/fixtures/docstrings/undocumented_public_api/undocumented_public_api_facade__helpers.snap +0 -0
  357. /simplint-0.2.2/tests/fixtures/docstrings/undocumented_public_api/undocumented_public_api_tests_test_module_docstring.snap → /simplint-0.3.0/tests/fixtures/docstrings/undocumented_public_api/undocumented_public_api_function_docstring_dynamic.snap +0 -0
  358. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/docstrings/undocumented_public_api/undocumented_public_api_imported.py +0 -0
  359. /simplint-0.2.2/tests/fixtures/exports/all_not_last/all_not_last_multiline_module_docstring_ok.snap → /simplint-0.3.0/tests/fixtures/docstrings/undocumented_public_api/undocumented_public_api_tests_test_module_docstring.snap +0 -0
  360. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/all_format/all_format.py +0 -0
  361. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/all_format/all_format.snap +0 -0
  362. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/all_format/all_format_bare.py +0 -0
  363. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/all_format/all_format_bare.snap +0 -0
  364. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/all_format/all_format_tuple.py +0 -0
  365. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/all_format/all_format_tuple.snap +0 -0
  366. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/all_not_last/all_not_last.py +0 -0
  367. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/all_not_last/all_not_last.snap +0 -0
  368. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/all_not_last/all_not_last_ann.py +0 -0
  369. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/all_not_last/all_not_last_ann.snap +0 -0
  370. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/all_not_last/all_not_last_eof.py +0 -0
  371. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/all_not_last/all_not_last_eof.snap +0 -0
  372. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/all_not_last/all_not_last_fenced.py +0 -0
  373. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/all_not_last/all_not_last_fenced.snap +0 -0
  374. /simplint-0.2.2/tests/fixtures/exports/missing_from_all/missing_from_all_nested.snap → /simplint-0.3.0/tests/fixtures/exports/all_not_last/all_not_last_multiline_module_docstring_ok.snap +0 -0
  375. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/all_not_last/all_not_last_negated.py +0 -0
  376. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/all_not_last/all_not_last_negated.snap +0 -0
  377. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/all_not_last/all_not_last_nested.py +0 -0
  378. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/all_not_last/all_not_last_nested.snap +0 -0
  379. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/all_not_last/all_not_last_nonl.py +0 -0
  380. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/all_not_last/all_not_last_nonl.snap +0 -0
  381. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/all_not_last/all_not_last_reversed.py +0 -0
  382. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/all_not_last/all_not_last_reversed.snap +0 -0
  383. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/missing_from_all/consumer/use.py +0 -0
  384. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/missing_from_all/missing_from_all.py +0 -0
  385. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/missing_from_all/missing_from_all.snap +0 -0
  386. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/missing_from_all/missing_from_all_aug.py +0 -0
  387. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/missing_from_all/missing_from_all_aug.snap +0 -0
  388. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/missing_from_all/missing_from_all_bare.py +0 -0
  389. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/missing_from_all/missing_from_all_bare.snap +0 -0
  390. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/missing_from_all/missing_from_all_call.py +0 -0
  391. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/missing_from_all/missing_from_all_call.snap +0 -0
  392. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/missing_from_all/missing_from_all_empty.py +0 -0
  393. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/missing_from_all/missing_from_all_empty.snap +0 -0
  394. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/missing_from_all/missing_from_all_guard.py +0 -0
  395. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/missing_from_all/missing_from_all_guard.snap +0 -0
  396. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/missing_from_all/missing_from_all_hanging.py +0 -0
  397. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/missing_from_all/missing_from_all_hanging.snap +0 -0
  398. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/missing_from_all/missing_from_all_hanging_comment.py +0 -0
  399. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/missing_from_all/missing_from_all_hanging_comment.snap +0 -0
  400. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/missing_from_all/missing_from_all_imported.py +0 -0
  401. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/missing_from_all/missing_from_all_imported.snap +0 -0
  402. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/missing_from_all/missing_from_all_multiline.py +0 -0
  403. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/missing_from_all/missing_from_all_multiline.snap +0 -0
  404. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/missing_from_all/missing_from_all_nested.py +0 -0
  405. /simplint-0.2.2/tests/fixtures/exports/missing_from_all/missing_from_all_package___init__.snap → /simplint-0.3.0/tests/fixtures/exports/missing_from_all/missing_from_all_nested.snap +0 -0
  406. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/missing_from_all/missing_from_all_noall.py +0 -0
  407. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/missing_from_all/missing_from_all_noall.snap +0 -0
  408. /simplint-0.2.2/tests/fixtures/exports/missing_from_all/missing_from_all_reexport.snap → /simplint-0.3.0/tests/fixtures/exports/missing_from_all/missing_from_all_package___init__.snap +0 -0
  409. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/missing_from_all/missing_from_all_reexport.py +0 -0
  410. /simplint-0.2.2/tests/fixtures/exports/missing_from_all/missing_from_all_tests_test_module_docstring.snap → /simplint-0.3.0/tests/fixtures/exports/missing_from_all/missing_from_all_reexport.snap +0 -0
  411. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/missing_from_all/missing_from_all_scripts.py +0 -0
  412. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/missing_from_all/missing_from_all_scripts.snap +0 -0
  413. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/missing_from_all/missing_from_all_sorted.py +0 -0
  414. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/exports/missing_from_all/missing_from_all_sorted.snap +0 -0
  415. /simplint-0.2.2/tests/fixtures/imports/absolute_sibling_import/absolute_sibling_import_multiline_module_docstring_ok.snap → /simplint-0.3.0/tests/fixtures/exports/missing_from_all/missing_from_all_tests_test_module_docstring.snap +0 -0
  416. /simplint-0.2.2/tests/fixtures/imports/absolute_sibling_import/absolute_sibling_import_package_sub_channel_exec.snap → /simplint-0.3.0/tests/fixtures/exports/unused_export/unused_export_exporting_sub___init__.snap +0 -0
  417. /simplint-0.2.2/tests/fixtures/imports/absolute_sibling_import/absolute_sibling_import_package_sub_reversed_guard.snap → /simplint-0.3.0/tests/fixtures/exports/unused_export/unused_export_lazy.snap +0 -0
  418. /simplint-0.2.2/tests/fixtures/imports/absolute_sibling_import/absolute_sibling_import_package_sub_script.snap → /simplint-0.3.0/tests/fixtures/exports/unused_export/unused_export_root.snap +0 -0
  419. /simplint-0.2.2/tests/fixtures/imports/future_annotations/future_annotations_py310.snap → /simplint-0.3.0/tests/fixtures/exports/unused_export/unused_export_star.snap +0 -0
  420. /simplint-0.2.2/tests/fixtures/imports/init_module_content/init_module_content_multiline_module_docstring_ok.snap → /simplint-0.3.0/tests/fixtures/exports/unused_export/unused_export_tests_test_module_docstring.snap +0 -0
  421. /simplint-0.2.2/tests/fixtures/imports/init_module_content/init_module_content_package_sub___init__.snap → /simplint-0.3.0/tests/fixtures/imports/absolute_sibling_import/absolute_sibling_import_multiline_module_docstring_ok.snap +0 -0
  422. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/imports/absolute_sibling_import/absolute_sibling_import_package___init__.snap +0 -0
  423. /simplint-0.2.2/tests/fixtures/naming/module_variable_case/module_variable_case_ply_table.snap → /simplint-0.3.0/tests/fixtures/imports/absolute_sibling_import/absolute_sibling_import_package_sub_channel_exec.snap +0 -0
  424. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/imports/absolute_sibling_import/absolute_sibling_import_package_sub_module.snap +0 -0
  425. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/imports/absolute_sibling_import/absolute_sibling_import_package_sub_remote_worker.snap +0 -0
  426. /simplint-0.2.2/tests/fixtures/naming/unexported_public_name/unexported_public_name_multiline_module_docstring_ok.snap → /simplint-0.3.0/tests/fixtures/imports/absolute_sibling_import/absolute_sibling_import_package_sub_reversed_guard.snap +0 -0
  427. /simplint-0.2.2/tests/fixtures/naming/unexported_public_name/unexported_public_name_remove.snap → /simplint-0.3.0/tests/fixtures/imports/absolute_sibling_import/absolute_sibling_import_package_sub_script.snap +0 -0
  428. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/imports/absolute_sibling_import/package/__init__.py +0 -0
  429. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/imports/absolute_sibling_import/package/sub/__init__.py +0 -0
  430. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/imports/absolute_sibling_import/package/sub/channel_exec.py +0 -0
  431. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/imports/absolute_sibling_import/package/sub/module.py +0 -0
  432. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/imports/absolute_sibling_import/package/sub/remote_worker.py +0 -0
  433. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/imports/absolute_sibling_import/package/sub/reversed_guard.py +0 -0
  434. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/imports/absolute_sibling_import/package/sub/script.py +0 -0
  435. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/imports/dependency_import_guard/dependency_import_guard.py +0 -0
  436. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/imports/dependency_import_guard/dependency_import_guard.snap +0 -0
  437. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/imports/dependency_import_guard/dependency_import_guard_py310.snap +0 -0
  438. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/imports/future_annotations/future_annotations.py +0 -0
  439. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/imports/future_annotations/future_annotations.snap +0 -0
  440. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/imports/future_annotations/future_annotations_checking.py +0 -0
  441. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/imports/future_annotations/future_annotations_checking.snap +0 -0
  442. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/imports/future_annotations/future_annotations_joined.py +0 -0
  443. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/imports/future_annotations/future_annotations_joined.snap +0 -0
  444. /simplint-0.2.2/tests/fixtures/naming/unexported_public_name/unexported_public_name_tests_test_module_docstring.snap → /simplint-0.3.0/tests/fixtures/imports/future_annotations/future_annotations_py310.snap +0 -0
  445. /simplint-0.2.2/tests/fixtures/imports/init_module_content/init_module_content_package___init__.snap → /simplint-0.3.0/tests/fixtures/imports/init_module_content/init_module_content__hidden___init__.snap +0 -0
  446. /simplint-0.2.2/tests/fixtures/structure/definition_before_use/definition_before_use_annotations_py310.snap → /simplint-0.3.0/tests/fixtures/imports/init_module_content/init_module_content_multiline_module_docstring_ok.snap +0 -0
  447. /simplint-0.2.2/tests/fixtures/structure/definition_before_use/definition_before_use_classbody.snap → /simplint-0.3.0/tests/fixtures/imports/init_module_content/init_module_content_package___init__.snap +0 -0
  448. /simplint-0.2.2/tests/fixtures/structure/walrus_candidate/walrus_candidate_dynamic.snap → /simplint-0.3.0/tests/fixtures/imports/init_module_content/init_module_content_package_sub___init__.snap +0 -0
  449. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/module_variable_case/module_variable_case.py +0 -0
  450. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/module_variable_case/module_variable_case.snap +0 -0
  451. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/module_variable_case/module_variable_case_alembic.py +0 -0
  452. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/module_variable_case/module_variable_case_alembic.snap +0 -0
  453. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/module_variable_case/module_variable_case_ann.py +0 -0
  454. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/module_variable_case/module_variable_case_ann.snap +0 -0
  455. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/module_variable_case/module_variable_case_call.py +0 -0
  456. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/module_variable_case/module_variable_case_call.snap +0 -0
  457. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/module_variable_case/module_variable_case_conflict.py +0 -0
  458. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/module_variable_case/module_variable_case_conflict.snap +0 -0
  459. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/module_variable_case/module_variable_case_dbapi.py +0 -0
  460. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/module_variable_case/module_variable_case_dbapi.snap +0 -0
  461. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/module_variable_case/module_variable_case_frameworks.py +0 -0
  462. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/module_variable_case/module_variable_case_frameworks.snap +0 -0
  463. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/module_variable_case/module_variable_case_gunicorn.py +0 -0
  464. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/module_variable_case/module_variable_case_gunicorn.snap +0 -0
  465. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/module_variable_case/module_variable_case_kinds.py +0 -0
  466. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/module_variable_case/module_variable_case_kinds.snap +0 -0
  467. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/module_variable_case/module_variable_case_lookalikes.py +0 -0
  468. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/module_variable_case/module_variable_case_lookalikes.snap +0 -0
  469. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/module_variable_case/module_variable_case_noall.py +0 -0
  470. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/module_variable_case/module_variable_case_noall.snap +0 -0
  471. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/module_variable_case/module_variable_case_ply.py +0 -0
  472. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/module_variable_case/module_variable_case_ply.snap +0 -0
  473. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/module_variable_case/module_variable_case_ply_table.py +0 -0
  474. /simplint-0.2.2/tests/fixtures/structure/walrus_candidate/walrus_candidate_gate.snap → /simplint-0.3.0/tests/fixtures/naming/module_variable_case/module_variable_case_ply_table.snap +0 -0
  475. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/module_variable_case/module_variable_case_rename.py +0 -0
  476. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/module_variable_case/module_variable_case_rename.snap +0 -0
  477. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/module_variable_case/module_variable_case_scopes.py +0 -0
  478. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/module_variable_case/module_variable_case_scopes.snap +0 -0
  479. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/module_variable_case/module_variable_case_strings.py +0 -0
  480. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/module_variable_case/module_variable_case_strings.snap +0 -0
  481. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/module_variable_case/module_variable_case_typer.py +0 -0
  482. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/module_variable_case/module_variable_case_typer.snap +0 -0
  483. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/module_variable_case/module_variable_case_version.py +0 -0
  484. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/module_variable_case/module_variable_case_version.snap +0 -0
  485. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/single_letter_name/single_letter_name.py +0 -0
  486. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/single_letter_name/single_letter_name.snap +0 -0
  487. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/unexported_public_name/unexported_public_name.py +0 -0
  488. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/unexported_public_name/unexported_public_name.snap +0 -0
  489. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/unexported_public_name/unexported_public_name_extend.py +0 -0
  490. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/unexported_public_name/unexported_public_name_extend.snap +0 -0
  491. /simplint-0.2.2/tests/fixtures/structure/walrus_candidate/walrus_candidate_listed.snap → /simplint-0.3.0/tests/fixtures/naming/unexported_public_name/unexported_public_name_multiline_module_docstring_ok.snap +0 -0
  492. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/unexported_public_name/unexported_public_name_ply.py +0 -0
  493. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/unexported_public_name/unexported_public_name_ply.snap +0 -0
  494. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/naming/unexported_public_name/unexported_public_name_remove.py +0 -0
  495. /simplint-0.2.2/tests/fixtures/structure/walrus_candidate/walrus_candidate_py37.snap → /simplint-0.3.0/tests/fixtures/naming/unexported_public_name/unexported_public_name_remove.snap +0 -0
  496. /simplint-0.2.2/tests/fixtures/testing/conditional_in_test/conditional_in_test_multiline_module_docstring_ok.snap → /simplint-0.3.0/tests/fixtures/naming/unexported_public_name/unexported_public_name_tests_test_module_docstring.snap +0 -0
  497. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/strings/string_concatenation/string_concatenation.py +0 -0
  498. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/strings/string_concatenation/string_concatenation.snap +0 -0
  499. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/strings/string_concatenation/string_concatenation_old.py +0 -0
  500. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/strings/string_concatenation/string_concatenation_old_py310.snap +0 -0
  501. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/strings/string_concatenation/string_concatenation_types.py +0 -0
  502. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/strings/string_concatenation/string_concatenation_types.snap +0 -0
  503. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/structure/definition_before_use/definition_before_use.py +0 -0
  504. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/structure/definition_before_use/definition_before_use.snap +0 -0
  505. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/structure/definition_before_use/definition_before_use_annotations.py +0 -0
  506. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/structure/definition_before_use/definition_before_use_annotations.snap +0 -0
  507. /simplint-0.2.2/tests/fixtures/testing/test_class/test_class_multiline_module_docstring_ok.snap → /simplint-0.3.0/tests/fixtures/structure/definition_before_use/definition_before_use_annotations_py310.snap +0 -0
  508. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/structure/definition_before_use/definition_before_use_classbody.py +0 -0
  509. /simplint-0.2.2/tests/fixtures/typing/missing_final/missing_final_gate.snap → /simplint-0.3.0/tests/fixtures/structure/definition_before_use/definition_before_use_classbody.snap +0 -0
  510. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/structure/definition_before_use/definition_before_use_decorated.py +0 -0
  511. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/structure/definition_before_use/definition_before_use_decorated.snap +0 -0
  512. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/structure/definition_before_use/definition_before_use_decorated_py310.snap +0 -0
  513. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/structure/definition_before_use/definition_before_use_floating.py +0 -0
  514. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/structure/definition_before_use/definition_before_use_floating.snap +0 -0
  515. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/structure/definition_before_use/definition_before_use_import_time.py +0 -0
  516. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/structure/definition_before_use/definition_before_use_import_time.snap +0 -0
  517. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/structure/definition_before_use/definition_before_use_nonl.py +0 -0
  518. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/structure/definition_before_use/definition_before_use_nonl.snap +0 -0
  519. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/structure/forwarding_function/forwarding_function.py +0 -0
  520. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/structure/forwarding_function/forwarding_function.snap +0 -0
  521. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/structure/single_user_constant/single_user_constant.py +0 -0
  522. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/structure/single_user_constant/single_user_constant.snap +0 -0
  523. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/structure/single_user_constant/single_user_constant_all.py +0 -0
  524. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/structure/single_user_constant/single_user_constant_all.snap +0 -0
  525. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/structure/single_user_constant/single_user_constant_dynamic.py +0 -0
  526. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/structure/single_user_constant/single_user_constant_dynamic.snap +0 -0
  527. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/structure/single_user_constant/single_user_constant_spacing.py +0 -0
  528. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/structure/single_user_constant/single_user_constant_spacing.snap +0 -0
  529. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/structure/walrus_candidate/walrus_candidate.py +0 -0
  530. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/structure/walrus_candidate/walrus_candidate.snap +0 -0
  531. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/structure/walrus_candidate/walrus_candidate_dynamic.py +0 -0
  532. /simplint-0.2.2/tests/fixtures/typing/missing_final/missing_final_py37.snap → /simplint-0.3.0/tests/fixtures/structure/walrus_candidate/walrus_candidate_dynamic.snap +0 -0
  533. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/structure/walrus_candidate/walrus_candidate_gate.py +0 -0
  534. /simplint-0.2.2/tests/fixtures/typing/vars_call/vars_call_bound.snap → /simplint-0.3.0/tests/fixtures/structure/walrus_candidate/walrus_candidate_gate.snap +0 -0
  535. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/structure/walrus_candidate/walrus_candidate_listed.py +0 -0
  536. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/testing/conditional_in_test/conditional_in_test.snap +0 -0
  537. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/testing/conditional_in_test/tests/test_conditional_in_test.py +0 -0
  538. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/testing/constant_assert/constant_assert.py +0 -0
  539. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/testing/constant_assert/constant_assert.snap +0 -0
  540. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/testing/mock_attribute_assignment/mock_attribute_assignment.snap +0 -0
  541. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/testing/mock_attribute_assignment/tests/test_mock_attribute_assignment.py +0 -0
  542. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/testing/mock_without_spec/mock_without_spec.snap +0 -0
  543. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/testing/mock_without_spec/tests/test_mock_without_spec.py +0 -0
  544. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/testing/parametrize_without_id/parametrize_without_id.snap +0 -0
  545. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/testing/parametrize_without_id/tests/test_parametrize_without_id.py +0 -0
  546. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/typing/callable_ellipsis/callable_ellipsis.py +0 -0
  547. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/typing/callable_ellipsis/callable_ellipsis.snap +0 -0
  548. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/typing/missing_final/missing_final.py +0 -0
  549. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/typing/missing_final/missing_final.snap +0 -0
  550. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/typing/missing_final/missing_final_alias.py +0 -0
  551. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/typing/missing_final/missing_final_alias.snap +0 -0
  552. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/typing/missing_final/missing_final_bare.py +0 -0
  553. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/typing/missing_final/missing_final_bare.snap +0 -0
  554. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/typing/missing_final/missing_final_branch.py +0 -0
  555. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/typing/missing_final/missing_final_branch.snap +0 -0
  556. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/typing/missing_final/missing_final_checking.py +0 -0
  557. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/typing/missing_final/missing_final_checking.snap +0 -0
  558. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/typing/missing_final/missing_final_checking_py310.snap +0 -0
  559. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/typing/missing_final/missing_final_future.py +0 -0
  560. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/typing/missing_final/missing_final_future_py310.snap +0 -0
  561. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/typing/missing_final/missing_final_gate.py +0 -0
  562. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/typing/missing_final/missing_final_module.py +0 -0
  563. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/typing/missing_final/missing_final_module.snap +0 -0
  564. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/typing/missing_final/missing_final_new.py +0 -0
  565. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/typing/missing_final/missing_final_new.snap +0 -0
  566. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/typing/missing_final/missing_final_order.py +0 -0
  567. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/typing/missing_final/missing_final_order.snap +0 -0
  568. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/typing/missing_final/missing_final_sorted.py +0 -0
  569. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/typing/missing_final/missing_final_sorted.snap +0 -0
  570. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/typing/missing_final/missing_final_typing.py +0 -0
  571. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/typing/missing_final/missing_final_typing.snap +0 -0
  572. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/typing/object_annotation/object_annotation.py +0 -0
  573. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/typing/object_annotation/object_annotation.snap +0 -0
  574. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/typing/vars_call/vars_call.py +0 -0
  575. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/typing/vars_call/vars_call.snap +0 -0
  576. {simplint-0.2.2 → simplint-0.3.0}/tests/fixtures/typing/vars_call/vars_call_bound.py +0 -0
  577. {simplint-0.2.2 → simplint-0.3.0}/tests/layout.rs +0 -0
  578. {simplint-0.2.2 → simplint-0.3.0}/tests/rules/comments.rs +0 -0
  579. {simplint-0.2.2 → simplint-0.3.0}/tests/rules/dataclasses.rs +0 -0
  580. {simplint-0.2.2 → simplint-0.3.0}/tests/rules/main.rs +0 -0
  581. {simplint-0.2.2 → simplint-0.3.0}/tests/rules/naming.rs +0 -0
  582. {simplint-0.2.2 → simplint-0.3.0}/tests/rules/strings.rs +0 -0
  583. {simplint-0.2.2 → simplint-0.3.0}/tests/rules/structure.rs +0 -0
  584. {simplint-0.2.2 → simplint-0.3.0}/tests/rules/testing.rs +0 -0
  585. {simplint-0.2.2 → simplint-0.3.0}/tests/rules/typing.rs +0 -0
  586. {simplint-0.2.2 → simplint-0.3.0}/tests/snapshots/output__format_azure.snap +0 -0
  587. {simplint-0.2.2 → simplint-0.3.0}/tests/snapshots/output__format_concise.snap +0 -0
  588. {simplint-0.2.2 → simplint-0.3.0}/tests/snapshots/output__format_full.snap +0 -0
  589. {simplint-0.2.2 → simplint-0.3.0}/tests/snapshots/output__format_github.snap +0 -0
  590. {simplint-0.2.2 → simplint-0.3.0}/tests/snapshots/output__format_gitlab.snap +0 -0
  591. {simplint-0.2.2 → simplint-0.3.0}/tests/snapshots/output__format_grouped.snap +0 -0
  592. {simplint-0.2.2 → simplint-0.3.0}/tests/snapshots/output__format_json-lines.snap +0 -0
  593. {simplint-0.2.2 → simplint-0.3.0}/tests/snapshots/output__format_json.snap +0 -0
  594. {simplint-0.2.2 → simplint-0.3.0}/tests/snapshots/output__format_junit.snap +0 -0
  595. {simplint-0.2.2 → simplint-0.3.0}/tests/snapshots/output__format_pylint.snap +0 -0
  596. {simplint-0.2.2 → simplint-0.3.0}/tests/snapshots/output__format_rdjson.snap +0 -0
  597. {simplint-0.2.2 → simplint-0.3.0}/tests/snapshots/output__format_sarif.snap +0 -0
  598. {simplint-0.2.2 → simplint-0.3.0}/tests/tasks/test_assemble_release.py +0 -0
  599. {simplint-0.2.2 → simplint-0.3.0}/tests/tasks/test_cargo_version.py +0 -0
  600. {simplint-0.2.2 → simplint-0.3.0}/tests/tasks/test_check_sdist.py +0 -0
  601. {simplint-0.2.2 → simplint-0.3.0}/tests/tasks/test_ecosystem.py +0 -0
  602. {simplint-0.2.2 → simplint-0.3.0}/tests/tasks/test_python_versions.py +0 -0
  603. {simplint-0.2.2 → simplint-0.3.0}/tests/tasks/test_update_cargo_edit.py +0 -0
  604. {simplint-0.2.2 → simplint-0.3.0}/tests/watch.rs +0 -0
  605. {simplint-0.2.2 → simplint-0.3.0}/tests/wheel/test_cli.py +0 -0
@@ -1,5 +1,85 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.3.0 (2026-11-04)
4
+
5
+ <a name="release-0-3-0"></a>
6
+
7
+ <a name="release-0-3-0-added"></a>
8
+
9
+ ### Added
10
+
11
+ - The docstring rules share the new `SMP3` group, so `select = ["SMP3"]` picks all of them: `function-docstring` is
12
+ SMP300 (was SMP002), `test-module-docstring` SMP301 (was SMP004) and `undocumented-public-api` SMP302 (was SMP116);
13
+ update `select`, `ignore` and `noqa` comments that name the old codes. Docstrings no longer have a length limit:
14
+ `multiline-module-docstring` (SMP003) is gone, and `long-paragraph` (SMP005) checks comments only
15
+ ([#27](https://github.com/gaborbernat/simplint/pull/27)) by [@gaborbernat](https://github.com/gaborbernat).
16
+ - `undocumented-public-api` (SMP302) and `function-docstring` (SMP300) now follow a library's public API as the typing
17
+ spec and PEP 8 define it: modules under a `_`-prefixed path are internal, a public module without `__all__` offers
18
+ every name without a leading underscore, and a name a public module re-exports through `__all__`,
19
+ `from m import name as name` or `import *` needs its docstring where it is defined. A name another module imports
20
+ counts as public only in a public module, where `missing-from-all` (SMP113) lists it in `__all__`, and an application,
21
+ which nothing installs, has no public API at all. The new `project-kind`, `api-packages` and `api-modules` settings
22
+ tune this ([#27](https://github.com/gaborbernat/simplint/pull/27)) by [@gaborbernat](https://github.com/gaborbernat).
23
+ - `init-module-content` (SMP109) lets a public package of a library re-export its API from private modules
24
+ ([#27](https://github.com/gaborbernat/simplint/pull/27)) by [@gaborbernat](https://github.com/gaborbernat).
25
+ - The new reStructuredText rules, SMP310 to SMP323, check reStructuredText field lists in docstrings when
26
+ `docstring-style = "rest"`: every field is well formed, described with more than its name and separated from the text
27
+ above by a blank line, documents a parameter or attribute that exists, with `:ivar:` or `:cvar:` as fits, once, and
28
+ carries no type, which belongs in annotations; roles keep their backticks and inline literals close; a public function
29
+ or class documents each parameter, attribute, return or yield value and exception it raises itself, and no internal
30
+ name. Their fixes add each missing field with an empty description for you to fill in, and remove or correct fields
31
+ for what no longer exists ([#27](https://github.com/gaborbernat/simplint/pull/27)) by
32
+ [@gaborbernat](https://github.com/gaborbernat).
33
+ - `unused-export` (SMP117) removes names from `__all__` that no other module of the run imports, keeping the `__all__`
34
+ of a library's top-level package and of the modules `api-modules` names as written
35
+ ([#27](https://github.com/gaborbernat/simplint/pull/27)) by [@gaborbernat](https://github.com/gaborbernat).
36
+
37
+ <a name="release-0-3-0-fixed"></a>
38
+
39
+ ### Fixed
40
+
41
+ - `--fix`, `--add-noqa` and `--add-ignore` write a file by renaming a complete copy over it, so a failed write no longer
42
+ leaves a cut-short source, and a file edited during the run keeps the edit. A symlink stays a symlink and the file
43
+ keeps its permissions ([#33](https://github.com/gaborbernat/simplint/pull/33)) by
44
+ [@gaborbernat](https://github.com/gaborbernat).
45
+ - A run no longer deletes the new, still empty cache directory of another simplint version running at the same time, as
46
+ pre-commit and the command line can, which made that other run fail
47
+ ([#33](https://github.com/gaborbernat/simplint/pull/33)) by [@gaborbernat](https://github.com/gaborbernat).
48
+ - A development build no longer warns that it cannot read the cache an earlier build of the same version wrote, and the
49
+ caches of other builds go away once no run has written to them for 30 days
50
+ ([#27](https://github.com/gaborbernat/simplint/pull/27)) by [@gaborbernat](https://github.com/gaborbernat).
51
+ - 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
52
+ module to a base class, instead of reusing its stale cached result
53
+ ([#33](https://github.com/gaborbernat/simplint/pull/33)) by [@gaborbernat](https://github.com/gaborbernat).
54
+ - `dataclass-kw-only` (SMP114) rewrites a positional call that a `noqa` comment for another code sits on, or that holds
55
+ `noqa` in a string, instead of leaving the dataclass without `kw_only=True`; only a comment that suppresses SMP114
56
+ keeps the call as it is ([#33](https://github.com/gaborbernat/simplint/pull/33)) by
57
+ [@gaborbernat](https://github.com/gaborbernat).
58
+ - `string-concatenation` (SMP112) no longer slows to a crawl on a function where many names each extend themselves in
59
+ turn, as `text = text + "!"` does; such chains now take time in proportion to their length
60
+ ([#33](https://github.com/gaborbernat/simplint/pull/33)) by [@gaborbernat](https://github.com/gaborbernat).
61
+ - `suppression-without-reason` (SMP060) reads suppression comments the way they take effect, so it now also flags
62
+ `# flake8: noqa` and a directive with extra space around its colon, such as `# ruff : ignore[...]`
63
+ ([#33](https://github.com/gaborbernat/simplint/pull/33)) by [@gaborbernat](https://github.com/gaborbernat).
64
+ - `test-class` (SMP200) now fixes a class whose methods have docstrings spanning several lines, as it does once
65
+ `ruff format` has joined them, so one round of fixes settles ([#28](https://github.com/gaborbernat/simplint/pull/28))
66
+ by [@gaborbernat](https://github.com/gaborbernat).
67
+ - `undocumented-public-api` (SMP302) and the reStructuredText attribute rules now see the docstring under a variable
68
+ defined in an `if` or `try` block, so they no longer report it as undocumented
69
+ ([#33](https://github.com/gaborbernat/simplint/pull/33)) by [@gaborbernat](https://github.com/gaborbernat).
70
+
71
+ <a name="release-0-3-0-documentation"></a>
72
+
73
+ ### Documentation
74
+
75
+ - The changelog page renders again when a release lists no changes
76
+ ([#18](https://github.com/gaborbernat/simplint/pull/18)) by [@gaborbernat](https://github.com/gaborbernat).
77
+ - The pre-commit setup uses the `simplint-pre-commit` mirror, which installs the released wheel and so runs on
78
+ pre-commit.ci without a Rust toolchain ([#27](https://github.com/gaborbernat/simplint/pull/27)) by
79
+ [@gaborbernat](https://github.com/gaborbernat).
80
+ - The PyPI page shows a short introduction with links to the documentation instead of the full documentation pages
81
+ ([#20](https://github.com/gaborbernat/simplint/pull/20)) by [@gaborbernat](https://github.com/gaborbernat).
82
+
3
83
  ## 0.2.2 (2026-11-02)
4
84
 
5
85
  <a name="release-0-2-2"></a>
@@ -138,11 +138,7 @@ can change behavior, run the suite of an affected project by hand. Refresh the p
138
138
 
139
139
  ## Documentation
140
140
 
141
- Edit the files under `docs/`. Generate the published README from those sources:
142
-
143
- ```bash
144
- tox run -e readme
145
- ```
141
+ Edit the files under `docs/`. PyPI shows `README.md`, so keep its links absolute.
146
142
 
147
143
  Build and check links with the documentation environment:
148
144
 
@@ -3018,7 +3018,7 @@ dependencies = [
3018
3018
 
3019
3019
  [[package]]
3020
3020
  name = "simplint"
3021
- version = "0.2.2"
3021
+ version = "0.3.0"
3022
3022
  dependencies = [
3023
3023
  "anyhow",
3024
3024
  "assert_cmd",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "simplint"
3
- version = "0.2.2"
3
+ version = "0.3.0"
4
4
  edition = "2024"
5
5
  description = "Ruff companion linter with extra checks that make Python easier to read and review"
6
6
  license = "MIT"
@@ -0,0 +1,69 @@
1
+ Metadata-Version: 2.4
2
+ Name: simplint
3
+ Version: 0.3.0
4
+ Classifier: Development Status :: 4 - Beta
5
+ Classifier: Environment :: Console
6
+ Classifier: Intended Audience :: Developers
7
+ Classifier: Operating System :: OS Independent
8
+ Classifier: Programming Language :: Python
9
+ Classifier: Programming Language :: Python :: 3 :: Only
10
+ Classifier: Programming Language :: Python :: 3.11
11
+ Classifier: Programming Language :: Python :: 3.12
12
+ Classifier: Programming Language :: Python :: 3.13
13
+ Classifier: Programming Language :: Python :: 3.14
14
+ Classifier: Programming Language :: Python :: 3.15
15
+ Classifier: Programming Language :: Rust
16
+ Classifier: Topic :: Software Development :: Quality Assurance
17
+ Classifier: Topic :: Utilities
18
+ License-File: LICENSE.txt
19
+ Summary: Ruff companion linter with extra checks that make Python easier to read and review
20
+ Keywords: linter,python,ruff,style
21
+ Author-email: Bernat Gabor <gaborjbernat@gmail.com>
22
+ License-Expression: MIT
23
+ Requires-Python: >=3.11
24
+ Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
25
+ Project-URL: Bug Tracker, https://github.com/gaborbernat/simplint/issues
26
+ Project-URL: Changelog, https://github.com/gaborbernat/simplint/blob/main/CHANGELOG.md
27
+ Project-URL: Documentation, https://simplint.readthedocs.io/en/latest/
28
+ Project-URL: Homepage, https://github.com/gaborbernat/simplint
29
+ Project-URL: Source Code, https://github.com/gaborbernat/simplint
30
+
31
+ <p align="center">
32
+ <picture>
33
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/gaborbernat/simplint/main/docs/_static/wordmark-dark.png">
34
+ <img alt="simplint" src="https://raw.githubusercontent.com/gaborbernat/simplint/main/docs/_static/wordmark-light.png" width="420">
35
+ </picture>
36
+ </p>
37
+
38
+ # simplint
39
+
40
+ [![PyPI](https://img.shields.io/pypi/v/simplint?style=flat-square)](https://pypi.org/project/simplint)
41
+ [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/simplint?style=flat-square)](https://pypi.org/project/simplint)
42
+ [![Downloads](https://static.pepy.tech/badge/simplint/month)](https://pepy.tech/project/simplint)
43
+ [![PyPI - License](https://img.shields.io/pypi/l/simplint?style=flat-square)](https://opensource.org/licenses/MIT)
44
+ [![Build](https://github.com/gaborbernat/simplint/actions/workflows/build.yaml/badge.svg)](https://github.com/gaborbernat/simplint/actions/workflows/build.yaml)
45
+ [![Test](https://github.com/gaborbernat/simplint/actions/workflows/test.yaml/badge.svg)](https://github.com/gaborbernat/simplint/actions/workflows/test.yaml)
46
+ [![Documentation status](https://readthedocs.org/projects/simplint/badge/?version=latest)](https://simplint.readthedocs.io/en/latest/)
47
+ [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/gaborbernat/simplint/badge)](https://scorecard.dev/viewer/?uri=github.com/gaborbernat/simplint)
48
+ [![OpenSSF Best Practices](https://www.bestpractices.dev/projects/16281/badge)](https://www.bestpractices.dev/projects/16281)
49
+
50
+ simplint is a companion linter for [Ruff](https://docs.astral.sh/ruff/), written in [Rust](https://www.rust-lang.org/).
51
+ It adds checks that make Python code easier to read and review, and fixes what it reports when the fix is mechanical.
52
+ The checks cover
53
+ [definitions ordered like a book](https://simplint.readthedocs.io/en/latest/_generated/rules/SMP020.html),
54
+ [explicit exports](https://simplint.readthedocs.io/en/latest/_generated/rules/SMP103.html),
55
+ [flat test modules](https://simplint.readthedocs.io/en/latest/_generated/rules/SMP200.html) and more. The rules are
56
+ opinionated. They reflect the maintainer's preferences while aiming to be as objective as possible.
57
+
58
+ Install it with `uv tool install simplint` ([uv](https://docs.astral.sh/uv/)) or `pipx install simplint`
59
+ ([pipx](https://pipx.pypa.io/stable/)), then run `simplint check .` from the project root.
60
+
61
+ - [Documentation](https://simplint.readthedocs.io/en/latest/): installation, quick start and
62
+ [pre-commit](https://pre-commit.com/) hook
63
+ - [Configuration](https://simplint.readthedocs.io/en/latest/configuration.html)
64
+ - [Rules](https://simplint.readthedocs.io/en/latest/rules.html)
65
+ - [PyPI package](https://pypi.org/project/simplint)
66
+ - [Release history](https://github.com/gaborbernat/simplint/blob/main/CHANGELOG.md)
67
+ - [CONTRIBUTING.md](https://github.com/gaborbernat/simplint/blob/main/CONTRIBUTING.md): repository layout and
68
+ development commands
69
+
@@ -1,7 +1,7 @@
1
1
  <p align="center">
2
2
  <picture>
3
- <source media="(prefers-color-scheme: dark)" srcset="docs/_static/wordmark-dark.png">
4
- <img alt="simplint" src="docs/_static/wordmark-light.png" width="420">
3
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/gaborbernat/simplint/main/docs/_static/wordmark-dark.png">
4
+ <img alt="simplint" src="https://raw.githubusercontent.com/gaborbernat/simplint/main/docs/_static/wordmark-light.png" width="420">
5
5
  </picture>
6
6
  </p>
7
7
 
@@ -14,6 +14,8 @@
14
14
  [![Build](https://github.com/gaborbernat/simplint/actions/workflows/build.yaml/badge.svg)](https://github.com/gaborbernat/simplint/actions/workflows/build.yaml)
15
15
  [![Test](https://github.com/gaborbernat/simplint/actions/workflows/test.yaml/badge.svg)](https://github.com/gaborbernat/simplint/actions/workflows/test.yaml)
16
16
  [![Documentation status](https://readthedocs.org/projects/simplint/badge/?version=latest)](https://simplint.readthedocs.io/en/latest/)
17
+ [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/gaborbernat/simplint/badge)](https://scorecard.dev/viewer/?uri=github.com/gaborbernat/simplint)
18
+ [![OpenSSF Best Practices](https://www.bestpractices.dev/projects/16281/badge)](https://www.bestpractices.dev/projects/16281)
17
19
 
18
20
  simplint is a companion linter for [Ruff](https://docs.astral.sh/ruff/), written in [Rust](https://www.rust-lang.org/).
19
21
  It adds checks that make Python code easier to read and review, and fixes what it reports when the fix is mechanical.
@@ -31,5 +33,6 @@ Install it with `uv tool install simplint` ([uv](https://docs.astral.sh/uv/)) or
31
33
  - [Configuration](https://simplint.readthedocs.io/en/latest/configuration.html)
32
34
  - [Rules](https://simplint.readthedocs.io/en/latest/rules.html)
33
35
  - [PyPI package](https://pypi.org/project/simplint)
34
- - [Release history](CHANGELOG.md)
35
- - [CONTRIBUTING.md](CONTRIBUTING.md): repository layout and development commands
36
+ - [Release history](https://github.com/gaborbernat/simplint/blob/main/CHANGELOG.md)
37
+ - [CONTRIBUTING.md](https://github.com/gaborbernat/simplint/blob/main/CONTRIBUTING.md): repository layout and
38
+ development commands
@@ -0,0 +1,38 @@
1
+ // Names the cache directory after the source the cached data depends on, so changing it starts a fresh cache rather
2
+ // than failing to read the old one, or reading facts an older build collected, as happens between development builds
3
+ // of one version. That source is every file declaring a type the cache stores, every file of `src/project`, which
4
+ // collects the facts, and the files outside it whose helpers decide what the facts hold. Tracking imports would follow
5
+ // every change, but a fixed list is simpler; a new helper module the facts read belongs in `SHARED`.
6
+ use std::fs;
7
+ use std::hash::{DefaultHasher, Hash, Hasher};
8
+ use std::path::{Path, PathBuf};
9
+
10
+ const SHARED: [&str; 2] = ["src/syntax.rs", "src/lint/noqa.rs"];
11
+
12
+ fn main() {
13
+ println!("cargo::rerun-if-changed=src");
14
+ let mut files = Vec::new();
15
+ collect(Path::new("src"), &mut files);
16
+ files.sort();
17
+ let mut hasher = DefaultHasher::new();
18
+ for file in files {
19
+ let text = fs::read_to_string(&file).unwrap_or_else(|error| panic!("read {}: {error}", file.display()));
20
+ let feeds_facts = file.starts_with("src/project") || SHARED.iter().any(|shared| file == Path::new(shared));
21
+ if feeds_facts || text.contains("rkyv::Archive") {
22
+ text.hash(&mut hasher);
23
+ }
24
+ }
25
+ println!("cargo::rustc-env=SIMPLINT_CACHE_FORMAT={:016x}", hasher.finish());
26
+ }
27
+
28
+ fn collect(directory: &Path, files: &mut Vec<PathBuf>) {
29
+ let entries = fs::read_dir(directory).unwrap_or_else(|error| panic!("read {}: {error}", directory.display()));
30
+ for entry in entries {
31
+ let path = entry.unwrap_or_else(|error| panic!("read {}: {error}", directory.display())).path();
32
+ if path.is_dir() {
33
+ collect(&path, files);
34
+ } else if path.extension().is_some_and(|extension| extension == "rs") {
35
+ files.push(path);
36
+ }
37
+ }
38
+ }
@@ -166,9 +166,10 @@ def _generate(docs: Path) -> dict[str, str]:
166
166
 
167
167
 
168
168
  _GROUPS: Final[dict[str, str]] = {
169
- "SMP0": "Comments, docstrings and structure",
169
+ "SMP0": "Comments and structure",
170
170
  "SMP1": "Modules, typing and exports",
171
171
  "SMP2": "Tests",
172
+ "SMP3": "Docstrings",
172
173
  }
173
174
  _FIX_BADGES: Final[dict[str, tuple[str, str]]] = {
174
175
  "Always": ("fix-always", "🛠️ Fix always available"),
@@ -25,7 +25,7 @@ simplint's own settings live in ``[tool.simplint]``:
25
25
  [tool.simplint]
26
26
  select = ["ALL"] # the default
27
27
  extend-select = []
28
- ignore = ["SMP002"]
28
+ ignore = ["SMP300"]
29
29
  per-file-ignores = { "tests/*" = ["SMP101"] }
30
30
  extend-per-file-ignores = {}
31
31
 
@@ -88,6 +88,9 @@ in a ``simplint`` directory inside Ruff's cache directory, ``.ruff_cache`` unles
88
88
  ``--cache-dir`` or ``RUFF_CACHE_DIR`` names another, and never touches Ruff's own files there; ``--no-cache`` skips it.
89
89
  A cached result also depends on the names other files use from that file, so editing an importer checks the files it
90
90
  imports again.
91
+ Each simplint build keeps its own subdirectory there, and a run removes the subdirectories of other builds that no run
92
+ has written to for 30 days, so a project that runs two versions, as one pinned in pre-commit and another on the command
93
+ line, keeps both caches.
91
94
 
92
95
  Naming
93
96
  ------
@@ -104,6 +107,64 @@ any other in ``naming.keep-names``:
104
107
  ``--config "naming.keep-names = ['urlpatterns']"`` replaces the list, and ``--show-settings`` prints it as
105
108
  ``linter.naming.keep_names``.
106
109
 
110
+ Public API
111
+ ----------
112
+
113
+ The documentation rules treat a library's public API apart from its internal code. :doc:`SMP302 <_generated/rules/SMP302>` asks for docstrings on what users import,
114
+ :doc:`SMP300 <_generated/rules/SMP300>` removes them everywhere else, and
115
+ :doc:`SMP117 <_generated/rules/SMP117>` keeps ``__all__`` to the names other
116
+ modules use. An application has no Python API, so all of its code is internal.
117
+
118
+ .. code-block:: toml
119
+
120
+ [tool.simplint]
121
+ project-kind = "library" # the default is "auto"
122
+ api-packages = ["my_package"] # the default comes from the build backend
123
+ api-modules = ["my_package.errors"]
124
+
125
+ - ``project-kind`` is ``"library"`` or ``"application"``. ``"auto"`` picks a library when something installs the
126
+ project: a ``[build-system]`` table, or a ``setup.py`` or ``setup.cfg``. ``[tool.uv]`` with ``package = false``, and
127
+ maturin building only a binary (``bindings = "bin"``), make it an application, as does a project with none of these.
128
+ Neither a ``py.typed`` marker nor console scripts decide it: many libraries ship without the first and with the
129
+ second.
130
+ - ``api-packages`` names the top-level packages or modules the library ships. Without it, they come from the build
131
+ backend's settings (hatch ``packages``, uv's ``module-name``, flit's ``module.name``, setuptools ``packages`` and
132
+ ``py-modules``, maturin's ``module-name``), then from the packages next to the ``pyproject.toml``, or in its ``src``
133
+ directory, that hold a ``py.typed`` marker, then from the package named after the project. When none is found, every
134
+ module outside ``docs`` and the tests counts.
135
+ - ``api-modules`` names modules, besides the top-level packages, that users import from directly. Their ``__all__`` is
136
+ the interface you declare, so SMP117 keeps the names no module of the project imports.
137
+
138
+ A module of an API package is public unless a part of its path starts with ``_``, as `PEP 8
139
+ <https://peps.python.org/pep-0008/#public-and-internal-interfaces>`__ describes, so a layout that keeps its code in
140
+ ``my_package/_core.py`` and lists the public names in ``my_package/__init__.py`` exposes only those. ``--show-settings``
141
+ prints the result as ``linter.project_kind``, ``linter.api_packages`` and ``linter.api_modules``.
142
+
143
+ Docstring markup
144
+ ----------------
145
+
146
+ The reStructuredText rules, SMP310 to SMP323, check the field lists of `reStructuredText docstrings
147
+ <https://www.sphinx-doc.org/en/master/usage/domains/python.html#info-field-lists>`__, as Sphinx renders them:
148
+
149
+ .. code-block:: toml
150
+
151
+ [tool.simplint]
152
+ docstring-style = "rest" # unset by default, which turns SMP310 to SMP323 off
153
+
154
+ Every docstring has to be accurate: no field for a parameter or attribute that does not exist, no ``:returns:`` on a
155
+ function that returns nothing, no ``:yields:`` on one that is not a generator, ``:ivar:`` and ``:cvar:`` for instance and
156
+ class attributes, and no types, which belong in annotations. Every field needs a description that says more than the name, a
157
+ field list needs a blank line above it, a constructor parameter is documented once, in the class docstring or in
158
+ ``__init__``, roles such as ``:class:`` need their target in backticks, inline literals need closing, and the public API
159
+ leaves out internal names with a leading underscore. A docstring
160
+ of the public API also has to be complete: a ``:param:`` for each parameter, ``:returns:`` or ``:yields:`` when the
161
+ function hands back a value, ``:raises:`` for each exception it raises itself, and an ``:ivar:`` or ``:cvar:`` for each
162
+ attribute of a class. The fixes add the missing fields with empty descriptions, in the order Sphinx renders them, for you
163
+ to fill in.
164
+
165
+ Ruff's ``DOC201``, ``DOC402`` and ``DOC501`` read Google and numpydoc sections only, so they report the ``:returns:``,
166
+ ``:yields:`` and ``:raises:`` fields as missing; see `Rules that work against each other`_.
167
+
107
168
  Settings shared with Ruff
108
169
  -------------------------
109
170
 
@@ -232,10 +293,9 @@ and how to resolve it:
232
293
 
233
294
  The pairs are:
234
295
 
235
- - `SMP002 <https://simplint.readthedocs.io/en/latest/_generated/rules/SMP002.html>`__ removes docstrings that Ruff's
236
- ``D101``, ``D102``, ``D103``, ``D105``, ``D106`` and ``D107`` ask for. Ignore those, and let `SMP116
237
- <https://simplint.readthedocs.io/en/latest/_generated/rules/SMP116.html>`__ ask for documentation on the public API.
238
- - `SMP004 <https://simplint.readthedocs.io/en/latest/_generated/rules/SMP004.html>`__ removes the module docstrings of
296
+ - :doc:`SMP300 <_generated/rules/SMP300>` removes docstrings that Ruff's
297
+ ``D101``, ``D102``, ``D103``, ``D105``, ``D106`` and ``D107`` ask for. Ignore those, and let :doc:`SMP302 <_generated/rules/SMP302>` ask for documentation on the public API.
298
+ - :doc:`SMP301 <_generated/rules/SMP301>` removes the module docstrings of
239
299
  tests that Ruff's ``D100`` and ``D104`` ask for. Turn those off for test files in Ruff's ``per-file-ignores``.
240
300
  - `SMP108 <https://simplint.readthedocs.io/en/latest/_generated/rules/SMP108.html>`__ removes ``from __future__ import
241
301
  annotations`` on Python 3.14 and newer, which Ruff's ``I002`` adds back when ``lint.isort.required-imports`` lists it.
@@ -243,6 +303,10 @@ The pairs are:
243
303
  - `SMP110 <https://simplint.readthedocs.io/en/latest/_generated/rules/SMP110.html>`__ makes imports from the file's own
244
304
  package relative, which Ruff's ``TID252`` turns back when ``lint.flake8-tidy-imports.ban-relative-imports`` is
245
305
  ``"all"``. Set it to ``"parents"``.
306
+ - With ``docstring-style = "rest"``, :doc:`SMP315 <_generated/rules/SMP315>` asks for the ``:returns:`` and
307
+ ``:yields:`` fields that Ruff's ``DOC201`` and ``DOC402`` read as missing sections, and
308
+ :doc:`SMP316 <_generated/rules/SMP316>` for the ``:raises:`` fields ``DOC501`` reads the same way, since those know
309
+ Google and numpydoc sections only. Ignore the Ruff rules.
246
310
 
247
311
  Per-file ignores on either side count, so a Ruff rule turned off for tests does not conflict there. In preview, as in
248
312
  Ruff's reports, the message names rules instead of codes. Other combinations clash only on some code, such as `SMP050
@@ -162,20 +162,25 @@ documentation of one rule and ``simplint rule --all`` of every rule, ``simplint
162
162
  Pre-commit
163
163
  ----------
164
164
 
165
- Add the hook to the ``.pre-commit-config.yaml`` of `pre-commit <https://pre-commit.com/>`__ and set ``rev`` to a
166
- `release tag <https://github.com/gaborbernat/simplint/releases>`__:
165
+ Add the hook to the ``.pre-commit-config.yaml`` of `pre-commit <https://pre-commit.com/>`__ from the
166
+ `simplint-pre-commit <https://github.com/gaborbernat/simplint-pre-commit>`__ mirror and set ``rev`` to one of
167
+ `its tags <https://github.com/gaborbernat/simplint-pre-commit/tags>`__:
167
168
 
168
169
  .. code-block:: yaml
169
170
 
170
- - repo: https://github.com/gaborbernat/simplint
171
+ - repo: https://github.com/gaborbernat/simplint-pre-commit
171
172
  rev: ""
172
173
  hooks:
173
174
  - id: simplint
174
175
 
175
176
  The hook runs ``simplint check --fix`` on the whole project rather than on the changed files, because several rules need
176
177
  to know which names other modules import. List it after Ruff's ``ruff-check`` hook and before its ``ruff-format`` hook,
177
- the order above. It is a `Rust hook <https://pre-commit.com/#rust>`__: pre-commit builds simplint from source with
178
- Cargo, so the first run takes longer than later ones.
178
+ the order above. The mirror installs the wheel from `PyPI <https://pypi.org/project/simplint>`__, so it needs no Rust
179
+ toolchain and runs on `pre-commit.ci <https://pre-commit.ci>`__; it gets a tag for each release within a day.
180
+
181
+ To run a commit that is not released yet, use ``https://github.com/gaborbernat/simplint`` as the ``repo`` and the commit
182
+ as the ``rev``. That is a `Rust hook <https://pre-commit.com/#rust>`__: pre-commit builds simplint from source with the
183
+ Rust version the repository pins, so the toolchain must be installed, which it is not on pre-commit.ci.
179
184
 
180
185
  .. toctree::
181
186
  :hidden:
@@ -1,5 +1,6 @@
1
1
  crate
2
2
  fo
3
3
  master
4
+ parm
4
5
  thirdparty
5
6
  writeable