thailint 0.15.3__tar.gz → 0.15.4__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 (226) hide show
  1. {thailint-0.15.3 → thailint-0.15.4}/CHANGELOG.md +13 -0
  2. {thailint-0.15.3 → thailint-0.15.4}/PKG-INFO +1 -1
  3. {thailint-0.15.3 → thailint-0.15.4}/pyproject.toml +1 -1
  4. {thailint-0.15.3 → thailint-0.15.4}/LICENSE +0 -0
  5. {thailint-0.15.3 → thailint-0.15.4}/README.md +0 -0
  6. {thailint-0.15.3 → thailint-0.15.4}/src/__init__.py +0 -0
  7. {thailint-0.15.3 → thailint-0.15.4}/src/analyzers/__init__.py +0 -0
  8. {thailint-0.15.3 → thailint-0.15.4}/src/analyzers/ast_utils.py +0 -0
  9. {thailint-0.15.3 → thailint-0.15.4}/src/analyzers/rust_base.py +0 -0
  10. {thailint-0.15.3 → thailint-0.15.4}/src/analyzers/rust_context.py +0 -0
  11. {thailint-0.15.3 → thailint-0.15.4}/src/analyzers/typescript_base.py +0 -0
  12. {thailint-0.15.3 → thailint-0.15.4}/src/api.py +0 -0
  13. {thailint-0.15.3 → thailint-0.15.4}/src/cli/__init__.py +0 -0
  14. {thailint-0.15.3 → thailint-0.15.4}/src/cli/__main__.py +0 -0
  15. {thailint-0.15.3 → thailint-0.15.4}/src/cli/config.py +0 -0
  16. {thailint-0.15.3 → thailint-0.15.4}/src/cli/config_merge.py +0 -0
  17. {thailint-0.15.3 → thailint-0.15.4}/src/cli/linters/__init__.py +0 -0
  18. {thailint-0.15.3 → thailint-0.15.4}/src/cli/linters/code_patterns.py +0 -0
  19. {thailint-0.15.3 → thailint-0.15.4}/src/cli/linters/code_smells.py +0 -0
  20. {thailint-0.15.3 → thailint-0.15.4}/src/cli/linters/documentation.py +0 -0
  21. {thailint-0.15.3 → thailint-0.15.4}/src/cli/linters/performance.py +0 -0
  22. {thailint-0.15.3 → thailint-0.15.4}/src/cli/linters/shared.py +0 -0
  23. {thailint-0.15.3 → thailint-0.15.4}/src/cli/linters/structure.py +0 -0
  24. {thailint-0.15.3 → thailint-0.15.4}/src/cli/linters/structure_quality.py +0 -0
  25. {thailint-0.15.3 → thailint-0.15.4}/src/cli/main.py +0 -0
  26. {thailint-0.15.3 → thailint-0.15.4}/src/cli/utils.py +0 -0
  27. {thailint-0.15.3 → thailint-0.15.4}/src/cli_main.py +0 -0
  28. {thailint-0.15.3 → thailint-0.15.4}/src/config.py +0 -0
  29. {thailint-0.15.3 → thailint-0.15.4}/src/core/__init__.py +0 -0
  30. {thailint-0.15.3 → thailint-0.15.4}/src/core/base.py +0 -0
  31. {thailint-0.15.3 → thailint-0.15.4}/src/core/cli_utils.py +0 -0
  32. {thailint-0.15.3 → thailint-0.15.4}/src/core/config_parser.py +0 -0
  33. {thailint-0.15.3 → thailint-0.15.4}/src/core/constants.py +0 -0
  34. {thailint-0.15.3 → thailint-0.15.4}/src/core/linter_utils.py +0 -0
  35. {thailint-0.15.3 → thailint-0.15.4}/src/core/python_lint_rule.py +0 -0
  36. {thailint-0.15.3 → thailint-0.15.4}/src/core/registry.py +0 -0
  37. {thailint-0.15.3 → thailint-0.15.4}/src/core/rule_discovery.py +0 -0
  38. {thailint-0.15.3 → thailint-0.15.4}/src/core/types.py +0 -0
  39. {thailint-0.15.3 → thailint-0.15.4}/src/core/violation_builder.py +0 -0
  40. {thailint-0.15.3 → thailint-0.15.4}/src/core/violation_utils.py +0 -0
  41. {thailint-0.15.3 → thailint-0.15.4}/src/formatters/__init__.py +0 -0
  42. {thailint-0.15.3 → thailint-0.15.4}/src/formatters/sarif.py +0 -0
  43. {thailint-0.15.3 → thailint-0.15.4}/src/linter_config/__init__.py +0 -0
  44. {thailint-0.15.3 → thailint-0.15.4}/src/linter_config/directive_markers.py +0 -0
  45. {thailint-0.15.3 → thailint-0.15.4}/src/linter_config/ignore.py +0 -0
  46. {thailint-0.15.3 → thailint-0.15.4}/src/linter_config/loader.py +0 -0
  47. {thailint-0.15.3 → thailint-0.15.4}/src/linter_config/pattern_utils.py +0 -0
  48. {thailint-0.15.3 → thailint-0.15.4}/src/linter_config/rule_matcher.py +0 -0
  49. {thailint-0.15.3 → thailint-0.15.4}/src/linters/__init__.py +0 -0
  50. {thailint-0.15.3 → thailint-0.15.4}/src/linters/collection_pipeline/__init__.py +0 -0
  51. {thailint-0.15.3 → thailint-0.15.4}/src/linters/collection_pipeline/any_all_analyzer.py +0 -0
  52. {thailint-0.15.3 → thailint-0.15.4}/src/linters/collection_pipeline/ast_utils.py +0 -0
  53. {thailint-0.15.3 → thailint-0.15.4}/src/linters/collection_pipeline/config.py +0 -0
  54. {thailint-0.15.3 → thailint-0.15.4}/src/linters/collection_pipeline/continue_analyzer.py +0 -0
  55. {thailint-0.15.3 → thailint-0.15.4}/src/linters/collection_pipeline/detector.py +0 -0
  56. {thailint-0.15.3 → thailint-0.15.4}/src/linters/collection_pipeline/filter_map_analyzer.py +0 -0
  57. {thailint-0.15.3 → thailint-0.15.4}/src/linters/collection_pipeline/linter.py +0 -0
  58. {thailint-0.15.3 → thailint-0.15.4}/src/linters/collection_pipeline/suggestion_builder.py +0 -0
  59. {thailint-0.15.3 → thailint-0.15.4}/src/linters/cqs/__init__.py +0 -0
  60. {thailint-0.15.3 → thailint-0.15.4}/src/linters/cqs/config.py +0 -0
  61. {thailint-0.15.3 → thailint-0.15.4}/src/linters/cqs/function_analyzer.py +0 -0
  62. {thailint-0.15.3 → thailint-0.15.4}/src/linters/cqs/input_detector.py +0 -0
  63. {thailint-0.15.3 → thailint-0.15.4}/src/linters/cqs/linter.py +0 -0
  64. {thailint-0.15.3 → thailint-0.15.4}/src/linters/cqs/output_detector.py +0 -0
  65. {thailint-0.15.3 → thailint-0.15.4}/src/linters/cqs/python_analyzer.py +0 -0
  66. {thailint-0.15.3 → thailint-0.15.4}/src/linters/cqs/types.py +0 -0
  67. {thailint-0.15.3 → thailint-0.15.4}/src/linters/cqs/typescript_cqs_analyzer.py +0 -0
  68. {thailint-0.15.3 → thailint-0.15.4}/src/linters/cqs/typescript_function_analyzer.py +0 -0
  69. {thailint-0.15.3 → thailint-0.15.4}/src/linters/cqs/typescript_input_detector.py +0 -0
  70. {thailint-0.15.3 → thailint-0.15.4}/src/linters/cqs/typescript_output_detector.py +0 -0
  71. {thailint-0.15.3 → thailint-0.15.4}/src/linters/cqs/violation_builder.py +0 -0
  72. {thailint-0.15.3 → thailint-0.15.4}/src/linters/dry/__init__.py +0 -0
  73. {thailint-0.15.3 → thailint-0.15.4}/src/linters/dry/base_token_analyzer.py +0 -0
  74. {thailint-0.15.3 → thailint-0.15.4}/src/linters/dry/block_filter.py +0 -0
  75. {thailint-0.15.3 → thailint-0.15.4}/src/linters/dry/block_grouper.py +0 -0
  76. {thailint-0.15.3 → thailint-0.15.4}/src/linters/dry/cache.py +0 -0
  77. {thailint-0.15.3 → thailint-0.15.4}/src/linters/dry/cache_query.py +0 -0
  78. {thailint-0.15.3 → thailint-0.15.4}/src/linters/dry/config.py +0 -0
  79. {thailint-0.15.3 → thailint-0.15.4}/src/linters/dry/config_loader.py +0 -0
  80. {thailint-0.15.3 → thailint-0.15.4}/src/linters/dry/constant.py +0 -0
  81. {thailint-0.15.3 → thailint-0.15.4}/src/linters/dry/constant_matcher.py +0 -0
  82. {thailint-0.15.3 → thailint-0.15.4}/src/linters/dry/constant_violation_builder.py +0 -0
  83. {thailint-0.15.3 → thailint-0.15.4}/src/linters/dry/deduplicator.py +0 -0
  84. {thailint-0.15.3 → thailint-0.15.4}/src/linters/dry/duplicate_storage.py +0 -0
  85. {thailint-0.15.3 → thailint-0.15.4}/src/linters/dry/file_analyzer.py +0 -0
  86. {thailint-0.15.3 → thailint-0.15.4}/src/linters/dry/inline_ignore.py +0 -0
  87. {thailint-0.15.3 → thailint-0.15.4}/src/linters/dry/linter.py +0 -0
  88. {thailint-0.15.3 → thailint-0.15.4}/src/linters/dry/python_analyzer.py +0 -0
  89. {thailint-0.15.3 → thailint-0.15.4}/src/linters/dry/python_constant_extractor.py +0 -0
  90. {thailint-0.15.3 → thailint-0.15.4}/src/linters/dry/single_statement_detector.py +0 -0
  91. {thailint-0.15.3 → thailint-0.15.4}/src/linters/dry/storage_initializer.py +0 -0
  92. {thailint-0.15.3 → thailint-0.15.4}/src/linters/dry/token_hasher.py +0 -0
  93. {thailint-0.15.3 → thailint-0.15.4}/src/linters/dry/typescript_analyzer.py +0 -0
  94. {thailint-0.15.3 → thailint-0.15.4}/src/linters/dry/typescript_constant_extractor.py +0 -0
  95. {thailint-0.15.3 → thailint-0.15.4}/src/linters/dry/typescript_statement_detector.py +0 -0
  96. {thailint-0.15.3 → thailint-0.15.4}/src/linters/dry/typescript_value_extractor.py +0 -0
  97. {thailint-0.15.3 → thailint-0.15.4}/src/linters/dry/violation_builder.py +0 -0
  98. {thailint-0.15.3 → thailint-0.15.4}/src/linters/dry/violation_filter.py +0 -0
  99. {thailint-0.15.3 → thailint-0.15.4}/src/linters/dry/violation_generator.py +0 -0
  100. {thailint-0.15.3 → thailint-0.15.4}/src/linters/file_header/__init__.py +0 -0
  101. {thailint-0.15.3 → thailint-0.15.4}/src/linters/file_header/atemporal_detector.py +0 -0
  102. {thailint-0.15.3 → thailint-0.15.4}/src/linters/file_header/base_parser.py +0 -0
  103. {thailint-0.15.3 → thailint-0.15.4}/src/linters/file_header/bash_parser.py +0 -0
  104. {thailint-0.15.3 → thailint-0.15.4}/src/linters/file_header/config.py +0 -0
  105. {thailint-0.15.3 → thailint-0.15.4}/src/linters/file_header/css_parser.py +0 -0
  106. {thailint-0.15.3 → thailint-0.15.4}/src/linters/file_header/field_validator.py +0 -0
  107. {thailint-0.15.3 → thailint-0.15.4}/src/linters/file_header/linter.py +0 -0
  108. {thailint-0.15.3 → thailint-0.15.4}/src/linters/file_header/markdown_parser.py +0 -0
  109. {thailint-0.15.3 → thailint-0.15.4}/src/linters/file_header/python_parser.py +0 -0
  110. {thailint-0.15.3 → thailint-0.15.4}/src/linters/file_header/typescript_parser.py +0 -0
  111. {thailint-0.15.3 → thailint-0.15.4}/src/linters/file_header/violation_builder.py +0 -0
  112. {thailint-0.15.3 → thailint-0.15.4}/src/linters/file_placement/__init__.py +0 -0
  113. {thailint-0.15.3 → thailint-0.15.4}/src/linters/file_placement/config_loader.py +0 -0
  114. {thailint-0.15.3 → thailint-0.15.4}/src/linters/file_placement/directory_matcher.py +0 -0
  115. {thailint-0.15.3 → thailint-0.15.4}/src/linters/file_placement/linter.py +0 -0
  116. {thailint-0.15.3 → thailint-0.15.4}/src/linters/file_placement/path_resolver.py +0 -0
  117. {thailint-0.15.3 → thailint-0.15.4}/src/linters/file_placement/pattern_matcher.py +0 -0
  118. {thailint-0.15.3 → thailint-0.15.4}/src/linters/file_placement/pattern_validator.py +0 -0
  119. {thailint-0.15.3 → thailint-0.15.4}/src/linters/file_placement/rule_checker.py +0 -0
  120. {thailint-0.15.3 → thailint-0.15.4}/src/linters/file_placement/violation_factory.py +0 -0
  121. {thailint-0.15.3 → thailint-0.15.4}/src/linters/lazy_ignores/__init__.py +0 -0
  122. {thailint-0.15.3 → thailint-0.15.4}/src/linters/lazy_ignores/config.py +0 -0
  123. {thailint-0.15.3 → thailint-0.15.4}/src/linters/lazy_ignores/directive_utils.py +0 -0
  124. {thailint-0.15.3 → thailint-0.15.4}/src/linters/lazy_ignores/header_parser.py +0 -0
  125. {thailint-0.15.3 → thailint-0.15.4}/src/linters/lazy_ignores/linter.py +0 -0
  126. {thailint-0.15.3 → thailint-0.15.4}/src/linters/lazy_ignores/matcher.py +0 -0
  127. {thailint-0.15.3 → thailint-0.15.4}/src/linters/lazy_ignores/python_analyzer.py +0 -0
  128. {thailint-0.15.3 → thailint-0.15.4}/src/linters/lazy_ignores/rule_id_utils.py +0 -0
  129. {thailint-0.15.3 → thailint-0.15.4}/src/linters/lazy_ignores/skip_detector.py +0 -0
  130. {thailint-0.15.3 → thailint-0.15.4}/src/linters/lazy_ignores/types.py +0 -0
  131. {thailint-0.15.3 → thailint-0.15.4}/src/linters/lazy_ignores/typescript_analyzer.py +0 -0
  132. {thailint-0.15.3 → thailint-0.15.4}/src/linters/lazy_ignores/violation_builder.py +0 -0
  133. {thailint-0.15.3 → thailint-0.15.4}/src/linters/lbyl/__init__.py +0 -0
  134. {thailint-0.15.3 → thailint-0.15.4}/src/linters/lbyl/config.py +0 -0
  135. {thailint-0.15.3 → thailint-0.15.4}/src/linters/lbyl/linter.py +0 -0
  136. {thailint-0.15.3 → thailint-0.15.4}/src/linters/lbyl/pattern_detectors/__init__.py +0 -0
  137. {thailint-0.15.3 → thailint-0.15.4}/src/linters/lbyl/pattern_detectors/base.py +0 -0
  138. {thailint-0.15.3 → thailint-0.15.4}/src/linters/lbyl/pattern_detectors/dict_key_detector.py +0 -0
  139. {thailint-0.15.3 → thailint-0.15.4}/src/linters/lbyl/pattern_detectors/division_check_detector.py +0 -0
  140. {thailint-0.15.3 → thailint-0.15.4}/src/linters/lbyl/pattern_detectors/file_exists_detector.py +0 -0
  141. {thailint-0.15.3 → thailint-0.15.4}/src/linters/lbyl/pattern_detectors/hasattr_detector.py +0 -0
  142. {thailint-0.15.3 → thailint-0.15.4}/src/linters/lbyl/pattern_detectors/isinstance_detector.py +0 -0
  143. {thailint-0.15.3 → thailint-0.15.4}/src/linters/lbyl/pattern_detectors/len_check_detector.py +0 -0
  144. {thailint-0.15.3 → thailint-0.15.4}/src/linters/lbyl/pattern_detectors/none_check_detector.py +0 -0
  145. {thailint-0.15.3 → thailint-0.15.4}/src/linters/lbyl/pattern_detectors/string_validator_detector.py +0 -0
  146. {thailint-0.15.3 → thailint-0.15.4}/src/linters/lbyl/python_analyzer.py +0 -0
  147. {thailint-0.15.3 → thailint-0.15.4}/src/linters/lbyl/violation_builder.py +0 -0
  148. {thailint-0.15.3 → thailint-0.15.4}/src/linters/magic_numbers/__init__.py +0 -0
  149. {thailint-0.15.3 → thailint-0.15.4}/src/linters/magic_numbers/config.py +0 -0
  150. {thailint-0.15.3 → thailint-0.15.4}/src/linters/magic_numbers/context_analyzer.py +0 -0
  151. {thailint-0.15.3 → thailint-0.15.4}/src/linters/magic_numbers/linter.py +0 -0
  152. {thailint-0.15.3 → thailint-0.15.4}/src/linters/magic_numbers/python_analyzer.py +0 -0
  153. {thailint-0.15.3 → thailint-0.15.4}/src/linters/magic_numbers/typescript_analyzer.py +0 -0
  154. {thailint-0.15.3 → thailint-0.15.4}/src/linters/magic_numbers/typescript_ignore_checker.py +0 -0
  155. {thailint-0.15.3 → thailint-0.15.4}/src/linters/magic_numbers/violation_builder.py +0 -0
  156. {thailint-0.15.3 → thailint-0.15.4}/src/linters/method_property/__init__.py +0 -0
  157. {thailint-0.15.3 → thailint-0.15.4}/src/linters/method_property/config.py +0 -0
  158. {thailint-0.15.3 → thailint-0.15.4}/src/linters/method_property/linter.py +0 -0
  159. {thailint-0.15.3 → thailint-0.15.4}/src/linters/method_property/python_analyzer.py +0 -0
  160. {thailint-0.15.3 → thailint-0.15.4}/src/linters/method_property/violation_builder.py +0 -0
  161. {thailint-0.15.3 → thailint-0.15.4}/src/linters/nesting/__init__.py +0 -0
  162. {thailint-0.15.3 → thailint-0.15.4}/src/linters/nesting/config.py +0 -0
  163. {thailint-0.15.3 → thailint-0.15.4}/src/linters/nesting/linter.py +0 -0
  164. {thailint-0.15.3 → thailint-0.15.4}/src/linters/nesting/python_analyzer.py +0 -0
  165. {thailint-0.15.3 → thailint-0.15.4}/src/linters/nesting/typescript_analyzer.py +0 -0
  166. {thailint-0.15.3 → thailint-0.15.4}/src/linters/nesting/typescript_function_extractor.py +0 -0
  167. {thailint-0.15.3 → thailint-0.15.4}/src/linters/nesting/violation_builder.py +0 -0
  168. {thailint-0.15.3 → thailint-0.15.4}/src/linters/performance/__init__.py +0 -0
  169. {thailint-0.15.3 → thailint-0.15.4}/src/linters/performance/config.py +0 -0
  170. {thailint-0.15.3 → thailint-0.15.4}/src/linters/performance/constants.py +0 -0
  171. {thailint-0.15.3 → thailint-0.15.4}/src/linters/performance/linter.py +0 -0
  172. {thailint-0.15.3 → thailint-0.15.4}/src/linters/performance/python_analyzer.py +0 -0
  173. {thailint-0.15.3 → thailint-0.15.4}/src/linters/performance/regex_analyzer.py +0 -0
  174. {thailint-0.15.3 → thailint-0.15.4}/src/linters/performance/regex_linter.py +0 -0
  175. {thailint-0.15.3 → thailint-0.15.4}/src/linters/performance/typescript_analyzer.py +0 -0
  176. {thailint-0.15.3 → thailint-0.15.4}/src/linters/performance/violation_builder.py +0 -0
  177. {thailint-0.15.3 → thailint-0.15.4}/src/linters/print_statements/__init__.py +0 -0
  178. {thailint-0.15.3 → thailint-0.15.4}/src/linters/print_statements/config.py +0 -0
  179. {thailint-0.15.3 → thailint-0.15.4}/src/linters/print_statements/linter.py +0 -0
  180. {thailint-0.15.3 → thailint-0.15.4}/src/linters/print_statements/python_analyzer.py +0 -0
  181. {thailint-0.15.3 → thailint-0.15.4}/src/linters/print_statements/typescript_analyzer.py +0 -0
  182. {thailint-0.15.3 → thailint-0.15.4}/src/linters/print_statements/violation_builder.py +0 -0
  183. {thailint-0.15.3 → thailint-0.15.4}/src/linters/srp/__init__.py +0 -0
  184. {thailint-0.15.3 → thailint-0.15.4}/src/linters/srp/class_analyzer.py +0 -0
  185. {thailint-0.15.3 → thailint-0.15.4}/src/linters/srp/config.py +0 -0
  186. {thailint-0.15.3 → thailint-0.15.4}/src/linters/srp/heuristics.py +0 -0
  187. {thailint-0.15.3 → thailint-0.15.4}/src/linters/srp/linter.py +0 -0
  188. {thailint-0.15.3 → thailint-0.15.4}/src/linters/srp/metrics_evaluator.py +0 -0
  189. {thailint-0.15.3 → thailint-0.15.4}/src/linters/srp/python_analyzer.py +0 -0
  190. {thailint-0.15.3 → thailint-0.15.4}/src/linters/srp/typescript_analyzer.py +0 -0
  191. {thailint-0.15.3 → thailint-0.15.4}/src/linters/srp/typescript_metrics_calculator.py +0 -0
  192. {thailint-0.15.3 → thailint-0.15.4}/src/linters/srp/violation_builder.py +0 -0
  193. {thailint-0.15.3 → thailint-0.15.4}/src/linters/stateless_class/__init__.py +0 -0
  194. {thailint-0.15.3 → thailint-0.15.4}/src/linters/stateless_class/config.py +0 -0
  195. {thailint-0.15.3 → thailint-0.15.4}/src/linters/stateless_class/linter.py +0 -0
  196. {thailint-0.15.3 → thailint-0.15.4}/src/linters/stateless_class/python_analyzer.py +0 -0
  197. {thailint-0.15.3 → thailint-0.15.4}/src/linters/stringly_typed/__init__.py +0 -0
  198. {thailint-0.15.3 → thailint-0.15.4}/src/linters/stringly_typed/config.py +0 -0
  199. {thailint-0.15.3 → thailint-0.15.4}/src/linters/stringly_typed/context_filter.py +0 -0
  200. {thailint-0.15.3 → thailint-0.15.4}/src/linters/stringly_typed/function_call_violation_builder.py +0 -0
  201. {thailint-0.15.3 → thailint-0.15.4}/src/linters/stringly_typed/ignore_checker.py +0 -0
  202. {thailint-0.15.3 → thailint-0.15.4}/src/linters/stringly_typed/ignore_utils.py +0 -0
  203. {thailint-0.15.3 → thailint-0.15.4}/src/linters/stringly_typed/linter.py +0 -0
  204. {thailint-0.15.3 → thailint-0.15.4}/src/linters/stringly_typed/python/__init__.py +0 -0
  205. {thailint-0.15.3 → thailint-0.15.4}/src/linters/stringly_typed/python/analyzer.py +0 -0
  206. {thailint-0.15.3 → thailint-0.15.4}/src/linters/stringly_typed/python/call_tracker.py +0 -0
  207. {thailint-0.15.3 → thailint-0.15.4}/src/linters/stringly_typed/python/comparison_tracker.py +0 -0
  208. {thailint-0.15.3 → thailint-0.15.4}/src/linters/stringly_typed/python/condition_extractor.py +0 -0
  209. {thailint-0.15.3 → thailint-0.15.4}/src/linters/stringly_typed/python/conditional_detector.py +0 -0
  210. {thailint-0.15.3 → thailint-0.15.4}/src/linters/stringly_typed/python/constants.py +0 -0
  211. {thailint-0.15.3 → thailint-0.15.4}/src/linters/stringly_typed/python/match_analyzer.py +0 -0
  212. {thailint-0.15.3 → thailint-0.15.4}/src/linters/stringly_typed/python/validation_detector.py +0 -0
  213. {thailint-0.15.3 → thailint-0.15.4}/src/linters/stringly_typed/python/variable_extractor.py +0 -0
  214. {thailint-0.15.3 → thailint-0.15.4}/src/linters/stringly_typed/storage.py +0 -0
  215. {thailint-0.15.3 → thailint-0.15.4}/src/linters/stringly_typed/storage_initializer.py +0 -0
  216. {thailint-0.15.3 → thailint-0.15.4}/src/linters/stringly_typed/typescript/__init__.py +0 -0
  217. {thailint-0.15.3 → thailint-0.15.4}/src/linters/stringly_typed/typescript/analyzer.py +0 -0
  218. {thailint-0.15.3 → thailint-0.15.4}/src/linters/stringly_typed/typescript/call_tracker.py +0 -0
  219. {thailint-0.15.3 → thailint-0.15.4}/src/linters/stringly_typed/typescript/comparison_tracker.py +0 -0
  220. {thailint-0.15.3 → thailint-0.15.4}/src/linters/stringly_typed/violation_generator.py +0 -0
  221. {thailint-0.15.3 → thailint-0.15.4}/src/orchestrator/__init__.py +0 -0
  222. {thailint-0.15.3 → thailint-0.15.4}/src/orchestrator/core.py +0 -0
  223. {thailint-0.15.3 → thailint-0.15.4}/src/orchestrator/language_detector.py +0 -0
  224. {thailint-0.15.3 → thailint-0.15.4}/src/templates/thailint_config_template.yaml +0 -0
  225. {thailint-0.15.3 → thailint-0.15.4}/src/utils/__init__.py +0 -0
  226. {thailint-0.15.3 → thailint-0.15.4}/src/utils/project_root.py +0 -0
@@ -28,6 +28,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
28
28
 
29
29
  - **Stateless Class Linter** - Detect Python classes without state that should be module-level functions
30
30
 
31
+ ## [0.15.4] - 2026-01-26
32
+
33
+ ### Added
34
+
35
+ - **Inline Justifications for Lazy-Ignores** (#147) - Allow inline justifications directly next to ignore statements
36
+ - Syntax: `# noqa: PLR0912 - state machine inherently complex`
37
+ - Delimiter: ` - ` (space-dash-space) followed by justification text
38
+ - Inline justifications take precedence over header-based Suppressions
39
+ - Minimum justification length: 10 characters (configurable)
40
+ - New config options: `allow_inline_justifications`, `min_justification_length`
41
+ - Supports all ignore types: noqa, type:ignore, pylint:disable, nosec, pyright:ignore
42
+ - 27 new tests for inline justification functionality
43
+
31
44
  ## [0.15.3] - 2026-01-26
32
45
 
33
46
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: thailint
3
- Version: 0.15.3
3
+ Version: 0.15.4
4
4
  Summary: The AI Linter - Enterprise-grade linting and governance for AI-generated code across multiple languages
5
5
  License: MIT
6
6
  License-File: LICENSE
@@ -17,7 +17,7 @@ build-backend = "poetry.core.masonry.api"
17
17
 
18
18
  [tool.poetry]
19
19
  name = "thailint"
20
- version = "0.15.3"
20
+ version = "0.15.4"
21
21
  description = "The AI Linter - Enterprise-grade linting and governance for AI-generated code across multiple languages"
22
22
  authors = ["Steve Jackson"]
23
23
  license = "MIT"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes