sarj-python-lint 1.20.0__tar.gz → 1.20.1__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.20.0 → sarj_python_lint-1.20.1}/PKG-INFO +1 -1
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/pyproject.toml +1 -1
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/prefer_injected_dependency_over_monkeypatch.py +10 -5
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/.gitignore +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/LICENSE +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/README.md +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/__init__.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/__main__.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/_analysis_session.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/_file_context.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/_filesystem.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/_python_target.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/_ratchet_cli.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/_secret_names.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/_version.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/benchmark.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/json_boundary.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/py.typed +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/ratchet.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rule_base.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/__init__.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_annotation_semantics.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_ast_index.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_ast_position.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_comments.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_contract_annotation.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_dict_key_views.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_docstrings.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_fastapi.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_first_party.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_fixed_record.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_imports.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_local_source.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_logging.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_nominal_project.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_paths.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_project_index.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_prose_budget.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_pytest.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_registry.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_resource_provenance.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_set_fields.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_sql.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_suppression_comments.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_test_assertions.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_test_composition.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_test_provenance.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/async_cleanup_registered_synchronously.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/async_mock_call_without_await_assertion.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/complex_postgres_query_requires_architecture_review.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/defect_xfail_requires_explicit_strict.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/docstring_args_restate_signature.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/docstring_returns_restate_signature.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/excessive_commentary.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/fakes_in_shared_location.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/fastapi_class_router_contract.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/fastapi_explicit_openapi_contract.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/iac_source_coupled_test.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/invalid_pydantic_field_default.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/mock_without_spec.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/named_record_at_boundaries.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/negative_only_http_status_assertion.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_analytical_aggregation_in_postgres_store.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_any_mapping_types.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_broad_keyword_capture.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_comment_cruft.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_conftest_test_module_import.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_copied_inherited_docstring.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_cors_wildcard_with_credentials.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_database_programmability.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_delete_statement.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_dunder_all.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_duplicate_dunder_all_entry.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_excessive_cognitive_complexity.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_fastapi_on_event.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_file_level_escape_hatch_suppression.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_first_party_private_import.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_fixed_sleep_before_assert.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_frozen_after_validator_field_write.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_generic_single_export_module.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_hidden_constructor_fallback.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_injected_module_loader.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_invalid_argument_name_suppression.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_mocked_pydantic_value_object.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_nested_pydantic_field_validator.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_nullable_dependency_fallback.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_offset_pagination.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_positional_psycopg_row_escape.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_psycopg_execution_outside_injected_owner.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_random_uuid_in_sql.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_raw_connection_in_tests.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_raw_source_text_test_oracle.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_redundant_literal_description.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_redundant_module_alias_exports.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_repeated_string_literal.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_repeated_test_body.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_restated_comment.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_secret_in_log.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_select_star.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_service_behavior_in_settings.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_shallow_container_type_guard.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_string_concat_in_loop.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_swallowed_asyncio_cancellation.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_tautological_expect.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_test_method_grafting.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_typed_doc_sections.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_unique_violation_message_match.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_unnecessary_docstring.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_unused_underscored_keyword_parameter.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_unused_value_marker.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_vague_suppression_description.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_whole_request_response_payload_in_log.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/opaque_parametrize_case_needs_id.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/over_mocked_test.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/phase_label_comment.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/prefer_autospec_for_callable_mock.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/prefer_class_row.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/prefer_collection_comprehension.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/prefer_constant_time_secret_compare.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/prefer_fstring_over_concat.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/prefer_immutable_module_constant.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/prefer_library_fake.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/prefer_match_assert_never.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/prefer_match_exception_dispatch.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/prefer_match_type_dispatch.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/prefer_match_value_dispatch.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/prefer_module_level_constant.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/prefer_monkeypatch_for_process_state_in_test.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/prefer_monotonic_for_elapsed_time.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/prefer_namedtuple_over_tuple_return.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/prefer_native_string_check.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/prefer_nominal_id_types.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/prefer_non_nullable_collection.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/prefer_or_pattern.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/prefer_pydantic_json_value.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/prefer_pytest_fixture_injection.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/prefer_regex_fullmatch.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/prefer_required_constructor_parameters.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/prefer_self_documenting_constant.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/prefer_self_type_annotation.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/prefer_set_isdisjoint.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/prefer_str_enum.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/prefer_struct_over_namedtuple.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/prefer_walrus_awaited_none_guard.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/prefer_walrus_comprehension_filter.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/prefer_walrus_regex_match.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/prefer_walrus_stream_loop.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/production_derived_test_cases.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/pytest_fixture_returns_bare_tuple.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/redundant_class_docstring.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/redundant_docstring.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/redundant_module_docstring.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/repeated_kwarg_heavy_call_in_test.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/repeated_static_call_cases.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/repeated_test_composition.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/require_explicit_contract_implementation.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/require_explicit_psycopg_transaction.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/require_explicit_service_contract.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/require_keyword_only_swap_prone_params.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/require_nodecode_for_splitting_settings_field.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/require_port_for_service.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/require_precise_factory_signature.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/require_public_dependency_contract.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/require_pydantic_for_external_json.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/require_pydantic_for_structured_payload.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/require_pydantic_ordinal_lower_bound.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/restated_test_docstring.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/shared_mutable_pydantic_factory.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/stepdown.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/store_get_delegates_to_bulk_read.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/store_insert_requires_on_conflict.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/subprocess_kill_without_reap.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/timestamp_order_requires_tiebreaker.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/trailing_value_narration.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/typed_error_reasons.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/uncontrolled_randomness_in_test.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/unused_mock_setup.py +0 -0
- {sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/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.20.
|
|
3
|
+
Version: 1.20.1
|
|
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/
|
|
@@ -41,17 +41,21 @@ class PreferInjectedDependencyOverMonkeypatch(Rule):
|
|
|
41
41
|
code: str = "SARJ445"
|
|
42
42
|
documentation: ClassVar[RuleDocumentation | None] = RuleDocumentation(
|
|
43
43
|
default_level=Severity.ERROR,
|
|
44
|
-
summary="
|
|
44
|
+
summary="Prefer explicit test dependencies; justify scoped attribute patches at the boundary.",
|
|
45
45
|
rationale=(
|
|
46
46
|
"Attribute patching hides collaborators and configuration behind ambient module or object state, coupling "
|
|
47
|
-
"tests to lookup locations instead of an explicit boundary.
|
|
47
|
+
"tests to lookup locations instead of an explicit boundary. Replacing a scoped patch with bare assignment "
|
|
48
|
+
"does not fix that coupling and loses automatic restoration. Pytest monkeypatch remains appropriate for "
|
|
48
49
|
"reversible process state such as environment variables and the working directory."
|
|
49
50
|
),
|
|
50
51
|
remediation=(
|
|
51
52
|
"Pass the collaborator, settings, clock, sleeper, random source, client, or factory explicitly; prefer a "
|
|
52
|
-
"real in-process dependency, framework override, or purpose-built ABC/Protocol fake.
|
|
53
|
-
"
|
|
54
|
-
"
|
|
53
|
+
"real in-process dependency, framework override, or purpose-built ABC/Protocol fake. A scoped patch may "
|
|
54
|
+
"replace an existing constructor-injected collaborator on a test-owned instance with an interface-conforming "
|
|
55
|
+
"fake when rebuilding the fixture would add wiring without improving the boundary. Keep attribute-existence "
|
|
56
|
+
"checks enabled and the tested implementation intact. Suppress SARJ445 only at that call, naming the "
|
|
57
|
+
"owned instance and injection seam. For inherently global boundaries or lookup interception, explain why "
|
|
58
|
+
"injection would invalidate the test. Do not switch to bare assignment merely to avoid this rule."
|
|
55
59
|
),
|
|
56
60
|
category=RuleCategory.TESTING,
|
|
57
61
|
autofix=AutofixPolicy.NONE,
|
|
@@ -61,6 +65,7 @@ class PreferInjectedDependencyOverMonkeypatch(Rule):
|
|
|
61
65
|
"Environment, mapping, import-path, and working-directory mutations are intentionally allowed.",
|
|
62
66
|
"Untyped handles are recognized only on pytest tests or fixtures; directly parametrized values are excluded.",
|
|
63
67
|
"A nested function that captures a monkeypatch handle from an outer scope is not inferred.",
|
|
68
|
+
"Instance ownership and collaborator contracts are not inferred; justified scoped patches need a local suppression.",
|
|
64
69
|
),
|
|
65
70
|
examples=(
|
|
66
71
|
RuleExample(
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_ast_index.py
RENAMED
|
File without changes
|
{sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_ast_position.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_dict_key_views.py
RENAMED
|
File without changes
|
{sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_docstrings.py
RENAMED
|
File without changes
|
|
File without changes
|
{sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_first_party.py
RENAMED
|
File without changes
|
{sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_fixed_record.py
RENAMED
|
File without changes
|
|
File without changes
|
{sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_local_source.py
RENAMED
|
File without changes
|
|
File without changes
|
{sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_nominal_project.py
RENAMED
|
File without changes
|
|
File without changes
|
{sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_project_index.py
RENAMED
|
File without changes
|
{sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/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.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_set_fields.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_test_assertions.py
RENAMED
|
File without changes
|
{sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/_test_composition.py
RENAMED
|
File without changes
|
{sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/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.20.0 → sarj_python_lint-1.20.1}/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
|
{sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/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.20.0 → sarj_python_lint-1.20.1}/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
|
{sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/no_secret_in_log.py
RENAMED
|
File without changes
|
{sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/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
|
{sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/over_mocked_test.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/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
|
{sarj_python_lint-1.20.0 → sarj_python_lint-1.20.1}/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.20.0 → sarj_python_lint-1.20.1}/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.20.0 → sarj_python_lint-1.20.1}/src/sarj_python_lint/rules/unused_mock_setup.py
RENAMED
|
File without changes
|
|
File without changes
|