sarj-python-lint 0.84.0__tar.gz → 0.84.2__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.
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/PKG-INFO +1 -1
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/pyproject.toml +1 -1
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/__main__.py +8 -1
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/defect_xfail_requires_explicit_strict.py +1 -1
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/docstring_args_restate_signature.py +1 -1
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/docstring_returns_restate_signature.py +1 -1
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_copied_inherited_docstring.py +1 -1
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_offset_pagination.py +1 -1
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_positional_psycopg_row_escape.py +1 -1
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_psycopg_execution_outside_injected_owner.py +1 -1
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_repeated_string_literal.py +2 -2
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_repeated_test_body.py +1 -1
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_service_behavior_in_settings.py +1 -1
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_tautological_expect.py +1 -1
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_vague_suppression_description.py +1 -1
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/phase_label_comment.py +1 -1
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/prefer_class_row.py +1 -1
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/prefer_match_assert_never.py +2 -2
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/prefer_self_documenting_constant.py +2 -2
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/prefer_struct_over_namedtuple.py +1 -1
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/redundant_class_docstring.py +1 -1
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/redundant_module_docstring.py +1 -1
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/require_nodecode_for_splitting_settings_field.py +1 -1
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/restated_test_docstring.py +2 -2
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/trailing_value_narration.py +1 -1
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/uncontrolled_randomness_in_test.py +1 -1
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/unused_mock_setup.py +1 -1
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/.gitignore +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/LICENSE +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/README.md +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/__init__.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/_analysis_session.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/_filesystem.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/_python_target.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/_ratchet_cli.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/_secret_names.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/_version.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/py.typed +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/ratchet.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rule_base.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/__init__.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/_ast_index.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/_comments.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/_docstrings.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/_fastapi.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/_first_party.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/_fixed_record.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/_imports.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/_logging.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/_paths.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/_project_index.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/_prose_budget.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/_pytest.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/_registry.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/_sql.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/_suppression_comments.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/_test_assertions.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/complex_postgres_query_requires_architecture_review.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/excessive_commentary.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/fakes_in_shared_location.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/fastapi_class_router_contract.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/fastapi_explicit_openapi_contract.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/iac_source_coupled_test.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/invalid_pydantic_field_default.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/mock_without_spec.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/negative_only_http_status_assertion.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_analytical_aggregation_in_postgres_store.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_comment_cruft.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_conftest_test_module_import.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_cors_wildcard_with_credentials.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_deleted_only_override_parameter.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_dunder_all.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_duplicate_dunder_all_entry.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_excessive_cognitive_complexity.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_fastapi_on_event.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_file_level_escape_hatch_suppression.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_first_party_private_import.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_frozen_after_validator_field_write.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_generic_single_export_module.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_hidden_constructor_fallback.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_invalid_argument_name_suppression.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_nested_pydantic_field_validator.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_random_uuid_in_sql.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_raw_connection_in_tests.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_raw_source_text_test_oracle.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_redundant_literal_description.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_redundant_module_alias_exports.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_restated_comment.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_secret_in_log.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_select_star.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_string_concat_in_loop.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_typed_doc_sections.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_unique_violation_message_match.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_unnecessary_docstring.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_vague_annotations.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_whole_request_response_payload_in_log.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/opaque_parametrize_case_needs_id.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/over_mocked_test.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/prefer_collection_comprehension.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/prefer_constant_time_secret_compare.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/prefer_fstring_over_concat.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/prefer_immutable_module_constant.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/prefer_injected_dependency_over_monkeypatch.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/prefer_library_fake.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/prefer_match_type_dispatch.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/prefer_match_value_dispatch.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/prefer_module_level_constant.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/prefer_monkeypatch_for_process_state_in_test.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/prefer_namedtuple_over_tuple_return.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/prefer_nominal_id_types.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/prefer_non_nullable_collection.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/prefer_or_pattern.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/prefer_self_type_annotation.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/prefer_set_isdisjoint.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/prefer_str_enum.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/prefer_walrus_awaited_none_guard.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/prefer_walrus_comprehension_filter.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/prefer_walrus_regex_match.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/prefer_walrus_stream_loop.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/production_derived_test_cases.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/pydantic_at_boundaries.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/pytest_fixture_returns_bare_tuple.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/redundant_docstring.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/repeated_kwarg_heavy_call_in_test.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/repeated_static_call_cases.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/require_keyword_only_swap_prone_params.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/require_port_for_service.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/require_pydantic_for_external_json.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/require_pydantic_for_structured_payload.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/require_pydantic_ordinal_lower_bound.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/require_typed_http_test_response.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/stepdown.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/store_get_delegates_to_bulk_read.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/store_insert_requires_on_conflict.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/timestamp_order_requires_tiebreaker.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/typed_error_reasons.py +0 -0
- {sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/unused_test_factory_option.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: sarj-python-lint
|
|
3
|
-
Version: 0.84.
|
|
3
|
+
Version: 0.84.2
|
|
4
4
|
Summary: Custom Python lint rules — AST-based, pre-commit-friendly, hypermodern defaults
|
|
5
5
|
Project-URL: Homepage, https://code-standards.sarj.ai/rules/python/
|
|
6
6
|
Project-URL: Documentation, https://code-standards.sarj.ai/rules/python/
|
|
@@ -209,7 +209,7 @@ def _suppressed_diagnostics(
|
|
|
209
209
|
|
|
210
210
|
|
|
211
211
|
def _suppressed_codes(codes: dict[str, set[Severity]]) -> set[tuple[str, Severity]]:
|
|
212
|
-
|
|
212
|
+
suppressed = {
|
|
213
213
|
(generic, generic_severity)
|
|
214
214
|
for specific, generics in _DIAGNOSTIC_PRECEDENCE.items()
|
|
215
215
|
if specific in codes
|
|
@@ -217,6 +217,13 @@ def _suppressed_codes(codes: dict[str, set[Severity]]) -> set[tuple[str, Severit
|
|
|
217
217
|
for generic_severity in codes.get(generic, set())
|
|
218
218
|
if generic_severity is Severity.WARNING or Severity.ERROR in codes[specific]
|
|
219
219
|
}
|
|
220
|
+
# The promoted signature-restatement rules now block. Keep their errors and
|
|
221
|
+
# drop only the lower-severity typed-docstring twin at the same owner.
|
|
222
|
+
if Severity.WARNING in codes.get("SARJ092", set()) and any(
|
|
223
|
+
Severity.ERROR in codes.get(generic, set()) for generic in ("SARJ086", "SARJ087")
|
|
224
|
+
):
|
|
225
|
+
suppressed.add(("SARJ092", Severity.WARNING))
|
|
226
|
+
return suppressed
|
|
220
227
|
|
|
221
228
|
|
|
222
229
|
def _function_signature_owner_locations(source: str) -> dict[int, _OwnerLocation]:
|
|
@@ -129,7 +129,7 @@ class DefectXfailRequiresExplicitStrict(Rule):
|
|
|
129
129
|
"fixed its XPASS may not fail the suite. Add literal `strict=True`; if only some "
|
|
130
130
|
"parameter cases fail, move the marker to those `pytest.param` cases first."
|
|
131
131
|
),
|
|
132
|
-
severity=Severity.
|
|
132
|
+
severity=Severity.ERROR,
|
|
133
133
|
)
|
|
134
134
|
for node in _rotting_bug_pins(tree, imports)
|
|
135
135
|
]
|
|
@@ -181,7 +181,7 @@ class DocstringArgsRestateSignature(Rule):
|
|
|
181
181
|
f"`{node.name}` has an Args section whose entries only repeat matching parameter names or types; "
|
|
182
182
|
"remove that section or document a constraint not evident from the signature."
|
|
183
183
|
),
|
|
184
|
-
severity=Severity.
|
|
184
|
+
severity=Severity.ERROR,
|
|
185
185
|
)
|
|
186
186
|
)
|
|
187
187
|
|
|
@@ -252,7 +252,7 @@ class DocstringReturnsRestateSignature(Rule):
|
|
|
252
252
|
f"`{node.name}` {section.name} section only repeats its callable name or annotated result type; "
|
|
253
253
|
"remove that section or document result semantics not expressed by the signature."
|
|
254
254
|
),
|
|
255
|
-
severity=Severity.
|
|
255
|
+
severity=Severity.ERROR,
|
|
256
256
|
)
|
|
257
257
|
)
|
|
258
258
|
|
|
@@ -158,7 +158,7 @@ class NoCopiedInheritedDocstring(Rule):
|
|
|
158
158
|
f"Docstring has the same cleaned content as {parent.name}.{name}'s. Remove it only if no "
|
|
159
159
|
"consumer requires the override's direct `__doc__`; otherwise retain it with a narrow rationale."
|
|
160
160
|
),
|
|
161
|
-
severity=Severity.
|
|
161
|
+
severity=Severity.ERROR,
|
|
162
162
|
)
|
|
163
163
|
)
|
|
164
164
|
|
|
@@ -128,7 +128,7 @@ class NoOffsetPagination(Rule):
|
|
|
128
128
|
line=node.lineno,
|
|
129
129
|
col=node.col_offset + 1,
|
|
130
130
|
code=self.code,
|
|
131
|
-
severity=Severity.
|
|
131
|
+
severity=Severity.ERROR,
|
|
132
132
|
message=(
|
|
133
133
|
"Dynamic OFFSET pagination may scan skipped rows and drift under writes; use a stable unique "
|
|
134
134
|
"keyset cursor, or document why bounded/random page access requires OFFSET."
|
|
@@ -157,7 +157,7 @@ class NoPositionalPsycopgRowEscape(Rule):
|
|
|
157
157
|
line=cursor.call.lineno,
|
|
158
158
|
col=cursor.call.col_offset + 1,
|
|
159
159
|
code=self.code,
|
|
160
|
-
severity=Severity.
|
|
160
|
+
severity=Severity.ERROR,
|
|
161
161
|
message=(
|
|
162
162
|
"this positional Psycopg record escapes unchanged; return a named `class_row(Model)` "
|
|
163
163
|
"record, use `scalar_row` for a scalar, or transform the tuple locally"
|
|
@@ -148,7 +148,7 @@ class NoPsycopgExecutionOutsideInjectedOwner(Rule):
|
|
|
148
148
|
line=call.lineno,
|
|
149
149
|
col=call.col_offset + 1,
|
|
150
150
|
code=self.code,
|
|
151
|
-
severity=Severity.
|
|
151
|
+
severity=Severity.ERROR,
|
|
152
152
|
message=(
|
|
153
153
|
"Psycopg execution is outside a constructor-injected persistence owner; route it through the "
|
|
154
154
|
"owning store, repository, or transaction API"
|
|
@@ -187,7 +187,7 @@ class NoRepeatedStringLiteral(Rule):
|
|
|
187
187
|
f"structured string literal {_preview(value)} duplicates module constant "
|
|
188
188
|
f"`{constant_name}` — reuse the canonical constant so the copies cannot drift."
|
|
189
189
|
),
|
|
190
|
-
severity=Severity.
|
|
190
|
+
severity=Severity.ERROR,
|
|
191
191
|
)
|
|
192
192
|
for node in function_nodes
|
|
193
193
|
)
|
|
@@ -209,7 +209,7 @@ class NoRepeatedStringLiteral(Rule):
|
|
|
209
209
|
f"callable scopes (first use at line {first.lineno}) — reuse a named binding "
|
|
210
210
|
"when they share ownership, or suppress with an independent-ownership rationale."
|
|
211
211
|
),
|
|
212
|
-
severity=Severity.
|
|
212
|
+
severity=Severity.ERROR,
|
|
213
213
|
)
|
|
214
214
|
for node in repeats
|
|
215
215
|
)
|
|
@@ -141,7 +141,7 @@ class NoServiceBehaviorInSettings(Rule):
|
|
|
141
141
|
line=node.lineno,
|
|
142
142
|
col=node.col_offset + 1,
|
|
143
143
|
code=self.code,
|
|
144
|
-
severity=Severity.
|
|
144
|
+
severity=Severity.ERROR,
|
|
145
145
|
message=(
|
|
146
146
|
f"`{node.name}` is named as passive data but {methods} calls an injected collaborator — "
|
|
147
147
|
"move orchestration to a service/coordinator and keep settings or configuration data-only."
|
|
@@ -123,7 +123,7 @@ class NoVagueSuppressionDescription(Rule):
|
|
|
123
123
|
message=(
|
|
124
124
|
f'Suppression reason "{vague_reason}" is generic; name the concrete mismatch or safety invariant.'
|
|
125
125
|
),
|
|
126
|
-
severity=Severity.
|
|
126
|
+
severity=Severity.ERROR,
|
|
127
127
|
column_encoding=ColumnEncoding.CODEPOINTS,
|
|
128
128
|
)
|
|
129
129
|
)
|
|
@@ -112,7 +112,7 @@ class TestPhaseLabelComment(Rule):
|
|
|
112
112
|
f"Bare test phase comment {body.strip()!r} narrates structure; delete it or replace it "
|
|
113
113
|
"with non-obvious rationale."
|
|
114
114
|
),
|
|
115
|
-
severity=Severity.
|
|
115
|
+
severity=Severity.ERROR,
|
|
116
116
|
column_encoding=ColumnEncoding.CODEPOINTS,
|
|
117
117
|
)
|
|
118
118
|
for line, col, body in standalone
|
{sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/prefer_class_row.py
RENAMED
|
@@ -123,7 +123,7 @@ class PreferClassRow(Rule):
|
|
|
123
123
|
line=cursor.factory.lineno,
|
|
124
124
|
col=cursor.factory.col_offset + 1,
|
|
125
125
|
code=self.code,
|
|
126
|
-
severity=Severity.
|
|
126
|
+
severity=Severity.ERROR,
|
|
127
127
|
message=(
|
|
128
128
|
f"this dict row is immediately converted to `{model}`; use `class_row({model})` to "
|
|
129
129
|
"construct it during fetch"
|
|
@@ -128,7 +128,7 @@ class PreferMatchAssertNever(Rule):
|
|
|
128
128
|
line=wildcard.pattern.lineno,
|
|
129
129
|
col=wildcard.pattern.col_offset + 1,
|
|
130
130
|
code=self.code,
|
|
131
|
-
severity=Severity.
|
|
131
|
+
severity=Severity.ERROR,
|
|
132
132
|
message=(
|
|
133
133
|
f"typed `{enum_name}` match has a no-op catch-all — an unhandled member "
|
|
134
134
|
"is silently ignored; bind it and call `assert_never`, or raise."
|
|
@@ -146,7 +146,7 @@ class PreferMatchAssertNever(Rule):
|
|
|
146
146
|
line=node.lineno,
|
|
147
147
|
col=node.col_offset + 1,
|
|
148
148
|
code=self.code,
|
|
149
|
-
severity=Severity.
|
|
149
|
+
severity=Severity.ERROR,
|
|
150
150
|
message=(
|
|
151
151
|
f"typed `{enum_name}` if/elif dispatch has a no-op `else` — an unhandled "
|
|
152
152
|
"member is silently ignored; prefer match/case with `assert_never`, or raise."
|
|
@@ -345,7 +345,7 @@ class PreferSelfDocumentingConstant(Rule):
|
|
|
345
345
|
f"`{name}` contains bare HTTP status integers; use `http.HTTPStatus` members, "
|
|
346
346
|
"or their `.value` at an exact-integer boundary. Keep non-obvious rationale."
|
|
347
347
|
),
|
|
348
|
-
Severity.
|
|
348
|
+
Severity.ERROR,
|
|
349
349
|
)
|
|
350
350
|
)
|
|
351
351
|
continue
|
|
@@ -371,7 +371,7 @@ class PreferSelfDocumentingConstant(Rule):
|
|
|
371
371
|
f"`{name}` relies on its comment to identify {unit.label}; encode the unit in "
|
|
372
372
|
f"the constant name{alternative}.{compatibility} Keep non-obvious rationale."
|
|
373
373
|
),
|
|
374
|
-
Severity.
|
|
374
|
+
Severity.ERROR,
|
|
375
375
|
)
|
|
376
376
|
)
|
|
377
377
|
|
|
@@ -121,7 +121,7 @@ class PreferStructOverNamedtuple(Rule):
|
|
|
121
121
|
"static `collections.namedtuple` fields have no type declarations — prefer a class-based "
|
|
122
122
|
"`typing.NamedTuple`; change tuple semantics only after reviewing callers"
|
|
123
123
|
),
|
|
124
|
-
severity=Severity.
|
|
124
|
+
severity=Severity.ERROR,
|
|
125
125
|
)
|
|
126
126
|
|
|
127
127
|
|
|
@@ -181,7 +181,7 @@ def _settings_split_findings(
|
|
|
181
181
|
line=field.annotation.lineno,
|
|
182
182
|
col=field.annotation.col_offset + 1,
|
|
183
183
|
code=code,
|
|
184
|
-
severity=Severity.
|
|
184
|
+
severity=Severity.ERROR,
|
|
185
185
|
message=(
|
|
186
186
|
f"Complex setting `{field_name}` is unconditionally split by `{function.name}` but "
|
|
187
187
|
"environment sources may JSON-decode it first; if the input contract is raw text, "
|
|
@@ -333,7 +333,7 @@ class RestatedTestDocstring(Rule):
|
|
|
333
333
|
col=expr.col_offset + 1,
|
|
334
334
|
code=self.code,
|
|
335
335
|
message=_MESSAGE,
|
|
336
|
-
severity=Severity.
|
|
336
|
+
severity=Severity.ERROR,
|
|
337
337
|
)
|
|
338
338
|
)
|
|
339
339
|
|
|
@@ -369,7 +369,7 @@ class RestatedTestDocstring(Rule):
|
|
|
369
369
|
col=expr.col_offset + 1,
|
|
370
370
|
code=self.code,
|
|
371
371
|
message=_MESSAGE,
|
|
372
|
-
severity=Severity.
|
|
372
|
+
severity=Severity.ERROR,
|
|
373
373
|
)
|
|
374
374
|
)
|
|
375
375
|
|
|
@@ -234,7 +234,7 @@ class TrailingValueNarration(Rule):
|
|
|
234
234
|
f"Trailing numeric-unit label {body.strip()!r} can drift; encode or reconcile the "
|
|
235
235
|
"unit in the assigned name or value type, then remove the comment."
|
|
236
236
|
),
|
|
237
|
-
severity=Severity.
|
|
237
|
+
severity=Severity.ERROR,
|
|
238
238
|
column_encoding=ColumnEncoding.CODEPOINTS,
|
|
239
239
|
)
|
|
240
240
|
)
|
|
@@ -479,7 +479,7 @@ def _test_randomness_findings(
|
|
|
479
479
|
line=call.lineno,
|
|
480
480
|
col=call.col_offset + 1,
|
|
481
481
|
code=code,
|
|
482
|
-
severity=Severity.
|
|
482
|
+
severity=Severity.ERROR,
|
|
483
483
|
message=(
|
|
484
484
|
"a standard-library PRNG sample runs in a potentially repeated test region without a "
|
|
485
485
|
"dominating deterministic seed; use an isolated `random.Random(seed)`, inject a "
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/_analysis_session.py
RENAMED
|
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
|
{sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/_ast_index.py
RENAMED
|
File without changes
|
|
File without changes
|
{sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/_docstrings.py
RENAMED
|
File without changes
|
|
File without changes
|
{sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/_first_party.py
RENAMED
|
File without changes
|
{sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/_fixed_record.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/_project_index.py
RENAMED
|
File without changes
|
{sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/_prose_budget.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/_test_assertions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/mock_without_spec.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_comment_cruft.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_dunder_all.py
RENAMED
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_secret_in_log.py
RENAMED
|
File without changes
|
{sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/no_select_star.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/over_mocked_test.py
RENAMED
|
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
|
|
File without changes
|
{sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/prefer_or_pattern.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sarj_python_lint-0.84.0 → sarj_python_lint-0.84.2}/src/sarj_python_lint/rules/prefer_str_enum.py
RENAMED
|
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
|
|
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
|