sarj-python-lint 1.27.2__tar.gz → 1.27.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.27.2 → sarj_python_lint-1.27.3}/PKG-INFO +1 -1
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/pyproject.toml +1 -1
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/interpreter_argv.py +60 -9
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/.gitignore +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/LICENSE +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/README.md +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/__init__.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/__main__.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/_analysis_session.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/_file_context.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/_filesystem.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/_python_target.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/_ratchet_cli.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/_secret_names.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/_source.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/_version.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/benchmark.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/json_boundary.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/py.typed +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/ratchet.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rule_base.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/__init__.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_annotation_semantics.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_ast_index.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_ast_position.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_comments.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_contract_annotation.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_copy_on_write.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_dict_key_views.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_docstrings.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_fastapi.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_first_party.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_fixed_record.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_imports.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_local_source.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_logging.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_nominal_project.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_paths.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_project_index.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_prose_budget.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_pytest.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_registry.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_resource_provenance.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_set_fields.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_sql.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_suppression_comments.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_test_assertions.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_test_composition.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_test_provenance.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/async_cleanup_registered_synchronously.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/async_mock_call_without_await_assertion.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/complex_postgres_query_requires_architecture_review.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/defect_xfail_requires_explicit_strict.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/docstring_args_restate_signature.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/docstring_returns_restate_signature.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/excessive_commentary.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/fakes_in_shared_location.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/fastapi_class_router_contract.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/fastapi_explicit_openapi_contract.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/iac_source_coupled_test.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/invalid_pydantic_field_default.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/mock_without_spec.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/named_record_at_boundaries.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/negative_only_http_status_assertion.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_analytical_aggregation_in_postgres_store.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_any_mapping_types.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_before_validator_input_mutation.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_broad_keyword_capture.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_comment_cruft.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_conftest_test_module_import.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_copied_inherited_docstring.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_cors_wildcard_with_credentials.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_database_programmability.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_delete_statement.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_dunder_all.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_duplicate_dunder_all_entry.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_excessive_cognitive_complexity.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_fastapi_on_event.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_file_level_escape_hatch_suppression.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_first_party_private_import.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_fixed_sleep_before_assert.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_fixed_sleep_in_loop.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_frozen_after_validator_field_write.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_generic_single_export_module.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_hidden_constructor_fallback.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_injected_module_loader.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_input_model_mutation.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_interpreter_source_arguments.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_invalid_argument_name_suppression.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_mocked_pydantic_value_object.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_nested_pydantic_field_validator.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_nullable_dependency_fallback.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_offset_pagination.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_positional_psycopg_row_escape.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_psycopg_execution_outside_injected_owner.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_random_uuid_in_sql.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_raw_connection_in_tests.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_raw_source_text_test_oracle.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_redundant_literal_description.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_redundant_module_alias_exports.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_repeated_string_literal.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_repeated_test_body.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_restated_comment.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_secret_in_log.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_select_star.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_service_behavior_in_settings.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_shallow_container_type_guard.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_string_concat_in_loop.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_swallowed_asyncio_cancellation.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_tautological_expect.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_test_method_grafting.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_typed_doc_sections.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_unique_violation_message_match.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_unnecessary_docstring.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_unused_copy_result.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_unused_underscored_keyword_parameter.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_unused_value_marker.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_vague_suppression_description.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_whole_request_response_payload_in_log.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/opaque_parametrize_case_needs_id.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/over_mocked_test.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/phase_label_comment.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/prefer_autospec_for_callable_mock.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/prefer_class_row.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/prefer_collection_comprehension.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/prefer_constant_time_secret_compare.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/prefer_fstring_over_concat.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/prefer_immutable_module_constant.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/prefer_injected_dependency_over_monkeypatch.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/prefer_library_fake.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/prefer_match_assert_never.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/prefer_match_exception_dispatch.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/prefer_match_type_dispatch.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/prefer_match_value_dispatch.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/prefer_module_level_constant.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/prefer_monkeypatch_for_process_state_in_test.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/prefer_monotonic_for_elapsed_time.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/prefer_namedtuple_over_tuple_return.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/prefer_native_string_check.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/prefer_nominal_id_types.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/prefer_non_nullable_collection.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/prefer_or_pattern.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/prefer_pydantic_json_value.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/prefer_pytest_fixture_injection.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/prefer_regex_fullmatch.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/prefer_required_constructor_parameters.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/prefer_self_documenting_constant.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/prefer_self_type_annotation.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/prefer_set_isdisjoint.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/prefer_str_enum.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/prefer_struct_over_namedtuple.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/prefer_walrus_awaited_none_guard.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/prefer_walrus_comprehension_filter.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/prefer_walrus_regex_match.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/prefer_walrus_stream_loop.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/production_derived_test_cases.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/pytest_fixture_returns_bare_tuple.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/redundant_class_docstring.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/redundant_docstring.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/redundant_module_docstring.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/repeated_kwarg_heavy_call_in_test.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/repeated_static_call_cases.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/repeated_test_composition.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/require_explicit_contract_implementation.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/require_explicit_psycopg_transaction.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/require_explicit_service_contract.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/require_injectable_retry_sleep.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/require_keyword_only_swap_prone_params.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/require_nodecode_for_splitting_settings_field.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/require_port_for_service.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/require_precise_factory_signature.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/require_public_dependency_contract.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/require_pydantic_for_external_json.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/require_pydantic_for_structured_payload.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/require_pydantic_ordinal_lower_bound.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/restated_test_docstring.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/shared_mutable_pydantic_factory.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/stepdown.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/store_get_delegates_to_bulk_read.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/store_insert_requires_on_conflict.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/subprocess_kill_without_reap.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/timestamp_order_requires_tiebreaker.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/trailing_value_narration.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/typed_error_reasons.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/uncontrolled_randomness_in_test.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/unused_mock_setup.py +0 -0
- {sarj_python_lint-1.27.2 → sarj_python_lint-1.27.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.27.
|
|
3
|
+
Version: 1.27.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/
|
{sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/interpreter_argv.py
RENAMED
|
@@ -85,18 +85,20 @@ class UnprovableCommandError(ValueError):
|
|
|
85
85
|
"""A wrapper executable position cannot be established safely."""
|
|
86
86
|
|
|
87
87
|
|
|
88
|
-
def unwrap_command(
|
|
88
|
+
def unwrap_command(
|
|
89
|
+
argv: Sequence[str], *, allow_shell_builtins: bool = True, allowed_wrappers: frozenset[str] | None = None
|
|
90
|
+
) -> tuple[str, ...]:
|
|
89
91
|
current = tuple(argv)
|
|
90
92
|
for _ in range(_MAX_WRAPPERS):
|
|
91
93
|
if not current:
|
|
92
94
|
return ()
|
|
93
95
|
command = PurePosixPath(current[0]).name
|
|
94
|
-
if command in {"exec", "command"}:
|
|
96
|
+
if allow_shell_builtins and command in {"exec", "command"}:
|
|
95
97
|
if command == "command" and any(argument in {"-v", "-V"} for argument in current[1:2]):
|
|
96
98
|
return current
|
|
97
99
|
current = current[_command_wrapper_index(current, command) :]
|
|
98
100
|
continue
|
|
99
|
-
if command not in _WRAPPER_VALUES:
|
|
101
|
+
if command not in _WRAPPER_VALUES or (allowed_wrappers is not None and command not in allowed_wrappers):
|
|
100
102
|
return current
|
|
101
103
|
current = current[_value_wrapper_index(current, command) :]
|
|
102
104
|
msg = "command wrapper nesting exceeds analysis bound"
|
|
@@ -120,25 +122,69 @@ def _command_wrapper_index(arguments: Sequence[str], command: str) -> int:
|
|
|
120
122
|
|
|
121
123
|
|
|
122
124
|
def _value_wrapper_index(arguments: Sequence[str], command: str) -> int:
|
|
125
|
+
if command == "env":
|
|
126
|
+
return _env_wrapper_index(arguments)
|
|
123
127
|
index = 1
|
|
124
128
|
while index < len(arguments):
|
|
125
129
|
argument = arguments[index]
|
|
126
130
|
if argument == "--":
|
|
127
131
|
index += 1
|
|
128
132
|
break
|
|
129
|
-
if command == "env" and re.match(r"^[A-Za-z_][A-Za-z0-9_]*=", argument):
|
|
130
|
-
index += 1
|
|
131
|
-
continue
|
|
132
133
|
if not argument.startswith("-") or argument == "-":
|
|
133
134
|
break
|
|
134
|
-
if command == "env" and argument in {"-S", "--split-string"}:
|
|
135
|
-
msg = "env split-string has a separate unproven quoting grammar"
|
|
136
|
-
raise UnprovableCommandError(msg)
|
|
137
135
|
index += 2 if argument in _WRAPPER_VALUES[command] else 1
|
|
138
136
|
# Timeout's positional duration precedes its executable.
|
|
139
137
|
return index + int(command == "timeout")
|
|
140
138
|
|
|
141
139
|
|
|
140
|
+
def _env_wrapper_index(arguments: Sequence[str]) -> int:
|
|
141
|
+
index = 1
|
|
142
|
+
while index < len(arguments) and arguments[index].startswith("-"):
|
|
143
|
+
argument = arguments[index]
|
|
144
|
+
if argument == "-":
|
|
145
|
+
index += 1
|
|
146
|
+
break
|
|
147
|
+
if argument == "--":
|
|
148
|
+
index += 1
|
|
149
|
+
break
|
|
150
|
+
index += _env_option_size(arguments, index)
|
|
151
|
+
# Assignments follow options, including after --; later option-looking words
|
|
152
|
+
# are executable operands, not additional env options.
|
|
153
|
+
while index < len(arguments) and "=" in arguments[index]:
|
|
154
|
+
if arguments[index].startswith("="):
|
|
155
|
+
msg = "env assignment requires a nonempty variable name"
|
|
156
|
+
raise UnprovableCommandError(msg)
|
|
157
|
+
index += 1
|
|
158
|
+
return index
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
def _env_option_size(arguments: Sequence[str], index: int) -> int:
|
|
162
|
+
argument = arguments[index]
|
|
163
|
+
if argument in {"--help", "--version"}:
|
|
164
|
+
return len(arguments) - index # GNU env terminates without executing operands.
|
|
165
|
+
if argument in {"-S", "--split-string"} or argument.startswith(("-S", "--split-string=")):
|
|
166
|
+
msg = "env split-string has a separate unproven quoting grammar"
|
|
167
|
+
raise UnprovableCommandError(msg)
|
|
168
|
+
if argument in {"-i", "--ignore-environment", "-v", "--debug"}:
|
|
169
|
+
return 1
|
|
170
|
+
if argument in _WRAPPER_VALUES["env"]:
|
|
171
|
+
value = arguments[index + 1] if index + 1 < len(arguments) else ""
|
|
172
|
+
_validate_env_operand(argument, value)
|
|
173
|
+
return 2
|
|
174
|
+
for option in ("--unset=", "--chdir=", "-u", "-C"):
|
|
175
|
+
if argument.startswith(option):
|
|
176
|
+
_validate_env_operand(option, argument[len(option) :])
|
|
177
|
+
return 1
|
|
178
|
+
msg = "unsupported env wrapper option"
|
|
179
|
+
raise UnprovableCommandError(msg)
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
def _validate_env_operand(option: str, value: str) -> None:
|
|
183
|
+
if not value or (option in {"-u", "--unset", "--unset="} and "=" in value):
|
|
184
|
+
msg = "env option requires a valid value"
|
|
185
|
+
raise UnprovableCommandError(msg)
|
|
186
|
+
|
|
187
|
+
|
|
142
188
|
def is_python_executable(executable: str) -> bool:
|
|
143
189
|
return re.fullmatch(r"python(?:[23](?:\.\d+)?)?", PurePosixPath(executable).name) is not None
|
|
144
190
|
|
|
@@ -175,6 +221,11 @@ def _python(arguments: Sequence[str]) -> InterpreterInvocation:
|
|
|
175
221
|
if boundary is not None:
|
|
176
222
|
return boundary
|
|
177
223
|
argument = arguments[index]
|
|
224
|
+
if argument == "--check-hash-based-pycs":
|
|
225
|
+
if _following_operand(arguments, index) not in {"default", "always", "never"}:
|
|
226
|
+
return InterpreterInvocation("unknown")
|
|
227
|
+
index += 2
|
|
228
|
+
continue
|
|
178
229
|
if argument.startswith("--"):
|
|
179
230
|
return InterpreterInvocation(
|
|
180
231
|
"external"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sarj_python_lint-1.27.2 → sarj_python_lint-1.27.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_ast_index.py
RENAMED
|
File without changes
|
{sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_ast_position.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_copy_on_write.py
RENAMED
|
File without changes
|
{sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_dict_key_views.py
RENAMED
|
File without changes
|
{sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_docstrings.py
RENAMED
|
File without changes
|
|
File without changes
|
{sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_first_party.py
RENAMED
|
File without changes
|
{sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_fixed_record.py
RENAMED
|
File without changes
|
|
File without changes
|
{sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_local_source.py
RENAMED
|
File without changes
|
|
File without changes
|
{sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_nominal_project.py
RENAMED
|
File without changes
|
|
File without changes
|
{sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_project_index.py
RENAMED
|
File without changes
|
{sarj_python_lint-1.27.2 → sarj_python_lint-1.27.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.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_set_fields.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_test_assertions.py
RENAMED
|
File without changes
|
{sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/_test_composition.py
RENAMED
|
File without changes
|
{sarj_python_lint-1.27.2 → sarj_python_lint-1.27.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.27.2 → sarj_python_lint-1.27.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.27.2 → sarj_python_lint-1.27.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.27.2 → sarj_python_lint-1.27.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
|
|
File without changes
|
{sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/no_secret_in_log.py
RENAMED
|
File without changes
|
{sarj_python_lint-1.27.2 → sarj_python_lint-1.27.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.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/over_mocked_test.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sarj_python_lint-1.27.2 → sarj_python_lint-1.27.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.27.2 → sarj_python_lint-1.27.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.27.2 → sarj_python_lint-1.27.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
|
|
File without changes
|
{sarj_python_lint-1.27.2 → sarj_python_lint-1.27.3}/src/sarj_python_lint/rules/unused_mock_setup.py
RENAMED
|
File without changes
|
|
File without changes
|