sarj-python-lint 1.26.2__tar.gz → 1.26.3__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-1.26.2 → sarj_python_lint-1.26.3}/PKG-INFO +1 -1
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/pyproject.toml +1 -1
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rule_base.py +19 -6
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_suppression_comments.py +14 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/.gitignore +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/LICENSE +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/README.md +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/__init__.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/__main__.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/_analysis_session.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/_file_context.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/_filesystem.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/_python_target.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/_ratchet_cli.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/_secret_names.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/_source.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/_version.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/benchmark.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/interpreter_argv.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/json_boundary.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/py.typed +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/ratchet.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/__init__.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_annotation_semantics.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_ast_index.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_ast_position.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_comments.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_contract_annotation.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_copy_on_write.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_dict_key_views.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_docstrings.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_fastapi.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_first_party.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_fixed_record.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_imports.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_local_source.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_logging.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_nominal_project.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_paths.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_project_index.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_prose_budget.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_pytest.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_registry.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_resource_provenance.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_set_fields.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_sql.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_test_assertions.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_test_composition.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_test_provenance.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/async_cleanup_registered_synchronously.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/async_mock_call_without_await_assertion.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/complex_postgres_query_requires_architecture_review.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/defect_xfail_requires_explicit_strict.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/docstring_args_restate_signature.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/docstring_returns_restate_signature.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/excessive_commentary.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/fakes_in_shared_location.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/fastapi_class_router_contract.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/fastapi_explicit_openapi_contract.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/iac_source_coupled_test.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/invalid_pydantic_field_default.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/mock_without_spec.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/named_record_at_boundaries.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/negative_only_http_status_assertion.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_analytical_aggregation_in_postgres_store.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_any_mapping_types.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_before_validator_input_mutation.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_broad_keyword_capture.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_comment_cruft.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_conftest_test_module_import.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_copied_inherited_docstring.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_cors_wildcard_with_credentials.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_database_programmability.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_delete_statement.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_dunder_all.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_duplicate_dunder_all_entry.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_excessive_cognitive_complexity.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_fastapi_on_event.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_file_level_escape_hatch_suppression.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_first_party_private_import.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_fixed_sleep_before_assert.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_frozen_after_validator_field_write.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_generic_single_export_module.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_hidden_constructor_fallback.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_injected_module_loader.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_input_model_mutation.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_interpreter_source_arguments.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_invalid_argument_name_suppression.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_mocked_pydantic_value_object.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_nested_pydantic_field_validator.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_nullable_dependency_fallback.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_offset_pagination.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_positional_psycopg_row_escape.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_psycopg_execution_outside_injected_owner.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_random_uuid_in_sql.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_raw_connection_in_tests.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_raw_source_text_test_oracle.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_redundant_literal_description.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_redundant_module_alias_exports.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_repeated_string_literal.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_repeated_test_body.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_restated_comment.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_secret_in_log.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_select_star.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_service_behavior_in_settings.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_shallow_container_type_guard.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_string_concat_in_loop.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_swallowed_asyncio_cancellation.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_tautological_expect.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_test_method_grafting.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_typed_doc_sections.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_unique_violation_message_match.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_unnecessary_docstring.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_unused_copy_result.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_unused_underscored_keyword_parameter.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_unused_value_marker.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_vague_suppression_description.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_whole_request_response_payload_in_log.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/opaque_parametrize_case_needs_id.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/over_mocked_test.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/phase_label_comment.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/prefer_autospec_for_callable_mock.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/prefer_class_row.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/prefer_collection_comprehension.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/prefer_constant_time_secret_compare.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/prefer_fstring_over_concat.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/prefer_immutable_module_constant.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/prefer_injected_dependency_over_monkeypatch.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/prefer_library_fake.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/prefer_match_assert_never.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/prefer_match_exception_dispatch.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/prefer_match_type_dispatch.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/prefer_match_value_dispatch.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/prefer_module_level_constant.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/prefer_monkeypatch_for_process_state_in_test.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/prefer_monotonic_for_elapsed_time.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/prefer_namedtuple_over_tuple_return.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/prefer_native_string_check.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/prefer_nominal_id_types.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/prefer_non_nullable_collection.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/prefer_or_pattern.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/prefer_pydantic_json_value.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/prefer_pytest_fixture_injection.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/prefer_regex_fullmatch.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/prefer_required_constructor_parameters.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/prefer_self_documenting_constant.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/prefer_self_type_annotation.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/prefer_set_isdisjoint.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/prefer_str_enum.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/prefer_struct_over_namedtuple.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/prefer_walrus_awaited_none_guard.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/prefer_walrus_comprehension_filter.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/prefer_walrus_regex_match.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/prefer_walrus_stream_loop.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/production_derived_test_cases.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/pytest_fixture_returns_bare_tuple.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/redundant_class_docstring.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/redundant_docstring.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/redundant_module_docstring.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/repeated_kwarg_heavy_call_in_test.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/repeated_static_call_cases.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/repeated_test_composition.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/require_explicit_contract_implementation.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/require_explicit_psycopg_transaction.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/require_explicit_service_contract.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/require_keyword_only_swap_prone_params.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/require_nodecode_for_splitting_settings_field.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/require_port_for_service.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/require_precise_factory_signature.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/require_public_dependency_contract.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/require_pydantic_for_external_json.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/require_pydantic_for_structured_payload.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/require_pydantic_ordinal_lower_bound.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/restated_test_docstring.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/shared_mutable_pydantic_factory.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/stepdown.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/store_get_delegates_to_bulk_read.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/store_insert_requires_on_conflict.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/subprocess_kill_without_reap.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/timestamp_order_requires_tiebreaker.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/trailing_value_narration.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/typed_error_reasons.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/uncontrolled_randomness_in_test.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/unused_mock_setup.py +0 -0
- {sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/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: 1.26.
|
|
3
|
+
Version: 1.26.3
|
|
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/
|
|
@@ -37,7 +37,7 @@ TESTS_DIR: Final = "packages/python/tests/rules"
|
|
|
37
37
|
|
|
38
38
|
# Keep SARJ suppressions separate because Ruff removes unknown `noqa` codes.
|
|
39
39
|
_SARJ_NOQA_RE = re.compile(
|
|
40
|
-
r"#\s*sarj-noqa(?::\s*([A-Za-z0-9_, ]+))?",
|
|
40
|
+
r"#\s*sarj-noqa\b(?::\s*([A-Za-z0-9_, ]+))?",
|
|
41
41
|
re.IGNORECASE,
|
|
42
42
|
)
|
|
43
43
|
|
|
@@ -49,12 +49,25 @@ def is_suppressed(source_lines: Sequence[str], line: int, code: str) -> bool:
|
|
|
49
49
|
m = _SARJ_NOQA_RE.search(text)
|
|
50
50
|
if not m:
|
|
51
51
|
return False
|
|
52
|
+
from sarj_python_lint.rules._suppression_comments import comment_lines # ruff: ignore[import-outside-top-level] -- comment scanner depends on rule_base.
|
|
53
|
+
|
|
54
|
+
comment = comment_lines(tuple(source_lines)).get(line, "")
|
|
55
|
+
m = _SARJ_NOQA_RE.search(comment)
|
|
56
|
+
if m is None:
|
|
57
|
+
return False
|
|
52
58
|
codes_str = m.group(1)
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
59
|
+
trailing = comment[m.end() :]
|
|
60
|
+
if codes_str is None:
|
|
61
|
+
# A complete bare marker preserves the existing all-codes waiver contract.
|
|
62
|
+
return not (trailing and (not trailing[0].isspace() or trailing.lstrip().startswith(":")))
|
|
63
|
+
reason = trailing.lstrip()
|
|
64
|
+
single_dash_reason = reason.startswith("-") and (codes_str[-1:].isspace() or trailing[:1].isspace())
|
|
65
|
+
if reason and not reason.startswith(("--", "—", "–")) and not single_dash_reason:
|
|
66
|
+
return False
|
|
67
|
+
parts = tuple(part.strip() for part in codes_str.split(","))
|
|
68
|
+
if any(not part for part in parts):
|
|
69
|
+
return False
|
|
70
|
+
return code.upper() in {part.upper() for part in parts}
|
|
58
71
|
|
|
59
72
|
|
|
60
73
|
class ColumnEncoding(StrEnum):
|
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
|
+
from functools import lru_cache
|
|
4
5
|
import tokenize
|
|
6
|
+
from types import MappingProxyType
|
|
7
|
+
from typing import TYPE_CHECKING
|
|
5
8
|
|
|
6
9
|
from sarj_python_lint.rules._comments import all_comments
|
|
7
10
|
|
|
8
11
|
|
|
12
|
+
if TYPE_CHECKING:
|
|
13
|
+
from collections.abc import Mapping
|
|
14
|
+
|
|
15
|
+
|
|
9
16
|
@dataclass(frozen=True, slots=True)
|
|
10
17
|
class Comment:
|
|
11
18
|
line: int
|
|
@@ -34,3 +41,10 @@ def scan_comments_or_none(source: str) -> list[Comment] | None:
|
|
|
34
41
|
return scan_comments(source)
|
|
35
42
|
except tokenize.TokenError, SyntaxError:
|
|
36
43
|
return None
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
@lru_cache(maxsize=1)
|
|
47
|
+
def comment_lines(source_lines: tuple[str, ...]) -> Mapping[int, str]:
|
|
48
|
+
return MappingProxyType(
|
|
49
|
+
{comment.line: "# " + comment.body for comment in scan_comments_or_none("\n".join(source_lines)) or ()}
|
|
50
|
+
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/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
|
{sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/interpreter_argv.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_ast_index.py
RENAMED
|
File without changes
|
{sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_ast_position.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_copy_on_write.py
RENAMED
|
File without changes
|
{sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_dict_key_views.py
RENAMED
|
File without changes
|
{sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_docstrings.py
RENAMED
|
File without changes
|
|
File without changes
|
{sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_first_party.py
RENAMED
|
File without changes
|
{sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_fixed_record.py
RENAMED
|
File without changes
|
|
File without changes
|
{sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_local_source.py
RENAMED
|
File without changes
|
|
File without changes
|
{sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_nominal_project.py
RENAMED
|
File without changes
|
|
File without changes
|
{sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_project_index.py
RENAMED
|
File without changes
|
{sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_prose_budget.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_set_fields.py
RENAMED
|
File without changes
|
|
File without changes
|
{sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_test_assertions.py
RENAMED
|
File without changes
|
{sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_test_composition.py
RENAMED
|
File without changes
|
{sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/_test_provenance.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
|
{sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/mock_without_spec.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_comment_cruft.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/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
|
|
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-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/no_secret_in_log.py
RENAMED
|
File without changes
|
{sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/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
|
|
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-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/over_mocked_test.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/prefer_class_row.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
|
{sarj_python_lint-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/prefer_or_pattern.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-1.26.2 → sarj_python_lint-1.26.3}/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
|
|
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-1.26.2 → sarj_python_lint-1.26.3}/src/sarj_python_lint/rules/unused_mock_setup.py
RENAMED
|
File without changes
|
|
File without changes
|