From 024caca2336257f1e0f53abb00a8b179073d1fb3 Mon Sep 17 00:00:00 2001 From: Charlie Marsh Date: Thu, 9 Mar 2023 15:48:57 -0500 Subject: [PATCH] Introduce a `ruff_diagnostics` crate (#3409) ## Summary This PR moves `Diagnostic`, `DiagnosticKind`, and `Fix` into their own crate, which will enable us to further split up Ruff, since sub-linter crates (which need to implement functions that return `Diagnostic`) can now depend on `ruff_diagnostics` rather than Ruff. --- Cargo.lock | 12 ++ crates/ruff/Cargo.toml | 1 + crates/ruff/src/autofix/helpers.rs | 11 +- crates/ruff/src/autofix/mod.rs | 119 +++++++++--------- crates/ruff/src/checkers/ast/mod.rs | 3 +- crates/ruff/src/checkers/filesystem.rs | 4 +- crates/ruff/src/checkers/imports.rs | 8 +- crates/ruff/src/checkers/logical_lines.rs | 11 +- crates/ruff/src/checkers/noqa.rs | 4 +- crates/ruff/src/checkers/physical_lines.rs | 13 +- crates/ruff/src/checkers/tokens.rs | 3 +- crates/ruff/src/fix.rs | 40 ------ crates/ruff/src/lib.rs | 2 - crates/ruff/src/linter.rs | 8 +- crates/ruff/src/message.rs | 3 +- crates/ruff/src/noqa.rs | 5 +- crates/ruff/src/registry.rs | 51 +------- crates/ruff/src/rules/eradicate/rules.rs | 5 +- crates/ruff/src/rules/flake8_2020/rules.rs | 4 +- .../src/rules/flake8_annotations/fixes.rs | 3 +- .../src/rules/flake8_annotations/rules.rs | 4 +- .../rules/flake8_bandit/rules/assert_used.rs | 4 +- .../rules/bad_file_permissions.rs | 3 +- .../rules/flake8_bandit/rules/exec_used.rs | 4 +- .../rules/hardcoded_bind_all_interfaces.rs | 4 +- .../rules/hardcoded_password_default.rs | 4 +- .../rules/hardcoded_password_func_arg.rs | 4 +- .../rules/hardcoded_password_string.rs | 4 +- .../rules/hardcoded_sql_expression.rs | 3 +- .../rules/hardcoded_tmp_directory.rs | 4 +- .../rules/hashlib_insecure_hash_functions.rs | 3 +- .../rules/jinja2_autoescape_false.rs | 3 +- .../rules/logging_config_insecure_listen.rs | 3 +- .../rules/request_with_no_cert_validation.rs | 3 +- .../rules/request_without_timeout.rs | 3 +- .../rules/snmp_insecure_version.rs | 3 +- .../rules/snmp_weak_cryptography.rs | 3 +- .../rules/try_except_continue.rs | 3 +- .../flake8_bandit/rules/try_except_pass.rs | 3 +- .../flake8_bandit/rules/unsafe_yaml_load.rs | 3 +- .../src/rules/flake8_blind_except/rules.rs | 3 +- .../src/rules/flake8_boolean_trap/rules.rs | 4 +- .../rules/abstract_base_class.rs | 4 +- .../flake8_bugbear/rules/assert_false.rs | 5 +- .../rules/assert_raises_exception.rs | 3 +- .../rules/assignment_to_os_environ.rs | 3 +- .../rules/cached_instance_method.rs | 3 +- .../rules/cannot_raise_literal.rs | 3 +- .../rules/duplicate_exceptions.rs | 6 +- .../rules/except_with_empty_tuple.rs | 3 +- .../except_with_non_exception_classes.rs | 3 +- .../rules/f_string_docstring.rs | 3 +- .../rules/function_call_argument_default.rs | 4 +- .../rules/function_uses_loop_variable.rs | 3 +- .../rules/getattr_with_constant.rs | 5 +- .../rules/jump_statement_in_finally.rs | 3 +- .../rules/loop_variable_overrides_iterator.rs | 3 +- .../rules/mutable_argument_default.rs | 3 +- .../rules/raise_without_from_inside_except.rs | 3 +- .../redundant_tuple_in_exception_handler.rs | 5 +- .../rules/setattr_with_constant.rs | 5 +- .../star_arg_unpacking_after_keyword_arg.rs | 3 +- .../rules/strip_with_multi_characters.rs | 3 +- .../rules/unary_prefix_increment.rs | 3 +- .../rules/unintentional_type_annotation.rs | 3 +- .../rules/unreliable_callable_check.rs | 3 +- .../rules/unused_loop_control_variable.rs | 5 +- .../rules/useless_comparison.rs | 3 +- .../rules/useless_contextlib_suppress.rs | 3 +- .../rules/useless_expression.rs | 3 +- .../rules/zip_without_explicit_strict.rs | 3 +- .../ruff/src/rules/flake8_builtins/rules.rs | 5 +- crates/ruff/src/rules/flake8_commas/rules.rs | 6 +- .../src/rules/flake8_comprehensions/fixes.rs | 2 +- .../rules/unnecessary_call_around_sorted.rs | 4 +- .../rules/unnecessary_collection_call.rs | 4 +- .../rules/unnecessary_comprehension.rs | 4 +- .../unnecessary_double_cast_or_process.rs | 4 +- .../rules/unnecessary_generator_dict.rs | 4 +- .../rules/unnecessary_generator_list.rs | 4 +- .../rules/unnecessary_generator_set.rs | 4 +- .../rules/unnecessary_list_call.rs | 4 +- .../unnecessary_list_comprehension_dict.rs | 4 +- .../unnecessary_list_comprehension_set.rs | 4 +- .../rules/unnecessary_literal_dict.rs | 4 +- .../rules/unnecessary_literal_set.rs | 4 +- .../unnecessary_literal_within_list_call.rs | 4 +- .../unnecessary_literal_within_tuple_call.rs | 4 +- .../rules/unnecessary_map.rs | 5 +- .../rules/unnecessary_subscript_reversal.rs | 3 +- .../ruff/src/rules/flake8_datetimez/rules.rs | 3 +- .../ruff/src/rules/flake8_debugger/rules.rs | 3 +- .../rules/all_with_model_form.rs | 4 +- .../rules/exclude_with_model_form.rs | 4 +- .../rules/locals_in_render_function.rs | 3 +- .../rules/model_without_dunder_str.rs | 3 +- .../rules/non_leading_receiver_decorator.rs | 4 +- .../rules/nullable_model_string_field.rs | 3 +- crates/ruff/src/rules/flake8_errmsg/rules.rs | 4 +- .../rules/shebang_missing.rs | 4 +- .../rules/shebang_newline.rs | 3 +- .../rules/shebang_not_executable.rs | 4 +- .../flake8_executable/rules/shebang_python.rs | 3 +- .../rules/shebang_whitespace.rs | 4 +- .../rules/flake8_implicit_str_concat/rules.rs | 3 +- .../rules/flake8_import_conventions/rules.rs | 4 +- .../src/rules/flake8_logging_format/rules.rs | 4 +- .../rules/flake8_logging_format/violations.rs | 3 +- .../ruff/src/rules/flake8_no_pep420/rules.rs | 3 +- crates/ruff/src/rules/flake8_pie/fixes.rs | 2 +- crates/ruff/src/rules/flake8_pie/rules.rs | 6 +- .../rules/flake8_print/rules/print_call.rs | 4 +- .../rules/bad_version_info_comparison.rs | 3 +- .../flake8_pyi/rules/docstring_in_stubs.rs | 3 +- .../flake8_pyi/rules/non_empty_stub_body.rs | 3 +- .../rules/pass_statement_stub_body.rs | 3 +- .../flake8_pyi/rules/prefix_type_params.rs | 3 +- .../rules/flake8_pyi/rules/simple_defaults.rs | 3 +- .../flake8_pyi/rules/type_comment_in_stub.rs | 4 +- .../flake8_pyi/rules/unrecognized_platform.rs | 4 +- .../flake8_pytest_style/rules/assertion.rs | 5 +- .../rules/flake8_pytest_style/rules/fail.rs | 3 +- .../flake8_pytest_style/rules/fixture.rs | 6 +- .../flake8_pytest_style/rules/imports.rs | 4 +- .../rules/flake8_pytest_style/rules/marks.rs | 5 +- .../flake8_pytest_style/rules/parametrize.rs | 6 +- .../rules/flake8_pytest_style/rules/patch.rs | 4 +- .../rules/flake8_pytest_style/rules/raises.rs | 4 +- crates/ruff/src/rules/flake8_quotes/rules.rs | 5 +- .../unnecessary_paren_on_raise_exception.rs | 5 +- crates/ruff/src/rules/flake8_return/rules.rs | 6 +- .../rules/private_member_access.rs | 3 +- .../flake8_simplify/rules/ast_bool_op.rs | 5 +- .../rules/flake8_simplify/rules/ast_expr.rs | 5 +- .../src/rules/flake8_simplify/rules/ast_if.rs | 5 +- .../rules/flake8_simplify/rules/ast_ifexp.rs | 5 +- .../flake8_simplify/rules/ast_unary_op.rs | 5 +- .../rules/flake8_simplify/rules/ast_with.rs | 5 +- .../src/rules/flake8_simplify/rules/fix_if.rs | 2 +- .../rules/flake8_simplify/rules/fix_with.rs | 2 +- .../flake8_simplify/rules/key_in_dict.rs | 5 +- .../rules/open_file_with_context_handler.rs | 3 +- .../rules/reimplemented_builtin.rs | 5 +- .../rules/return_in_try_except_finally.rs | 3 +- .../rules/use_contextlib_suppress.rs | 3 +- .../flake8_simplify/rules/yoda_conditions.rs | 5 +- .../rules/flake8_tidy_imports/banned_api.rs | 3 +- .../flake8_tidy_imports/relative_imports.rs | 5 +- .../rules/empty_type_checking_block.rs | 4 +- .../runtime_import_in_type_checking_block.rs | 4 +- .../rules/typing_only_runtime_import.rs | 3 +- .../rules/flake8_unused_arguments/rules.rs | 3 +- .../rules/flake8_unused_arguments/types.rs | 4 +- .../src/rules/flake8_use_pathlib/helpers.rs | 3 +- .../rules/flake8_use_pathlib/violations.rs | 3 +- .../rules/isort/rules/add_required_imports.rs | 5 +- .../src/rules/isort/rules/organize_imports.rs | 5 +- crates/ruff/src/rules/mccabe/rules.rs | 4 +- .../numpy/rules/deprecated_type_alias.rs | 5 +- .../rules/numpy/rules/numpy_legacy_random.rs | 3 +- crates/ruff/src/rules/pandas_vet/fixes.rs | 2 +- .../pandas_vet/rules/assignment_to_df.rs | 4 +- .../src/rules/pandas_vet/rules/check_attr.rs | 5 +- .../src/rules/pandas_vet/rules/check_call.rs | 5 +- .../pandas_vet/rules/inplace_argument.rs | 4 +- .../src/rules/pandas_vet/rules/pd_merge.rs | 4 +- .../rules/camelcase_imported_as_acronym.rs | 3 +- .../rules/camelcase_imported_as_constant.rs | 3 +- .../rules/camelcase_imported_as_lowercase.rs | 3 +- .../constant_imported_as_non_constant.rs | 4 +- .../pep8_naming/rules/dunder_function_name.rs | 4 +- .../rules/error_suffix_on_exception_name.rs | 4 +- .../rules/invalid_argument_name.rs | 4 +- .../pep8_naming/rules/invalid_class_name.rs | 4 +- ...id_first_argument_name_for_class_method.rs | 3 +- .../invalid_first_argument_name_for_method.rs | 3 +- .../rules/invalid_function_name.rs | 4 +- .../pep8_naming/rules/invalid_module_name.rs | 4 +- .../lowercase_imported_as_non_lowercase.rs | 4 +- .../mixed_case_variable_in_class_scope.rs | 3 +- .../mixed_case_variable_in_global_scope.rs | 3 +- .../non_lowercase_variable_in_function.rs | 3 +- .../pycodestyle/rules/ambiguous_class_name.rs | 3 +- .../rules/ambiguous_function_name.rs | 3 +- .../rules/ambiguous_variable_name.rs | 3 +- .../rules/pycodestyle/rules/bare_except.rs | 4 +- .../pycodestyle/rules/compound_statements.rs | 6 +- .../pycodestyle/rules/doc_line_too_long.rs | 3 +- .../src/rules/pycodestyle/rules/errors.rs | 4 +- .../rules/extraneous_whitespace.rs | 5 +- .../src/rules/pycodestyle/rules/imports.rs | 3 +- .../rules/pycodestyle/rules/indentation.rs | 4 +- .../rules/indentation_contains_tabs.rs | 4 +- .../rules/invalid_escape_sequence.rs | 5 +- .../pycodestyle/rules/lambda_assignment.rs | 5 +- .../rules/pycodestyle/rules/line_too_long.rs | 3 +- .../pycodestyle/rules/literal_comparisons.rs | 5 +- .../pycodestyle/rules/missing_whitespace.rs | 10 +- .../rules/missing_whitespace_after_keyword.rs | 4 +- .../missing_whitespace_around_operator.rs | 4 +- .../rules/mixed_spaces_and_tabs.rs | 4 +- .../rules/no_newline_at_end_of_file.rs | 5 +- .../src/rules/pycodestyle/rules/not_tests.rs | 5 +- .../rules/space_around_operator.rs | 5 +- .../pycodestyle/rules/trailing_whitespace.rs | 5 +- .../pycodestyle/rules/type_comparison.rs | 4 +- .../rules/whitespace_around_keywords.rs | 5 +- ...hitespace_around_named_parameter_equals.rs | 4 +- .../rules/whitespace_before_comment.rs | 5 +- .../rules/whitespace_before_parameters.rs | 5 +- .../src/rules/pydocstyle/rules/backslashes.rs | 3 +- .../pydocstyle/rules/blank_after_summary.rs | 5 +- .../rules/blank_before_after_class.rs | 5 +- .../rules/blank_before_after_function.rs | 5 +- .../src/rules/pydocstyle/rules/capitalized.rs | 3 +- .../pydocstyle/rules/ends_with_period.rs | 5 +- .../pydocstyle/rules/ends_with_punctuation.rs | 5 +- .../src/rules/pydocstyle/rules/if_needed.rs | 3 +- .../ruff/src/rules/pydocstyle/rules/indent.rs | 6 +- .../rules/multi_line_summary_start.rs | 5 +- .../rules/newline_after_last_paragraph.rs | 5 +- .../rules/pydocstyle/rules/no_signature.rs | 3 +- .../rules/no_surrounding_whitespace.rs | 5 +- .../pydocstyle/rules/non_imperative_mood.rs | 3 +- .../src/rules/pydocstyle/rules/not_empty.rs | 4 +- .../src/rules/pydocstyle/rules/not_missing.rs | 4 +- .../src/rules/pydocstyle/rules/one_liner.rs | 5 +- .../src/rules/pydocstyle/rules/sections.rs | 6 +- .../pydocstyle/rules/starts_with_this.rs | 3 +- .../rules/pydocstyle/rules/triple_quotes.rs | 3 +- crates/ruff/src/rules/pyflakes/fixes.rs | 2 +- .../src/rules/pyflakes/rules/assert_tuple.rs | 3 +- .../pyflakes/rules/break_outside_loop.rs | 4 +- .../pyflakes/rules/continue_outside_loop.rs | 4 +- .../pyflakes/rules/default_except_not_last.rs | 4 +- .../rules/f_string_missing_placeholders.rs | 5 +- .../rules/forward_annotation_syntax_error.rs | 3 +- .../ruff/src/rules/pyflakes/rules/if_tuple.rs | 3 +- .../ruff/src/rules/pyflakes/rules/imports.rs | 4 +- .../rules/invalid_literal_comparisons.rs | 5 +- .../pyflakes/rules/invalid_print_syntax.rs | 3 +- .../pyflakes/rules/raise_not_implemented.rs | 5 +- .../pyflakes/rules/redefined_while_unused.rs | 3 +- .../src/rules/pyflakes/rules/repeated_keys.rs | 5 +- .../pyflakes/rules/return_outside_function.rs | 3 +- .../pyflakes/rules/starred_expressions.rs | 4 +- .../ruff/src/rules/pyflakes/rules/strings.rs | 4 +- .../rules/pyflakes/rules/undefined_export.rs | 4 +- .../rules/pyflakes/rules/undefined_local.rs | 4 +- .../rules/pyflakes/rules/undefined_name.rs | 3 +- .../rules/pyflakes/rules/unused_annotation.rs | 3 +- .../rules/pyflakes/rules/unused_variable.rs | 5 +- .../pyflakes/rules/yield_outside_function.rs | 3 +- .../rules/pygrep_hooks/rules/blanket_noqa.rs | 4 +- .../pygrep_hooks/rules/blanket_type_ignore.rs | 4 +- .../pygrep_hooks/rules/deprecated_log_warn.rs | 3 +- .../src/rules/pygrep_hooks/rules/no_eval.rs | 3 +- .../rules/pylint/rules/await_outside_async.rs | 3 +- .../rules/pylint/rules/bad_str_strip_call.rs | 3 +- .../pylint/rules/bad_string_format_type.rs | 3 +- .../pylint/rules/bidirectional_unicode.rs | 4 +- .../rules/pylint/rules/collapsible_else_if.rs | 4 +- .../pylint/rules/comparison_of_constant.rs | 3 +- .../pylint/rules/consider_using_sys_exit.rs | 5 +- .../rules/pylint/rules/global_statement.rs | 8 +- .../rules/global_variable_not_assigned.rs | 3 +- .../rules/pylint/rules/invalid_all_format.rs | 4 +- .../rules/pylint/rules/invalid_all_object.rs | 4 +- crates/ruff/src/rules/pylint/rules/logging.rs | 4 +- .../pylint/rules/magic_value_comparison.rs | 3 +- .../rules/pylint/rules/merge_isinstance.rs | 3 +- .../pylint/rules/nonlocal_without_binding.rs | 3 +- .../pylint/rules/property_with_parameters.rs | 3 +- .../rules/pylint/rules/redefined_loop_name.rs | 3 +- .../src/rules/pylint/rules/return_in_init.rs | 3 +- .../rules/pylint/rules/too_many_arguments.rs | 3 +- .../rules/pylint/rules/too_many_branches.rs | 4 +- .../rules/too_many_return_statements.rs | 4 +- .../rules/pylint/rules/too_many_statements.rs | 4 +- .../rules/unnecessary_direct_lambda_call.rs | 3 +- .../src/rules/pylint/rules/use_from_import.rs | 5 +- .../rules/used_prior_global_declaration.rs | 3 +- .../pylint/rules/useless_else_on_loop.rs | 3 +- .../pylint/rules/useless_import_alias.rs | 5 +- .../src/rules/pylint/rules/yield_in_init.rs | 3 +- crates/ruff/src/rules/pyupgrade/fixes.rs | 2 +- ...convert_named_tuple_functional_to_class.rs | 6 +- .../convert_typed_dict_functional_to_class.rs | 6 +- .../pyupgrade/rules/datetime_utc_alias.rs | 5 +- .../rules/deprecated_unittest_alias.rs | 5 +- .../pyupgrade/rules/extraneous_parentheses.rs | 5 +- .../src/rules/pyupgrade/rules/f_strings.rs | 5 +- .../rules/pyupgrade/rules/format_literals.rs | 5 +- .../rules/pyupgrade/rules/functools_cache.rs | 5 +- .../pyupgrade/rules/import_replacements.rs | 5 +- .../rules/lru_cache_without_parameters.rs | 5 +- .../rules/pyupgrade/rules/native_literals.rs | 5 +- .../src/rules/pyupgrade/rules/open_alias.rs | 5 +- .../rules/pyupgrade/rules/os_error_alias.rs | 5 +- .../pyupgrade/rules/outdated_version_block.rs | 5 +- .../rules/printf_string_formatting.rs | 5 +- .../pyupgrade/rules/quoted_annotation.rs | 5 +- .../pyupgrade/rules/redundant_open_modes.rs | 5 +- .../pyupgrade/rules/replace_stdout_stderr.rs | 5 +- .../rules/replace_universal_newlines.rs | 5 +- .../pyupgrade/rules/rewrite_c_element_tree.rs | 5 +- .../pyupgrade/rules/rewrite_mock_import.rs | 5 +- .../rules/rewrite_unicode_literal.rs | 5 +- .../pyupgrade/rules/rewrite_yield_from.rs | 5 +- .../rules/super_call_with_parameters.rs | 4 +- .../pyupgrade/rules/type_of_primitive.rs | 5 +- .../pyupgrade/rules/typing_text_str_alias.rs | 5 +- .../rules/unnecessary_builtin_import.rs | 4 +- .../rules/unnecessary_coding_comment.rs | 5 +- .../rules/unnecessary_encode_utf8.rs | 5 +- .../rules/unnecessary_future_import.rs | 4 +- .../rules/unpack_list_comprehension.rs | 5 +- .../pyupgrade/rules/use_pep585_annotation.rs | 5 +- .../pyupgrade/rules/use_pep604_annotation.rs | 5 +- .../pyupgrade/rules/use_pep604_isinstance.rs | 5 +- .../pyupgrade/rules/useless_metaclass_type.rs | 4 +- .../rules/useless_object_inheritance.rs | 4 +- .../ruff/rules/ambiguous_unicode_character.rs | 5 +- .../rules/ruff/rules/asyncio_dangling_task.rs | 4 +- ..._of_concatenating_to_collection_literal.rs | 5 +- .../ruff/src/rules/ruff/rules/unused_noqa.rs | 3 +- .../rules/error_instead_of_exception.rs | 3 +- .../tryceratops/rules/prefer_type_error.rs | 3 +- .../tryceratops/rules/raise_vanilla_args.rs | 3 +- .../tryceratops/rules/raise_vanilla_class.rs | 3 +- .../tryceratops/rules/raise_within_try.rs | 3 +- .../tryceratops/rules/reraise_no_cause.rs | 3 +- .../tryceratops/rules/try_consider_else.rs | 3 +- .../tryceratops/rules/verbose_log_message.rs | 3 +- .../rules/tryceratops/rules/verbose_raise.rs | 3 +- crates/ruff/src/test.rs | 5 +- crates/ruff_cli/Cargo.toml | 1 + crates/ruff_cli/src/commands/rule.rs | 6 +- crates/ruff_cli/src/commands/run.rs | 5 +- crates/ruff_dev/Cargo.toml | 6 +- crates/ruff_dev/src/generate_docs.rs | 6 +- crates/ruff_diagnostics/Cargo.toml | 14 +++ crates/ruff_diagnostics/src/diagnostic.rs | 52 ++++++++ crates/ruff_diagnostics/src/fix.rs | 41 ++++++ crates/ruff_diagnostics/src/lib.rs | 7 ++ .../src/violation.rs | 37 +++--- crates/ruff_macros/src/register_rules.rs | 11 +- crates/ruff_macros/src/violation.rs | 12 +- scripts/add_rule.py | 5 +- 349 files changed, 758 insertions(+), 1003 deletions(-) create mode 100644 crates/ruff_diagnostics/Cargo.toml create mode 100644 crates/ruff_diagnostics/src/diagnostic.rs create mode 100644 crates/ruff_diagnostics/src/fix.rs create mode 100644 crates/ruff_diagnostics/src/lib.rs rename crates/{ruff => ruff_diagnostics}/src/violation.rs (90%) diff --git a/Cargo.lock b/Cargo.lock index 7a08d9e3a1..1e2cf3db5b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1982,6 +1982,7 @@ dependencies = [ "regex", "result-like", "ruff_cache", + "ruff_diagnostics", "ruff_macros", "ruff_python_ast", "ruff_python_stdlib", @@ -2042,6 +2043,7 @@ dependencies = [ "regex", "ruff", "ruff_cache", + "ruff_diagnostics", "rustc-hash", "serde", "serde_json", @@ -2067,6 +2069,7 @@ dependencies = [ "regex", "ruff", "ruff_cli", + "ruff_diagnostics", "rustpython-common", "rustpython-parser", "schemars", @@ -2076,6 +2079,15 @@ dependencies = [ "textwrap", ] +[[package]] +name = "ruff_diagnostics" +version = "0.0.0" +dependencies = [ + "ruff_python_ast", + "rustpython-parser", + "serde", +] + [[package]] name = "ruff_formatter" version = "0.0.0" diff --git a/crates/ruff/Cargo.toml b/crates/ruff/Cargo.toml index 2b570b9825..8f72598fa6 100644 --- a/crates/ruff/Cargo.toml +++ b/crates/ruff/Cargo.toml @@ -17,6 +17,7 @@ doctest = false [dependencies] ruff_cache = { path = "../ruff_cache" } +ruff_diagnostics = { path = "../ruff_diagnostics", features = ["serde"] } ruff_macros = { path = "../ruff_macros" } ruff_python_ast = { path = "../ruff_python_ast" } ruff_python_stdlib = { path = "../ruff_python_stdlib" } diff --git a/crates/ruff/src/autofix/helpers.rs b/crates/ruff/src/autofix/helpers.rs index 01ae5db9c2..8ff322b821 100644 --- a/crates/ruff/src/autofix/helpers.rs +++ b/crates/ruff/src/autofix/helpers.rs @@ -6,15 +6,15 @@ use libcst_native::{ use rustpython_parser::ast::{ExcepthandlerKind, Expr, Keyword, Location, Stmt, StmtKind}; use rustpython_parser::{lexer, Mode, Tok}; -use crate::cst::helpers::compose_module_path; -use crate::cst::matchers::match_module; -use crate::fix::Fix; +use ruff_diagnostics::Fix; use ruff_python_ast::helpers; use ruff_python_ast::helpers::to_absolute; use ruff_python_ast::source_code::{Indexer, Locator, Stylist}; - use ruff_python_ast::whitespace::LinesWithTrailingNewline; +use crate::cst::helpers::compose_module_path; +use crate::cst::matchers::match_module; + /// Determine if a body contains only a single statement, taking into account /// deleted. fn has_single_child(body: &[Stmt], deleted: &[&Stmt]) -> bool { @@ -450,9 +450,10 @@ mod tests { use rustpython_parser as parser; use rustpython_parser::ast::Location; - use crate::autofix::helpers::{next_stmt_break, trailing_semicolon}; use ruff_python_ast::source_code::Locator; + use crate::autofix::helpers::{next_stmt_break, trailing_semicolon}; + #[test] fn find_semicolon() -> Result<()> { let contents = "x = 1"; diff --git a/crates/ruff/src/autofix/mod.rs b/crates/ruff/src/autofix/mod.rs index a6f873d777..a88a474915 100644 --- a/crates/ruff/src/autofix/mod.rs +++ b/crates/ruff/src/autofix/mod.rs @@ -4,12 +4,12 @@ use itertools::Itertools; use rustc_hash::FxHashMap; use rustpython_parser::ast::Location; +use ruff_diagnostics::{Diagnostic, Fix}; use ruff_python_ast::source_code::Locator; use ruff_python_ast::types::Range; -use crate::fix::Fix; use crate::linter::FixTable; -use crate::registry::{AsRule, Diagnostic}; +use crate::registry::AsRule; pub mod helpers; @@ -96,43 +96,38 @@ pub(crate) fn apply_fix(fix: &Fix, locator: &Locator) -> String { mod tests { use rustpython_parser::ast::Location; + use ruff_diagnostics::Diagnostic; + use ruff_diagnostics::Fix; use ruff_python_ast::source_code::Locator; use crate::autofix::{apply_fix, apply_fixes}; - use crate::fix::Fix; - use crate::registry::Diagnostic; use crate::rules::pycodestyle::rules::NoNewLineAtEndOfFile; - #[test] - fn empty_file() { - let fixes: Vec = vec![]; - let locator = Locator::new(r#""#); - let (contents, fixed) = apply_fixes(fixes.iter(), &locator); - assert_eq!(contents, ""); - assert_eq!(fixed.values().sum::(), 0); - } - - impl From for Diagnostic { - fn from(fix: Fix) -> Self { - Diagnostic { + fn create_diagnostics(fixes: impl IntoIterator) -> Vec { + fixes + .into_iter() + .map(|fix| Diagnostic { // The choice of rule here is arbitrary. kind: NoNewLineAtEndOfFile.into(), location: fix.location, end_location: fix.end_location, fix: Some(fix), parent: None, - } - } + }) + .collect() + } + + #[test] + fn empty_file() { + let locator = Locator::new(r#""#); + let diagnostics = create_diagnostics([]); + let (contents, fixed) = apply_fixes(diagnostics.iter(), &locator); + assert_eq!(contents, ""); + assert_eq!(fixed.values().sum::(), 0); } #[test] fn apply_one_replacement() { - let fixes: Vec = vec![Fix { - content: "Bar".to_string(), - location: Location::new(1, 8), - end_location: Location::new(1, 14), - } - .into()]; let locator = Locator::new( r#" class A(object): @@ -140,7 +135,12 @@ class A(object): "# .trim(), ); - let (contents, fixed) = apply_fixes(fixes.iter(), &locator); + let diagnostics = create_diagnostics([Fix { + content: "Bar".to_string(), + location: Location::new(1, 8), + end_location: Location::new(1, 14), + }]); + let (contents, fixed) = apply_fixes(diagnostics.iter(), &locator); assert_eq!( contents, r#" @@ -154,12 +154,6 @@ class A(Bar): #[test] fn apply_one_removal() { - let fixes: Vec = vec![Fix { - content: String::new(), - location: Location::new(1, 7), - end_location: Location::new(1, 15), - } - .into()]; let locator = Locator::new( r#" class A(object): @@ -167,7 +161,12 @@ class A(object): "# .trim(), ); - let (contents, fixed) = apply_fixes(fixes.iter(), &locator); + let diagnostics = create_diagnostics([Fix { + content: String::new(), + location: Location::new(1, 7), + end_location: Location::new(1, 15), + }]); + let (contents, fixed) = apply_fixes(diagnostics.iter(), &locator); assert_eq!( contents, r#" @@ -181,20 +180,6 @@ class A: #[test] fn apply_two_removals() { - let fixes: Vec = vec![ - Fix { - content: String::new(), - location: Location::new(1, 7), - end_location: Location::new(1, 16), - } - .into(), - Fix { - content: String::new(), - location: Location::new(1, 16), - end_location: Location::new(1, 23), - } - .into(), - ]; let locator = Locator::new( r#" class A(object, object): @@ -202,7 +187,19 @@ class A(object, object): "# .trim(), ); - let (contents, fixed) = apply_fixes(fixes.iter(), &locator); + let diagnostics = create_diagnostics([ + Fix { + content: String::new(), + location: Location::new(1, 7), + end_location: Location::new(1, 16), + }, + Fix { + content: String::new(), + location: Location::new(1, 16), + end_location: Location::new(1, 23), + }, + ]); + let (contents, fixed) = apply_fixes(diagnostics.iter(), &locator); assert_eq!( contents, @@ -217,20 +214,6 @@ class A: #[test] fn ignore_overlapping_fixes() { - let fixes: Vec = vec![ - Fix { - content: String::new(), - location: Location::new(1, 7), - end_location: Location::new(1, 15), - } - .into(), - Fix { - content: "ignored".to_string(), - location: Location::new(1, 9), - end_location: Location::new(1, 11), - } - .into(), - ]; let locator = Locator::new( r#" class A(object): @@ -238,7 +221,19 @@ class A(object): "# .trim(), ); - let (contents, fixed) = apply_fixes(fixes.iter(), &locator); + let diagnostics = create_diagnostics([ + Fix { + content: String::new(), + location: Location::new(1, 7), + end_location: Location::new(1, 15), + }, + Fix { + content: "ignored".to_string(), + location: Location::new(1, 9), + end_location: Location::new(1, 11), + }, + ]); + let (contents, fixed) = apply_fixes(diagnostics.iter(), &locator); assert_eq!( contents, r#" diff --git a/crates/ruff/src/checkers/ast/mod.rs b/crates/ruff/src/checkers/ast/mod.rs index fff365b6cc..359d66df1a 100644 --- a/crates/ruff/src/checkers/ast/mod.rs +++ b/crates/ruff/src/checkers/ast/mod.rs @@ -13,6 +13,7 @@ use rustpython_parser::ast::{ Suite, }; +use ruff_diagnostics::Diagnostic; use ruff_python_ast::context::Context; use ruff_python_ast::helpers::{ binding_range, extract_handled_exceptions, to_module_path, Exceptions, @@ -36,7 +37,7 @@ use crate::checkers::ast::deferred::Deferred; use crate::docstrings::definition::{ transition_scope, Definition, DefinitionKind, Docstring, Documentable, }; -use crate::registry::{AsRule, Diagnostic, Rule}; +use crate::registry::{AsRule, Rule}; use crate::rules::{ flake8_2020, flake8_annotations, flake8_bandit, flake8_blind_except, flake8_boolean_trap, flake8_bugbear, flake8_builtins, flake8_comprehensions, flake8_datetimez, flake8_debugger, diff --git a/crates/ruff/src/checkers/filesystem.rs b/crates/ruff/src/checkers/filesystem.rs index d3d0847010..5e8405ce69 100644 --- a/crates/ruff/src/checkers/filesystem.rs +++ b/crates/ruff/src/checkers/filesystem.rs @@ -1,6 +1,8 @@ use std::path::Path; -use crate::registry::{Diagnostic, Rule}; +use ruff_diagnostics::Diagnostic; + +use crate::registry::Rule; use crate::rules::flake8_no_pep420::rules::implicit_namespace_package; use crate::rules::pep8_naming::rules::invalid_module_name; use crate::settings::Settings; diff --git a/crates/ruff/src/checkers/imports.rs b/crates/ruff/src/checkers/imports.rs index 32611d76c7..cfa1e6fc66 100644 --- a/crates/ruff/src/checkers/imports.rs +++ b/crates/ruff/src/checkers/imports.rs @@ -4,13 +4,15 @@ use std::path::Path; use rustpython_parser::ast::Suite; +use ruff_diagnostics::Diagnostic; +use ruff_python_ast::source_code::{Indexer, Locator, Stylist}; +use ruff_python_ast::visitor::Visitor; + use crate::directives::IsortDirectives; -use crate::registry::{Diagnostic, Rule}; +use crate::registry::Rule; use crate::rules::isort; use crate::rules::isort::track::{Block, ImportTracker}; use crate::settings::{flags, Settings}; -use ruff_python_ast::source_code::{Indexer, Locator, Stylist}; -use ruff_python_ast::visitor::Visitor; #[allow(clippy::too_many_arguments)] pub fn check_imports( diff --git a/crates/ruff/src/checkers/logical_lines.rs b/crates/ruff/src/checkers/logical_lines.rs index e06a815b24..5a6d101f3f 100644 --- a/crates/ruff/src/checkers/logical_lines.rs +++ b/crates/ruff/src/checkers/logical_lines.rs @@ -5,7 +5,11 @@ use itertools::Itertools; use rustpython_parser::ast::Location; use rustpython_parser::lexer::LexResult; -use crate::registry::{AsRule, Diagnostic, Rule}; +use ruff_diagnostics::Diagnostic; +use ruff_python_ast::source_code::{Locator, Stylist}; +use ruff_python_ast::types::Range; + +use crate::registry::{AsRule, Rule}; use crate::rules::pycodestyle::logical_lines::{iter_logical_lines, TokenFlags}; use crate::rules::pycodestyle::rules::{ extraneous_whitespace, indentation, missing_whitespace, missing_whitespace_after_keyword, @@ -14,8 +18,6 @@ use crate::rules::pycodestyle::rules::{ whitespace_before_parameters, }; use crate::settings::{flags, Settings}; -use ruff_python_ast::source_code::{Locator, Stylist}; -use ruff_python_ast::types::Range; /// Return the amount of indentation, expanding tabs to the next multiple of 8. fn expand_indent(mut line: &str) -> usize { @@ -225,9 +227,10 @@ mod tests { use rustpython_parser::lexer::LexResult; use rustpython_parser::{lexer, Mode}; - use crate::checkers::logical_lines::iter_logical_lines; use ruff_python_ast::source_code::Locator; + use crate::checkers::logical_lines::iter_logical_lines; + #[test] fn split_logical_lines() { let contents = r#" diff --git a/crates/ruff/src/checkers/noqa.rs b/crates/ruff/src/checkers/noqa.rs index ede17d2536..011cf39e08 100644 --- a/crates/ruff/src/checkers/noqa.rs +++ b/crates/ruff/src/checkers/noqa.rs @@ -4,13 +4,13 @@ use log::warn; use nohash_hasher::IntMap; use rustpython_parser::ast::Location; +use ruff_diagnostics::{Diagnostic, Fix}; use ruff_python_ast::types::Range; use crate::codes::NoqaCode; -use crate::fix::Fix; use crate::noqa; use crate::noqa::{extract_file_exemption, Directive, Exemption}; -use crate::registry::{AsRule, Diagnostic, Rule}; +use crate::registry::{AsRule, Rule}; use crate::rule_redirects::get_redirect_target; use crate::rules::ruff::rules::{UnusedCodes, UnusedNOQA}; use crate::settings::{flags, Settings}; diff --git a/crates/ruff/src/checkers/physical_lines.rs b/crates/ruff/src/checkers/physical_lines.rs index 211eff02f8..442cac67f5 100644 --- a/crates/ruff/src/checkers/physical_lines.rs +++ b/crates/ruff/src/checkers/physical_lines.rs @@ -2,7 +2,10 @@ use std::path::Path; -use crate::registry::{Diagnostic, Rule}; +use ruff_diagnostics::Diagnostic; +use ruff_python_ast::source_code::Stylist; + +use crate::registry::Rule; use crate::rules::flake8_executable::helpers::{extract_shebang, ShebangDirective}; use crate::rules::flake8_executable::rules::{ shebang_missing, shebang_newline, shebang_not_executable, shebang_python, shebang_whitespace, @@ -15,7 +18,6 @@ use crate::rules::pygrep_hooks::rules::{blanket_noqa, blanket_type_ignore}; use crate::rules::pylint; use crate::rules::pyupgrade::rules::unnecessary_coding_comment; use crate::settings::{flags, Settings}; -use ruff_python_ast::source_code::Stylist; pub fn check_physical_lines( path: &Path, @@ -179,13 +181,14 @@ pub fn check_physical_lines( #[cfg(test)] mod tests { - use std::path::Path; - use super::check_physical_lines; + use ruff_python_ast::source_code::{Locator, Stylist}; + use crate::registry::Rule; use crate::settings::{flags, Settings}; - use ruff_python_ast::source_code::{Locator, Stylist}; + + use super::check_physical_lines; #[test] fn e501_non_ascii_char() { diff --git a/crates/ruff/src/checkers/tokens.rs b/crates/ruff/src/checkers/tokens.rs index f655faddf9..c2d093b90d 100644 --- a/crates/ruff/src/checkers/tokens.rs +++ b/crates/ruff/src/checkers/tokens.rs @@ -4,13 +4,14 @@ use rustpython_parser::lexer::LexResult; use rustpython_parser::Tok; use crate::lex::docstring_detection::StateMachine; -use crate::registry::{AsRule, Diagnostic, Rule}; +use crate::registry::{AsRule, Rule}; use crate::rules::ruff::rules::Context; use crate::rules::{ eradicate, flake8_commas, flake8_implicit_str_concat, flake8_pyi, flake8_quotes, pycodestyle, pyupgrade, ruff, }; use crate::settings::{flags, Settings}; +use ruff_diagnostics::Diagnostic; use ruff_python_ast::source_code::Locator; pub fn check_tokens( diff --git a/crates/ruff/src/fix.rs b/crates/ruff/src/fix.rs index 6840b35ee3..85a6172604 100644 --- a/crates/ruff/src/fix.rs +++ b/crates/ruff/src/fix.rs @@ -1,6 +1,3 @@ -use rustpython_parser::ast::Location; -use serde::{Deserialize, Serialize}; - #[derive(Debug, Copy, Clone, Hash)] pub enum FixMode { Generate, @@ -18,40 +15,3 @@ impl From for FixMode { } } } - -#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)] -pub struct Fix { - pub content: String, - pub location: Location, - pub end_location: Location, -} - -impl Fix { - pub const fn deletion(start: Location, end: Location) -> Self { - Self { - content: String::new(), - location: start, - end_location: end, - } - } - - pub fn replacement(content: String, start: Location, end: Location) -> Self { - debug_assert!(!content.is_empty(), "Prefer `Fix::deletion`"); - - Self { - content, - location: start, - end_location: end, - } - } - - pub fn insertion(content: String, at: Location) -> Self { - debug_assert!(!content.is_empty(), "Insert content is empty"); - - Self { - content, - location: at, - end_location: at, - } - } -} diff --git a/crates/ruff/src/lib.rs b/crates/ruff/src/lib.rs index c792e2f3f6..808c752378 100644 --- a/crates/ruff/src/lib.rs +++ b/crates/ruff/src/lib.rs @@ -9,7 +9,6 @@ pub use ruff_python_ast::source_code::round_trip; pub use ruff_python_ast::types::Range; pub use rule_selector::RuleSelector; pub use rules::pycodestyle::rules::IOError; -pub use violation::{AutofixKind, Availability as AutofixAvailability}; mod autofix; mod checkers; @@ -33,7 +32,6 @@ mod rule_redirects; mod rule_selector; pub mod rules; pub mod settings; -mod violation; #[cfg(test)] mod test; diff --git a/crates/ruff/src/linter.rs b/crates/ruff/src/linter.rs index a318736cb0..e2432307c0 100644 --- a/crates/ruff/src/linter.rs +++ b/crates/ruff/src/linter.rs @@ -4,11 +4,14 @@ use std::path::Path; use anyhow::{anyhow, Result}; use colored::Colorize; use log::error; -use ruff_python_stdlib::path::is_python_stub_file; use rustc_hash::FxHashMap; use rustpython_parser::lexer::LexResult; use rustpython_parser::ParseError; +use ruff_diagnostics::Diagnostic; +use ruff_python_ast::source_code::{Indexer, Locator, Stylist}; +use ruff_python_stdlib::path::is_python_stub_file; + use crate::autofix::fix_file; use crate::checkers::ast::check_ast; use crate::checkers::filesystem::check_file_path; @@ -21,11 +24,10 @@ use crate::directives::Directives; use crate::doc_lines::{doc_lines_from_ast, doc_lines_from_tokens}; use crate::message::{Message, Source}; use crate::noqa::{add_noqa, rule_is_ignored}; -use crate::registry::{AsRule, Diagnostic, Rule}; +use crate::registry::{AsRule, Rule}; use crate::rules::pycodestyle; use crate::settings::{flags, Settings}; use crate::{directives, fs}; -use ruff_python_ast::source_code::{Indexer, Locator, Stylist}; const CARGO_PKG_NAME: &str = env!("CARGO_PKG_NAME"); const CARGO_PKG_REPOSITORY: &str = env!("CARGO_PKG_REPOSITORY"); diff --git a/crates/ruff/src/message.rs b/crates/ruff/src/message.rs index 0f9d088d12..14a0a5e137 100644 --- a/crates/ruff/src/message.rs +++ b/crates/ruff/src/message.rs @@ -3,8 +3,7 @@ use std::cmp::Ordering; pub use rustpython_parser::ast::Location; use serde::{Deserialize, Serialize}; -use crate::fix::Fix; -use crate::registry::{Diagnostic, DiagnosticKind}; +use ruff_diagnostics::{Diagnostic, DiagnosticKind, Fix}; use ruff_python_ast::source_code::Locator; use ruff_python_ast::types::Range; diff --git a/crates/ruff/src/noqa.rs b/crates/ruff/src/noqa.rs index 603e8d68de..148965efb6 100644 --- a/crates/ruff/src/noqa.rs +++ b/crates/ruff/src/noqa.rs @@ -11,11 +11,12 @@ use regex::Regex; use rustc_hash::{FxHashMap, FxHashSet}; use rustpython_parser::ast::Location; +use ruff_diagnostics::Diagnostic; use ruff_python_ast::source_code::{LineEnding, Locator}; use ruff_python_ast::types::Range; use crate::codes::NoqaCode; -use crate::registry::{AsRule, Diagnostic, Rule}; +use crate::registry::{AsRule, Rule}; use crate::rule_redirects::get_redirect_target; static NOQA_LINE_REGEX: Lazy = Lazy::new(|| { @@ -333,11 +334,11 @@ mod tests { use nohash_hasher::IntMap; use rustpython_parser::ast::Location; + use ruff_diagnostics::Diagnostic; use ruff_python_ast::source_code::LineEnding; use ruff_python_ast::types::Range; use crate::noqa::{add_noqa_inner, NOQA_LINE_REGEX}; - use crate::registry::Diagnostic; use crate::rules::pycodestyle::rules::AmbiguousVariableName; use crate::rules::pyflakes; diff --git a/crates/ruff/src/registry.rs b/crates/ruff/src/registry.rs index e99b6e62c0..eec5f4c4d6 100644 --- a/crates/ruff/src/registry.rs +++ b/crates/ruff/src/registry.rs @@ -1,16 +1,12 @@ -//! Registry of [`Rule`] to [`DiagnosticKind`] mappings. +//! Registry of all [`Rule`] implementations. -use rustpython_parser::ast::Location; -use serde::{Deserialize, Serialize}; use strum_macros::{AsRefStr, EnumIter}; +use ruff_diagnostics::Violation; use ruff_macros::RuleNamespace; -use ruff_python_ast::types::Range; use crate::codes::{self, RuleCodePrefix}; -use crate::fix::Fix; use crate::rules; -use crate::violation::Violation; ruff_macros::register_rules!( // pycodestyle errors @@ -899,49 +895,6 @@ impl Rule { } } -#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)] -pub struct DiagnosticKind { - /// The identifier of the corresponding [`Rule`]. - pub name: String, - /// The message body to display to the user, to explain the diagnostic. - pub body: String, - /// The message to display to the user, to explain the suggested fix. - pub suggestion: Option, - /// Whether the diagnostic is automatically fixable. - pub fixable: bool, -} - -#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)] -pub struct Diagnostic { - pub kind: DiagnosticKind, - pub location: Location, - pub end_location: Location, - pub fix: Option, - pub parent: Option, -} - -impl Diagnostic { - pub fn new>(kind: K, range: Range) -> Self { - Self { - kind: kind.into(), - location: range.location, - end_location: range.end_location, - fix: None, - parent: None, - } - } - - pub fn amend(&mut self, fix: Fix) -> &mut Self { - self.fix = Some(fix); - self - } - - pub fn parent(&mut self, parent: Location) -> &mut Self { - self.parent = Some(parent); - self - } -} - /// Pairs of checks that shouldn't be enabled together. pub const INCOMPATIBLE_CODES: &[(Rule, Rule, &str); 2] = &[ ( diff --git a/crates/ruff/src/rules/eradicate/rules.rs b/crates/ruff/src/rules/eradicate/rules.rs index 11cb5970f7..4a364c1506 100644 --- a/crates/ruff/src/rules/eradicate/rules.rs +++ b/crates/ruff/src/rules/eradicate/rules.rs @@ -1,13 +1,12 @@ use rustpython_parser::ast::Location; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::source_code::Locator; use ruff_python_ast::types::Range; -use crate::fix::Fix; -use crate::registry::{Diagnostic, Rule}; +use crate::registry::Rule; use crate::settings::{flags, Settings}; -use crate::violation::AlwaysAutofixableViolation; use super::detection::comment_contains_code; diff --git a/crates/ruff/src/rules/flake8_2020/rules.rs b/crates/ruff/src/rules/flake8_2020/rules.rs index c378d7d537..54c561f59a 100644 --- a/crates/ruff/src/rules/flake8_2020/rules.rs +++ b/crates/ruff/src/rules/flake8_2020/rules.rs @@ -1,12 +1,12 @@ use num_bigint::BigInt; use rustpython_parser::ast::{Cmpop, Constant, Expr, ExprKind, Located}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::{Diagnostic, Rule}; -use crate::violation::Violation; +use crate::registry::Rule; #[violation] pub struct SysVersionSlice3Referenced; diff --git a/crates/ruff/src/rules/flake8_annotations/fixes.rs b/crates/ruff/src/rules/flake8_annotations/fixes.rs index 5a929ae6ea..1758e7742c 100644 --- a/crates/ruff/src/rules/flake8_annotations/fixes.rs +++ b/crates/ruff/src/rules/flake8_annotations/fixes.rs @@ -2,11 +2,10 @@ use anyhow::{bail, Result}; use rustpython_parser::ast::Stmt; use rustpython_parser::{lexer, Mode, Tok}; +use ruff_diagnostics::Fix; use ruff_python_ast::source_code::Locator; use ruff_python_ast::types::Range; -use crate::fix::Fix; - /// ANN204 pub fn add_return_none_annotation(locator: &Locator, stmt: &Stmt) -> Result { let range = Range::from(stmt); diff --git a/crates/ruff/src/rules/flake8_annotations/rules.rs b/crates/ruff/src/rules/flake8_annotations/rules.rs index 1135122fa9..626b289695 100644 --- a/crates/ruff/src/rules/flake8_annotations/rules.rs +++ b/crates/ruff/src/rules/flake8_annotations/rules.rs @@ -1,6 +1,7 @@ use log::error; use rustpython_parser::ast::{Constant, Expr, ExprKind, Stmt}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::ReturnStatementVisitor; use ruff_python_ast::types::Range; @@ -11,8 +12,7 @@ use ruff_python_ast::{cast, helpers}; use crate::checkers::ast::Checker; use crate::docstrings::definition::{Definition, DefinitionKind}; -use crate::registry::{AsRule, Diagnostic, Rule}; -use crate::violation::{AlwaysAutofixableViolation, Violation}; +use crate::registry::{AsRule, Rule}; use super::fixes; use super::helpers::match_function_def; diff --git a/crates/ruff/src/rules/flake8_bandit/rules/assert_used.rs b/crates/ruff/src/rules/flake8_bandit/rules/assert_used.rs index e90af8ac84..f65a8dd70c 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/assert_used.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/assert_used.rs @@ -1,11 +1,9 @@ use rustpython_parser::ast::Stmt; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::registry::Diagnostic; -use crate::violation::Violation; - #[violation] pub struct Assert; diff --git a/crates/ruff/src/rules/flake8_bandit/rules/bad_file_permissions.rs b/crates/ruff/src/rules/flake8_bandit/rules/bad_file_permissions.rs index 055f340397..9544fd2aab 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/bad_file_permissions.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/bad_file_permissions.rs @@ -3,13 +3,12 @@ use once_cell::sync::Lazy; use rustc_hash::FxHashMap; use rustpython_parser::ast::{Constant, Expr, ExprKind, Keyword, Operator}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::{compose_call_path, SimpleCallArgs}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct BadFilePermissions { diff --git a/crates/ruff/src/rules/flake8_bandit/rules/exec_used.rs b/crates/ruff/src/rules/flake8_bandit/rules/exec_used.rs index 55c18c764f..71801d6c43 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/exec_used.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/exec_used.rs @@ -1,11 +1,9 @@ use rustpython_parser::ast::{Expr, ExprKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::registry::Diagnostic; -use crate::violation::Violation; - #[violation] pub struct ExecBuiltin; diff --git a/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_bind_all_interfaces.rs b/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_bind_all_interfaces.rs index b53fabce42..aee713585f 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_bind_all_interfaces.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_bind_all_interfaces.rs @@ -1,9 +1,7 @@ +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::registry::Diagnostic; -use crate::violation::Violation; - #[violation] pub struct HardcodedBindAllInterfaces; diff --git a/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_password_default.rs b/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_password_default.rs index 13f2ac7281..c5ecf9da6a 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_password_default.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_password_default.rs @@ -1,11 +1,9 @@ use rustpython_parser::ast::{Arg, Arguments, Expr}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::registry::Diagnostic; -use crate::violation::Violation; - use super::super::helpers::{matches_password_name, string_literal}; #[violation] diff --git a/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_password_func_arg.rs b/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_password_func_arg.rs index fc51ab8a02..d04dd5d082 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_password_func_arg.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_password_func_arg.rs @@ -1,11 +1,9 @@ use rustpython_parser::ast::Keyword; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::registry::Diagnostic; -use crate::violation::Violation; - use super::super::helpers::{matches_password_name, string_literal}; #[violation] diff --git a/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_password_string.rs b/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_password_string.rs index 39039af8f0..b12f995d36 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_password_string.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_password_string.rs @@ -1,11 +1,9 @@ use rustpython_parser::ast::{Constant, Expr, ExprKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::registry::Diagnostic; -use crate::violation::Violation; - use super::super::helpers::{matches_password_name, string_literal}; #[violation] diff --git a/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_sql_expression.rs b/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_sql_expression.rs index 15cfe64d93..56a53ff609 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_sql_expression.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_sql_expression.rs @@ -2,13 +2,12 @@ use once_cell::sync::Lazy; use regex::Regex; use rustpython_parser::ast::{Expr, ExprKind, Operator}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::{any_over_expr, unparse_expr}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; use super::super::helpers::string_literal; diff --git a/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_tmp_directory.rs b/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_tmp_directory.rs index 83310d819f..eec211e302 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_tmp_directory.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_tmp_directory.rs @@ -1,11 +1,9 @@ use rustpython_parser::ast::Expr; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::registry::Diagnostic; -use crate::violation::Violation; - #[violation] pub struct HardcodedTempFile { pub string: String, diff --git a/crates/ruff/src/rules/flake8_bandit/rules/hashlib_insecure_hash_functions.rs b/crates/ruff/src/rules/flake8_bandit/rules/hashlib_insecure_hash_functions.rs index 3469d69392..8133ba54c4 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/hashlib_insecure_hash_functions.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/hashlib_insecure_hash_functions.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::{Constant, Expr, ExprKind, Keyword}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::SimpleCallArgs; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; use super::super::helpers::string_literal; diff --git a/crates/ruff/src/rules/flake8_bandit/rules/jinja2_autoescape_false.rs b/crates/ruff/src/rules/flake8_bandit/rules/jinja2_autoescape_false.rs index 9d0f23775d..d192bafc15 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/jinja2_autoescape_false.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/jinja2_autoescape_false.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::{Constant, Expr, ExprKind, Keyword}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::SimpleCallArgs; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct Jinja2AutoescapeFalse { diff --git a/crates/ruff/src/rules/flake8_bandit/rules/logging_config_insecure_listen.rs b/crates/ruff/src/rules/flake8_bandit/rules/logging_config_insecure_listen.rs index 1005c47ade..1617a559d2 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/logging_config_insecure_listen.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/logging_config_insecure_listen.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::{Expr, Keyword}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::SimpleCallArgs; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct LoggingConfigInsecureListen; diff --git a/crates/ruff/src/rules/flake8_bandit/rules/request_with_no_cert_validation.rs b/crates/ruff/src/rules/flake8_bandit/rules/request_with_no_cert_validation.rs index d196627388..2a954699b7 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/request_with_no_cert_validation.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/request_with_no_cert_validation.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::{Constant, Expr, ExprKind, Keyword}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::SimpleCallArgs; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct RequestWithNoCertValidation { diff --git a/crates/ruff/src/rules/flake8_bandit/rules/request_without_timeout.rs b/crates/ruff/src/rules/flake8_bandit/rules/request_without_timeout.rs index 72e9eebd98..00926f0307 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/request_without_timeout.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/request_without_timeout.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::{Constant, Expr, ExprKind, Keyword}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::{unparse_constant, SimpleCallArgs}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct RequestWithoutTimeout { diff --git a/crates/ruff/src/rules/flake8_bandit/rules/snmp_insecure_version.rs b/crates/ruff/src/rules/flake8_bandit/rules/snmp_insecure_version.rs index 2079436596..af57325743 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/snmp_insecure_version.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/snmp_insecure_version.rs @@ -1,13 +1,12 @@ use num_traits::{One, Zero}; use rustpython_parser::ast::{Constant, Expr, ExprKind, Keyword}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::SimpleCallArgs; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct SnmpInsecureVersion; diff --git a/crates/ruff/src/rules/flake8_bandit/rules/snmp_weak_cryptography.rs b/crates/ruff/src/rules/flake8_bandit/rules/snmp_weak_cryptography.rs index 6a169900af..2c34b3c364 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/snmp_weak_cryptography.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/snmp_weak_cryptography.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::{Expr, Keyword}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::SimpleCallArgs; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct SnmpWeakCryptography; diff --git a/crates/ruff/src/rules/flake8_bandit/rules/try_except_continue.rs b/crates/ruff/src/rules/flake8_bandit/rules/try_except_continue.rs index aa13c8760d..b71eb67093 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/try_except_continue.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/try_except_continue.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::{Excepthandler, Expr, Stmt, StmtKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; use crate::rules::flake8_bandit::helpers::is_untyped_exception; -use crate::violation::Violation; #[violation] pub struct TryExceptContinue; diff --git a/crates/ruff/src/rules/flake8_bandit/rules/try_except_pass.rs b/crates/ruff/src/rules/flake8_bandit/rules/try_except_pass.rs index 92ed3d2dcf..f888b8fb46 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/try_except_pass.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/try_except_pass.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::{Excepthandler, Expr, Stmt, StmtKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; use crate::rules::flake8_bandit::helpers::is_untyped_exception; -use crate::violation::Violation; #[violation] pub struct TryExceptPass; diff --git a/crates/ruff/src/rules/flake8_bandit/rules/unsafe_yaml_load.rs b/crates/ruff/src/rules/flake8_bandit/rules/unsafe_yaml_load.rs index 6535437a39..e748078621 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/unsafe_yaml_load.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/unsafe_yaml_load.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::{Expr, ExprKind, Keyword}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::SimpleCallArgs; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct UnsafeYAMLLoad { diff --git a/crates/ruff/src/rules/flake8_blind_except/rules.rs b/crates/ruff/src/rules/flake8_blind_except/rules.rs index 044a247876..98b1aab7e7 100644 --- a/crates/ruff/src/rules/flake8_blind_except/rules.rs +++ b/crates/ruff/src/rules/flake8_blind_except/rules.rs @@ -1,13 +1,12 @@ use rustpython_parser::ast::{Expr, ExprKind, Stmt, StmtKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers; use ruff_python_ast::helpers::{find_keyword, is_const_true}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct BlindExcept { diff --git a/crates/ruff/src/rules/flake8_boolean_trap/rules.rs b/crates/ruff/src/rules/flake8_boolean_trap/rules.rs index 8658bcb532..4d673ca034 100644 --- a/crates/ruff/src/rules/flake8_boolean_trap/rules.rs +++ b/crates/ruff/src/rules/flake8_boolean_trap/rules.rs @@ -1,12 +1,12 @@ use rustpython_parser::ast::{Arguments, Constant, Expr, ExprKind}; +use ruff_diagnostics::Violation; +use ruff_diagnostics::{Diagnostic, DiagnosticKind}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::collect_call_path; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::{Diagnostic, DiagnosticKind}; -use crate::violation::Violation; #[violation] pub struct BooleanPositionalArgInFunctionDefinition; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/abstract_base_class.rs b/crates/ruff/src/rules/flake8_bugbear/rules/abstract_base_class.rs index f78185a61a..5d6ec2e7c6 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/abstract_base_class.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/abstract_base_class.rs @@ -1,12 +1,12 @@ use rustpython_parser::ast::{Constant, Expr, ExprKind, Keyword, Stmt, StmtKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use ruff_python_ast::visibility::{is_abstract, is_overload}; use crate::checkers::ast::Checker; -use crate::registry::{Diagnostic, Rule}; -use crate::violation::Violation; +use crate::registry::Rule; #[violation] pub struct AbstractBaseClassWithoutAbstractMethod { diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/assert_false.rs b/crates/ruff/src/rules/flake8_bugbear/rules/assert_false.rs index 122671dcab..b1cadec1a7 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/assert_false.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/assert_false.rs @@ -1,13 +1,12 @@ use rustpython_parser::ast::{Constant, Expr, ExprContext, ExprKind, Location, Stmt, StmtKind}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::unparse_stmt; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; #[violation] pub struct AssertFalse; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/assert_raises_exception.rs b/crates/ruff/src/rules/flake8_bugbear/rules/assert_raises_exception.rs index ab67651ee8..246a248aeb 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/assert_raises_exception.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/assert_raises_exception.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::{ExprKind, Stmt, Withitem}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; /// ## What it does /// Checks for `self.assertRaises(Exception)`. diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/assignment_to_os_environ.rs b/crates/ruff/src/rules/flake8_bugbear/rules/assignment_to_os_environ.rs index ea62174973..93e6376621 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/assignment_to_os_environ.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/assignment_to_os_environ.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::{Expr, ExprKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct AssignmentToOsEnviron; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/cached_instance_method.rs b/crates/ruff/src/rules/flake8_bugbear/rules/cached_instance_method.rs index 6cd64f7ec7..bc0f5d40ef 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/cached_instance_method.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/cached_instance_method.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::{Expr, ExprKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::{Range, ScopeKind}; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct CachedInstanceMethod; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/cannot_raise_literal.rs b/crates/ruff/src/rules/flake8_bugbear/rules/cannot_raise_literal.rs index e8998c8e23..e7f03a8b49 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/cannot_raise_literal.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/cannot_raise_literal.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::{Expr, ExprKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct CannotRaiseLiteral; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/duplicate_exceptions.rs b/crates/ruff/src/rules/flake8_bugbear/rules/duplicate_exceptions.rs index cca1f11b41..61827f570d 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/duplicate_exceptions.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/duplicate_exceptions.rs @@ -4,15 +4,15 @@ use rustpython_parser::ast::{ Excepthandler, ExcepthandlerKind, Expr, ExprContext, ExprKind, Location, }; +use ruff_diagnostics::{AlwaysAutofixableViolation, Violation}; +use ruff_diagnostics::{Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers; use ruff_python_ast::helpers::unparse_expr; use ruff_python_ast::types::{CallPath, Range}; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic, Rule}; -use crate::violation::{AlwaysAutofixableViolation, Violation}; +use crate::registry::{AsRule, Rule}; #[violation] pub struct DuplicateTryBlockException { diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/except_with_empty_tuple.rs b/crates/ruff/src/rules/flake8_bugbear/rules/except_with_empty_tuple.rs index d04a1c6a05..75634391c5 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/except_with_empty_tuple.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/except_with_empty_tuple.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::Excepthandler; use rustpython_parser::ast::{ExcepthandlerKind, ExprKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct ExceptWithEmptyTuple; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/except_with_non_exception_classes.rs b/crates/ruff/src/rules/flake8_bugbear/rules/except_with_non_exception_classes.rs index abb86ab23b..79d1f3183e 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/except_with_non_exception_classes.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/except_with_non_exception_classes.rs @@ -2,12 +2,11 @@ use std::collections::VecDeque; use rustpython_parser::ast::{Excepthandler, ExcepthandlerKind, Expr, ExprKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct ExceptWithNonExceptionClasses; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/f_string_docstring.rs b/crates/ruff/src/rules/flake8_bugbear/rules/f_string_docstring.rs index 047dac4e23..423f7818ad 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/f_string_docstring.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/f_string_docstring.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::{ExprKind, Stmt, StmtKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct FStringDocstring; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/function_call_argument_default.rs b/crates/ruff/src/rules/flake8_bugbear/rules/function_call_argument_default.rs index 8f48305608..a4e17480ae 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/function_call_argument_default.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/function_call_argument_default.rs @@ -1,5 +1,7 @@ use rustpython_parser::ast::{Arguments, Constant, Expr, ExprKind}; +use ruff_diagnostics::Violation; +use ruff_diagnostics::{Diagnostic, DiagnosticKind}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::{compose_call_path, to_call_path}; use ruff_python_ast::types::{CallPath, Range}; @@ -7,8 +9,6 @@ use ruff_python_ast::visitor; use ruff_python_ast::visitor::Visitor; use crate::checkers::ast::Checker; -use crate::registry::{Diagnostic, DiagnosticKind}; -use crate::violation::Violation; use super::mutable_argument_default::is_mutable_func; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/function_uses_loop_variable.rs b/crates/ruff/src/rules/flake8_bugbear/rules/function_uses_loop_variable.rs index 32e324d9c0..d111909e0a 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/function_uses_loop_variable.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/function_uses_loop_variable.rs @@ -1,6 +1,7 @@ use rustc_hash::FxHashSet; use rustpython_parser::ast::{Comprehension, Expr, ExprContext, ExprKind, Stmt, StmtKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::collect_arg_names; use ruff_python_ast::types::{Node, Range}; @@ -8,8 +9,6 @@ use ruff_python_ast::visitor; use ruff_python_ast::visitor::Visitor; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct FunctionUsesLoopVariable { diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/getattr_with_constant.rs b/crates/ruff/src/rules/flake8_bugbear/rules/getattr_with_constant.rs index 3f28b7f846..bea5328849 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/getattr_with_constant.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/getattr_with_constant.rs @@ -1,5 +1,6 @@ use rustpython_parser::ast::{Constant, Expr, ExprContext, ExprKind, Location}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::unparse_expr; use ruff_python_ast::types::Range; @@ -7,9 +8,7 @@ use ruff_python_stdlib::identifiers::{is_identifier, is_mangled_private}; use ruff_python_stdlib::keyword::KWLIST; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; #[violation] pub struct GetAttrWithConstant; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/jump_statement_in_finally.rs b/crates/ruff/src/rules/flake8_bugbear/rules/jump_statement_in_finally.rs index 597ec44ff4..836563599a 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/jump_statement_in_finally.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/jump_statement_in_finally.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::{Stmt, StmtKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct JumpStatementInFinally { diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/loop_variable_overrides_iterator.rs b/crates/ruff/src/rules/flake8_bugbear/rules/loop_variable_overrides_iterator.rs index f31ed88668..784fe1a488 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/loop_variable_overrides_iterator.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/loop_variable_overrides_iterator.rs @@ -1,14 +1,13 @@ use rustc_hash::FxHashMap; use rustpython_parser::ast::{Expr, ExprKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use ruff_python_ast::visitor; use ruff_python_ast::visitor::Visitor; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct LoopVariableOverridesIterator { diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/mutable_argument_default.rs b/crates/ruff/src/rules/flake8_bugbear/rules/mutable_argument_default.rs index 78daad93d9..7a43a63b35 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/mutable_argument_default.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/mutable_argument_default.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::{Arguments, Constant, Expr, ExprKind, Operator}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct MutableArgumentDefault; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/raise_without_from_inside_except.rs b/crates/ruff/src/rules/flake8_bugbear/rules/raise_without_from_inside_except.rs index 180c958618..60ff0b6b99 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/raise_without_from_inside_except.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/raise_without_from_inside_except.rs @@ -1,13 +1,12 @@ use rustpython_parser::ast::{ExprKind, Stmt}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::RaiseStatementVisitor; use ruff_python_ast::visitor; use ruff_python_stdlib::str::is_lower; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct RaiseWithoutFromInsideExcept; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/redundant_tuple_in_exception_handler.rs b/crates/ruff/src/rules/flake8_bugbear/rules/redundant_tuple_in_exception_handler.rs index e48201ebec..0eb773c1c5 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/redundant_tuple_in_exception_handler.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/redundant_tuple_in_exception_handler.rs @@ -1,13 +1,12 @@ use rustpython_parser::ast::{Excepthandler, ExcepthandlerKind, ExprKind}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::unparse_expr; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; #[violation] pub struct RedundantTupleInExceptionHandler { diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/setattr_with_constant.rs b/crates/ruff/src/rules/flake8_bugbear/rules/setattr_with_constant.rs index 729c96645d..862758913a 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/setattr_with_constant.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/setattr_with_constant.rs @@ -1,5 +1,6 @@ use rustpython_parser::ast::{Constant, Expr, ExprContext, ExprKind, Location, Stmt, StmtKind}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::unparse_stmt; use ruff_python_ast::source_code::Stylist; @@ -8,9 +9,7 @@ use ruff_python_stdlib::identifiers::{is_identifier, is_mangled_private}; use ruff_python_stdlib::keyword::KWLIST; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; #[violation] pub struct SetAttrWithConstant; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/star_arg_unpacking_after_keyword_arg.rs b/crates/ruff/src/rules/flake8_bugbear/rules/star_arg_unpacking_after_keyword_arg.rs index 7226edcad0..94f0768cca 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/star_arg_unpacking_after_keyword_arg.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/star_arg_unpacking_after_keyword_arg.rs @@ -9,12 +9,11 @@ use rustpython_parser::ast::{Expr, ExprKind, Keyword}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct StarArgUnpackingAfterKeywordArg; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/strip_with_multi_characters.rs b/crates/ruff/src/rules/flake8_bugbear/rules/strip_with_multi_characters.rs index 491f568e2a..24cc14d2d9 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/strip_with_multi_characters.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/strip_with_multi_characters.rs @@ -1,12 +1,11 @@ use itertools::Itertools; use rustpython_parser::ast::{Constant, Expr, ExprKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct StripWithMultiCharacters; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/unary_prefix_increment.rs b/crates/ruff/src/rules/flake8_bugbear/rules/unary_prefix_increment.rs index 5b96d22bf9..999f4893c1 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/unary_prefix_increment.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/unary_prefix_increment.rs @@ -19,12 +19,11 @@ use rustpython_parser::ast::{Expr, ExprKind, Unaryop}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct UnaryPrefixIncrement; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/unintentional_type_annotation.rs b/crates/ruff/src/rules/flake8_bugbear/rules/unintentional_type_annotation.rs index f433ad0f5e..4e6475b5c0 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/unintentional_type_annotation.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/unintentional_type_annotation.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::{Expr, ExprKind, Stmt}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; /// ## What it does /// Checks for the unintentional use of type annotations. diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/unreliable_callable_check.rs b/crates/ruff/src/rules/flake8_bugbear/rules/unreliable_callable_check.rs index 070db858da..daeb582ff9 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/unreliable_callable_check.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/unreliable_callable_check.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::{Constant, Expr, ExprKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct UnreliableCallableCheck; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/unused_loop_control_variable.rs b/crates/ruff/src/rules/flake8_bugbear/rules/unused_loop_control_variable.rs index 098c5b523d..556b542de0 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/unused_loop_control_variable.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/unused_loop_control_variable.rs @@ -22,15 +22,14 @@ use rustc_hash::FxHashMap; use rustpython_parser::ast::{Expr, ExprKind, Stmt}; use serde::{Deserialize, Serialize}; +use ruff_diagnostics::{AutofixKind, Availability, Diagnostic, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::{Range, RefEquality}; use ruff_python_ast::visitor::Visitor; use ruff_python_ast::{helpers, visitor}; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::{AutofixKind, Availability, Violation}; +use crate::registry::AsRule; #[derive(Debug, Copy, Clone, PartialEq, Eq, Serialize, Deserialize, result_like::BoolLike)] pub enum Certainty { diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/useless_comparison.rs b/crates/ruff/src/rules/flake8_bugbear/rules/useless_comparison.rs index 9965ace76c..19495c88b0 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/useless_comparison.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/useless_comparison.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::{Expr, ExprKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct UselessComparison; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/useless_contextlib_suppress.rs b/crates/ruff/src/rules/flake8_bugbear/rules/useless_contextlib_suppress.rs index 9e1f4e621a..20731a61bd 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/useless_contextlib_suppress.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/useless_contextlib_suppress.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::Expr; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct UselessContextlibSuppress; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/useless_expression.rs b/crates/ruff/src/rules/flake8_bugbear/rules/useless_expression.rs index 15a2b14179..b36f7d35e0 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/useless_expression.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/useless_expression.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::{Constant, ExprKind, Stmt, StmtKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct UselessExpression; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/zip_without_explicit_strict.rs b/crates/ruff/src/rules/flake8_bugbear/rules/zip_without_explicit_strict.rs index 46cd77098d..d2e565ee65 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/zip_without_explicit_strict.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/zip_without_explicit_strict.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::{Expr, ExprKind, Keyword}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct ZipWithoutExplicitStrict; diff --git a/crates/ruff/src/rules/flake8_builtins/rules.rs b/crates/ruff/src/rules/flake8_builtins/rules.rs index e572775ff3..0899166b96 100644 --- a/crates/ruff/src/rules/flake8_builtins/rules.rs +++ b/crates/ruff/src/rules/flake8_builtins/rules.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::Located; +use ruff_diagnostics::Violation; +use ruff_diagnostics::{Diagnostic, DiagnosticKind}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use ruff_python_stdlib::builtins::BUILTINS; -use crate::registry::{Diagnostic, DiagnosticKind}; -use crate::violation::Violation; - use super::types::ShadowingType; /// ## What it does diff --git a/crates/ruff/src/rules/flake8_commas/rules.rs b/crates/ruff/src/rules/flake8_commas/rules.rs index adbcf0d4f1..ee872de219 100644 --- a/crates/ruff/src/rules/flake8_commas/rules.rs +++ b/crates/ruff/src/rules/flake8_commas/rules.rs @@ -2,14 +2,14 @@ use itertools::Itertools; use rustpython_parser::lexer::{LexResult, Spanned}; use rustpython_parser::Tok; +use ruff_diagnostics::{AlwaysAutofixableViolation, Violation}; +use ruff_diagnostics::{Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::source_code::Locator; use ruff_python_ast::types::Range; -use crate::fix::Fix; -use crate::registry::{Diagnostic, Rule}; +use crate::registry::Rule; use crate::settings::{flags, Settings}; -use crate::violation::{AlwaysAutofixableViolation, Violation}; /// Simplified token type. #[derive(Copy, Clone, PartialEq, Eq)] diff --git a/crates/ruff/src/rules/flake8_comprehensions/fixes.rs b/crates/ruff/src/rules/flake8_comprehensions/fixes.rs index 759f1f5808..1900b250b9 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/fixes.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/fixes.rs @@ -7,10 +7,10 @@ use libcst_native::{ RightParen, RightSquareBracket, Set, SetComp, SimpleString, SimpleWhitespace, Tuple, }; +use ruff_diagnostics::Fix; use ruff_python_ast::source_code::{Locator, Stylist}; use crate::cst::matchers::{match_expr, match_module}; -use crate::fix::Fix; fn match_call<'a, 'b>(expr: &'a mut Expr<'b>) -> Result<&'a mut Call<'b>> { if let Expression::Call(call) = &mut expr.value { diff --git a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_call_around_sorted.rs b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_call_around_sorted.rs index 1701c40da1..43bea42c05 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_call_around_sorted.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_call_around_sorted.rs @@ -1,13 +1,13 @@ use log::error; use rustpython_parser::ast::{Expr, ExprKind}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::{AsRule, Diagnostic}; +use crate::registry::AsRule; use crate::rules::flake8_comprehensions::fixes; -use crate::violation::AlwaysAutofixableViolation; use super::helpers; diff --git a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_collection_call.rs b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_collection_call.rs index 1b60a66803..b197b79bac 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_collection_call.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_collection_call.rs @@ -1,14 +1,14 @@ use log::error; use rustpython_parser::ast::{Expr, Keyword}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::{AsRule, Diagnostic}; +use crate::registry::AsRule; use crate::rules::flake8_comprehensions::fixes; use crate::rules::flake8_comprehensions::settings::Settings; -use crate::violation::AlwaysAutofixableViolation; use super::helpers; diff --git a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_comprehension.rs b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_comprehension.rs index faf3feaf43..21cc374cdb 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_comprehension.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_comprehension.rs @@ -1,13 +1,13 @@ use log::error; use rustpython_parser::ast::{Comprehension, Expr, ExprKind}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::{AsRule, Diagnostic}; +use crate::registry::AsRule; use crate::rules::flake8_comprehensions::fixes; -use crate::violation::AlwaysAutofixableViolation; use super::helpers; diff --git a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_double_cast_or_process.rs b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_double_cast_or_process.rs index 2e793dd039..0a0a842f8c 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_double_cast_or_process.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_double_cast_or_process.rs @@ -1,12 +1,12 @@ use rustpython_parser::ast::{Expr, ExprKind}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::{AsRule, Diagnostic}; +use crate::registry::AsRule; use crate::rules::flake8_comprehensions::fixes; -use crate::violation::AlwaysAutofixableViolation; use super::helpers; diff --git a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_generator_dict.rs b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_generator_dict.rs index 641963383e..c3559a38c8 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_generator_dict.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_generator_dict.rs @@ -1,13 +1,13 @@ use log::error; use rustpython_parser::ast::{Expr, ExprKind, Keyword}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::{AsRule, Diagnostic}; +use crate::registry::AsRule; use crate::rules::flake8_comprehensions::fixes; -use crate::violation::AlwaysAutofixableViolation; use super::helpers; diff --git a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_generator_list.rs b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_generator_list.rs index b4c24e457c..ae33a30797 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_generator_list.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_generator_list.rs @@ -1,13 +1,13 @@ use log::error; use rustpython_parser::ast::{Expr, ExprKind, Keyword}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::{AsRule, Diagnostic}; +use crate::registry::AsRule; use crate::rules::flake8_comprehensions::fixes; -use crate::violation::AlwaysAutofixableViolation; use super::helpers; diff --git a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_generator_set.rs b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_generator_set.rs index 0fdd7afda1..548a72441d 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_generator_set.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_generator_set.rs @@ -1,13 +1,13 @@ use log::error; use rustpython_parser::ast::{Expr, ExprKind, Keyword}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::{AsRule, Diagnostic}; +use crate::registry::AsRule; use crate::rules::flake8_comprehensions::fixes; -use crate::violation::AlwaysAutofixableViolation; use super::helpers; diff --git a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_list_call.rs b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_list_call.rs index 48cd8e8198..f2a25ba6a9 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_list_call.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_list_call.rs @@ -1,13 +1,13 @@ use log::error; use rustpython_parser::ast::{Expr, ExprKind}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::{AsRule, Diagnostic}; +use crate::registry::AsRule; use crate::rules::flake8_comprehensions::fixes; -use crate::violation::AlwaysAutofixableViolation; use super::helpers; diff --git a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_list_comprehension_dict.rs b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_list_comprehension_dict.rs index 34f749e457..cbd16bfcd3 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_list_comprehension_dict.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_list_comprehension_dict.rs @@ -1,13 +1,13 @@ use log::error; use rustpython_parser::ast::{Expr, ExprKind, Keyword}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::{AsRule, Diagnostic}; +use crate::registry::AsRule; use crate::rules::flake8_comprehensions::fixes; -use crate::violation::AlwaysAutofixableViolation; use super::helpers; diff --git a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_list_comprehension_set.rs b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_list_comprehension_set.rs index 9dd8b79b68..6a819b0313 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_list_comprehension_set.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_list_comprehension_set.rs @@ -1,13 +1,13 @@ use log::error; use rustpython_parser::ast::{Expr, ExprKind, Keyword}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::{AsRule, Diagnostic}; +use crate::registry::AsRule; use crate::rules::flake8_comprehensions::fixes; -use crate::violation::AlwaysAutofixableViolation; use super::helpers; diff --git a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_dict.rs b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_dict.rs index 49305a7e97..9de61911e2 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_dict.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_dict.rs @@ -1,13 +1,13 @@ use log::error; use rustpython_parser::ast::{Expr, ExprKind, Keyword}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::{AsRule, Diagnostic}; +use crate::registry::AsRule; use crate::rules::flake8_comprehensions::fixes; -use crate::violation::AlwaysAutofixableViolation; use super::helpers; diff --git a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_set.rs b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_set.rs index dc73305229..ee1f88f967 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_set.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_set.rs @@ -1,13 +1,13 @@ use log::error; use rustpython_parser::ast::{Expr, ExprKind, Keyword}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::{AsRule, Diagnostic}; +use crate::registry::AsRule; use crate::rules::flake8_comprehensions::fixes; -use crate::violation::AlwaysAutofixableViolation; use super::helpers; diff --git a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_within_list_call.rs b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_within_list_call.rs index c236f8c358..78569f6b07 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_within_list_call.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_within_list_call.rs @@ -1,13 +1,13 @@ use log::error; use rustpython_parser::ast::{Expr, ExprKind}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::{AsRule, Diagnostic}; +use crate::registry::AsRule; use crate::rules::flake8_comprehensions::fixes; -use crate::violation::AlwaysAutofixableViolation; use super::helpers; diff --git a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_within_tuple_call.rs b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_within_tuple_call.rs index 0b73f0573f..479188f22c 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_within_tuple_call.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_within_tuple_call.rs @@ -1,13 +1,13 @@ use log::error; use rustpython_parser::ast::{Expr, ExprKind}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::{AsRule, Diagnostic}; +use crate::registry::AsRule; use crate::rules::flake8_comprehensions::fixes; -use crate::violation::AlwaysAutofixableViolation; use super::helpers; diff --git a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_map.rs b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_map.rs index 24869d3a45..91349942b9 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_map.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_map.rs @@ -1,13 +1,14 @@ use log::error; use rustpython_parser::ast::{Expr, ExprKind}; +use ruff_diagnostics::Diagnostic; +use ruff_diagnostics::{AutofixKind, Availability, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::{AsRule, Diagnostic}; +use crate::registry::AsRule; use crate::rules::flake8_comprehensions::fixes; -use crate::violation::{AutofixKind, Availability, Violation}; use super::helpers; diff --git a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_subscript_reversal.rs b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_subscript_reversal.rs index 2a50a8bca7..f78352376d 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_subscript_reversal.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_subscript_reversal.rs @@ -1,12 +1,11 @@ use num_bigint::BigInt; use rustpython_parser::ast::{Constant, Expr, ExprKind, Unaryop}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; use super::helpers; diff --git a/crates/ruff/src/rules/flake8_datetimez/rules.rs b/crates/ruff/src/rules/flake8_datetimez/rules.rs index 19e0ba752e..0da562732d 100644 --- a/crates/ruff/src/rules/flake8_datetimez/rules.rs +++ b/crates/ruff/src/rules/flake8_datetimez/rules.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::{Constant, Expr, ExprKind, Keyword}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::{has_non_none_keyword, is_const_none}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct CallDatetimeWithoutTzinfo; diff --git a/crates/ruff/src/rules/flake8_debugger/rules.rs b/crates/ruff/src/rules/flake8_debugger/rules.rs index ae904f4d96..5a49463e0d 100644 --- a/crates/ruff/src/rules/flake8_debugger/rules.rs +++ b/crates/ruff/src/rules/flake8_debugger/rules.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::{Expr, Stmt}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::format_call_path; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; use super::types::DebuggerUsingType; diff --git a/crates/ruff/src/rules/flake8_django/rules/all_with_model_form.rs b/crates/ruff/src/rules/flake8_django/rules/all_with_model_form.rs index debdb8979a..c8e3c20bbf 100644 --- a/crates/ruff/src/rules/flake8_django/rules/all_with_model_form.rs +++ b/crates/ruff/src/rules/flake8_django/rules/all_with_model_form.rs @@ -1,11 +1,11 @@ use rustpython_parser::ast::{Constant, Expr, ExprKind, Stmt, StmtKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; +use crate::checkers::ast::Checker; use crate::rules::flake8_django::rules::helpers::is_model_form; -use crate::violation::Violation; -use crate::{checkers::ast::Checker, registry::Diagnostic}; /// ## What it does /// Checks for the use of `fields = "__all__"` in Django `ModelForm` diff --git a/crates/ruff/src/rules/flake8_django/rules/exclude_with_model_form.rs b/crates/ruff/src/rules/flake8_django/rules/exclude_with_model_form.rs index 07841a4b6c..e79c7732d2 100644 --- a/crates/ruff/src/rules/flake8_django/rules/exclude_with_model_form.rs +++ b/crates/ruff/src/rules/flake8_django/rules/exclude_with_model_form.rs @@ -1,11 +1,11 @@ use rustpython_parser::ast::{Expr, ExprKind, Stmt, StmtKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; +use crate::checkers::ast::Checker; use crate::rules::flake8_django::rules::helpers::is_model_form; -use crate::violation::Violation; -use crate::{checkers::ast::Checker, registry::Diagnostic}; /// ## What it does /// Checks for the use of `exclude` in Django `ModelForm` classes. diff --git a/crates/ruff/src/rules/flake8_django/rules/locals_in_render_function.rs b/crates/ruff/src/rules/flake8_django/rules/locals_in_render_function.rs index 5aff746739..e1c761f153 100644 --- a/crates/ruff/src/rules/flake8_django/rules/locals_in_render_function.rs +++ b/crates/ruff/src/rules/flake8_django/rules/locals_in_render_function.rs @@ -1,9 +1,10 @@ use rustpython_parser::ast::{Expr, ExprKind, Keyword}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::{checkers::ast::Checker, registry::Diagnostic, violation::Violation}; +use crate::checkers::ast::Checker; /// ## What it does /// Checks for the use of `locals()` in `render` functions. diff --git a/crates/ruff/src/rules/flake8_django/rules/model_without_dunder_str.rs b/crates/ruff/src/rules/flake8_django/rules/model_without_dunder_str.rs index fdaaa5db74..7ca6f1bd0a 100644 --- a/crates/ruff/src/rules/flake8_django/rules/model_without_dunder_str.rs +++ b/crates/ruff/src/rules/flake8_django/rules/model_without_dunder_str.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::{Constant, Expr, StmtKind}; use rustpython_parser::ast::{ExprKind, Stmt}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; use super::helpers; diff --git a/crates/ruff/src/rules/flake8_django/rules/non_leading_receiver_decorator.rs b/crates/ruff/src/rules/flake8_django/rules/non_leading_receiver_decorator.rs index 478a6abf00..42e7711ee7 100644 --- a/crates/ruff/src/rules/flake8_django/rules/non_leading_receiver_decorator.rs +++ b/crates/ruff/src/rules/flake8_django/rules/non_leading_receiver_decorator.rs @@ -1,11 +1,9 @@ use rustpython_parser::ast::{Expr, ExprKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::{CallPath, Range}; -use crate::registry::Diagnostic; -use crate::violation::Violation; - /// ## What it does /// Checks that Django's `@receiver` decorator is listed first, prior to /// any other decorators. diff --git a/crates/ruff/src/rules/flake8_django/rules/nullable_model_string_field.rs b/crates/ruff/src/rules/flake8_django/rules/nullable_model_string_field.rs index a3501851a8..f29abc8c35 100644 --- a/crates/ruff/src/rules/flake8_django/rules/nullable_model_string_field.rs +++ b/crates/ruff/src/rules/flake8_django/rules/nullable_model_string_field.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::Constant::Bool; use rustpython_parser::ast::{Expr, ExprKind, Stmt, StmtKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; use super::helpers; diff --git a/crates/ruff/src/rules/flake8_errmsg/rules.rs b/crates/ruff/src/rules/flake8_errmsg/rules.rs index 19fda21132..3246fee601 100644 --- a/crates/ruff/src/rules/flake8_errmsg/rules.rs +++ b/crates/ruff/src/rules/flake8_errmsg/rules.rs @@ -1,11 +1,11 @@ use rustpython_parser::ast::{Constant, Expr, ExprKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::{Diagnostic, Rule}; -use crate::violation::Violation; +use crate::registry::Rule; /// ## What it does /// Checks for the use of string literals in exception constructors. diff --git a/crates/ruff/src/rules/flake8_executable/rules/shebang_missing.rs b/crates/ruff/src/rules/flake8_executable/rules/shebang_missing.rs index 25552822f6..40df587276 100644 --- a/crates/ruff/src/rules/flake8_executable/rules/shebang_missing.rs +++ b/crates/ruff/src/rules/flake8_executable/rules/shebang_missing.rs @@ -2,13 +2,13 @@ use std::path::Path; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::registry::{AsRule, Diagnostic}; +use crate::registry::AsRule; #[cfg(target_family = "unix")] use crate::rules::flake8_executable::helpers::is_executable; -use crate::violation::Violation; #[violation] pub struct ShebangMissingExecutableFile; diff --git a/crates/ruff/src/rules/flake8_executable/rules/shebang_newline.rs b/crates/ruff/src/rules/flake8_executable/rules/shebang_newline.rs index 3c4446929b..1910d6a854 100644 --- a/crates/ruff/src/rules/flake8_executable/rules/shebang_newline.rs +++ b/crates/ruff/src/rules/flake8_executable/rules/shebang_newline.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::Location; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::registry::Diagnostic; use crate::rules::flake8_executable::helpers::ShebangDirective; -use crate::violation::Violation; #[violation] pub struct ShebangNewline; diff --git a/crates/ruff/src/rules/flake8_executable/rules/shebang_not_executable.rs b/crates/ruff/src/rules/flake8_executable/rules/shebang_not_executable.rs index c810126d3a..574b7f914b 100644 --- a/crates/ruff/src/rules/flake8_executable/rules/shebang_not_executable.rs +++ b/crates/ruff/src/rules/flake8_executable/rules/shebang_not_executable.rs @@ -4,14 +4,14 @@ use std::path::Path; use rustpython_parser::ast::Location; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::registry::{AsRule, Diagnostic}; +use crate::registry::AsRule; #[cfg(target_family = "unix")] use crate::rules::flake8_executable::helpers::is_executable; use crate::rules::flake8_executable::helpers::ShebangDirective; -use crate::violation::Violation; #[violation] pub struct ShebangNotExecutable; diff --git a/crates/ruff/src/rules/flake8_executable/rules/shebang_python.rs b/crates/ruff/src/rules/flake8_executable/rules/shebang_python.rs index 474bbe7fda..16a5be310e 100644 --- a/crates/ruff/src/rules/flake8_executable/rules/shebang_python.rs +++ b/crates/ruff/src/rules/flake8_executable/rules/shebang_python.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::Location; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::registry::Diagnostic; use crate::rules::flake8_executable::helpers::ShebangDirective; -use crate::violation::Violation; #[violation] pub struct ShebangPython; diff --git a/crates/ruff/src/rules/flake8_executable/rules/shebang_whitespace.rs b/crates/ruff/src/rules/flake8_executable/rules/shebang_whitespace.rs index 34fc0e3b93..eed28b51f5 100644 --- a/crates/ruff/src/rules/flake8_executable/rules/shebang_whitespace.rs +++ b/crates/ruff/src/rules/flake8_executable/rules/shebang_whitespace.rs @@ -1,12 +1,10 @@ use rustpython_parser::ast::Location; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::fix::Fix; -use crate::registry::Diagnostic; use crate::rules::flake8_executable::helpers::ShebangDirective; -use crate::violation::AlwaysAutofixableViolation; #[violation] pub struct ShebangWhitespace; diff --git a/crates/ruff/src/rules/flake8_implicit_str_concat/rules.rs b/crates/ruff/src/rules/flake8_implicit_str_concat/rules.rs index 6bdfb74067..664ab8255b 100644 --- a/crates/ruff/src/rules/flake8_implicit_str_concat/rules.rs +++ b/crates/ruff/src/rules/flake8_implicit_str_concat/rules.rs @@ -3,12 +3,11 @@ use rustpython_parser::ast::{Constant, Expr, ExprKind, Operator}; use rustpython_parser::lexer::LexResult; use rustpython_parser::Tok; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::registry::Diagnostic; use crate::rules::flake8_implicit_str_concat::settings::Settings; -use crate::violation::Violation; /// ## What it does /// Checks for implicitly concatenated strings on a single line. diff --git a/crates/ruff/src/rules/flake8_import_conventions/rules.rs b/crates/ruff/src/rules/flake8_import_conventions/rules.rs index 9aca1fb20e..903a936767 100644 --- a/crates/ruff/src/rules/flake8_import_conventions/rules.rs +++ b/crates/ruff/src/rules/flake8_import_conventions/rules.rs @@ -1,12 +1,10 @@ use rustc_hash::FxHashMap; use rustpython_parser::ast::Stmt; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::registry::Diagnostic; -use crate::violation::Violation; - /// ## What it does /// Checks for imports that are typically imported using a common convention, /// like `import pandas as pd`, and enforces that convention. diff --git a/crates/ruff/src/rules/flake8_logging_format/rules.rs b/crates/ruff/src/rules/flake8_logging_format/rules.rs index 3ea7198665..45797a2e66 100644 --- a/crates/ruff/src/rules/flake8_logging_format/rules.rs +++ b/crates/ruff/src/rules/flake8_logging_format/rules.rs @@ -1,12 +1,12 @@ use rustpython_parser::ast::{Constant, Expr, ExprKind, Keyword, Location, Operator}; +use ruff_diagnostics::{Diagnostic, Fix}; use ruff_python_ast::helpers::{find_keyword, is_logger_candidate, SimpleCallArgs}; use ruff_python_ast::logging::LoggingLevel; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic, Rule}; +use crate::registry::{AsRule, Rule}; use crate::rules::flake8_logging_format::violations::{ LoggingExcInfo, LoggingExtraAttrClash, LoggingFString, LoggingPercentFormat, LoggingRedundantExcInfo, LoggingStringConcat, LoggingStringFormat, LoggingWarn, diff --git a/crates/ruff/src/rules/flake8_logging_format/violations.rs b/crates/ruff/src/rules/flake8_logging_format/violations.rs index ad7b297061..622c9b83ec 100644 --- a/crates/ruff/src/rules/flake8_logging_format/violations.rs +++ b/crates/ruff/src/rules/flake8_logging_format/violations.rs @@ -1,7 +1,6 @@ +use ruff_diagnostics::{AlwaysAutofixableViolation, Violation}; use ruff_macros::{derive_message_formats, violation}; -use crate::violation::{AlwaysAutofixableViolation, Violation}; - #[violation] pub struct LoggingStringFormat; diff --git a/crates/ruff/src/rules/flake8_no_pep420/rules.rs b/crates/ruff/src/rules/flake8_no_pep420/rules.rs index d8ff323937..cb6a329605 100644 --- a/crates/ruff/src/rules/flake8_no_pep420/rules.rs +++ b/crates/ruff/src/rules/flake8_no_pep420/rules.rs @@ -1,11 +1,10 @@ use std::path::{Path, PathBuf}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::fs; -use crate::registry::Diagnostic; -use crate::violation::Violation; /// ## What it does /// Checks for packages that are missing an `__init__.py` file. diff --git a/crates/ruff/src/rules/flake8_pie/fixes.rs b/crates/ruff/src/rules/flake8_pie/fixes.rs index 9f1c7e103a..bda5cd8107 100644 --- a/crates/ruff/src/rules/flake8_pie/fixes.rs +++ b/crates/ruff/src/rules/flake8_pie/fixes.rs @@ -1,10 +1,10 @@ use anyhow::{bail, Result}; use libcst_native::{Codegen, CodegenState, Expression, GeneratorExp}; +use ruff_diagnostics::Fix; use ruff_python_ast::source_code::{Locator, Stylist}; use crate::cst::matchers::{match_call, match_expression}; -use crate::fix::Fix; /// (PIE802) Convert `[i for i in a]` into `i for i in a` pub fn fix_unnecessary_comprehension_any_all( diff --git a/crates/ruff/src/rules/flake8_pie/rules.rs b/crates/ruff/src/rules/flake8_pie/rules.rs index f1763ccb31..abb506eb22 100644 --- a/crates/ruff/src/rules/flake8_pie/rules.rs +++ b/crates/ruff/src/rules/flake8_pie/rules.rs @@ -2,6 +2,8 @@ use log::error; use rustc_hash::FxHashSet; use rustpython_parser::ast::{Boolop, Constant, Expr, ExprKind, Keyword, Stmt, StmtKind}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Violation}; +use ruff_diagnostics::{Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::comparable::ComparableExpr; use ruff_python_ast::helpers::{match_trailing_comment, unparse_expr}; @@ -11,10 +13,8 @@ use ruff_python_stdlib::keyword::KWLIST; use crate::autofix::helpers::delete_stmt; use crate::checkers::ast::Checker; -use crate::fix::Fix; use crate::message::Location; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::{AlwaysAutofixableViolation, Violation}; +use crate::registry::AsRule; use super::fixes; diff --git a/crates/ruff/src/rules/flake8_print/rules/print_call.rs b/crates/ruff/src/rules/flake8_print/rules/print_call.rs index 0fa75943ee..4bd201b4a3 100644 --- a/crates/ruff/src/rules/flake8_print/rules/print_call.rs +++ b/crates/ruff/src/rules/flake8_print/rules/print_call.rs @@ -1,12 +1,12 @@ use rustpython_parser::ast::{Expr, Keyword}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::is_const_none; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::Violation; +use crate::registry::AsRule; #[violation] pub struct PrintFound; diff --git a/crates/ruff/src/rules/flake8_pyi/rules/bad_version_info_comparison.rs b/crates/ruff/src/rules/flake8_pyi/rules/bad_version_info_comparison.rs index 8b87fd80cc..0b7bd09144 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/bad_version_info_comparison.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/bad_version_info_comparison.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::{Cmpop, Expr}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; /// ## What it does /// Checks for usages of comparators other than `<` and `>=` for diff --git a/crates/ruff/src/rules/flake8_pyi/rules/docstring_in_stubs.rs b/crates/ruff/src/rules/flake8_pyi/rules/docstring_in_stubs.rs index 6410de1797..500621ed50 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/docstring_in_stubs.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/docstring_in_stubs.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::Expr; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct DocstringInStub; diff --git a/crates/ruff/src/rules/flake8_pyi/rules/non_empty_stub_body.rs b/crates/ruff/src/rules/flake8_pyi/rules/non_empty_stub_body.rs index 49d8cf4006..055c92c081 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/non_empty_stub_body.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/non_empty_stub_body.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::{Constant, ExprKind, Stmt, StmtKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct NonEmptyStubBody; diff --git a/crates/ruff/src/rules/flake8_pyi/rules/pass_statement_stub_body.rs b/crates/ruff/src/rules/flake8_pyi/rules/pass_statement_stub_body.rs index e4a2ad280b..fd81adb2ad 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/pass_statement_stub_body.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/pass_statement_stub_body.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::{Stmt, StmtKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct PassStatementStubBody; diff --git a/crates/ruff/src/rules/flake8_pyi/rules/prefix_type_params.rs b/crates/ruff/src/rules/flake8_pyi/rules/prefix_type_params.rs index 65f2af6f5e..a437549246 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/prefix_type_params.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/prefix_type_params.rs @@ -3,12 +3,11 @@ use std::fmt; use rustpython_parser::ast::{Expr, ExprKind}; use serde::{Deserialize, Serialize}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[derive(Debug, PartialEq, Eq, Serialize, Deserialize)] pub enum VarKind { diff --git a/crates/ruff/src/rules/flake8_pyi/rules/simple_defaults.rs b/crates/ruff/src/rules/flake8_pyi/rules/simple_defaults.rs index bf5c18a6e0..14e213b32c 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/simple_defaults.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/simple_defaults.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::{Arguments, Constant, Expr, ExprKind, Operator, Unaryop}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct TypedArgumentSimpleDefaults; diff --git a/crates/ruff/src/rules/flake8_pyi/rules/type_comment_in_stub.rs b/crates/ruff/src/rules/flake8_pyi/rules/type_comment_in_stub.rs index e8c7e3da46..b53eae44c0 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/type_comment_in_stub.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/type_comment_in_stub.rs @@ -3,12 +3,10 @@ use regex::Regex; use rustpython_parser::lexer::LexResult; use rustpython_parser::Tok; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::registry::Diagnostic; -use crate::violation::Violation; - /// ## What it does /// Checks for the use of type comments (e.g., `x = 1 # type: int`) in stub /// files. diff --git a/crates/ruff/src/rules/flake8_pyi/rules/unrecognized_platform.rs b/crates/ruff/src/rules/flake8_pyi/rules/unrecognized_platform.rs index f21713b54d..af9437aade 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/unrecognized_platform.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/unrecognized_platform.rs @@ -1,11 +1,11 @@ use rustpython_parser::ast::{Cmpop, Constant, Expr, ExprKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::{Diagnostic, Rule}; -use crate::violation::Violation; +use crate::registry::Rule; /// ## What it does /// Check for unrecognized `sys.platform` checks. Platform checks should be diff --git a/crates/ruff/src/rules/flake8_pytest_style/rules/assertion.rs b/crates/ruff/src/rules/flake8_pytest_style/rules/assertion.rs index d6ddcf4074..55a5c8f172 100644 --- a/crates/ruff/src/rules/flake8_pytest_style/rules/assertion.rs +++ b/crates/ruff/src/rules/flake8_pytest_style/rules/assertion.rs @@ -10,6 +10,7 @@ use rustpython_parser::ast::{ Unaryop, }; +use ruff_diagnostics::{AutofixKind, Availability, Diagnostic, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::{has_comments_in, unparse_stmt}; use ruff_python_ast::source_code::{Locator, Stylist}; @@ -19,9 +20,7 @@ use ruff_python_ast::{visitor, whitespace}; use crate::checkers::ast::Checker; use crate::cst::matchers::match_module; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::{AutofixKind, Availability, Violation}; +use crate::registry::AsRule; use super::helpers::is_falsy_constant; use super::unittest_assert::UnittestAssert; diff --git a/crates/ruff/src/rules/flake8_pytest_style/rules/fail.rs b/crates/ruff/src/rules/flake8_pytest_style/rules/fail.rs index f357bef578..a43c5ce1f4 100644 --- a/crates/ruff/src/rules/flake8_pytest_style/rules/fail.rs +++ b/crates/ruff/src/rules/flake8_pytest_style/rules/fail.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::{Expr, Keyword}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::SimpleCallArgs; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; use super::helpers::{is_empty_or_null_string, is_pytest_fail}; diff --git a/crates/ruff/src/rules/flake8_pytest_style/rules/fixture.rs b/crates/ruff/src/rules/flake8_pytest_style/rules/fixture.rs index b7666b5411..27f6bdbf9b 100644 --- a/crates/ruff/src/rules/flake8_pytest_style/rules/fixture.rs +++ b/crates/ruff/src/rules/flake8_pytest_style/rules/fixture.rs @@ -2,6 +2,8 @@ use anyhow::Result; use log::error; use rustpython_parser::ast::{Arguments, Expr, ExprKind, Keyword, Location, Stmt, StmtKind}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Violation}; +use ruff_diagnostics::{Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::{collect_arg_names, collect_call_path}; use ruff_python_ast::source_code::Locator; @@ -11,9 +13,7 @@ use ruff_python_ast::visitor::Visitor; use crate::autofix::helpers::remove_argument; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic, Rule}; -use crate::violation::{AlwaysAutofixableViolation, Violation}; +use crate::registry::{AsRule, Rule}; use super::helpers::{ get_mark_decorators, get_mark_name, is_abstractmethod_decorator, is_pytest_fixture, diff --git a/crates/ruff/src/rules/flake8_pytest_style/rules/imports.rs b/crates/ruff/src/rules/flake8_pytest_style/rules/imports.rs index deaf2c3e4a..11aba8c030 100644 --- a/crates/ruff/src/rules/flake8_pytest_style/rules/imports.rs +++ b/crates/ruff/src/rules/flake8_pytest_style/rules/imports.rs @@ -1,11 +1,9 @@ use rustpython_parser::ast::Stmt; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::registry::Diagnostic; -use crate::violation::Violation; - #[violation] pub struct IncorrectPytestImport; diff --git a/crates/ruff/src/rules/flake8_pytest_style/rules/marks.rs b/crates/ruff/src/rules/flake8_pytest_style/rules/marks.rs index 065f83da25..22bcda769d 100644 --- a/crates/ruff/src/rules/flake8_pytest_style/rules/marks.rs +++ b/crates/ruff/src/rules/flake8_pytest_style/rules/marks.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::{Expr, ExprKind, Location}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic, Rule}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::{AsRule, Rule}; use super::helpers::{get_mark_decorators, get_mark_name}; diff --git a/crates/ruff/src/rules/flake8_pytest_style/rules/parametrize.rs b/crates/ruff/src/rules/flake8_pytest_style/rules/parametrize.rs index 80b3e34a26..e0472e245e 100644 --- a/crates/ruff/src/rules/flake8_pytest_style/rules/parametrize.rs +++ b/crates/ruff/src/rules/flake8_pytest_style/rules/parametrize.rs @@ -1,13 +1,13 @@ use rustpython_parser::ast::{Constant, Expr, ExprContext, ExprKind}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Violation}; +use ruff_diagnostics::{Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::{create_expr, unparse_expr}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic, Rule}; -use crate::violation::{AlwaysAutofixableViolation, Violation}; +use crate::registry::{AsRule, Rule}; use super::super::types; use super::helpers::{is_pytest_parametrize, split_names}; diff --git a/crates/ruff/src/rules/flake8_pytest_style/rules/patch.rs b/crates/ruff/src/rules/flake8_pytest_style/rules/patch.rs index b51e1c33a7..6c4b81754d 100644 --- a/crates/ruff/src/rules/flake8_pytest_style/rules/patch.rs +++ b/crates/ruff/src/rules/flake8_pytest_style/rules/patch.rs @@ -1,15 +1,13 @@ use rustc_hash::FxHashSet; use rustpython_parser::ast::{Expr, ExprKind, Keyword}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::{collect_arg_names, compose_call_path, SimpleCallArgs}; use ruff_python_ast::types::Range; use ruff_python_ast::visitor; use ruff_python_ast::visitor::Visitor; -use crate::registry::Diagnostic; -use crate::violation::Violation; - #[violation] pub struct PatchWithLambda; diff --git a/crates/ruff/src/rules/flake8_pytest_style/rules/raises.rs b/crates/ruff/src/rules/flake8_pytest_style/rules/raises.rs index 8625178f9e..2b35945288 100644 --- a/crates/ruff/src/rules/flake8_pytest_style/rules/raises.rs +++ b/crates/ruff/src/rules/flake8_pytest_style/rules/raises.rs @@ -1,12 +1,12 @@ use rustpython_parser::ast::{Expr, ExprKind, Keyword, Stmt, StmtKind, Withitem}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::{format_call_path, to_call_path}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::{Diagnostic, Rule}; -use crate::violation::Violation; +use crate::registry::Rule; use super::helpers::is_empty_or_null_string; diff --git a/crates/ruff/src/rules/flake8_quotes/rules.rs b/crates/ruff/src/rules/flake8_quotes/rules.rs index d7dce3e4e0..9635289a1c 100644 --- a/crates/ruff/src/rules/flake8_quotes/rules.rs +++ b/crates/ruff/src/rules/flake8_quotes/rules.rs @@ -2,15 +2,14 @@ use rustpython_parser::ast::Location; use rustpython_parser::lexer::LexResult; use rustpython_parser::Tok; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::source_code::Locator; use ruff_python_ast::types::Range; -use crate::fix::Fix; use crate::lex::docstring_detection::StateMachine; -use crate::registry::{Diagnostic, Rule}; +use crate::registry::Rule; use crate::settings::{flags, Settings}; -use crate::violation::AlwaysAutofixableViolation; use super::settings::Quote; diff --git a/crates/ruff/src/rules/flake8_raise/rules/unnecessary_paren_on_raise_exception.rs b/crates/ruff/src/rules/flake8_raise/rules/unnecessary_paren_on_raise_exception.rs index 1f450d8058..93739b8eab 100644 --- a/crates/ruff/src/rules/flake8_raise/rules/unnecessary_paren_on_raise_exception.rs +++ b/crates/ruff/src/rules/flake8_raise/rules/unnecessary_paren_on_raise_exception.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::{Expr, ExprKind}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::match_parens; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; #[violation] pub struct UnnecessaryParenOnRaiseException; diff --git a/crates/ruff/src/rules/flake8_return/rules.rs b/crates/ruff/src/rules/flake8_return/rules.rs index 73a1b45f41..9295d8c5e7 100644 --- a/crates/ruff/src/rules/flake8_return/rules.rs +++ b/crates/ruff/src/rules/flake8_return/rules.rs @@ -1,6 +1,8 @@ use itertools::Itertools; use rustpython_parser::ast::{Constant, Expr, ExprKind, Location, Stmt, StmtKind}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Violation}; +use ruff_diagnostics::{Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::{elif_else_range, end_of_statement}; use ruff_python_ast::types::Range; @@ -8,9 +10,7 @@ use ruff_python_ast::visitor::Visitor; use ruff_python_ast::whitespace::indentation; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic, Rule}; -use crate::violation::{AlwaysAutofixableViolation, Violation}; +use crate::registry::{AsRule, Rule}; use super::branch::Branch; use super::helpers::result_exists; diff --git a/crates/ruff/src/rules/flake8_self/rules/private_member_access.rs b/crates/ruff/src/rules/flake8_self/rules/private_member_access.rs index f0fbb4f781..3154fcdefc 100644 --- a/crates/ruff/src/rules/flake8_self/rules/private_member_access.rs +++ b/crates/ruff/src/rules/flake8_self/rules/private_member_access.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::{Expr, ExprKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::collect_call_path; use ruff_python_ast::types::{Range, ScopeKind}; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; /// ## What it does /// Checks for accesses on "private" class members. diff --git a/crates/ruff/src/rules/flake8_simplify/rules/ast_bool_op.rs b/crates/ruff/src/rules/flake8_simplify/rules/ast_bool_op.rs index a57fadaca2..983a1cef55 100644 --- a/crates/ruff/src/rules/flake8_simplify/rules/ast_bool_op.rs +++ b/crates/ruff/src/rules/flake8_simplify/rules/ast_bool_op.rs @@ -4,14 +4,13 @@ use std::iter; use itertools::Either::{Left, Right}; use rustpython_parser::ast::{Boolop, Cmpop, Constant, Expr, ExprContext, ExprKind, Unaryop}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::{contains_effect, create_expr, has_comments, unparse_expr}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; /// ## What it does /// Checks for multiple `isinstance` calls on the same target. diff --git a/crates/ruff/src/rules/flake8_simplify/rules/ast_expr.rs b/crates/ruff/src/rules/flake8_simplify/rules/ast_expr.rs index 22e5e5eca2..2de0eb345f 100644 --- a/crates/ruff/src/rules/flake8_simplify/rules/ast_expr.rs +++ b/crates/ruff/src/rules/flake8_simplify/rules/ast_expr.rs @@ -1,13 +1,12 @@ use rustpython_parser::ast::{Constant, Expr, ExprKind}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::{create_expr, unparse_expr}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; #[violation] pub struct UseCapitalEnvironmentVariables { diff --git a/crates/ruff/src/rules/flake8_simplify/rules/ast_if.rs b/crates/ruff/src/rules/flake8_simplify/rules/ast_if.rs index f7fdeb85bf..38587687d7 100644 --- a/crates/ruff/src/rules/flake8_simplify/rules/ast_if.rs +++ b/crates/ruff/src/rules/flake8_simplify/rules/ast_if.rs @@ -2,6 +2,7 @@ use log::error; use rustc_hash::FxHashSet; use rustpython_parser::ast::{Cmpop, Constant, Expr, ExprContext, ExprKind, Stmt, StmtKind}; +use ruff_diagnostics::{AutofixKind, Availability, Diagnostic, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::comparable::{ComparableConstant, ComparableExpr, ComparableStmt}; use ruff_python_ast::helpers::{ @@ -11,10 +12,8 @@ use ruff_python_ast::helpers::{ use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; +use crate::registry::AsRule; use crate::rules::flake8_simplify::rules::fix_if; -use crate::violation::{AutofixKind, Availability, Violation}; fn compare_expr(expr1: &ComparableExpr, expr2: &ComparableExpr) -> bool { expr1.eq(expr2) diff --git a/crates/ruff/src/rules/flake8_simplify/rules/ast_ifexp.rs b/crates/ruff/src/rules/flake8_simplify/rules/ast_ifexp.rs index db58679b28..5c16eb86a8 100644 --- a/crates/ruff/src/rules/flake8_simplify/rules/ast_ifexp.rs +++ b/crates/ruff/src/rules/flake8_simplify/rules/ast_ifexp.rs @@ -1,13 +1,12 @@ use rustpython_parser::ast::{Constant, Expr, ExprContext, ExprKind, Unaryop}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::{create_expr, unparse_expr}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; #[violation] pub struct IfExprWithTrueFalse { diff --git a/crates/ruff/src/rules/flake8_simplify/rules/ast_unary_op.rs b/crates/ruff/src/rules/flake8_simplify/rules/ast_unary_op.rs index 7092cdc4b9..a512777929 100644 --- a/crates/ruff/src/rules/flake8_simplify/rules/ast_unary_op.rs +++ b/crates/ruff/src/rules/flake8_simplify/rules/ast_unary_op.rs @@ -1,13 +1,12 @@ use rustpython_parser::ast::{Cmpop, Expr, ExprKind, Stmt, StmtKind, Unaryop}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::{create_expr, unparse_expr}; use ruff_python_ast::types::{Range, ScopeKind}; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; #[violation] pub struct NegateEqualOp { diff --git a/crates/ruff/src/rules/flake8_simplify/rules/ast_with.rs b/crates/ruff/src/rules/flake8_simplify/rules/ast_with.rs index 8c884a314f..800a5830a3 100644 --- a/crates/ruff/src/rules/flake8_simplify/rules/ast_with.rs +++ b/crates/ruff/src/rules/flake8_simplify/rules/ast_with.rs @@ -1,13 +1,14 @@ use log::error; use rustpython_parser::ast::{Located, Stmt, StmtKind, Withitem}; +use ruff_diagnostics::Diagnostic; +use ruff_diagnostics::{AutofixKind, Availability, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::{first_colon_range, has_comments_in}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::{AutofixKind, Availability, Violation}; +use crate::registry::AsRule; use super::fix_with; diff --git a/crates/ruff/src/rules/flake8_simplify/rules/fix_if.rs b/crates/ruff/src/rules/flake8_simplify/rules/fix_if.rs index 25c7b3a6b2..af8ecd4e06 100644 --- a/crates/ruff/src/rules/flake8_simplify/rules/fix_if.rs +++ b/crates/ruff/src/rules/flake8_simplify/rules/fix_if.rs @@ -6,12 +6,12 @@ use libcst_native::{ }; use rustpython_parser::ast::Location; +use ruff_diagnostics::Fix; use ruff_python_ast::source_code::{Locator, Stylist}; use ruff_python_ast::types::Range; use ruff_python_ast::whitespace; use crate::cst::matchers::match_module; -use crate::fix::Fix; fn parenthesize_and_operand(expr: Expression) -> Expression { match &expr { diff --git a/crates/ruff/src/rules/flake8_simplify/rules/fix_with.rs b/crates/ruff/src/rules/flake8_simplify/rules/fix_with.rs index 59fda90a0d..ad0f6e54e9 100644 --- a/crates/ruff/src/rules/flake8_simplify/rules/fix_with.rs +++ b/crates/ruff/src/rules/flake8_simplify/rules/fix_with.rs @@ -2,12 +2,12 @@ use anyhow::{bail, Result}; use libcst_native::{Codegen, CodegenState, CompoundStatement, Statement, Suite, With}; use rustpython_parser::ast::Location; +use ruff_diagnostics::Fix; use ruff_python_ast::source_code::{Locator, Stylist}; use ruff_python_ast::types::Range; use ruff_python_ast::whitespace; use crate::cst::matchers::match_module; -use crate::fix::Fix; /// (SIM117) Convert `with a: with b:` to `with a, b:`. pub(crate) fn fix_multiple_with_statements( diff --git a/crates/ruff/src/rules/flake8_simplify/rules/key_in_dict.rs b/crates/ruff/src/rules/flake8_simplify/rules/key_in_dict.rs index 64cf9a1da5..365ef1fe53 100644 --- a/crates/ruff/src/rules/flake8_simplify/rules/key_in_dict.rs +++ b/crates/ruff/src/rules/flake8_simplify/rules/key_in_dict.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::{Cmpop, Expr, ExprKind}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; #[violation] pub struct KeyInDict { diff --git a/crates/ruff/src/rules/flake8_simplify/rules/open_file_with_context_handler.rs b/crates/ruff/src/rules/flake8_simplify/rules/open_file_with_context_handler.rs index 65dd99190c..32aa270c91 100644 --- a/crates/ruff/src/rules/flake8_simplify/rules/open_file_with_context_handler.rs +++ b/crates/ruff/src/rules/flake8_simplify/rules/open_file_with_context_handler.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::{Expr, ExprKind, StmtKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct OpenFileWithContextHandler; diff --git a/crates/ruff/src/rules/flake8_simplify/rules/reimplemented_builtin.rs b/crates/ruff/src/rules/flake8_simplify/rules/reimplemented_builtin.rs index 8e9821516a..80c7b63417 100644 --- a/crates/ruff/src/rules/flake8_simplify/rules/reimplemented_builtin.rs +++ b/crates/ruff/src/rules/flake8_simplify/rules/reimplemented_builtin.rs @@ -2,15 +2,14 @@ use rustpython_parser::ast::{ Cmpop, Comprehension, Constant, Expr, ExprContext, ExprKind, Location, Stmt, StmtKind, Unaryop, }; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::{create_expr, create_stmt, unparse_stmt}; use ruff_python_ast::source_code::Stylist; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic, Rule}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::{AsRule, Rule}; #[violation] pub struct ReimplementedBuiltin { diff --git a/crates/ruff/src/rules/flake8_simplify/rules/return_in_try_except_finally.rs b/crates/ruff/src/rules/flake8_simplify/rules/return_in_try_except_finally.rs index e01cde288b..38cbc9e50c 100644 --- a/crates/ruff/src/rules/flake8_simplify/rules/return_in_try_except_finally.rs +++ b/crates/ruff/src/rules/flake8_simplify/rules/return_in_try_except_finally.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::{Excepthandler, ExcepthandlerKind, Stmt, StmtKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct ReturnInTryExceptFinally; diff --git a/crates/ruff/src/rules/flake8_simplify/rules/use_contextlib_suppress.rs b/crates/ruff/src/rules/flake8_simplify/rules/use_contextlib_suppress.rs index 9abe57e80e..866c3aaa3a 100644 --- a/crates/ruff/src/rules/flake8_simplify/rules/use_contextlib_suppress.rs +++ b/crates/ruff/src/rules/flake8_simplify/rules/use_contextlib_suppress.rs @@ -1,13 +1,12 @@ use rustpython_parser::ast::{Excepthandler, ExcepthandlerKind, Located, Stmt, StmtKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers; use ruff_python_ast::helpers::compose_call_path; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct UseContextlibSuppress { diff --git a/crates/ruff/src/rules/flake8_simplify/rules/yoda_conditions.rs b/crates/ruff/src/rules/flake8_simplify/rules/yoda_conditions.rs index 71a0916072..3cdfe96905 100644 --- a/crates/ruff/src/rules/flake8_simplify/rules/yoda_conditions.rs +++ b/crates/ruff/src/rules/flake8_simplify/rules/yoda_conditions.rs @@ -2,6 +2,7 @@ use anyhow::Result; use libcst_native::{Codegen, CodegenState, CompOp}; use rustpython_parser::ast::{Cmpop, Expr, ExprKind, Unaryop}; +use ruff_diagnostics::{AutofixKind, Availability, Diagnostic, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::source_code::{Locator, Stylist}; use ruff_python_ast::types::Range; @@ -9,9 +10,7 @@ use ruff_python_stdlib::str::{self}; use crate::checkers::ast::Checker; use crate::cst::matchers::{match_comparison, match_expression}; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::{AutofixKind, Availability, Violation}; +use crate::registry::AsRule; #[violation] pub struct YodaConditions { diff --git a/crates/ruff/src/rules/flake8_tidy_imports/banned_api.rs b/crates/ruff/src/rules/flake8_tidy_imports/banned_api.rs index 4eed7d02b2..eba8c682a7 100644 --- a/crates/ruff/src/rules/flake8_tidy_imports/banned_api.rs +++ b/crates/ruff/src/rules/flake8_tidy_imports/banned_api.rs @@ -3,12 +3,11 @@ use rustpython_parser::ast::{Alias, Expr, Located}; use schemars::JsonSchema; use serde::{Deserialize, Serialize}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation, CacheKey}; use ruff_python_ast::types::{CallPath, Range}; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; pub type Settings = FxHashMap; diff --git a/crates/ruff/src/rules/flake8_tidy_imports/relative_imports.rs b/crates/ruff/src/rules/flake8_tidy_imports/relative_imports.rs index f60016a0c1..a499fb2bd8 100644 --- a/crates/ruff/src/rules/flake8_tidy_imports/relative_imports.rs +++ b/crates/ruff/src/rules/flake8_tidy_imports/relative_imports.rs @@ -2,6 +2,7 @@ use rustpython_parser::ast::{Stmt, StmtKind}; use schemars::JsonSchema; use serde::{Deserialize, Serialize}; +use ruff_diagnostics::{AutofixKind, Availability, Diagnostic, Fix, Violation}; use ruff_macros::{derive_message_formats, violation, CacheKey}; use ruff_python_ast::helpers::{create_stmt, from_relative_import, unparse_stmt}; use ruff_python_ast::source_code::Stylist; @@ -9,9 +10,7 @@ use ruff_python_ast::types::Range; use ruff_python_stdlib::identifiers::is_module_name; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::{AutofixKind, Availability, Violation}; +use crate::registry::AsRule; pub type Settings = Strictness; diff --git a/crates/ruff/src/rules/flake8_type_checking/rules/empty_type_checking_block.rs b/crates/ruff/src/rules/flake8_type_checking/rules/empty_type_checking_block.rs index b3e9d8e9ce..d28755f651 100644 --- a/crates/ruff/src/rules/flake8_type_checking/rules/empty_type_checking_block.rs +++ b/crates/ruff/src/rules/flake8_type_checking/rules/empty_type_checking_block.rs @@ -1,13 +1,13 @@ use log::error; use rustpython_parser::ast::{Stmt, StmtKind}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::{Range, RefEquality}; use crate::autofix::helpers::delete_stmt; use crate::checkers::ast::Checker; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; #[violation] pub struct EmptyTypeCheckingBlock; diff --git a/crates/ruff/src/rules/flake8_type_checking/rules/runtime_import_in_type_checking_block.rs b/crates/ruff/src/rules/flake8_type_checking/rules/runtime_import_in_type_checking_block.rs index aa81b5aef6..12ee0a2560 100644 --- a/crates/ruff/src/rules/flake8_type_checking/rules/runtime_import_in_type_checking_block.rs +++ b/crates/ruff/src/rules/flake8_type_checking/rules/runtime_import_in_type_checking_block.rs @@ -1,9 +1,7 @@ +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::{Binding, BindingKind, ExecutionContext}; -use crate::registry::Diagnostic; -use crate::violation::Violation; - #[violation] pub struct RuntimeImportInTypeCheckingBlock { pub full_name: String, diff --git a/crates/ruff/src/rules/flake8_type_checking/rules/typing_only_runtime_import.rs b/crates/ruff/src/rules/flake8_type_checking/rules/typing_only_runtime_import.rs index 883817d984..c376b4c2e3 100644 --- a/crates/ruff/src/rules/flake8_type_checking/rules/typing_only_runtime_import.rs +++ b/crates/ruff/src/rules/flake8_type_checking/rules/typing_only_runtime_import.rs @@ -1,12 +1,11 @@ use std::path::Path; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::{Binding, BindingKind, ExecutionContext}; -use crate::registry::Diagnostic; use crate::rules::isort::{categorize, ImportType}; use crate::settings::Settings; -use crate::violation::Violation; #[violation] pub struct TypingOnlyFirstPartyImport { diff --git a/crates/ruff/src/rules/flake8_unused_arguments/rules.rs b/crates/ruff/src/rules/flake8_unused_arguments/rules.rs index ac5f5aa543..54cb212f75 100644 --- a/crates/ruff/src/rules/flake8_unused_arguments/rules.rs +++ b/crates/ruff/src/rules/flake8_unused_arguments/rules.rs @@ -4,6 +4,7 @@ use regex::Regex; use rustc_hash::FxHashMap; use rustpython_parser::ast::{Arg, Arguments}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::function_type; use ruff_python_ast::function_type::FunctionType; @@ -11,8 +12,6 @@ use ruff_python_ast::types::{Binding, FunctionDef, Lambda, Scope, ScopeKind}; use ruff_python_ast::visibility; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; use super::helpers; use super::types::Argumentable; diff --git a/crates/ruff/src/rules/flake8_unused_arguments/types.rs b/crates/ruff/src/rules/flake8_unused_arguments/types.rs index 26366c7fcd..fcad369c00 100644 --- a/crates/ruff/src/rules/flake8_unused_arguments/types.rs +++ b/crates/ruff/src/rules/flake8_unused_arguments/types.rs @@ -1,4 +1,6 @@ -use crate::registry::{DiagnosticKind, Rule}; +use ruff_diagnostics::DiagnosticKind; + +use crate::registry::Rule; use super::rules; diff --git a/crates/ruff/src/rules/flake8_use_pathlib/helpers.rs b/crates/ruff/src/rules/flake8_use_pathlib/helpers.rs index d66e94eb17..eb3d542784 100644 --- a/crates/ruff/src/rules/flake8_use_pathlib/helpers.rs +++ b/crates/ruff/src/rules/flake8_use_pathlib/helpers.rs @@ -1,9 +1,10 @@ use rustpython_parser::ast::Expr; +use ruff_diagnostics::{Diagnostic, DiagnosticKind}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::{AsRule, Diagnostic, DiagnosticKind}; +use crate::registry::AsRule; use crate::rules::flake8_use_pathlib::violations::{ PathlibAbspath, PathlibBasename, PathlibChmod, PathlibDirname, PathlibExists, PathlibExpanduser, PathlibGetcwd, PathlibIsAbs, PathlibIsDir, PathlibIsFile, PathlibIsLink, diff --git a/crates/ruff/src/rules/flake8_use_pathlib/violations.rs b/crates/ruff/src/rules/flake8_use_pathlib/violations.rs index f0cef2a7e8..03399e849c 100644 --- a/crates/ruff/src/rules/flake8_use_pathlib/violations.rs +++ b/crates/ruff/src/rules/flake8_use_pathlib/violations.rs @@ -1,7 +1,6 @@ +use ruff_diagnostics::Violation; use ruff_macros::{derive_message_formats, violation}; -use crate::violation::Violation; - // PTH100 #[violation] pub struct PathlibAbspath; diff --git a/crates/ruff/src/rules/isort/rules/add_required_imports.rs b/crates/ruff/src/rules/isort/rules/add_required_imports.rs index b4a7784180..2d0408e464 100644 --- a/crates/ruff/src/rules/isort/rules/add_required_imports.rs +++ b/crates/ruff/src/rules/isort/rules/add_required_imports.rs @@ -4,15 +4,14 @@ use log::error; use rustpython_parser as parser; use rustpython_parser::ast::{Location, StmtKind, Suite}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::is_docstring_stmt; use ruff_python_ast::source_code::{Locator, Stylist}; use ruff_python_ast::types::Range; -use crate::fix::Fix; -use crate::registry::{Diagnostic, Rule}; +use crate::registry::Rule; use crate::settings::{flags, Settings}; -use crate::violation::AlwaysAutofixableViolation; use super::super::helpers; use super::super::track::Block; diff --git a/crates/ruff/src/rules/isort/rules/organize_imports.rs b/crates/ruff/src/rules/isort/rules/organize_imports.rs index b288a9d3d4..a8c41c307a 100644 --- a/crates/ruff/src/rules/isort/rules/organize_imports.rs +++ b/crates/ruff/src/rules/isort/rules/organize_imports.rs @@ -4,6 +4,7 @@ use itertools::{EitherOrBoth, Itertools}; use rustpython_parser::ast::{Location, Stmt}; use textwrap::indent; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::{ count_trailing_lines, followed_by_multi_statement_line, preceded_by_multi_statement_line, @@ -12,10 +13,8 @@ use ruff_python_ast::source_code::{Indexer, Locator, Stylist}; use ruff_python_ast::types::Range; use ruff_python_ast::whitespace::leading_space; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; +use crate::registry::AsRule; use crate::settings::{flags, Settings}; -use crate::violation::AlwaysAutofixableViolation; use super::super::track::Block; use super::super::{comments, format_imports}; diff --git a/crates/ruff/src/rules/mccabe/rules.rs b/crates/ruff/src/rules/mccabe/rules.rs index c84b0c4e37..79c7500e2a 100644 --- a/crates/ruff/src/rules/mccabe/rules.rs +++ b/crates/ruff/src/rules/mccabe/rules.rs @@ -1,12 +1,10 @@ use rustpython_parser::ast::{ExcepthandlerKind, ExprKind, Stmt, StmtKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::identifier_range; use ruff_python_ast::source_code::Locator; -use crate::registry::Diagnostic; -use crate::violation::Violation; - /// ## What it does /// Checks for functions with a high `McCabe` complexity. /// diff --git a/crates/ruff/src/rules/numpy/rules/deprecated_type_alias.rs b/crates/ruff/src/rules/numpy/rules/deprecated_type_alias.rs index d3af757be7..d9cbbd3976 100644 --- a/crates/ruff/src/rules/numpy/rules/deprecated_type_alias.rs +++ b/crates/ruff/src/rules/numpy/rules/deprecated_type_alias.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::Expr; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; /// ## What it does /// Checks for deprecated NumPy type aliases. diff --git a/crates/ruff/src/rules/numpy/rules/numpy_legacy_random.rs b/crates/ruff/src/rules/numpy/rules/numpy_legacy_random.rs index 0a806d43bf..3e8a340abf 100644 --- a/crates/ruff/src/rules/numpy/rules/numpy_legacy_random.rs +++ b/crates/ruff/src/rules/numpy/rules/numpy_legacy_random.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::Expr; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; /// ## What it does /// Checks for the use of legacy `np.random` function calls. diff --git a/crates/ruff/src/rules/pandas_vet/fixes.rs b/crates/ruff/src/rules/pandas_vet/fixes.rs index 6951e6eb8d..67f51a8810 100644 --- a/crates/ruff/src/rules/pandas_vet/fixes.rs +++ b/crates/ruff/src/rules/pandas_vet/fixes.rs @@ -1,12 +1,12 @@ use rustpython_parser::ast::{Expr, ExprKind, Keyword, Location}; +use ruff_diagnostics::Fix; use ruff_python_ast::helpers; use ruff_python_ast::source_code::Locator; use ruff_python_ast::types::Range; use crate::autofix::apply_fix; use crate::autofix::helpers::remove_argument; -use crate::fix::Fix; fn match_name(expr: &Expr) -> Option<&str> { if let ExprKind::Call { func, .. } = &expr.node { diff --git a/crates/ruff/src/rules/pandas_vet/rules/assignment_to_df.rs b/crates/ruff/src/rules/pandas_vet/rules/assignment_to_df.rs index a9c2f1509b..68c6d7a253 100644 --- a/crates/ruff/src/rules/pandas_vet/rules/assignment_to_df.rs +++ b/crates/ruff/src/rules/pandas_vet/rules/assignment_to_df.rs @@ -1,11 +1,9 @@ use rustpython_parser::ast::{Expr, ExprKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::registry::Diagnostic; -use crate::violation::Violation; - #[violation] pub struct DfIsABadVariableName; diff --git a/crates/ruff/src/rules/pandas_vet/rules/check_attr.rs b/crates/ruff/src/rules/pandas_vet/rules/check_attr.rs index 424fa780bd..30e1a9b30e 100644 --- a/crates/ruff/src/rules/pandas_vet/rules/check_attr.rs +++ b/crates/ruff/src/rules/pandas_vet/rules/check_attr.rs @@ -1,12 +1,13 @@ use rustpython_parser::ast::{Expr, ExprKind}; +use ruff_diagnostics::Violation; +use ruff_diagnostics::{Diagnostic, DiagnosticKind}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::{BindingKind, Range}; use crate::checkers::ast::Checker; -use crate::registry::{Diagnostic, DiagnosticKind, Rule}; +use crate::registry::Rule; use crate::rules::pandas_vet::helpers::is_dataframe_candidate; -use crate::violation::Violation; #[violation] pub struct UseOfDotIx; diff --git a/crates/ruff/src/rules/pandas_vet/rules/check_call.rs b/crates/ruff/src/rules/pandas_vet/rules/check_call.rs index 38a9c8eec1..96c648ee6c 100644 --- a/crates/ruff/src/rules/pandas_vet/rules/check_call.rs +++ b/crates/ruff/src/rules/pandas_vet/rules/check_call.rs @@ -1,12 +1,13 @@ use rustpython_parser::ast::{Expr, ExprKind}; +use ruff_diagnostics::Violation; +use ruff_diagnostics::{Diagnostic, DiagnosticKind}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::{BindingKind, Range}; use crate::checkers::ast::Checker; -use crate::registry::{Diagnostic, DiagnosticKind, Rule}; +use crate::registry::Rule; use crate::rules::pandas_vet::helpers::is_dataframe_candidate; -use crate::violation::Violation; #[violation] pub struct UseOfDotIsNull; diff --git a/crates/ruff/src/rules/pandas_vet/rules/inplace_argument.rs b/crates/ruff/src/rules/pandas_vet/rules/inplace_argument.rs index 1d0c0d5a53..c797d53c5f 100644 --- a/crates/ruff/src/rules/pandas_vet/rules/inplace_argument.rs +++ b/crates/ruff/src/rules/pandas_vet/rules/inplace_argument.rs @@ -1,12 +1,12 @@ use rustpython_parser::ast::{Constant, Expr, ExprKind, Keyword}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::{AsRule, Diagnostic}; +use crate::registry::AsRule; use crate::rules::pandas_vet::fixes::fix_inplace_argument; -use crate::violation::AlwaysAutofixableViolation; /// ## What it does /// Checks for `inplace=True` usages in `pandas` function and method diff --git a/crates/ruff/src/rules/pandas_vet/rules/pd_merge.rs b/crates/ruff/src/rules/pandas_vet/rules/pd_merge.rs index f9ac16d474..5e46796980 100644 --- a/crates/ruff/src/rules/pandas_vet/rules/pd_merge.rs +++ b/crates/ruff/src/rules/pandas_vet/rules/pd_merge.rs @@ -1,11 +1,9 @@ use rustpython_parser::ast::{Expr, ExprKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::registry::Diagnostic; -use crate::violation::Violation; - #[violation] pub struct UseOfPdMerge; diff --git a/crates/ruff/src/rules/pep8_naming/rules/camelcase_imported_as_acronym.rs b/crates/ruff/src/rules/pep8_naming/rules/camelcase_imported_as_acronym.rs index 30f7829409..221d822743 100644 --- a/crates/ruff/src/rules/pep8_naming/rules/camelcase_imported_as_acronym.rs +++ b/crates/ruff/src/rules/pep8_naming/rules/camelcase_imported_as_acronym.rs @@ -1,13 +1,12 @@ use rustpython_parser::ast::Stmt; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::identifier_range; use ruff_python_ast::source_code::Locator; use ruff_python_stdlib::str::{self}; -use crate::registry::Diagnostic; use crate::rules::pep8_naming::helpers; -use crate::violation::Violation; /// ## What it does /// Checks for `CamelCase` imports that are aliased as acronyms. diff --git a/crates/ruff/src/rules/pep8_naming/rules/camelcase_imported_as_constant.rs b/crates/ruff/src/rules/pep8_naming/rules/camelcase_imported_as_constant.rs index 610a7079b1..5966470385 100644 --- a/crates/ruff/src/rules/pep8_naming/rules/camelcase_imported_as_constant.rs +++ b/crates/ruff/src/rules/pep8_naming/rules/camelcase_imported_as_constant.rs @@ -1,13 +1,12 @@ use rustpython_parser::ast::Stmt; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::identifier_range; use ruff_python_ast::source_code::Locator; use ruff_python_stdlib::str::{self}; -use crate::registry::Diagnostic; use crate::rules::pep8_naming::helpers; -use crate::violation::Violation; /// ## What it does /// Checks for `CamelCase` imports that are aliased to constant-style names. diff --git a/crates/ruff/src/rules/pep8_naming/rules/camelcase_imported_as_lowercase.rs b/crates/ruff/src/rules/pep8_naming/rules/camelcase_imported_as_lowercase.rs index 32d062a204..55c54e7746 100644 --- a/crates/ruff/src/rules/pep8_naming/rules/camelcase_imported_as_lowercase.rs +++ b/crates/ruff/src/rules/pep8_naming/rules/camelcase_imported_as_lowercase.rs @@ -1,13 +1,12 @@ use rustpython_parser::ast::Stmt; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::identifier_range; use ruff_python_ast::source_code::Locator; use ruff_python_stdlib::str; -use crate::registry::Diagnostic; use crate::rules::pep8_naming::helpers; -use crate::violation::Violation; /// ## What it does /// Checks for `CamelCase` imports that are aliased to lowercase names. diff --git a/crates/ruff/src/rules/pep8_naming/rules/constant_imported_as_non_constant.rs b/crates/ruff/src/rules/pep8_naming/rules/constant_imported_as_non_constant.rs index a90adff2c9..ae14021b36 100644 --- a/crates/ruff/src/rules/pep8_naming/rules/constant_imported_as_non_constant.rs +++ b/crates/ruff/src/rules/pep8_naming/rules/constant_imported_as_non_constant.rs @@ -1,13 +1,11 @@ use rustpython_parser::ast::Stmt; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::identifier_range; use ruff_python_ast::source_code::Locator; use ruff_python_stdlib::str; -use crate::registry::Diagnostic; -use crate::violation::Violation; - /// ## What it does /// Checks for constant imports that are aliased to non-constant-style /// names. diff --git a/crates/ruff/src/rules/pep8_naming/rules/dunder_function_name.rs b/crates/ruff/src/rules/pep8_naming/rules/dunder_function_name.rs index fba964cfe5..fa9b9d4319 100644 --- a/crates/ruff/src/rules/pep8_naming/rules/dunder_function_name.rs +++ b/crates/ruff/src/rules/pep8_naming/rules/dunder_function_name.rs @@ -1,13 +1,11 @@ use rustpython_parser::ast::Stmt; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::identifier_range; use ruff_python_ast::source_code::Locator; use ruff_python_ast::types::{Scope, ScopeKind}; -use crate::registry::Diagnostic; -use crate::violation::Violation; - /// ## What it does /// Checks for functions with "dunder" names (that is, names with two /// leading and trailing underscores) that are not documented. diff --git a/crates/ruff/src/rules/pep8_naming/rules/error_suffix_on_exception_name.rs b/crates/ruff/src/rules/pep8_naming/rules/error_suffix_on_exception_name.rs index cb807aeac1..c588a9f2d3 100644 --- a/crates/ruff/src/rules/pep8_naming/rules/error_suffix_on_exception_name.rs +++ b/crates/ruff/src/rules/pep8_naming/rules/error_suffix_on_exception_name.rs @@ -1,12 +1,10 @@ use rustpython_parser::ast::{Expr, ExprKind, Stmt}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::identifier_range; use ruff_python_ast::source_code::Locator; -use crate::registry::Diagnostic; -use crate::violation::Violation; - /// ## What it does /// Checks for custom exception definitions that omit the `Error` suffix. /// diff --git a/crates/ruff/src/rules/pep8_naming/rules/invalid_argument_name.rs b/crates/ruff/src/rules/pep8_naming/rules/invalid_argument_name.rs index f9627b3f8b..6e7521787d 100644 --- a/crates/ruff/src/rules/pep8_naming/rules/invalid_argument_name.rs +++ b/crates/ruff/src/rules/pep8_naming/rules/invalid_argument_name.rs @@ -1,11 +1,9 @@ use rustpython_parser::ast::Arg; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::registry::Diagnostic; -use crate::violation::Violation; - #[violation] pub struct InvalidArgumentName { pub name: String, diff --git a/crates/ruff/src/rules/pep8_naming/rules/invalid_class_name.rs b/crates/ruff/src/rules/pep8_naming/rules/invalid_class_name.rs index 29ef187593..2fdd366249 100644 --- a/crates/ruff/src/rules/pep8_naming/rules/invalid_class_name.rs +++ b/crates/ruff/src/rules/pep8_naming/rules/invalid_class_name.rs @@ -1,12 +1,10 @@ use rustpython_parser::ast::Stmt; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::identifier_range; use ruff_python_ast::source_code::Locator; -use crate::registry::Diagnostic; -use crate::violation::Violation; - /// ## What it does /// Checks for class names that do not follow the `CamelCase` convention. /// diff --git a/crates/ruff/src/rules/pep8_naming/rules/invalid_first_argument_name_for_class_method.rs b/crates/ruff/src/rules/pep8_naming/rules/invalid_first_argument_name_for_class_method.rs index 3f26ff0496..233c22c55d 100644 --- a/crates/ruff/src/rules/pep8_naming/rules/invalid_first_argument_name_for_class_method.rs +++ b/crates/ruff/src/rules/pep8_naming/rules/invalid_first_argument_name_for_class_method.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::{Arguments, Expr}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::function_type; use ruff_python_ast::types::{Range, Scope}; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; /// ## What it does /// Checks for class methods that use a name other than `cls` for their diff --git a/crates/ruff/src/rules/pep8_naming/rules/invalid_first_argument_name_for_method.rs b/crates/ruff/src/rules/pep8_naming/rules/invalid_first_argument_name_for_method.rs index 8915e91861..b7658e419c 100644 --- a/crates/ruff/src/rules/pep8_naming/rules/invalid_first_argument_name_for_method.rs +++ b/crates/ruff/src/rules/pep8_naming/rules/invalid_first_argument_name_for_method.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::{Arguments, Expr}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::function_type; use ruff_python_ast::types::{Range, Scope}; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; /// ## What it does /// Checks for instance methods that use a name other than `self` for their diff --git a/crates/ruff/src/rules/pep8_naming/rules/invalid_function_name.rs b/crates/ruff/src/rules/pep8_naming/rules/invalid_function_name.rs index 18176bcf54..92921f3f96 100644 --- a/crates/ruff/src/rules/pep8_naming/rules/invalid_function_name.rs +++ b/crates/ruff/src/rules/pep8_naming/rules/invalid_function_name.rs @@ -1,12 +1,10 @@ use rustpython_parser::ast::Stmt; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::identifier_range; use ruff_python_ast::source_code::Locator; -use crate::registry::Diagnostic; -use crate::violation::Violation; - /// ## What it does /// Checks for functions names that do not follow the `snake_case` naming /// convention. diff --git a/crates/ruff/src/rules/pep8_naming/rules/invalid_module_name.rs b/crates/ruff/src/rules/pep8_naming/rules/invalid_module_name.rs index c5ec23f87e..f5c6697477 100644 --- a/crates/ruff/src/rules/pep8_naming/rules/invalid_module_name.rs +++ b/crates/ruff/src/rules/pep8_naming/rules/invalid_module_name.rs @@ -1,12 +1,10 @@ use std::path::Path; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use ruff_python_stdlib::identifiers::is_module_name; -use crate::registry::Diagnostic; -use crate::violation::Violation; - /// ## What it does /// Checks for module names that do not follow the `snake_case` naming /// convention. diff --git a/crates/ruff/src/rules/pep8_naming/rules/lowercase_imported_as_non_lowercase.rs b/crates/ruff/src/rules/pep8_naming/rules/lowercase_imported_as_non_lowercase.rs index a57425b90e..382a77518b 100644 --- a/crates/ruff/src/rules/pep8_naming/rules/lowercase_imported_as_non_lowercase.rs +++ b/crates/ruff/src/rules/pep8_naming/rules/lowercase_imported_as_non_lowercase.rs @@ -1,13 +1,11 @@ use rustpython_parser::ast::Stmt; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::identifier_range; use ruff_python_ast::source_code::Locator; use ruff_python_stdlib::str; -use crate::registry::Diagnostic; -use crate::violation::Violation; - /// ## What it does /// Checks for lowercase imports that are aliased to non-lowercase names. /// diff --git a/crates/ruff/src/rules/pep8_naming/rules/mixed_case_variable_in_class_scope.rs b/crates/ruff/src/rules/pep8_naming/rules/mixed_case_variable_in_class_scope.rs index aa32895548..68534cf6c4 100644 --- a/crates/ruff/src/rules/pep8_naming/rules/mixed_case_variable_in_class_scope.rs +++ b/crates/ruff/src/rules/pep8_naming/rules/mixed_case_variable_in_class_scope.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::{Expr, Stmt}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; use crate::rules::pep8_naming::helpers; -use crate::violation::Violation; #[violation] pub struct MixedCaseVariableInClassScope { diff --git a/crates/ruff/src/rules/pep8_naming/rules/mixed_case_variable_in_global_scope.rs b/crates/ruff/src/rules/pep8_naming/rules/mixed_case_variable_in_global_scope.rs index f03a7eaaa9..6083225a4f 100644 --- a/crates/ruff/src/rules/pep8_naming/rules/mixed_case_variable_in_global_scope.rs +++ b/crates/ruff/src/rules/pep8_naming/rules/mixed_case_variable_in_global_scope.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::{Expr, Stmt}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; use crate::rules::pep8_naming::helpers; -use crate::violation::Violation; #[violation] pub struct MixedCaseVariableInGlobalScope { diff --git a/crates/ruff/src/rules/pep8_naming/rules/non_lowercase_variable_in_function.rs b/crates/ruff/src/rules/pep8_naming/rules/non_lowercase_variable_in_function.rs index 24f0169078..4c20f595ee 100644 --- a/crates/ruff/src/rules/pep8_naming/rules/non_lowercase_variable_in_function.rs +++ b/crates/ruff/src/rules/pep8_naming/rules/non_lowercase_variable_in_function.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::{Expr, Stmt}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; use crate::rules::pep8_naming::helpers; -use crate::violation::Violation; /// ## What it does /// Checks for the use of non-lowercase variable names in functions. diff --git a/crates/ruff/src/rules/pycodestyle/rules/ambiguous_class_name.rs b/crates/ruff/src/rules/pycodestyle/rules/ambiguous_class_name.rs index 5301562360..d59eea6185 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/ambiguous_class_name.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/ambiguous_class_name.rs @@ -1,9 +1,8 @@ +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::registry::Diagnostic; use crate::rules::pycodestyle::helpers::is_ambiguous_name; -use crate::violation::Violation; #[violation] pub struct AmbiguousClassName(pub String); diff --git a/crates/ruff/src/rules/pycodestyle/rules/ambiguous_function_name.rs b/crates/ruff/src/rules/pycodestyle/rules/ambiguous_function_name.rs index 9e830c1da9..64753829da 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/ambiguous_function_name.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/ambiguous_function_name.rs @@ -1,9 +1,8 @@ +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::registry::Diagnostic; use crate::rules::pycodestyle::helpers::is_ambiguous_name; -use crate::violation::Violation; #[violation] pub struct AmbiguousFunctionName(pub String); diff --git a/crates/ruff/src/rules/pycodestyle/rules/ambiguous_variable_name.rs b/crates/ruff/src/rules/pycodestyle/rules/ambiguous_variable_name.rs index c77ffbbafb..a6f807d1a8 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/ambiguous_variable_name.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/ambiguous_variable_name.rs @@ -1,9 +1,8 @@ +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::registry::Diagnostic; use crate::rules::pycodestyle::helpers::is_ambiguous_name; -use crate::violation::Violation; #[violation] pub struct AmbiguousVariableName(pub String); diff --git a/crates/ruff/src/rules/pycodestyle/rules/bare_except.rs b/crates/ruff/src/rules/pycodestyle/rules/bare_except.rs index 4e3ec1eb4c..d9ea3adf03 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/bare_except.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/bare_except.rs @@ -1,12 +1,10 @@ use rustpython_parser::ast::{Excepthandler, Expr, Stmt, StmtKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::except_range; use ruff_python_ast::source_code::Locator; -use crate::registry::Diagnostic; -use crate::violation::Violation; - /// ## What it does /// Checks for bare `except` catches in `try`-`except` statements. /// diff --git a/crates/ruff/src/rules/pycodestyle/rules/compound_statements.rs b/crates/ruff/src/rules/pycodestyle/rules/compound_statements.rs index bf20921425..37d90a9b5f 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/compound_statements.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/compound_statements.rs @@ -1,13 +1,13 @@ use rustpython_parser::lexer::LexResult; use rustpython_parser::Tok; +use ruff_diagnostics::{AlwaysAutofixableViolation, Violation}; +use ruff_diagnostics::{Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::fix::Fix; -use crate::registry::{Diagnostic, Rule}; +use crate::registry::Rule; use crate::settings::{flags, Settings}; -use crate::violation::{AlwaysAutofixableViolation, Violation}; #[violation] pub struct MultipleStatementsOnOneLineColon; diff --git a/crates/ruff/src/rules/pycodestyle/rules/doc_line_too_long.rs b/crates/ruff/src/rules/pycodestyle/rules/doc_line_too_long.rs index 64d5aa3922..09b7e545e6 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/doc_line_too_long.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/doc_line_too_long.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::Location; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::registry::Diagnostic; use crate::rules::pycodestyle::helpers::is_overlong; use crate::settings::Settings; -use crate::violation::Violation; #[violation] pub struct DocLineTooLong(pub usize, pub usize); diff --git a/crates/ruff/src/rules/pycodestyle/rules/errors.rs b/crates/ruff/src/rules/pycodestyle/rules/errors.rs index bc4f737b31..ab1b277b2c 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/errors.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/errors.rs @@ -1,11 +1,9 @@ use rustpython_parser::ParseError; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::registry::Diagnostic; -use crate::violation::Violation; - #[violation] pub struct IOError { pub message: String, diff --git a/crates/ruff/src/rules/pycodestyle/rules/extraneous_whitespace.rs b/crates/ruff/src/rules/pycodestyle/rules/extraneous_whitespace.rs index 15bbecc949..1f30c456ea 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/extraneous_whitespace.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/extraneous_whitespace.rs @@ -3,11 +3,10 @@ use once_cell::sync::Lazy; use regex::Regex; +use ruff_diagnostics::DiagnosticKind; +use ruff_diagnostics::Violation; use ruff_macros::{derive_message_formats, violation}; -use crate::registry::DiagnosticKind; -use crate::violation::Violation; - #[violation] pub struct WhitespaceAfterOpenBracket; diff --git a/crates/ruff/src/rules/pycodestyle/rules/imports.rs b/crates/ruff/src/rules/pycodestyle/rules/imports.rs index bb9ba7c4a8..99f8de9106 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/imports.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/imports.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::{Alias, Stmt}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct MultipleImportsOnOneLine; diff --git a/crates/ruff/src/rules/pycodestyle/rules/indentation.rs b/crates/ruff/src/rules/pycodestyle/rules/indentation.rs index 18630ece02..d1e9d13bfb 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/indentation.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/indentation.rs @@ -1,10 +1,10 @@ #![allow(dead_code, unused_imports, unused_variables)] +use ruff_diagnostics::DiagnosticKind; +use ruff_diagnostics::Violation; use ruff_macros::{derive_message_formats, violation}; -use crate::registry::DiagnosticKind; use crate::rules::pycodestyle::logical_lines::LogicalLine; -use crate::violation::Violation; #[violation] pub struct IndentationWithInvalidMultiple { diff --git a/crates/ruff/src/rules/pycodestyle/rules/indentation_contains_tabs.rs b/crates/ruff/src/rules/pycodestyle/rules/indentation_contains_tabs.rs index 90d244278d..29fb9d104c 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/indentation_contains_tabs.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/indentation_contains_tabs.rs @@ -1,12 +1,10 @@ use rustpython_parser::ast::Location; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use ruff_python_ast::whitespace::leading_space; -use crate::registry::Diagnostic; -use crate::violation::Violation; - #[violation] pub struct IndentationContainsTabs; diff --git a/crates/ruff/src/rules/pycodestyle/rules/invalid_escape_sequence.rs b/crates/ruff/src/rules/pycodestyle/rules/invalid_escape_sequence.rs index 6849bba097..4e5c4634b8 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/invalid_escape_sequence.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/invalid_escape_sequence.rs @@ -2,14 +2,11 @@ use anyhow::{bail, Result}; use log::error; use rustpython_parser::ast::Location; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::source_code::Locator; use ruff_python_ast::types::Range; -use crate::fix::Fix; -use crate::registry::Diagnostic; -use crate::violation::AlwaysAutofixableViolation; - #[violation] pub struct InvalidEscapeSequence(pub char); diff --git a/crates/ruff/src/rules/pycodestyle/rules/lambda_assignment.rs b/crates/ruff/src/rules/pycodestyle/rules/lambda_assignment.rs index baf50b0995..893e6baf91 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/lambda_assignment.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/lambda_assignment.rs @@ -1,5 +1,6 @@ use rustpython_parser::ast::{Arguments, Expr, ExprKind, Location, Stmt, StmtKind}; +use ruff_diagnostics::{AutofixKind, Availability, Diagnostic, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::{match_leading_content, match_trailing_content, unparse_stmt}; use ruff_python_ast::source_code::Stylist; @@ -7,9 +8,7 @@ use ruff_python_ast::types::{Range, ScopeKind}; use ruff_python_ast::whitespace::leading_space; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::{AutofixKind, Availability, Violation}; +use crate::registry::AsRule; #[violation] pub struct LambdaAssignment { diff --git a/crates/ruff/src/rules/pycodestyle/rules/line_too_long.rs b/crates/ruff/src/rules/pycodestyle/rules/line_too_long.rs index 59ebc7b194..66c8142b17 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/line_too_long.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/line_too_long.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::Location; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::registry::Diagnostic; use crate::rules::pycodestyle::helpers::is_overlong; use crate::settings::Settings; -use crate::violation::Violation; #[violation] pub struct LineTooLong(pub usize, pub usize); diff --git a/crates/ruff/src/rules/pycodestyle/rules/literal_comparisons.rs b/crates/ruff/src/rules/pycodestyle/rules/literal_comparisons.rs index 324465ebeb..c213a2c639 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/literal_comparisons.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/literal_comparisons.rs @@ -3,15 +3,14 @@ use rustc_hash::FxHashMap; use rustpython_parser::ast::{Cmpop, Constant, Expr, ExprKind}; use serde::{Deserialize, Serialize}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; +use crate::registry::AsRule; use crate::rules::pycodestyle::helpers::compare; -use crate::violation::AlwaysAutofixableViolation; #[derive(Debug, PartialEq, Eq, Serialize, Deserialize)] pub enum EqCmpop { diff --git a/crates/ruff/src/rules/pycodestyle/rules/missing_whitespace.rs b/crates/ruff/src/rules/pycodestyle/rules/missing_whitespace.rs index 3338130690..b8207eb54e 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/missing_whitespace.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/missing_whitespace.rs @@ -3,15 +3,15 @@ use rustpython_parser::ast::Location; use rustpython_parser::Tok; +use ruff_diagnostics::DiagnosticKind; +use ruff_diagnostics::Fix; +use ruff_diagnostics::Violation; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::fix::Fix; -use crate::registry::DiagnosticKind; -use crate::registry::{AsRule, Diagnostic}; +use crate::registry::AsRule; use crate::rules::pycodestyle::helpers::{is_keyword_token, is_singleton_token}; -use crate::violation::AlwaysAutofixableViolation; -use crate::violation::Violation; #[violation] pub struct MissingWhitespace { diff --git a/crates/ruff/src/rules/pycodestyle/rules/missing_whitespace_after_keyword.rs b/crates/ruff/src/rules/pycodestyle/rules/missing_whitespace_after_keyword.rs index ddcbd4e2bd..7b20f57313 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/missing_whitespace_after_keyword.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/missing_whitespace_after_keyword.rs @@ -3,11 +3,11 @@ use rustpython_parser::ast::Location; use rustpython_parser::Tok; +use ruff_diagnostics::DiagnosticKind; +use ruff_diagnostics::Violation; use ruff_macros::{derive_message_formats, violation}; -use crate::registry::DiagnosticKind; use crate::rules::pycodestyle::helpers::{is_keyword_token, is_singleton_token}; -use crate::violation::Violation; #[violation] pub struct MissingWhitespaceAfterKeyword; diff --git a/crates/ruff/src/rules/pycodestyle/rules/missing_whitespace_around_operator.rs b/crates/ruff/src/rules/pycodestyle/rules/missing_whitespace_around_operator.rs index 8b8e7623f0..39d1d64f66 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/missing_whitespace_around_operator.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/missing_whitespace_around_operator.rs @@ -3,14 +3,14 @@ use rustpython_parser::ast::Location; use rustpython_parser::Tok; +use ruff_diagnostics::DiagnosticKind; +use ruff_diagnostics::Violation; use ruff_macros::{derive_message_formats, violation}; -use crate::registry::DiagnosticKind; use crate::rules::pycodestyle::helpers::{ is_arithmetic_token, is_keyword_token, is_op_token, is_singleton_token, is_skip_comment_token, is_soft_keyword_token, is_unary_token, is_ws_needed_token, is_ws_optional_token, }; -use crate::violation::Violation; // E225 #[violation] diff --git a/crates/ruff/src/rules/pycodestyle/rules/mixed_spaces_and_tabs.rs b/crates/ruff/src/rules/pycodestyle/rules/mixed_spaces_and_tabs.rs index 5902c2723e..bf178fb6f8 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/mixed_spaces_and_tabs.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/mixed_spaces_and_tabs.rs @@ -1,12 +1,10 @@ use rustpython_parser::ast::Location; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use ruff_python_ast::whitespace::leading_space; -use crate::registry::Diagnostic; -use crate::violation::Violation; - #[violation] pub struct MixedSpacesAndTabs; diff --git a/crates/ruff/src/rules/pycodestyle/rules/no_newline_at_end_of_file.rs b/crates/ruff/src/rules/pycodestyle/rules/no_newline_at_end_of_file.rs index 657f4ddce2..45a3589257 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/no_newline_at_end_of_file.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/no_newline_at_end_of_file.rs @@ -1,13 +1,10 @@ use rustpython_parser::ast::Location; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::source_code::Stylist; use ruff_python_ast::types::Range; -use crate::fix::Fix; -use crate::registry::Diagnostic; -use crate::violation::AlwaysAutofixableViolation; - #[violation] pub struct NoNewLineAtEndOfFile; diff --git a/crates/ruff/src/rules/pycodestyle/rules/not_tests.rs b/crates/ruff/src/rules/pycodestyle/rules/not_tests.rs index cc44e2274c..3ca62d4e9c 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/not_tests.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/not_tests.rs @@ -1,13 +1,12 @@ use rustpython_parser::ast::{Cmpop, Expr, ExprKind, Unaryop}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; +use crate::registry::AsRule; use crate::rules::pycodestyle::helpers::compare; -use crate::violation::AlwaysAutofixableViolation; #[violation] pub struct NotInTest; diff --git a/crates/ruff/src/rules/pycodestyle/rules/space_around_operator.rs b/crates/ruff/src/rules/pycodestyle/rules/space_around_operator.rs index 3858122cc3..00f861a82e 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/space_around_operator.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/space_around_operator.rs @@ -3,11 +3,10 @@ use once_cell::sync::Lazy; use regex::Regex; +use ruff_diagnostics::DiagnosticKind; +use ruff_diagnostics::Violation; use ruff_macros::{derive_message_formats, violation}; -use crate::registry::DiagnosticKind; -use crate::violation::Violation; - #[violation] pub struct TabBeforeOperator; diff --git a/crates/ruff/src/rules/pycodestyle/rules/trailing_whitespace.rs b/crates/ruff/src/rules/pycodestyle/rules/trailing_whitespace.rs index 42a94de66a..6c9338c350 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/trailing_whitespace.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/trailing_whitespace.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::Location; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::fix::Fix; -use crate::registry::{Diagnostic, Rule}; +use crate::registry::Rule; use crate::settings::{flags, Settings}; -use crate::violation::AlwaysAutofixableViolation; #[violation] pub struct TrailingWhitespace; diff --git a/crates/ruff/src/rules/pycodestyle/rules/type_comparison.rs b/crates/ruff/src/rules/pycodestyle/rules/type_comparison.rs index 3fe10b0654..002fbc48eb 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/type_comparison.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/type_comparison.rs @@ -1,12 +1,10 @@ use itertools::izip; use rustpython_parser::ast::{Cmpop, Constant, Expr, ExprKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::registry::Diagnostic; -use crate::violation::Violation; - #[violation] pub struct TypeComparison; diff --git a/crates/ruff/src/rules/pycodestyle/rules/whitespace_around_keywords.rs b/crates/ruff/src/rules/pycodestyle/rules/whitespace_around_keywords.rs index f2c654ca87..4dfa6bc289 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/whitespace_around_keywords.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/whitespace_around_keywords.rs @@ -3,11 +3,10 @@ use once_cell::sync::Lazy; use regex::Regex; +use ruff_diagnostics::DiagnosticKind; +use ruff_diagnostics::Violation; use ruff_macros::{derive_message_formats, violation}; -use crate::registry::DiagnosticKind; -use crate::violation::Violation; - #[violation] pub struct MultipleSpacesAfterKeyword; diff --git a/crates/ruff/src/rules/pycodestyle/rules/whitespace_around_named_parameter_equals.rs b/crates/ruff/src/rules/pycodestyle/rules/whitespace_around_named_parameter_equals.rs index 2d8bb97066..35afdb0906 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/whitespace_around_named_parameter_equals.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/whitespace_around_named_parameter_equals.rs @@ -5,12 +5,12 @@ use regex::Regex; use rustpython_parser::ast::Location; use rustpython_parser::Tok; +use ruff_diagnostics::DiagnosticKind; +use ruff_diagnostics::Violation; use ruff_macros::{derive_message_formats, violation}; -use crate::registry::DiagnosticKind; #[cfg(feature = "logical_lines")] use crate::rules::pycodestyle::helpers::is_op_token; -use crate::violation::Violation; #[violation] pub struct UnexpectedSpacesAroundKeywordParameterEquals; diff --git a/crates/ruff/src/rules/pycodestyle/rules/whitespace_before_comment.rs b/crates/ruff/src/rules/pycodestyle/rules/whitespace_before_comment.rs index 7e554ca9fc..f3614803c0 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/whitespace_before_comment.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/whitespace_before_comment.rs @@ -3,13 +3,12 @@ use rustpython_parser::ast::Location; use rustpython_parser::Tok; +use ruff_diagnostics::DiagnosticKind; +use ruff_diagnostics::Violation; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::source_code::Locator; use ruff_python_ast::types::Range; -use crate::registry::DiagnosticKind; -use crate::violation::Violation; - #[violation] pub struct TooFewSpacesBeforeInlineComment; diff --git a/crates/ruff/src/rules/pycodestyle/rules/whitespace_before_parameters.rs b/crates/ruff/src/rules/pycodestyle/rules/whitespace_before_parameters.rs index 39de94254a..180f2f0427 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/whitespace_before_parameters.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/whitespace_before_parameters.rs @@ -3,13 +3,12 @@ use rustpython_parser::ast::Location; use rustpython_parser::Tok; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; +use crate::registry::AsRule; use crate::rules::pycodestyle::helpers::{is_keyword_token, is_op_token, is_soft_keyword_token}; -use crate::violation::AlwaysAutofixableViolation; #[violation] pub struct WhitespaceBeforeParameters { diff --git a/crates/ruff/src/rules/pydocstyle/rules/backslashes.rs b/crates/ruff/src/rules/pydocstyle/rules/backslashes.rs index 817d314e39..c2bff7cb9a 100644 --- a/crates/ruff/src/rules/pydocstyle/rules/backslashes.rs +++ b/crates/ruff/src/rules/pydocstyle/rules/backslashes.rs @@ -1,13 +1,12 @@ use once_cell::sync::Lazy; use regex::Regex; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; use crate::docstrings::definition::Docstring; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct EscapeSequenceInDocstring; diff --git a/crates/ruff/src/rules/pydocstyle/rules/blank_after_summary.rs b/crates/ruff/src/rules/pydocstyle/rules/blank_after_summary.rs index 0e7ec7310c..2e39195bd0 100644 --- a/crates/ruff/src/rules/pydocstyle/rules/blank_after_summary.rs +++ b/crates/ruff/src/rules/pydocstyle/rules/blank_after_summary.rs @@ -1,12 +1,11 @@ +use ruff_diagnostics::{AutofixKind, Availability, Diagnostic, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; use crate::docstrings::definition::Docstring; -use crate::fix::Fix; use crate::message::Location; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::{AutofixKind, Availability, Violation}; +use crate::registry::AsRule; #[violation] pub struct BlankLineAfterSummary { diff --git a/crates/ruff/src/rules/pydocstyle/rules/blank_before_after_class.rs b/crates/ruff/src/rules/pydocstyle/rules/blank_before_after_class.rs index 5132a1931b..9659fca6c1 100644 --- a/crates/ruff/src/rules/pydocstyle/rules/blank_before_after_class.rs +++ b/crates/ruff/src/rules/pydocstyle/rules/blank_before_after_class.rs @@ -1,12 +1,11 @@ +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; use crate::docstrings::definition::{DefinitionKind, Docstring}; -use crate::fix::Fix; use crate::message::Location; -use crate::registry::{AsRule, Diagnostic, Rule}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::{AsRule, Rule}; #[violation] pub struct OneBlankLineBeforeClass { diff --git a/crates/ruff/src/rules/pydocstyle/rules/blank_before_after_function.rs b/crates/ruff/src/rules/pydocstyle/rules/blank_before_after_function.rs index 4d0882468b..701808c70a 100644 --- a/crates/ruff/src/rules/pydocstyle/rules/blank_before_after_function.rs +++ b/crates/ruff/src/rules/pydocstyle/rules/blank_before_after_function.rs @@ -1,15 +1,14 @@ use once_cell::sync::Lazy; use regex::Regex; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; use crate::docstrings::definition::{DefinitionKind, Docstring}; -use crate::fix::Fix; use crate::message::Location; -use crate::registry::{AsRule, Diagnostic, Rule}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::{AsRule, Rule}; #[violation] pub struct NoBlankLineBeforeFunction { diff --git a/crates/ruff/src/rules/pydocstyle/rules/capitalized.rs b/crates/ruff/src/rules/pydocstyle/rules/capitalized.rs index e437926b51..39f07659af 100644 --- a/crates/ruff/src/rules/pydocstyle/rules/capitalized.rs +++ b/crates/ruff/src/rules/pydocstyle/rules/capitalized.rs @@ -1,10 +1,9 @@ +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; use crate::docstrings::definition::{DefinitionKind, Docstring}; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct FirstLineCapitalized; diff --git a/crates/ruff/src/rules/pydocstyle/rules/ends_with_period.rs b/crates/ruff/src/rules/pydocstyle/rules/ends_with_period.rs index 100ff80111..e4d963feff 100644 --- a/crates/ruff/src/rules/pydocstyle/rules/ends_with_period.rs +++ b/crates/ruff/src/rules/pydocstyle/rules/ends_with_period.rs @@ -1,5 +1,6 @@ use strum::IntoEnumIterator; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::str::leading_quote; use ruff_python_ast::types::Range; @@ -7,11 +8,9 @@ use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; use crate::docstrings::definition::Docstring; use crate::docstrings::sections::SectionKind; -use crate::fix::Fix; use crate::message::Location; -use crate::registry::{AsRule, Diagnostic}; +use crate::registry::AsRule; use crate::rules::pydocstyle::helpers::logical_line; -use crate::violation::AlwaysAutofixableViolation; #[violation] pub struct EndsInPeriod; diff --git a/crates/ruff/src/rules/pydocstyle/rules/ends_with_punctuation.rs b/crates/ruff/src/rules/pydocstyle/rules/ends_with_punctuation.rs index 4b54b0eb58..f163afc6ad 100644 --- a/crates/ruff/src/rules/pydocstyle/rules/ends_with_punctuation.rs +++ b/crates/ruff/src/rules/pydocstyle/rules/ends_with_punctuation.rs @@ -1,5 +1,6 @@ use strum::IntoEnumIterator; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::str::leading_quote; use ruff_python_ast::types::Range; @@ -7,11 +8,9 @@ use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; use crate::docstrings::definition::Docstring; use crate::docstrings::sections::SectionKind; -use crate::fix::Fix; use crate::message::Location; -use crate::registry::{AsRule, Diagnostic}; +use crate::registry::AsRule; use crate::rules::pydocstyle::helpers::logical_line; -use crate::violation::AlwaysAutofixableViolation; #[violation] pub struct EndsInPunctuation; diff --git a/crates/ruff/src/rules/pydocstyle/rules/if_needed.rs b/crates/ruff/src/rules/pydocstyle/rules/if_needed.rs index 5b27040bab..43c0d4b3eb 100644 --- a/crates/ruff/src/rules/pydocstyle/rules/if_needed.rs +++ b/crates/ruff/src/rules/pydocstyle/rules/if_needed.rs @@ -1,3 +1,4 @@ +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::cast; use ruff_python_ast::helpers::identifier_range; @@ -5,8 +6,6 @@ use ruff_python_ast::visibility::is_overload; use crate::checkers::ast::Checker; use crate::docstrings::definition::{DefinitionKind, Docstring}; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct OverloadWithDocstring; diff --git a/crates/ruff/src/rules/pydocstyle/rules/indent.rs b/crates/ruff/src/rules/pydocstyle/rules/indent.rs index 2e4d5773d2..475720d40e 100644 --- a/crates/ruff/src/rules/pydocstyle/rules/indent.rs +++ b/crates/ruff/src/rules/pydocstyle/rules/indent.rs @@ -1,3 +1,5 @@ +use ruff_diagnostics::{AlwaysAutofixableViolation, Violation}; +use ruff_diagnostics::{Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use ruff_python_ast::whitespace; @@ -5,10 +7,8 @@ use ruff_python_ast::whitespace::LinesWithTrailingNewline; use crate::checkers::ast::Checker; use crate::docstrings::definition::Docstring; -use crate::fix::Fix; use crate::message::Location; -use crate::registry::{AsRule, Diagnostic, Rule}; -use crate::violation::{AlwaysAutofixableViolation, Violation}; +use crate::registry::{AsRule, Rule}; #[violation] pub struct IndentWithSpaces; diff --git a/crates/ruff/src/rules/pydocstyle/rules/multi_line_summary_start.rs b/crates/ruff/src/rules/pydocstyle/rules/multi_line_summary_start.rs index 22a6ad5476..c2d2ec7ea8 100644 --- a/crates/ruff/src/rules/pydocstyle/rules/multi_line_summary_start.rs +++ b/crates/ruff/src/rules/pydocstyle/rules/multi_line_summary_start.rs @@ -1,3 +1,4 @@ +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::str::{is_triple_quote, leading_quote}; use ruff_python_ast::types::Range; @@ -5,10 +6,8 @@ use ruff_python_ast::whitespace::LinesWithTrailingNewline; use crate::checkers::ast::Checker; use crate::docstrings::definition::{DefinitionKind, Docstring}; -use crate::fix::Fix; use crate::message::Location; -use crate::registry::{AsRule, Diagnostic, Rule}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::{AsRule, Rule}; #[violation] pub struct MultiLineSummaryFirstLine; diff --git a/crates/ruff/src/rules/pydocstyle/rules/newline_after_last_paragraph.rs b/crates/ruff/src/rules/pydocstyle/rules/newline_after_last_paragraph.rs index 7d94388876..b3f49732e2 100644 --- a/crates/ruff/src/rules/pydocstyle/rules/newline_after_last_paragraph.rs +++ b/crates/ruff/src/rules/pydocstyle/rules/newline_after_last_paragraph.rs @@ -1,3 +1,4 @@ +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use ruff_python_ast::whitespace; @@ -5,10 +6,8 @@ use ruff_python_ast::whitespace::LinesWithTrailingNewline; use crate::checkers::ast::Checker; use crate::docstrings::definition::Docstring; -use crate::fix::Fix; use crate::message::Location; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; #[violation] pub struct NewLineAfterLastParagraph; diff --git a/crates/ruff/src/rules/pydocstyle/rules/no_signature.rs b/crates/ruff/src/rules/pydocstyle/rules/no_signature.rs index 9469e2df78..6e404dc223 100644 --- a/crates/ruff/src/rules/pydocstyle/rules/no_signature.rs +++ b/crates/ruff/src/rules/pydocstyle/rules/no_signature.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::StmtKind; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; use crate::docstrings::definition::{DefinitionKind, Docstring}; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct NoSignature; diff --git a/crates/ruff/src/rules/pydocstyle/rules/no_surrounding_whitespace.rs b/crates/ruff/src/rules/pydocstyle/rules/no_surrounding_whitespace.rs index ceaf85fa6e..609bbe1e8b 100644 --- a/crates/ruff/src/rules/pydocstyle/rules/no_surrounding_whitespace.rs +++ b/crates/ruff/src/rules/pydocstyle/rules/no_surrounding_whitespace.rs @@ -1,3 +1,4 @@ +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::str::leading_quote; use ruff_python_ast::types::Range; @@ -5,10 +6,8 @@ use ruff_python_ast::whitespace::LinesWithTrailingNewline; use crate::checkers::ast::Checker; use crate::docstrings::definition::Docstring; -use crate::fix::Fix; use crate::message::Location; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; #[violation] pub struct NoSurroundingWhitespace; diff --git a/crates/ruff/src/rules/pydocstyle/rules/non_imperative_mood.rs b/crates/ruff/src/rules/pydocstyle/rules/non_imperative_mood.rs index 3d5cf5fa1e..9beae70e9f 100644 --- a/crates/ruff/src/rules/pydocstyle/rules/non_imperative_mood.rs +++ b/crates/ruff/src/rules/pydocstyle/rules/non_imperative_mood.rs @@ -3,6 +3,7 @@ use std::collections::BTreeSet; use imperative::Mood; use once_cell::sync::Lazy; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::cast; use ruff_python_ast::helpers::to_call_path; @@ -11,9 +12,7 @@ use ruff_python_ast::visibility::{is_property, is_test}; use crate::checkers::ast::Checker; use crate::docstrings::definition::{DefinitionKind, Docstring}; -use crate::registry::Diagnostic; use crate::rules::pydocstyle::helpers::normalize_word; -use crate::violation::Violation; static MOOD: Lazy = Lazy::new(Mood::new); diff --git a/crates/ruff/src/rules/pydocstyle/rules/not_empty.rs b/crates/ruff/src/rules/pydocstyle/rules/not_empty.rs index 5a7e5bce18..07199d324f 100644 --- a/crates/ruff/src/rules/pydocstyle/rules/not_empty.rs +++ b/crates/ruff/src/rules/pydocstyle/rules/not_empty.rs @@ -1,10 +1,10 @@ +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; use crate::docstrings::definition::Docstring; -use crate::registry::{Diagnostic, Rule}; -use crate::violation::Violation; +use crate::registry::Rule; #[violation] pub struct EmptyDocstring; diff --git a/crates/ruff/src/rules/pydocstyle/rules/not_missing.rs b/crates/ruff/src/rules/pydocstyle/rules/not_missing.rs index ea108e7d03..f724e4439e 100644 --- a/crates/ruff/src/rules/pydocstyle/rules/not_missing.rs +++ b/crates/ruff/src/rules/pydocstyle/rules/not_missing.rs @@ -1,3 +1,4 @@ +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::cast; use ruff_python_ast::helpers::identifier_range; @@ -9,8 +10,7 @@ use ruff_python_ast::visibility::{ use crate::checkers::ast::Checker; use crate::docstrings::definition::{Definition, DefinitionKind}; use crate::message::Location; -use crate::registry::{Diagnostic, Rule}; -use crate::violation::Violation; +use crate::registry::Rule; #[violation] pub struct PublicModule; diff --git a/crates/ruff/src/rules/pydocstyle/rules/one_liner.rs b/crates/ruff/src/rules/pydocstyle/rules/one_liner.rs index 8062ba84df..7ecb70f70d 100644 --- a/crates/ruff/src/rules/pydocstyle/rules/one_liner.rs +++ b/crates/ruff/src/rules/pydocstyle/rules/one_liner.rs @@ -1,3 +1,4 @@ +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::str::{leading_quote, trailing_quote}; use ruff_python_ast::types::Range; @@ -5,9 +6,7 @@ use ruff_python_ast::whitespace::LinesWithTrailingNewline; use crate::checkers::ast::Checker; use crate::docstrings::definition::Docstring; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; #[violation] pub struct FitsOnOneLine; diff --git a/crates/ruff/src/rules/pydocstyle/rules/sections.rs b/crates/ruff/src/rules/pydocstyle/rules/sections.rs index a34414feb6..d5ed6b0d6d 100644 --- a/crates/ruff/src/rules/pydocstyle/rules/sections.rs +++ b/crates/ruff/src/rules/pydocstyle/rules/sections.rs @@ -4,6 +4,8 @@ use regex::Regex; use rustc_hash::FxHashSet; use rustpython_parser::ast::StmtKind; +use ruff_diagnostics::{AlwaysAutofixableViolation, Violation}; +use ruff_diagnostics::{Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::identifier_range; use ruff_python_ast::types::Range; @@ -15,11 +17,9 @@ use crate::checkers::ast::Checker; use crate::docstrings::definition::{DefinitionKind, Docstring}; use crate::docstrings::sections::{section_contexts, SectionContext, SectionKind}; use crate::docstrings::styles::SectionStyle; -use crate::fix::Fix; use crate::message::Location; -use crate::registry::{AsRule, Diagnostic, Rule}; +use crate::registry::{AsRule, Rule}; use crate::rules::pydocstyle::settings::Convention; -use crate::violation::{AlwaysAutofixableViolation, Violation}; #[violation] pub struct SectionNotOverIndented { diff --git a/crates/ruff/src/rules/pydocstyle/rules/starts_with_this.rs b/crates/ruff/src/rules/pydocstyle/rules/starts_with_this.rs index 8faaeae497..cfad610cf4 100644 --- a/crates/ruff/src/rules/pydocstyle/rules/starts_with_this.rs +++ b/crates/ruff/src/rules/pydocstyle/rules/starts_with_this.rs @@ -1,11 +1,10 @@ +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; use crate::docstrings::definition::Docstring; -use crate::registry::Diagnostic; use crate::rules::pydocstyle::helpers::normalize_word; -use crate::violation::Violation; #[violation] pub struct DocstringStartsWithThis; diff --git a/crates/ruff/src/rules/pydocstyle/rules/triple_quotes.rs b/crates/ruff/src/rules/pydocstyle/rules/triple_quotes.rs index 2038f83d85..720b70fe81 100644 --- a/crates/ruff/src/rules/pydocstyle/rules/triple_quotes.rs +++ b/crates/ruff/src/rules/pydocstyle/rules/triple_quotes.rs @@ -1,10 +1,9 @@ +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; use crate::docstrings::definition::Docstring; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct TripleSingleQuotes; diff --git a/crates/ruff/src/rules/pyflakes/fixes.rs b/crates/ruff/src/rules/pyflakes/fixes.rs index 1f7cd9662b..eaff5c6543 100644 --- a/crates/ruff/src/rules/pyflakes/fixes.rs +++ b/crates/ruff/src/rules/pyflakes/fixes.rs @@ -3,12 +3,12 @@ use libcst_native::{Call, Codegen, CodegenState, Dict, DictElement, Expression}; use rustpython_parser::ast::{Excepthandler, Expr}; use rustpython_parser::{lexer, Mode, Tok}; +use ruff_diagnostics::Fix; use ruff_python_ast::source_code::{Locator, Stylist}; use ruff_python_ast::str::raw_contents; use ruff_python_ast::types::Range; use crate::cst::matchers::{match_expr, match_module}; -use crate::fix::Fix; /// Generate a [`Fix`] to remove unused keys from format dict. pub fn remove_unused_format_arguments_from_dict( diff --git a/crates/ruff/src/rules/pyflakes/rules/assert_tuple.rs b/crates/ruff/src/rules/pyflakes/rules/assert_tuple.rs index e8569aa89a..06443636b7 100644 --- a/crates/ruff/src/rules/pyflakes/rules/assert_tuple.rs +++ b/crates/ruff/src/rules/pyflakes/rules/assert_tuple.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::{Expr, ExprKind, Stmt}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct AssertTuple; diff --git a/crates/ruff/src/rules/pyflakes/rules/break_outside_loop.rs b/crates/ruff/src/rules/pyflakes/rules/break_outside_loop.rs index 36b089fd16..a77b7dcea3 100644 --- a/crates/ruff/src/rules/pyflakes/rules/break_outside_loop.rs +++ b/crates/ruff/src/rules/pyflakes/rules/break_outside_loop.rs @@ -1,11 +1,9 @@ use rustpython_parser::ast::{Stmt, StmtKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::registry::Diagnostic; -use crate::violation::Violation; - #[violation] pub struct BreakOutsideLoop; diff --git a/crates/ruff/src/rules/pyflakes/rules/continue_outside_loop.rs b/crates/ruff/src/rules/pyflakes/rules/continue_outside_loop.rs index fc82cad5c9..11958e01e9 100644 --- a/crates/ruff/src/rules/pyflakes/rules/continue_outside_loop.rs +++ b/crates/ruff/src/rules/pyflakes/rules/continue_outside_loop.rs @@ -1,11 +1,9 @@ use rustpython_parser::ast::{Stmt, StmtKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::registry::Diagnostic; -use crate::violation::Violation; - #[violation] pub struct ContinueOutsideLoop; diff --git a/crates/ruff/src/rules/pyflakes/rules/default_except_not_last.rs b/crates/ruff/src/rules/pyflakes/rules/default_except_not_last.rs index 284801a1aa..1c87c5c743 100644 --- a/crates/ruff/src/rules/pyflakes/rules/default_except_not_last.rs +++ b/crates/ruff/src/rules/pyflakes/rules/default_except_not_last.rs @@ -1,12 +1,10 @@ use rustpython_parser::ast::{Excepthandler, ExcepthandlerKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::except_range; use ruff_python_ast::source_code::Locator; -use crate::registry::Diagnostic; -use crate::violation::Violation; - #[violation] pub struct DefaultExceptNotLast; diff --git a/crates/ruff/src/rules/pyflakes/rules/f_string_missing_placeholders.rs b/crates/ruff/src/rules/pyflakes/rules/f_string_missing_placeholders.rs index a856b42812..6e7d3995da 100644 --- a/crates/ruff/src/rules/pyflakes/rules/f_string_missing_placeholders.rs +++ b/crates/ruff/src/rules/pyflakes/rules/f_string_missing_placeholders.rs @@ -1,13 +1,12 @@ use rustpython_parser::ast::{Expr, ExprKind}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::find_useless_f_strings; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; /// ## What it does /// Checks for f-strings that do not contain any placeholder expressions. diff --git a/crates/ruff/src/rules/pyflakes/rules/forward_annotation_syntax_error.rs b/crates/ruff/src/rules/pyflakes/rules/forward_annotation_syntax_error.rs index 0249f82297..5c0b3fb304 100644 --- a/crates/ruff/src/rules/pyflakes/rules/forward_annotation_syntax_error.rs +++ b/crates/ruff/src/rules/pyflakes/rules/forward_annotation_syntax_error.rs @@ -1,7 +1,6 @@ +use ruff_diagnostics::Violation; use ruff_macros::{derive_message_formats, violation}; -use crate::violation::Violation; - #[violation] pub struct ForwardAnnotationSyntaxError { pub body: String, diff --git a/crates/ruff/src/rules/pyflakes/rules/if_tuple.rs b/crates/ruff/src/rules/pyflakes/rules/if_tuple.rs index 4939ae1248..d949740d31 100644 --- a/crates/ruff/src/rules/pyflakes/rules/if_tuple.rs +++ b/crates/ruff/src/rules/pyflakes/rules/if_tuple.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::{Expr, ExprKind, Stmt}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct IfTuple; diff --git a/crates/ruff/src/rules/pyflakes/rules/imports.rs b/crates/ruff/src/rules/pyflakes/rules/imports.rs index e2746b2d5b..5d73571834 100644 --- a/crates/ruff/src/rules/pyflakes/rules/imports.rs +++ b/crates/ruff/src/rules/pyflakes/rules/imports.rs @@ -1,13 +1,13 @@ use itertools::Itertools; use rustpython_parser::ast::Alias; +use ruff_diagnostics::Diagnostic; +use ruff_diagnostics::{AutofixKind, Availability, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use ruff_python_stdlib::future::ALL_FEATURE_NAMES; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::{AutofixKind, Availability, Violation}; #[violation] pub struct UnusedImport { diff --git a/crates/ruff/src/rules/pyflakes/rules/invalid_literal_comparisons.rs b/crates/ruff/src/rules/pyflakes/rules/invalid_literal_comparisons.rs index c53d430d0b..c6ad118e66 100644 --- a/crates/ruff/src/rules/pyflakes/rules/invalid_literal_comparisons.rs +++ b/crates/ruff/src/rules/pyflakes/rules/invalid_literal_comparisons.rs @@ -4,15 +4,14 @@ use once_cell::unsync::Lazy; use rustpython_parser::ast::{Cmpop, Expr}; use serde::{Deserialize, Serialize}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers; use ruff_python_ast::operations::locate_cmpops; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; #[derive(Debug, PartialEq, Eq, Serialize, Deserialize)] pub enum IsCmpop { diff --git a/crates/ruff/src/rules/pyflakes/rules/invalid_print_syntax.rs b/crates/ruff/src/rules/pyflakes/rules/invalid_print_syntax.rs index e649cce9ab..ba9313f496 100644 --- a/crates/ruff/src/rules/pyflakes/rules/invalid_print_syntax.rs +++ b/crates/ruff/src/rules/pyflakes/rules/invalid_print_syntax.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::{Expr, ExprKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct InvalidPrintSyntax; diff --git a/crates/ruff/src/rules/pyflakes/rules/raise_not_implemented.rs b/crates/ruff/src/rules/pyflakes/rules/raise_not_implemented.rs index 933e9d611d..69058e535e 100644 --- a/crates/ruff/src/rules/pyflakes/rules/raise_not_implemented.rs +++ b/crates/ruff/src/rules/pyflakes/rules/raise_not_implemented.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::{Expr, ExprKind}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; #[violation] pub struct RaiseNotImplemented; diff --git a/crates/ruff/src/rules/pyflakes/rules/redefined_while_unused.rs b/crates/ruff/src/rules/pyflakes/rules/redefined_while_unused.rs index 475556664a..3a49c07e08 100644 --- a/crates/ruff/src/rules/pyflakes/rules/redefined_while_unused.rs +++ b/crates/ruff/src/rules/pyflakes/rules/redefined_while_unused.rs @@ -1,7 +1,6 @@ +use ruff_diagnostics::Violation; use ruff_macros::{derive_message_formats, violation}; -use crate::violation::Violation; - #[violation] pub struct RedefinedWhileUnused { pub name: String, diff --git a/crates/ruff/src/rules/pyflakes/rules/repeated_keys.rs b/crates/ruff/src/rules/pyflakes/rules/repeated_keys.rs index 4712c0b1f4..9760826b0d 100644 --- a/crates/ruff/src/rules/pyflakes/rules/repeated_keys.rs +++ b/crates/ruff/src/rules/pyflakes/rules/repeated_keys.rs @@ -3,15 +3,14 @@ use std::hash::{BuildHasherDefault, Hash}; use rustc_hash::{FxHashMap, FxHashSet}; use rustpython_parser::ast::{Expr, ExprKind}; +use ruff_diagnostics::{AutofixKind, Availability, Diagnostic, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::comparable::{ComparableConstant, ComparableExpr}; use ruff_python_ast::helpers::unparse_expr; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic, Rule}; -use crate::violation::{AutofixKind, Availability, Violation}; +use crate::registry::{AsRule, Rule}; #[violation] pub struct MultiValueRepeatedKeyLiteral { diff --git a/crates/ruff/src/rules/pyflakes/rules/return_outside_function.rs b/crates/ruff/src/rules/pyflakes/rules/return_outside_function.rs index 5a5ad616ef..0224455f8c 100644 --- a/crates/ruff/src/rules/pyflakes/rules/return_outside_function.rs +++ b/crates/ruff/src/rules/pyflakes/rules/return_outside_function.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::Stmt; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::{Range, ScopeKind}; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct ReturnOutsideFunction; diff --git a/crates/ruff/src/rules/pyflakes/rules/starred_expressions.rs b/crates/ruff/src/rules/pyflakes/rules/starred_expressions.rs index 44ec6b74aa..35da2160dc 100644 --- a/crates/ruff/src/rules/pyflakes/rules/starred_expressions.rs +++ b/crates/ruff/src/rules/pyflakes/rules/starred_expressions.rs @@ -1,11 +1,9 @@ use rustpython_parser::ast::{Expr, ExprKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::registry::Diagnostic; -use crate::violation::Violation; - #[violation] pub struct ExpressionsInStarAssignment; diff --git a/crates/ruff/src/rules/pyflakes/rules/strings.rs b/crates/ruff/src/rules/pyflakes/rules/strings.rs index dbf2766719..b19ea083a5 100644 --- a/crates/ruff/src/rules/pyflakes/rules/strings.rs +++ b/crates/ruff/src/rules/pyflakes/rules/strings.rs @@ -4,12 +4,12 @@ use log::error; use rustc_hash::FxHashSet; use rustpython_parser::ast::{Constant, Expr, ExprKind, Keyword, KeywordData}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::{AlwaysAutofixableViolation, Violation}; +use crate::registry::AsRule; use super::super::cformat::CFormatSummary; use super::super::fixes::{ diff --git a/crates/ruff/src/rules/pyflakes/rules/undefined_export.rs b/crates/ruff/src/rules/pyflakes/rules/undefined_export.rs index fb1926654b..6a22cf24ba 100644 --- a/crates/ruff/src/rules/pyflakes/rules/undefined_export.rs +++ b/crates/ruff/src/rules/pyflakes/rules/undefined_export.rs @@ -1,11 +1,9 @@ use std::path::Path; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::{Range, Scope}; -use crate::registry::Diagnostic; -use crate::violation::Violation; - #[violation] pub struct UndefinedExport { pub name: String, diff --git a/crates/ruff/src/rules/pyflakes/rules/undefined_local.rs b/crates/ruff/src/rules/pyflakes/rules/undefined_local.rs index 651db59dbc..02b2f8e2e6 100644 --- a/crates/ruff/src/rules/pyflakes/rules/undefined_local.rs +++ b/crates/ruff/src/rules/pyflakes/rules/undefined_local.rs @@ -1,11 +1,9 @@ use std::string::ToString; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::{Binding, Scope, ScopeKind}; -use crate::registry::Diagnostic; -use crate::violation::Violation; - #[violation] pub struct UndefinedLocal { pub name: String, diff --git a/crates/ruff/src/rules/pyflakes/rules/undefined_name.rs b/crates/ruff/src/rules/pyflakes/rules/undefined_name.rs index be3bf26bd2..b3b94a9928 100644 --- a/crates/ruff/src/rules/pyflakes/rules/undefined_name.rs +++ b/crates/ruff/src/rules/pyflakes/rules/undefined_name.rs @@ -1,7 +1,6 @@ +use ruff_diagnostics::Violation; use ruff_macros::{derive_message_formats, violation}; -use crate::violation::Violation; - #[violation] pub struct UndefinedName { pub name: String, diff --git a/crates/ruff/src/rules/pyflakes/rules/unused_annotation.rs b/crates/ruff/src/rules/pyflakes/rules/unused_annotation.rs index f839fa5f86..b822583893 100644 --- a/crates/ruff/src/rules/pyflakes/rules/unused_annotation.rs +++ b/crates/ruff/src/rules/pyflakes/rules/unused_annotation.rs @@ -1,8 +1,7 @@ +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct UnusedAnnotation { diff --git a/crates/ruff/src/rules/pyflakes/rules/unused_variable.rs b/crates/ruff/src/rules/pyflakes/rules/unused_variable.rs index 547c634c17..f99cacb527 100644 --- a/crates/ruff/src/rules/pyflakes/rules/unused_variable.rs +++ b/crates/ruff/src/rules/pyflakes/rules/unused_variable.rs @@ -3,6 +3,7 @@ use log::error; use rustpython_parser::ast::{ExprKind, Located, Stmt, StmtKind}; use rustpython_parser::{lexer, Mode, Tok}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::contains_effect; use ruff_python_ast::source_code::Locator; @@ -10,9 +11,7 @@ use ruff_python_ast::types::{Range, RefEquality, ScopeKind}; use crate::autofix::helpers::delete_stmt; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; /// ## What it does /// Checks for the presence of unused variables in function scopes. diff --git a/crates/ruff/src/rules/pyflakes/rules/yield_outside_function.rs b/crates/ruff/src/rules/pyflakes/rules/yield_outside_function.rs index 3e5df28044..e96198fba9 100644 --- a/crates/ruff/src/rules/pyflakes/rules/yield_outside_function.rs +++ b/crates/ruff/src/rules/pyflakes/rules/yield_outside_function.rs @@ -3,12 +3,11 @@ use std::fmt; use rustpython_parser::ast::{Expr, ExprKind}; use serde::{Deserialize, Serialize}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::{Range, ScopeKind}; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[derive(Debug, PartialEq, Eq, Serialize, Deserialize)] pub enum DeferralKeyword { diff --git a/crates/ruff/src/rules/pygrep_hooks/rules/blanket_noqa.rs b/crates/ruff/src/rules/pygrep_hooks/rules/blanket_noqa.rs index dcd1f41615..8d3410959e 100644 --- a/crates/ruff/src/rules/pygrep_hooks/rules/blanket_noqa.rs +++ b/crates/ruff/src/rules/pygrep_hooks/rules/blanket_noqa.rs @@ -2,12 +2,10 @@ use once_cell::sync::Lazy; use regex::Regex; use rustpython_parser::ast::Location; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::registry::Diagnostic; -use crate::violation::Violation; - #[violation] pub struct BlanketNOQA; diff --git a/crates/ruff/src/rules/pygrep_hooks/rules/blanket_type_ignore.rs b/crates/ruff/src/rules/pygrep_hooks/rules/blanket_type_ignore.rs index df6950a471..c5a8a5ffbd 100644 --- a/crates/ruff/src/rules/pygrep_hooks/rules/blanket_type_ignore.rs +++ b/crates/ruff/src/rules/pygrep_hooks/rules/blanket_type_ignore.rs @@ -2,12 +2,10 @@ use once_cell::sync::Lazy; use regex::Regex; use rustpython_parser::ast::Location; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::registry::Diagnostic; -use crate::violation::Violation; - #[violation] pub struct BlanketTypeIgnore; diff --git a/crates/ruff/src/rules/pygrep_hooks/rules/deprecated_log_warn.rs b/crates/ruff/src/rules/pygrep_hooks/rules/deprecated_log_warn.rs index 4ce8a653a0..7b39ebec29 100644 --- a/crates/ruff/src/rules/pygrep_hooks/rules/deprecated_log_warn.rs +++ b/crates/ruff/src/rules/pygrep_hooks/rules/deprecated_log_warn.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::Expr; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct DeprecatedLogWarn; diff --git a/crates/ruff/src/rules/pygrep_hooks/rules/no_eval.rs b/crates/ruff/src/rules/pygrep_hooks/rules/no_eval.rs index 1a531c3021..a3c030e964 100644 --- a/crates/ruff/src/rules/pygrep_hooks/rules/no_eval.rs +++ b/crates/ruff/src/rules/pygrep_hooks/rules/no_eval.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::{Expr, ExprKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct NoEval; diff --git a/crates/ruff/src/rules/pylint/rules/await_outside_async.rs b/crates/ruff/src/rules/pylint/rules/await_outside_async.rs index d0fe80827a..4748e2777d 100644 --- a/crates/ruff/src/rules/pylint/rules/await_outside_async.rs +++ b/crates/ruff/src/rules/pylint/rules/await_outside_async.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::Expr; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::{FunctionDef, Range, ScopeKind}; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct AwaitOutsideAsync; diff --git a/crates/ruff/src/rules/pylint/rules/bad_str_strip_call.rs b/crates/ruff/src/rules/pylint/rules/bad_str_strip_call.rs index bedb4fc907..771fe1dd95 100644 --- a/crates/ruff/src/rules/pylint/rules/bad_str_strip_call.rs +++ b/crates/ruff/src/rules/pylint/rules/bad_str_strip_call.rs @@ -4,13 +4,12 @@ use rustc_hash::FxHashSet; use rustpython_parser::ast::{Constant, Expr, ExprKind}; use serde::{Deserialize, Serialize}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; use crate::settings::types::PythonVersion; -use crate::violation::Violation; #[violation] pub struct BadStrStripCall { diff --git a/crates/ruff/src/rules/pylint/rules/bad_string_format_type.rs b/crates/ruff/src/rules/pylint/rules/bad_string_format_type.rs index 7490d3b45d..17b4d64539 100644 --- a/crates/ruff/src/rules/pylint/rules/bad_string_format_type.rs +++ b/crates/ruff/src/rules/pylint/rules/bad_string_format_type.rs @@ -5,13 +5,12 @@ use rustpython_common::cformat::{CFormatPart, CFormatSpec, CFormatStrOrBytes, CF use rustpython_parser::ast::{Constant, Expr, ExprKind, Location, Operator}; use rustpython_parser::{lexer, Mode, Tok}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::str::{leading_quote, trailing_quote}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; /// ## What it does /// Checks for mismatched argument types in "old-style" format strings. diff --git a/crates/ruff/src/rules/pylint/rules/bidirectional_unicode.rs b/crates/ruff/src/rules/pylint/rules/bidirectional_unicode.rs index 9ce7a8e3dd..7138ce28fe 100644 --- a/crates/ruff/src/rules/pylint/rules/bidirectional_unicode.rs +++ b/crates/ruff/src/rules/pylint/rules/bidirectional_unicode.rs @@ -1,11 +1,9 @@ use rustpython_parser::ast::Location; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::registry::Diagnostic; -use crate::violation::Violation; - const BIDI_UNICODE: [char; 10] = [ '\u{202A}', //{LEFT-TO-RIGHT EMBEDDING} '\u{202B}', //{RIGHT-TO-LEFT EMBEDDING} diff --git a/crates/ruff/src/rules/pylint/rules/collapsible_else_if.rs b/crates/ruff/src/rules/pylint/rules/collapsible_else_if.rs index e0be0fa253..f127abb0b1 100644 --- a/crates/ruff/src/rules/pylint/rules/collapsible_else_if.rs +++ b/crates/ruff/src/rules/pylint/rules/collapsible_else_if.rs @@ -1,12 +1,10 @@ use rustpython_parser::ast::{Stmt, StmtKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::source_code::Locator; use ruff_python_ast::types::Range; -use crate::registry::Diagnostic; -use crate::violation::Violation; - #[violation] pub struct CollapsibleElseIf; diff --git a/crates/ruff/src/rules/pylint/rules/comparison_of_constant.rs b/crates/ruff/src/rules/pylint/rules/comparison_of_constant.rs index 08159997d2..3e39c62d34 100644 --- a/crates/ruff/src/rules/pylint/rules/comparison_of_constant.rs +++ b/crates/ruff/src/rules/pylint/rules/comparison_of_constant.rs @@ -4,13 +4,12 @@ use itertools::Itertools; use rustpython_parser::ast::{Cmpop, Expr, ExprKind, Located}; use serde::{Deserialize, Serialize}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::unparse_constant; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[derive(Debug, PartialEq, Eq, Serialize, Deserialize)] pub enum ViolationsCmpop { diff --git a/crates/ruff/src/rules/pylint/rules/consider_using_sys_exit.rs b/crates/ruff/src/rules/pylint/rules/consider_using_sys_exit.rs index 754b353714..6878110030 100644 --- a/crates/ruff/src/rules/pylint/rules/consider_using_sys_exit.rs +++ b/crates/ruff/src/rules/pylint/rules/consider_using_sys_exit.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::{Expr, ExprKind}; +use ruff_diagnostics::{AutofixKind, Availability, Diagnostic, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::{BindingKind, Range}; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::{AutofixKind, Availability, Violation}; +use crate::registry::AsRule; #[violation] pub struct ConsiderUsingSysExit { diff --git a/crates/ruff/src/rules/pylint/rules/global_statement.rs b/crates/ruff/src/rules/pylint/rules/global_statement.rs index 161f843f71..2ff492ca59 100644 --- a/crates/ruff/src/rules/pylint/rules/global_statement.rs +++ b/crates/ruff/src/rules/pylint/rules/global_statement.rs @@ -1,10 +1,10 @@ -use ruff_macros::{derive_message_formats, violation}; -use ruff_python_ast::types::Range; use rustpython_parser::ast::Stmt; +use ruff_diagnostics::{Diagnostic, Violation}; +use ruff_macros::{derive_message_formats, violation}; +use ruff_python_ast::types::Range; + use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; /// ## What it does /// Checks for the use of `global` statements to update identifiers. diff --git a/crates/ruff/src/rules/pylint/rules/global_variable_not_assigned.rs b/crates/ruff/src/rules/pylint/rules/global_variable_not_assigned.rs index 3edeb86fb6..8fe979803f 100644 --- a/crates/ruff/src/rules/pylint/rules/global_variable_not_assigned.rs +++ b/crates/ruff/src/rules/pylint/rules/global_variable_not_assigned.rs @@ -1,7 +1,6 @@ +use ruff_diagnostics::Violation; use ruff_macros::{derive_message_formats, violation}; -use crate::violation::Violation; - #[violation] pub struct GlobalVariableNotAssigned { pub name: String, diff --git a/crates/ruff/src/rules/pylint/rules/invalid_all_format.rs b/crates/ruff/src/rules/pylint/rules/invalid_all_format.rs index 588bfa4276..336bdfa995 100644 --- a/crates/ruff/src/rules/pylint/rules/invalid_all_format.rs +++ b/crates/ruff/src/rules/pylint/rules/invalid_all_format.rs @@ -1,11 +1,9 @@ use rustpython_parser::ast::Expr; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::registry::Diagnostic; -use crate::violation::Violation; - #[violation] pub struct InvalidAllFormat; diff --git a/crates/ruff/src/rules/pylint/rules/invalid_all_object.rs b/crates/ruff/src/rules/pylint/rules/invalid_all_object.rs index 476d0787e0..ed8d41becc 100644 --- a/crates/ruff/src/rules/pylint/rules/invalid_all_object.rs +++ b/crates/ruff/src/rules/pylint/rules/invalid_all_object.rs @@ -1,11 +1,9 @@ use rustpython_parser::ast::Expr; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::registry::Diagnostic; -use crate::violation::Violation; - #[violation] pub struct InvalidAllObject; diff --git a/crates/ruff/src/rules/pylint/rules/logging.rs b/crates/ruff/src/rules/pylint/rules/logging.rs index c5a1390a80..db390314dd 100644 --- a/crates/ruff/src/rules/pylint/rules/logging.rs +++ b/crates/ruff/src/rules/pylint/rules/logging.rs @@ -1,14 +1,14 @@ use rustpython_parser::ast::{Constant, Expr, ExprKind, Keyword}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::{is_logger_candidate, SimpleCallArgs}; use ruff_python_ast::logging::LoggingLevel; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::{Diagnostic, Rule}; +use crate::registry::Rule; use crate::rules::pyflakes::cformat::CFormatSummary; -use crate::violation::Violation; /// ## What it does /// Checks for too few positional arguments for a `logging` format string. diff --git a/crates/ruff/src/rules/pylint/rules/magic_value_comparison.rs b/crates/ruff/src/rules/pylint/rules/magic_value_comparison.rs index 7c070af03a..d10f94bdd1 100644 --- a/crates/ruff/src/rules/pylint/rules/magic_value_comparison.rs +++ b/crates/ruff/src/rules/pylint/rules/magic_value_comparison.rs @@ -1,14 +1,13 @@ use itertools::Itertools; use rustpython_parser::ast::{Constant, Expr, ExprKind, Unaryop}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::unparse_expr; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; use crate::rules::pylint::settings::ConstantType; -use crate::violation::Violation; #[violation] pub struct MagicValueComparison { diff --git a/crates/ruff/src/rules/pylint/rules/merge_isinstance.rs b/crates/ruff/src/rules/pylint/rules/merge_isinstance.rs index 3bfcbeb629..a2a01403b6 100644 --- a/crates/ruff/src/rules/pylint/rules/merge_isinstance.rs +++ b/crates/ruff/src/rules/pylint/rules/merge_isinstance.rs @@ -2,14 +2,13 @@ use itertools::Itertools; use rustc_hash::{FxHashMap, FxHashSet}; use rustpython_parser::ast::{Boolop, Expr, ExprKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::hashable::HashableExpr; use ruff_python_ast::helpers::unparse_expr; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct ConsiderMergingIsinstance { diff --git a/crates/ruff/src/rules/pylint/rules/nonlocal_without_binding.rs b/crates/ruff/src/rules/pylint/rules/nonlocal_without_binding.rs index 77aa3c6ba1..94a5f29226 100644 --- a/crates/ruff/src/rules/pylint/rules/nonlocal_without_binding.rs +++ b/crates/ruff/src/rules/pylint/rules/nonlocal_without_binding.rs @@ -1,7 +1,6 @@ +use ruff_diagnostics::Violation; use ruff_macros::{derive_message_formats, violation}; -use crate::violation::Violation; - #[violation] pub struct NonlocalWithoutBinding { pub name: String, diff --git a/crates/ruff/src/rules/pylint/rules/property_with_parameters.rs b/crates/ruff/src/rules/pylint/rules/property_with_parameters.rs index 912eaaa955..d33e77ea87 100644 --- a/crates/ruff/src/rules/pylint/rules/property_with_parameters.rs +++ b/crates/ruff/src/rules/pylint/rules/property_with_parameters.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::{Arguments, Expr, ExprKind, Stmt}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::identifier_range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct PropertyWithParameters; diff --git a/crates/ruff/src/rules/pylint/rules/redefined_loop_name.rs b/crates/ruff/src/rules/pylint/rules/redefined_loop_name.rs index a973017677..5764e96c09 100644 --- a/crates/ruff/src/rules/pylint/rules/redefined_loop_name.rs +++ b/crates/ruff/src/rules/pylint/rules/redefined_loop_name.rs @@ -4,6 +4,7 @@ use regex::Regex; use rustpython_parser::ast::{Expr, ExprContext, ExprKind, Stmt, StmtKind, Withitem}; use serde::{Deserialize, Serialize}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::comparable::ComparableExpr; use ruff_python_ast::helpers::unparse_expr; @@ -12,8 +13,6 @@ use ruff_python_ast::visitor; use ruff_python_ast::visitor::Visitor; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[derive(Debug, PartialEq, Eq, Serialize, Deserialize, Clone, Copy)] pub enum OuterBindingKind { diff --git a/crates/ruff/src/rules/pylint/rules/return_in_init.rs b/crates/ruff/src/rules/pylint/rules/return_in_init.rs index 0a2634985b..fd87ddf34d 100644 --- a/crates/ruff/src/rules/pylint/rules/return_in_init.rs +++ b/crates/ruff/src/rules/pylint/rules/return_in_init.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::{Constant, ExprKind, Stmt, StmtKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; use crate::rules::pylint::helpers::in_dunder_init; -use crate::violation::Violation; /// ## What it does /// Checks for `__init__` methods that return values. diff --git a/crates/ruff/src/rules/pylint/rules/too_many_arguments.rs b/crates/ruff/src/rules/pylint/rules/too_many_arguments.rs index efed3c31cf..a37eec9c03 100644 --- a/crates/ruff/src/rules/pylint/rules/too_many_arguments.rs +++ b/crates/ruff/src/rules/pylint/rules/too_many_arguments.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::{Arguments, Stmt}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::identifier_range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct TooManyArguments { diff --git a/crates/ruff/src/rules/pylint/rules/too_many_branches.rs b/crates/ruff/src/rules/pylint/rules/too_many_branches.rs index 8d96d10a94..51e847e35b 100644 --- a/crates/ruff/src/rules/pylint/rules/too_many_branches.rs +++ b/crates/ruff/src/rules/pylint/rules/too_many_branches.rs @@ -1,12 +1,10 @@ use rustpython_parser::ast::{ExcepthandlerKind, Stmt, StmtKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::identifier_range; use ruff_python_ast::source_code::Locator; -use crate::registry::Diagnostic; -use crate::violation::Violation; - #[violation] pub struct TooManyBranches { pub branches: usize, diff --git a/crates/ruff/src/rules/pylint/rules/too_many_return_statements.rs b/crates/ruff/src/rules/pylint/rules/too_many_return_statements.rs index 8ecbb08ab9..9ddbad22c5 100644 --- a/crates/ruff/src/rules/pylint/rules/too_many_return_statements.rs +++ b/crates/ruff/src/rules/pylint/rules/too_many_return_statements.rs @@ -1,13 +1,11 @@ use rustpython_parser::ast::Stmt; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::{identifier_range, ReturnStatementVisitor}; use ruff_python_ast::source_code::Locator; use ruff_python_ast::visitor::Visitor; -use crate::registry::Diagnostic; -use crate::violation::Violation; - #[violation] pub struct TooManyReturnStatements { pub returns: usize, diff --git a/crates/ruff/src/rules/pylint/rules/too_many_statements.rs b/crates/ruff/src/rules/pylint/rules/too_many_statements.rs index c1d22f99d9..981e4abb9c 100644 --- a/crates/ruff/src/rules/pylint/rules/too_many_statements.rs +++ b/crates/ruff/src/rules/pylint/rules/too_many_statements.rs @@ -1,12 +1,10 @@ use rustpython_parser::ast::{ExcepthandlerKind, Stmt, StmtKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::identifier_range; use ruff_python_ast::source_code::Locator; -use crate::registry::Diagnostic; -use crate::violation::Violation; - #[violation] pub struct TooManyStatements { pub statements: usize, diff --git a/crates/ruff/src/rules/pylint/rules/unnecessary_direct_lambda_call.rs b/crates/ruff/src/rules/pylint/rules/unnecessary_direct_lambda_call.rs index ffff453f5f..57de373055 100644 --- a/crates/ruff/src/rules/pylint/rules/unnecessary_direct_lambda_call.rs +++ b/crates/ruff/src/rules/pylint/rules/unnecessary_direct_lambda_call.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::{Expr, ExprKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct UnnecessaryDirectLambdaCall; diff --git a/crates/ruff/src/rules/pylint/rules/use_from_import.rs b/crates/ruff/src/rules/pylint/rules/use_from_import.rs index c47875f20b..e05975ff6d 100644 --- a/crates/ruff/src/rules/pylint/rules/use_from_import.rs +++ b/crates/ruff/src/rules/pylint/rules/use_from_import.rs @@ -1,13 +1,12 @@ use rustpython_parser::ast::{Alias, AliasData, Located, Stmt, StmtKind}; +use ruff_diagnostics::{AutofixKind, Availability, Diagnostic, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::{create_stmt, unparse_stmt}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::{AutofixKind, Availability, Violation}; +use crate::registry::AsRule; #[violation] pub struct ConsiderUsingFromImport { diff --git a/crates/ruff/src/rules/pylint/rules/used_prior_global_declaration.rs b/crates/ruff/src/rules/pylint/rules/used_prior_global_declaration.rs index 9d603af660..22126b0468 100644 --- a/crates/ruff/src/rules/pylint/rules/used_prior_global_declaration.rs +++ b/crates/ruff/src/rules/pylint/rules/used_prior_global_declaration.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::Expr; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::{Range, ScopeKind}; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct UsedPriorGlobalDeclaration { diff --git a/crates/ruff/src/rules/pylint/rules/useless_else_on_loop.rs b/crates/ruff/src/rules/pylint/rules/useless_else_on_loop.rs index 91f9629a02..691606fb52 100644 --- a/crates/ruff/src/rules/pylint/rules/useless_else_on_loop.rs +++ b/crates/ruff/src/rules/pylint/rules/useless_else_on_loop.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::{ExcepthandlerKind, MatchCase, Stmt, StmtKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct UselessElseOnLoop; diff --git a/crates/ruff/src/rules/pylint/rules/useless_import_alias.rs b/crates/ruff/src/rules/pylint/rules/useless_import_alias.rs index 1ca4a39ad4..8b04663130 100644 --- a/crates/ruff/src/rules/pylint/rules/useless_import_alias.rs +++ b/crates/ruff/src/rules/pylint/rules/useless_import_alias.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::Alias; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; #[violation] pub struct UselessImportAlias; diff --git a/crates/ruff/src/rules/pylint/rules/yield_in_init.rs b/crates/ruff/src/rules/pylint/rules/yield_in_init.rs index 0c89d25698..5904bf27fd 100644 --- a/crates/ruff/src/rules/pylint/rules/yield_in_init.rs +++ b/crates/ruff/src/rules/pylint/rules/yield_in_init.rs @@ -1,10 +1,11 @@ use rustpython_parser::ast::Expr; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; +use crate::checkers::ast::Checker; use crate::rules::pylint::helpers::in_dunder_init; -use crate::{checkers::ast::Checker, registry::Diagnostic, violation::Violation}; /// ## What it does /// Checks for `__init__` methods that are turned into generators by the diff --git a/crates/ruff/src/rules/pyupgrade/fixes.rs b/crates/ruff/src/rules/pyupgrade/fixes.rs index d90809e66d..15eee92bc6 100644 --- a/crates/ruff/src/rules/pyupgrade/fixes.rs +++ b/crates/ruff/src/rules/pyupgrade/fixes.rs @@ -6,12 +6,12 @@ use libcst_native::{ use rustpython_parser::ast::{Expr, Keyword, Location}; use rustpython_parser::{lexer, Mode, Tok}; +use ruff_diagnostics::Fix; use ruff_python_ast::source_code::{Locator, Stylist}; use ruff_python_ast::types::Range; use crate::autofix::helpers::remove_argument; use crate::cst::matchers::match_module; -use crate::fix::Fix; /// Safely adjust the indentation of the indented block at [`Range`]. pub fn adjust_indentation( diff --git a/crates/ruff/src/rules/pyupgrade/rules/convert_named_tuple_functional_to_class.rs b/crates/ruff/src/rules/pyupgrade/rules/convert_named_tuple_functional_to_class.rs index 8f81464783..63602b04d2 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/convert_named_tuple_functional_to_class.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/convert_named_tuple_functional_to_class.rs @@ -2,6 +2,7 @@ use anyhow::{bail, Result}; use log::debug; use rustpython_parser::ast::{Constant, Expr, ExprContext, ExprKind, Keyword, Stmt, StmtKind}; +use ruff_diagnostics::{AutofixKind, Availability, Diagnostic, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::{create_expr, create_stmt, unparse_stmt}; use ruff_python_ast::source_code::Stylist; @@ -10,10 +11,7 @@ use ruff_python_stdlib::identifiers::is_identifier; use ruff_python_stdlib::keyword::KWLIST; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::{Availability, Violation}; -use crate::AutofixKind; +use crate::registry::AsRule; #[violation] pub struct ConvertNamedTupleFunctionalToClass { diff --git a/crates/ruff/src/rules/pyupgrade/rules/convert_typed_dict_functional_to_class.rs b/crates/ruff/src/rules/pyupgrade/rules/convert_typed_dict_functional_to_class.rs index 75bd65c81a..5a13911356 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/convert_typed_dict_functional_to_class.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/convert_typed_dict_functional_to_class.rs @@ -2,6 +2,7 @@ use anyhow::{bail, Result}; use log::debug; use rustpython_parser::ast::{Constant, Expr, ExprContext, ExprKind, Keyword, Stmt, StmtKind}; +use ruff_diagnostics::{AutofixKind, Availability, Diagnostic, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::{create_expr, create_stmt, unparse_stmt}; use ruff_python_ast::source_code::Stylist; @@ -10,10 +11,7 @@ use ruff_python_stdlib::identifiers::is_identifier; use ruff_python_stdlib::keyword::KWLIST; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::{Availability, Violation}; -use crate::AutofixKind; +use crate::registry::AsRule; #[violation] pub struct ConvertTypedDictFunctionalToClass { diff --git a/crates/ruff/src/rules/pyupgrade/rules/datetime_utc_alias.rs b/crates/ruff/src/rules/pyupgrade/rules/datetime_utc_alias.rs index 332311e315..bcbb7c9b42 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/datetime_utc_alias.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/datetime_utc_alias.rs @@ -1,13 +1,12 @@ use rustpython_parser::ast::Expr; +use ruff_diagnostics::{AutofixKind, Availability, Diagnostic, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::collect_call_path; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::{AutofixKind, Availability, Violation}; +use crate::registry::AsRule; #[violation] pub struct DatetimeTimezoneUTC { diff --git a/crates/ruff/src/rules/pyupgrade/rules/deprecated_unittest_alias.rs b/crates/ruff/src/rules/pyupgrade/rules/deprecated_unittest_alias.rs index 0463fb5a63..2b6950fbd0 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/deprecated_unittest_alias.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/deprecated_unittest_alias.rs @@ -2,13 +2,12 @@ use once_cell::sync::Lazy; use rustc_hash::FxHashMap; use rustpython_parser::ast::{Expr, ExprKind}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; #[violation] pub struct DeprecatedUnittestAlias { diff --git a/crates/ruff/src/rules/pyupgrade/rules/extraneous_parentheses.rs b/crates/ruff/src/rules/pyupgrade/rules/extraneous_parentheses.rs index 2d8e8b21e7..30d168ee45 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/extraneous_parentheses.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/extraneous_parentheses.rs @@ -1,14 +1,13 @@ use rustpython_parser::lexer::LexResult; use rustpython_parser::Tok; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::source_code::Locator; use ruff_python_ast::types::Range; -use crate::fix::Fix; -use crate::registry::{Diagnostic, Rule}; +use crate::registry::Rule; use crate::settings::{flags, Settings}; -use crate::violation::AlwaysAutofixableViolation; #[violation] pub struct ExtraneousParentheses; diff --git a/crates/ruff/src/rules/pyupgrade/rules/f_strings.rs b/crates/ruff/src/rules/pyupgrade/rules/f_strings.rs index 8b5ebdb6eb..c61e59bded 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/f_strings.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/f_strings.rs @@ -5,16 +5,15 @@ use rustpython_common::format::{ use rustpython_parser::ast::{Constant, Expr, ExprKind, KeywordData}; use rustpython_parser::{lexer, Mode, Tok}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::str::{leading_quote, trailing_quote}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; +use crate::registry::AsRule; use crate::rules::pyflakes::format::FormatSummary; use crate::rules::pyupgrade::helpers::curly_escape; -use crate::violation::AlwaysAutofixableViolation; #[violation] pub struct FString; diff --git a/crates/ruff/src/rules/pyupgrade/rules/format_literals.rs b/crates/ruff/src/rules/pyupgrade/rules/format_literals.rs index 200d58448f..b27fcfd7a5 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/format_literals.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/format_literals.rs @@ -4,16 +4,15 @@ use once_cell::sync::Lazy; use regex::Regex; use rustpython_parser::ast::Expr; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::source_code::{Locator, Stylist}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; use crate::cst::matchers::{match_call, match_expression}; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; +use crate::registry::AsRule; use crate::rules::pyflakes::format::FormatSummary; -use crate::violation::AlwaysAutofixableViolation; #[violation] pub struct FormatLiterals; diff --git a/crates/ruff/src/rules/pyupgrade/rules/functools_cache.rs b/crates/ruff/src/rules/pyupgrade/rules/functools_cache.rs index b4a37b8383..cbaae97107 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/functools_cache.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/functools_cache.rs @@ -1,13 +1,12 @@ use rustpython_parser::ast::{Constant, Expr, ExprKind, KeywordData}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::{create_expr, unparse_expr}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; #[violation] pub struct FunctoolsCache; diff --git a/crates/ruff/src/rules/pyupgrade/rules/import_replacements.rs b/crates/ruff/src/rules/pyupgrade/rules/import_replacements.rs index 3f3bb19b5c..ad477c5d35 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/import_replacements.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/import_replacements.rs @@ -1,17 +1,16 @@ use itertools::Itertools; use rustpython_parser::ast::{Alias, AliasData, Stmt}; +use ruff_diagnostics::{AutofixKind, Availability, Diagnostic, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::source_code::{Locator, Stylist}; use ruff_python_ast::types::Range; use ruff_python_ast::whitespace::indentation; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{Diagnostic, Rule}; +use crate::registry::Rule; use crate::rules::pyupgrade::fixes; use crate::settings::types::PythonVersion; -use crate::violation::{AutofixKind, Availability, Violation}; #[violation] pub struct ImportReplacements { diff --git a/crates/ruff/src/rules/pyupgrade/rules/lru_cache_without_parameters.rs b/crates/ruff/src/rules/pyupgrade/rules/lru_cache_without_parameters.rs index 3fe6023847..7ea0811a50 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/lru_cache_without_parameters.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/lru_cache_without_parameters.rs @@ -1,13 +1,12 @@ use rustpython_parser::ast::{Expr, ExprKind}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::unparse_expr; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; #[violation] pub struct LRUCacheWithoutParameters; diff --git a/crates/ruff/src/rules/pyupgrade/rules/native_literals.rs b/crates/ruff/src/rules/pyupgrade/rules/native_literals.rs index 03bb8897dd..024912d63d 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/native_literals.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/native_literals.rs @@ -4,13 +4,12 @@ use rustpython_parser::ast::{Constant, Expr, ExprKind, Keyword}; use rustpython_parser::{lexer, Mode, Tok}; use serde::{Deserialize, Serialize}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; #[derive(Debug, PartialEq, Eq, Serialize, Deserialize)] pub enum LiteralType { diff --git a/crates/ruff/src/rules/pyupgrade/rules/open_alias.rs b/crates/ruff/src/rules/pyupgrade/rules/open_alias.rs index edc621f136..0eb278085b 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/open_alias.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/open_alias.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::Expr; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; #[violation] pub struct OpenAlias; diff --git a/crates/ruff/src/rules/pyupgrade/rules/os_error_alias.rs b/crates/ruff/src/rules/pyupgrade/rules/os_error_alias.rs index caec6ff87d..61310263c5 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/os_error_alias.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/os_error_alias.rs @@ -1,14 +1,13 @@ use itertools::Itertools; use rustpython_parser::ast::{Excepthandler, ExcepthandlerKind, Expr, ExprKind}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::compose_call_path; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; #[violation] pub struct OSErrorAlias { diff --git a/crates/ruff/src/rules/pyupgrade/rules/outdated_version_block.rs b/crates/ruff/src/rules/pyupgrade/rules/outdated_version_block.rs index dc898c9f2d..a3c30f00fc 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/outdated_version_block.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/outdated_version_block.rs @@ -5,6 +5,7 @@ use num_bigint::{BigInt, Sign}; use rustpython_parser::ast::{Cmpop, Constant, Expr, ExprKind, Located, Location, Stmt}; use rustpython_parser::{lexer, Mode, Tok}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::source_code::Locator; use ruff_python_ast::types::{Range, RefEquality}; @@ -12,11 +13,9 @@ use ruff_python_ast::whitespace::indentation; use crate::autofix::helpers::delete_stmt; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; +use crate::registry::AsRule; use crate::rules::pyupgrade::fixes::adjust_indentation; use crate::settings::types::PythonVersion; -use crate::violation::AlwaysAutofixableViolation; #[violation] pub struct OutdatedVersionBlock; diff --git a/crates/ruff/src/rules/pyupgrade/rules/printf_string_formatting.rs b/crates/ruff/src/rules/pyupgrade/rules/printf_string_formatting.rs index 7ce4a65427..bda8ef63c7 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/printf_string_formatting.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/printf_string_formatting.rs @@ -6,6 +6,7 @@ use rustpython_common::cformat::{ use rustpython_parser::ast::{Constant, Expr, ExprKind, Location}; use rustpython_parser::{lexer, Mode, Tok}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::str::{leading_quote, trailing_quote}; use ruff_python_ast::types::Range; @@ -14,10 +15,8 @@ use ruff_python_stdlib::identifiers::is_identifier; use ruff_python_stdlib::keyword::KWLIST; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; +use crate::registry::AsRule; use crate::rules::pyupgrade::helpers::curly_escape; -use crate::violation::AlwaysAutofixableViolation; #[violation] pub struct PrintfStringFormatting; diff --git a/crates/ruff/src/rules/pyupgrade/rules/quoted_annotation.rs b/crates/ruff/src/rules/pyupgrade/rules/quoted_annotation.rs index f721d6c798..d2fb506a5b 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/quoted_annotation.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/quoted_annotation.rs @@ -1,10 +1,9 @@ +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{Diagnostic, Rule}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::Rule; #[violation] pub struct QuotedAnnotation; diff --git a/crates/ruff/src/rules/pyupgrade/rules/redundant_open_modes.rs b/crates/ruff/src/rules/pyupgrade/rules/redundant_open_modes.rs index 3054b7ab4c..1a588f8fa3 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/redundant_open_modes.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/redundant_open_modes.rs @@ -5,15 +5,14 @@ use log::error; use rustpython_parser::ast::{Constant, Expr, ExprKind, Keyword, Location}; use rustpython_parser::{lexer, Mode, Tok}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::find_keyword; use ruff_python_ast::source_code::Locator; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{Diagnostic, Rule}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::Rule; #[violation] pub struct RedundantOpenModes { diff --git a/crates/ruff/src/rules/pyupgrade/rules/replace_stdout_stderr.rs b/crates/ruff/src/rules/pyupgrade/rules/replace_stdout_stderr.rs index 05ee6f2bbf..3d1948baad 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/replace_stdout_stderr.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/replace_stdout_stderr.rs @@ -1,5 +1,6 @@ use rustpython_parser::ast::{Expr, Keyword}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::find_keyword; use ruff_python_ast::source_code::{Locator, Stylist}; @@ -7,9 +8,7 @@ use ruff_python_ast::types::Range; use ruff_python_ast::whitespace::indentation; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; #[violation] pub struct ReplaceStdoutStderr; diff --git a/crates/ruff/src/rules/pyupgrade/rules/replace_universal_newlines.rs b/crates/ruff/src/rules/pyupgrade/rules/replace_universal_newlines.rs index e97479c232..549d7f8f0e 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/replace_universal_newlines.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/replace_universal_newlines.rs @@ -1,13 +1,12 @@ use rustpython_parser::ast::{Expr, Keyword, Location}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::find_keyword; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; #[violation] pub struct ReplaceUniversalNewlines; diff --git a/crates/ruff/src/rules/pyupgrade/rules/rewrite_c_element_tree.rs b/crates/ruff/src/rules/pyupgrade/rules/rewrite_c_element_tree.rs index 37629e843b..9855130135 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/rewrite_c_element_tree.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/rewrite_c_element_tree.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::{Located, Stmt, StmtKind}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; #[violation] pub struct RewriteCElementTree; diff --git a/crates/ruff/src/rules/pyupgrade/rules/rewrite_mock_import.rs b/crates/ruff/src/rules/pyupgrade/rules/rewrite_mock_import.rs index a788a32e43..0e4cf1d099 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/rewrite_mock_import.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/rewrite_mock_import.rs @@ -7,6 +7,7 @@ use log::error; use rustpython_parser::ast::{Expr, ExprKind, Stmt, StmtKind}; use serde::{Deserialize, Serialize}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::collect_call_path; use ruff_python_ast::source_code::{Locator, Stylist}; @@ -15,9 +16,7 @@ use ruff_python_ast::whitespace::indentation; use crate::checkers::ast::Checker; use crate::cst::matchers::{match_import, match_import_from, match_module}; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic, Rule}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::{AsRule, Rule}; #[derive(Debug, PartialEq, Eq, Serialize, Deserialize)] pub enum MockReference { diff --git a/crates/ruff/src/rules/pyupgrade/rules/rewrite_unicode_literal.rs b/crates/ruff/src/rules/pyupgrade/rules/rewrite_unicode_literal.rs index 21acd10503..e3a9af2ec7 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/rewrite_unicode_literal.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/rewrite_unicode_literal.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::{Expr, Location}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; #[violation] pub struct RewriteUnicodeLiteral; diff --git a/crates/ruff/src/rules/pyupgrade/rules/rewrite_yield_from.rs b/crates/ruff/src/rules/pyupgrade/rules/rewrite_yield_from.rs index 6c1a356ad2..032dadd31f 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/rewrite_yield_from.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/rewrite_yield_from.rs @@ -1,15 +1,14 @@ use rustc_hash::FxHashMap; use rustpython_parser::ast::{Expr, ExprContext, ExprKind, Stmt, StmtKind}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::{Range, RefEquality}; use ruff_python_ast::visitor; use ruff_python_ast::visitor::Visitor; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; #[violation] pub struct RewriteYieldFrom; diff --git a/crates/ruff/src/rules/pyupgrade/rules/super_call_with_parameters.rs b/crates/ruff/src/rules/pyupgrade/rules/super_call_with_parameters.rs index 4b0fcfb72b..d6a7a099e7 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/super_call_with_parameters.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/super_call_with_parameters.rs @@ -1,12 +1,12 @@ use rustpython_parser::ast::{ArgData, Expr, ExprKind, Stmt, StmtKind}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::{Range, ScopeKind}; use crate::checkers::ast::Checker; -use crate::registry::{AsRule, Diagnostic}; +use crate::registry::AsRule; use crate::rules::pyupgrade::fixes; -use crate::violation::AlwaysAutofixableViolation; #[violation] pub struct SuperCallWithParameters; diff --git a/crates/ruff/src/rules/pyupgrade/rules/type_of_primitive.rs b/crates/ruff/src/rules/pyupgrade/rules/type_of_primitive.rs index 78ea641ab4..2fdc5c90aa 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/type_of_primitive.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/type_of_primitive.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::{Expr, ExprKind}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; use super::super::types::Primitive; diff --git a/crates/ruff/src/rules/pyupgrade/rules/typing_text_str_alias.rs b/crates/ruff/src/rules/pyupgrade/rules/typing_text_str_alias.rs index 1c26fd1fb0..288db4b296 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/typing_text_str_alias.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/typing_text_str_alias.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::Expr; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; #[violation] pub struct TypingTextStrAlias; diff --git a/crates/ruff/src/rules/pyupgrade/rules/unnecessary_builtin_import.rs b/crates/ruff/src/rules/pyupgrade/rules/unnecessary_builtin_import.rs index 5fb63329bd..7a7601d951 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/unnecessary_builtin_import.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/unnecessary_builtin_import.rs @@ -2,13 +2,13 @@ use itertools::Itertools; use log::error; use rustpython_parser::ast::{Alias, AliasData, Located, Stmt}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::autofix; use crate::checkers::ast::Checker; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; #[violation] pub struct UnnecessaryBuiltinImport { diff --git a/crates/ruff/src/rules/pyupgrade/rules/unnecessary_coding_comment.rs b/crates/ruff/src/rules/pyupgrade/rules/unnecessary_coding_comment.rs index 9bebdf9351..a405ec26c1 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/unnecessary_coding_comment.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/unnecessary_coding_comment.rs @@ -2,13 +2,10 @@ use once_cell::sync::Lazy; use regex::Regex; use rustpython_parser::ast::Location; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; -use crate::fix::Fix; -use crate::registry::Diagnostic; -use crate::violation::AlwaysAutofixableViolation; - // TODO: document referencing [PEP 3120]: https://peps.python.org/pep-3120/ #[violation] pub struct UTF8EncodingDeclaration; diff --git a/crates/ruff/src/rules/pyupgrade/rules/unnecessary_encode_utf8.rs b/crates/ruff/src/rules/pyupgrade/rules/unnecessary_encode_utf8.rs index fdf1dfbedf..a5546911ad 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/unnecessary_encode_utf8.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/unnecessary_encode_utf8.rs @@ -1,14 +1,13 @@ use rustpython_parser::ast::{Constant, Expr, ExprKind, Keyword}; use rustpython_parser::{lexer, Mode, Tok}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::source_code::Locator; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{Diagnostic, Rule}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::Rule; #[violation] pub struct UnnecessaryEncodeUTF8; diff --git a/crates/ruff/src/rules/pyupgrade/rules/unnecessary_future_import.rs b/crates/ruff/src/rules/pyupgrade/rules/unnecessary_future_import.rs index d0d6d1d984..88763e7767 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/unnecessary_future_import.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/unnecessary_future_import.rs @@ -2,13 +2,13 @@ use itertools::Itertools; use log::error; use rustpython_parser::ast::{Alias, AliasData, Located, Stmt}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::autofix; use crate::checkers::ast::Checker; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; #[violation] pub struct UnnecessaryFutureImport { diff --git a/crates/ruff/src/rules/pyupgrade/rules/unpack_list_comprehension.rs b/crates/ruff/src/rules/pyupgrade/rules/unpack_list_comprehension.rs index c0fda3c199..840e41c477 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/unpack_list_comprehension.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/unpack_list_comprehension.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::{Expr, ExprKind}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; #[violation] pub struct RewriteListComprehension; diff --git a/crates/ruff/src/rules/pyupgrade/rules/use_pep585_annotation.rs b/crates/ruff/src/rules/pyupgrade/rules/use_pep585_annotation.rs index 6821d33c41..2a5368a1d3 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/use_pep585_annotation.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/use_pep585_annotation.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::Expr; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; // TODO: document referencing [PEP 585]: https://peps.python.org/pep-0585/ #[violation] diff --git a/crates/ruff/src/rules/pyupgrade/rules/use_pep604_annotation.rs b/crates/ruff/src/rules/pyupgrade/rules/use_pep604_annotation.rs index ba3b8c96fd..db6948e70f 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/use_pep604_annotation.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/use_pep604_annotation.rs @@ -1,13 +1,12 @@ use rustpython_parser::ast::{Constant, Expr, ExprKind, Location, Operator}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::unparse_expr; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; // TODO: document referencing [PEP 604]: https://peps.python.org/pep-0604/ #[violation] diff --git a/crates/ruff/src/rules/pyupgrade/rules/use_pep604_isinstance.rs b/crates/ruff/src/rules/pyupgrade/rules/use_pep604_isinstance.rs index 81bf3fe60d..689c6230de 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/use_pep604_isinstance.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/use_pep604_isinstance.rs @@ -3,14 +3,13 @@ use std::fmt; use rustpython_parser::ast::{Expr, ExprKind, Location, Operator}; use serde::{Deserialize, Serialize}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::unparse_expr; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; #[derive(Debug, PartialEq, Eq, Serialize, Deserialize)] pub enum CallKind { diff --git a/crates/ruff/src/rules/pyupgrade/rules/useless_metaclass_type.rs b/crates/ruff/src/rules/pyupgrade/rules/useless_metaclass_type.rs index 493ba8cbe0..da924ee9a8 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/useless_metaclass_type.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/useless_metaclass_type.rs @@ -1,13 +1,13 @@ use log::error; use rustpython_parser::ast::{Expr, ExprKind, Stmt}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::autofix::helpers; use crate::checkers::ast::Checker; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; #[violation] pub struct UselessMetaclassType; diff --git a/crates/ruff/src/rules/pyupgrade/rules/useless_object_inheritance.rs b/crates/ruff/src/rules/pyupgrade/rules/useless_object_inheritance.rs index f7cdd129ca..fec76bcfaf 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/useless_object_inheritance.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/useless_object_inheritance.rs @@ -1,11 +1,11 @@ use rustpython_parser::ast::{Expr, ExprKind, Keyword, Stmt}; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::{Binding, BindingKind, Range, Scope}; use crate::checkers::ast::Checker; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::AlwaysAutofixableViolation; +use crate::registry::AsRule; use super::super::fixes; diff --git a/crates/ruff/src/rules/ruff/rules/ambiguous_unicode_character.rs b/crates/ruff/src/rules/ruff/rules/ambiguous_unicode_character.rs index 1d2ed95c7d..dd30c57333 100644 --- a/crates/ruff/src/rules/ruff/rules/ambiguous_unicode_character.rs +++ b/crates/ruff/src/rules/ruff/rules/ambiguous_unicode_character.rs @@ -1,16 +1,15 @@ use once_cell::sync::Lazy; use rustc_hash::FxHashMap; +use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, DiagnosticKind, Fix}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::source_code::Locator; use ruff_python_ast::types::Range; -use crate::fix::Fix; use crate::message::Location; -use crate::registry::{AsRule, Diagnostic, DiagnosticKind}; +use crate::registry::AsRule; use crate::rules::ruff::rules::Context; use crate::settings::{flags, Settings}; -use crate::violation::AlwaysAutofixableViolation; #[violation] pub struct AmbiguousUnicodeCharacterString { diff --git a/crates/ruff/src/rules/ruff/rules/asyncio_dangling_task.rs b/crates/ruff/src/rules/ruff/rules/asyncio_dangling_task.rs index 39cc6920e4..fd6519ba5d 100644 --- a/crates/ruff/src/rules/ruff/rules/asyncio_dangling_task.rs +++ b/crates/ruff/src/rules/ruff/rules/asyncio_dangling_task.rs @@ -3,12 +3,10 @@ use std::fmt; use rustpython_parser::ast::{Expr, ExprKind}; use serde::{Deserialize, Serialize}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::{CallPath, Range}; -use crate::registry::Diagnostic; -use crate::violation::Violation; - /// ## What it does /// Checks for `asyncio.create_task` and `asyncio.ensure_future` calls /// that do not store a reference to the returned result. diff --git a/crates/ruff/src/rules/ruff/rules/unpack_instead_of_concatenating_to_collection_literal.rs b/crates/ruff/src/rules/ruff/rules/unpack_instead_of_concatenating_to_collection_literal.rs index 67f15c261d..6893a663af 100644 --- a/crates/ruff/src/rules/ruff/rules/unpack_instead_of_concatenating_to_collection_literal.rs +++ b/crates/ruff/src/rules/ruff/rules/unpack_instead_of_concatenating_to_collection_literal.rs @@ -1,13 +1,12 @@ use rustpython_parser::ast::{Expr, ExprContext, ExprKind, Operator}; +use ruff_diagnostics::{AutofixKind, Availability, Diagnostic, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::{create_expr, has_comments, unparse_expr}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::fix::Fix; -use crate::registry::{AsRule, Diagnostic}; -use crate::violation::{AutofixKind, Availability, Violation}; +use crate::registry::AsRule; #[violation] pub struct UnpackInsteadOfConcatenatingToCollectionLiteral { diff --git a/crates/ruff/src/rules/ruff/rules/unused_noqa.rs b/crates/ruff/src/rules/ruff/rules/unused_noqa.rs index ae93702fef..bfd5e0ae72 100644 --- a/crates/ruff/src/rules/ruff/rules/unused_noqa.rs +++ b/crates/ruff/src/rules/ruff/rules/unused_noqa.rs @@ -1,10 +1,9 @@ use itertools::Itertools; use serde::{Deserialize, Serialize}; +use ruff_diagnostics::AlwaysAutofixableViolation; use ruff_macros::{derive_message_formats, violation}; -use crate::violation::AlwaysAutofixableViolation; - #[derive(Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct UnusedCodes { pub unknown: Vec, diff --git a/crates/ruff/src/rules/tryceratops/rules/error_instead_of_exception.rs b/crates/ruff/src/rules/tryceratops/rules/error_instead_of_exception.rs index 9157c78c18..006e6f4bc1 100644 --- a/crates/ruff/src/rules/tryceratops/rules/error_instead_of_exception.rs +++ b/crates/ruff/src/rules/tryceratops/rules/error_instead_of_exception.rs @@ -1,13 +1,12 @@ use rustpython_parser::ast::{Excepthandler, ExcepthandlerKind, ExprKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use ruff_python_ast::visitor::Visitor; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; use crate::rules::tryceratops::helpers::LoggerCandidateVisitor; -use crate::violation::Violation; #[violation] pub struct ErrorInsteadOfException; diff --git a/crates/ruff/src/rules/tryceratops/rules/prefer_type_error.rs b/crates/ruff/src/rules/tryceratops/rules/prefer_type_error.rs index 998a1eed33..8d93c61fc1 100644 --- a/crates/ruff/src/rules/tryceratops/rules/prefer_type_error.rs +++ b/crates/ruff/src/rules/tryceratops/rules/prefer_type_error.rs @@ -1,13 +1,12 @@ use rustpython_parser::ast::{Expr, ExprKind, Stmt, StmtKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use ruff_python_ast::visitor; use ruff_python_ast::visitor::Visitor; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct PreferTypeError; diff --git a/crates/ruff/src/rules/tryceratops/rules/raise_vanilla_args.rs b/crates/ruff/src/rules/tryceratops/rules/raise_vanilla_args.rs index 5a7c76fe25..58af731e1d 100644 --- a/crates/ruff/src/rules/tryceratops/rules/raise_vanilla_args.rs +++ b/crates/ruff/src/rules/tryceratops/rules/raise_vanilla_args.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::{Constant, Expr, ExprKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct RaiseVanillaArgs; diff --git a/crates/ruff/src/rules/tryceratops/rules/raise_vanilla_class.rs b/crates/ruff/src/rules/tryceratops/rules/raise_vanilla_class.rs index c64c48bd95..7805655e94 100644 --- a/crates/ruff/src/rules/tryceratops/rules/raise_vanilla_class.rs +++ b/crates/ruff/src/rules/tryceratops/rules/raise_vanilla_class.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::{Expr, ExprKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; /// ## What it does /// Checks for code that raises `Exception` directly. diff --git a/crates/ruff/src/rules/tryceratops/rules/raise_within_try.rs b/crates/ruff/src/rules/tryceratops/rules/raise_within_try.rs index bb8f95c545..d22a537fde 100644 --- a/crates/ruff/src/rules/tryceratops/rules/raise_within_try.rs +++ b/crates/ruff/src/rules/tryceratops/rules/raise_within_try.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::{Stmt, StmtKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use ruff_python_ast::visitor::{self, Visitor}; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct RaiseWithinTry; diff --git a/crates/ruff/src/rules/tryceratops/rules/reraise_no_cause.rs b/crates/ruff/src/rules/tryceratops/rules/reraise_no_cause.rs index aeed5c4261..f3c0648f3e 100644 --- a/crates/ruff/src/rules/tryceratops/rules/reraise_no_cause.rs +++ b/crates/ruff/src/rules/tryceratops/rules/reraise_no_cause.rs @@ -1,12 +1,11 @@ use rustpython_parser::ast::{ExprKind, Stmt}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::RaiseStatementVisitor; use ruff_python_ast::visitor::Visitor; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct ReraiseNoCause; diff --git a/crates/ruff/src/rules/tryceratops/rules/try_consider_else.rs b/crates/ruff/src/rules/tryceratops/rules/try_consider_else.rs index cc33e04eaa..3377bfdecf 100644 --- a/crates/ruff/src/rules/tryceratops/rules/try_consider_else.rs +++ b/crates/ruff/src/rules/tryceratops/rules/try_consider_else.rs @@ -1,11 +1,10 @@ use rustpython_parser::ast::{Stmt, StmtKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct TryConsiderElse; diff --git a/crates/ruff/src/rules/tryceratops/rules/verbose_log_message.rs b/crates/ruff/src/rules/tryceratops/rules/verbose_log_message.rs index 8497bde168..f042fff03b 100644 --- a/crates/ruff/src/rules/tryceratops/rules/verbose_log_message.rs +++ b/crates/ruff/src/rules/tryceratops/rules/verbose_log_message.rs @@ -1,14 +1,13 @@ use rustpython_parser::ast::{Excepthandler, ExcepthandlerKind, Expr, ExprContext, ExprKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use ruff_python_ast::visitor; use ruff_python_ast::visitor::Visitor; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; use crate::rules::tryceratops::helpers::LoggerCandidateVisitor; -use crate::violation::Violation; /// ## What it does /// Checks for excessive logging of exception objects. diff --git a/crates/ruff/src/rules/tryceratops/rules/verbose_raise.rs b/crates/ruff/src/rules/tryceratops/rules/verbose_raise.rs index 07722cabff..1b0daf2a21 100644 --- a/crates/ruff/src/rules/tryceratops/rules/verbose_raise.rs +++ b/crates/ruff/src/rules/tryceratops/rules/verbose_raise.rs @@ -1,13 +1,12 @@ use rustpython_parser::ast::{Excepthandler, ExcepthandlerKind, Expr, ExprKind, Stmt, StmtKind}; +use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::types::Range; use ruff_python_ast::visitor; use ruff_python_ast::visitor::Visitor; use crate::checkers::ast::Checker; -use crate::registry::Diagnostic; -use crate::violation::Violation; #[violation] pub struct VerboseRaise; diff --git a/crates/ruff/src/test.rs b/crates/ruff/src/test.rs index 5241b699e0..fac9c7c69f 100644 --- a/crates/ruff/src/test.rs +++ b/crates/ruff/src/test.rs @@ -6,13 +6,14 @@ use std::path::Path; use anyhow::Result; use rustpython_parser::lexer::LexResult; +use ruff_diagnostics::Diagnostic; +use ruff_python_ast::source_code::{Indexer, Locator, Stylist}; + use crate::autofix::fix_file; use crate::directives; use crate::linter::{check_path, LinterResult}; use crate::packaging::detect_package_root; -use crate::registry::Diagnostic; use crate::settings::{flags, Settings}; -use ruff_python_ast::source_code::{Indexer, Locator, Stylist}; pub fn test_resource_path(path: impl AsRef) -> std::path::PathBuf { Path::new("./resources/test/").join(path) diff --git a/crates/ruff_cli/Cargo.toml b/crates/ruff_cli/Cargo.toml index 3362d0b031..26d7317a34 100644 --- a/crates/ruff_cli/Cargo.toml +++ b/crates/ruff_cli/Cargo.toml @@ -24,6 +24,7 @@ doc = false [dependencies] ruff = { path = "../ruff" } ruff_cache = { path = "../ruff_cache" } +ruff_diagnostics = { path = "../ruff_diagnostics" } annotate-snippets = { version = "0.9.1", features = ["color"] } anyhow = { workspace = true } diff --git a/crates/ruff_cli/src/commands/rule.rs b/crates/ruff_cli/src/commands/rule.rs index 9a8607b5ea..ca1895ce08 100644 --- a/crates/ruff_cli/src/commands/rule.rs +++ b/crates/ruff_cli/src/commands/rule.rs @@ -4,7 +4,7 @@ use anyhow::Result; use serde::Serialize; use ruff::registry::{Linter, Rule, RuleNamespace}; -use ruff::AutofixAvailability; +use ruff_diagnostics::Availability; use crate::args::HelpFormat; @@ -34,8 +34,8 @@ pub fn rule(rule: &Rule, format: HelpFormat) -> Result<()> { if let Some(autofix) = rule.autofixable() { output.push_str(match autofix.available { - AutofixAvailability::Sometimes => "Autofix is sometimes available.", - AutofixAvailability::Always => "Autofix is always available.", + Availability::Sometimes => "Autofix is sometimes available.", + Availability::Always => "Autofix is always available.", }); output.push('\n'); output.push('\n'); diff --git a/crates/ruff_cli/src/commands/run.rs b/crates/ruff_cli/src/commands/run.rs index 2786032ced..cb54a59b4f 100644 --- a/crates/ruff_cli/src/commands/run.rs +++ b/crates/ruff_cli/src/commands/run.rs @@ -1,4 +1,4 @@ -use std::io::{self}; +use std::io; use std::path::PathBuf; use std::time::Instant; @@ -10,10 +10,11 @@ use log::{debug, error}; use rayon::prelude::*; use ruff::message::{Location, Message}; -use ruff::registry::{Diagnostic, Rule}; +use ruff::registry::Rule; use ruff::resolver::PyprojectDiscovery; use ruff::settings::flags; use ruff::{fix, fs, packaging, resolver, warn_user_once, IOError, Range}; +use ruff_diagnostics::Diagnostic; use crate::args::Overrides; use crate::cache; diff --git a/crates/ruff_dev/Cargo.toml b/crates/ruff_dev/Cargo.toml index 2731d195d3..d01b6b756c 100644 --- a/crates/ruff_dev/Cargo.toml +++ b/crates/ruff_dev/Cargo.toml @@ -6,6 +6,10 @@ edition = { workspace = true } rust-version = { workspace = true } [dependencies] +ruff = { path = "../ruff" } +ruff_cli = { path = "../ruff_cli" } +ruff_diagnostics = { path = "../ruff_diagnostics" } + anyhow = { workspace = true } clap = { workspace = true } itertools = { workspace = true } @@ -13,8 +17,6 @@ libcst = { workspace = true } once_cell = { workspace = true } pretty_assertions = { version = "1.3.0" } regex = { workspace = true } -ruff = { path = "../ruff" } -ruff_cli = { path = "../ruff_cli" } rustpython-common = { workspace = true } rustpython-parser = { workspace = true } schemars = { workspace = true } diff --git a/crates/ruff_dev/src/generate_docs.rs b/crates/ruff_dev/src/generate_docs.rs index cbe60a5954..b7af1f4d68 100644 --- a/crates/ruff_dev/src/generate_docs.rs +++ b/crates/ruff_dev/src/generate_docs.rs @@ -11,7 +11,7 @@ use strum::IntoEnumIterator; use ruff::registry::{Linter, Rule, RuleNamespace}; use ruff::settings::options::Options; use ruff::settings::options_base::ConfigurationOptions; -use ruff::AutofixAvailability; +use ruff_diagnostics::Availability; use crate::ROOT_DIR; @@ -39,8 +39,8 @@ pub fn main(args: &Args) -> Result<()> { if let Some(autofix) = rule.autofixable() { output.push_str(match autofix.available { - AutofixAvailability::Sometimes => "Autofix is sometimes available.", - AutofixAvailability::Always => "Autofix is always available.", + Availability::Sometimes => "Autofix is sometimes available.", + Availability::Always => "Autofix is always available.", }); output.push('\n'); output.push('\n'); diff --git a/crates/ruff_diagnostics/Cargo.toml b/crates/ruff_diagnostics/Cargo.toml new file mode 100644 index 0000000000..4f57bcf5a7 --- /dev/null +++ b/crates/ruff_diagnostics/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "ruff_diagnostics" +version = "0.0.0" +publish = false +edition = { workspace = true } +rust-version = { workspace = true } + +[lib] + +[dependencies] +ruff_python_ast = { path = "../ruff_python_ast" } + +rustpython-parser = { workspace = true } +serde = { workspace = true, optional = true, default_features = false, features = [] } diff --git a/crates/ruff_diagnostics/src/diagnostic.rs b/crates/ruff_diagnostics/src/diagnostic.rs new file mode 100644 index 0000000000..1d13573551 --- /dev/null +++ b/crates/ruff_diagnostics/src/diagnostic.rs @@ -0,0 +1,52 @@ +use rustpython_parser::ast::Location; +#[cfg(feature = "serde")] +use serde::{Deserialize, Serialize}; + +use ruff_python_ast::types::Range; + +use crate::fix::Fix; + +#[derive(Debug, PartialEq, Eq)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +pub struct DiagnosticKind { + /// The identifier of the diagnostic, used to align the diagnostic with a rule. + pub name: String, + /// The message body to display to the user, to explain the diagnostic. + pub body: String, + /// The message to display to the user, to explain the suggested fix. + pub suggestion: Option, + /// Whether the diagnostic is automatically fixable. + pub fixable: bool, +} + +#[derive(Debug, PartialEq, Eq)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +pub struct Diagnostic { + pub kind: DiagnosticKind, + pub location: Location, + pub end_location: Location, + pub fix: Option, + pub parent: Option, +} + +impl Diagnostic { + pub fn new>(kind: K, range: Range) -> Self { + Self { + kind: kind.into(), + location: range.location, + end_location: range.end_location, + fix: None, + parent: None, + } + } + + pub fn amend(&mut self, fix: Fix) -> &mut Self { + self.fix = Some(fix); + self + } + + pub fn parent(&mut self, parent: Location) -> &mut Self { + self.parent = Some(parent); + self + } +} diff --git a/crates/ruff_diagnostics/src/fix.rs b/crates/ruff_diagnostics/src/fix.rs new file mode 100644 index 0000000000..9923f4932a --- /dev/null +++ b/crates/ruff_diagnostics/src/fix.rs @@ -0,0 +1,41 @@ +use rustpython_parser::ast::Location; +#[cfg(feature = "serde")] +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +pub struct Fix { + pub content: String, + pub location: Location, + pub end_location: Location, +} + +impl Fix { + pub const fn deletion(start: Location, end: Location) -> Self { + Self { + content: String::new(), + location: start, + end_location: end, + } + } + + pub fn replacement(content: String, start: Location, end: Location) -> Self { + debug_assert!(!content.is_empty(), "Prefer `Fix::deletion`"); + + Self { + content, + location: start, + end_location: end, + } + } + + pub fn insertion(content: String, at: Location) -> Self { + debug_assert!(!content.is_empty(), "Insert content is empty"); + + Self { + content, + location: at, + end_location: at, + } + } +} diff --git a/crates/ruff_diagnostics/src/lib.rs b/crates/ruff_diagnostics/src/lib.rs new file mode 100644 index 0000000000..282092da84 --- /dev/null +++ b/crates/ruff_diagnostics/src/lib.rs @@ -0,0 +1,7 @@ +pub use diagnostic::{Diagnostic, DiagnosticKind}; +pub use fix::Fix; +pub use violation::{AlwaysAutofixableViolation, AutofixKind, Availability, Violation}; + +mod diagnostic; +mod fix; +mod violation; diff --git a/crates/ruff/src/violation.rs b/crates/ruff_diagnostics/src/violation.rs similarity index 90% rename from crates/ruff/src/violation.rs rename to crates/ruff_diagnostics/src/violation.rs index 86583d8230..cce986a8e2 100644 --- a/crates/ruff/src/violation.rs +++ b/crates/ruff_diagnostics/src/violation.rs @@ -1,9 +1,21 @@ use std::fmt::Debug; -use serde::de::DeserializeOwned; -use serde::Serialize; +pub enum Availability { + Sometimes, + Always, +} -pub trait Violation: Debug + PartialEq + Eq + Serialize + DeserializeOwned { +pub struct AutofixKind { + pub available: Availability, +} + +impl AutofixKind { + pub const fn new(available: Availability) -> Self { + Self { available } + } +} + +pub trait Violation: Debug + PartialEq + Eq { /// `None` in the case an autofix is never available or otherwise Some /// [`AutofixKind`] describing the available autofix. const AUTOFIX: Option = None; @@ -27,26 +39,9 @@ pub trait Violation: Debug + PartialEq + Eq + Serialize + DeserializeOwned { fn message_formats() -> &'static [&'static str]; } -pub struct AutofixKind { - pub available: Availability, -} - -pub enum Availability { - Sometimes, - Always, -} - -impl AutofixKind { - pub const fn new(available: Availability) -> Self { - Self { available } - } -} - /// This trait exists just to make implementing the [`Violation`] trait more /// convenient for violations that can always be autofixed. -pub trait AlwaysAutofixableViolation: - Debug + PartialEq + Eq + Serialize + DeserializeOwned -{ +pub trait AlwaysAutofixableViolation: Debug + PartialEq + Eq { /// The message used to describe the violation. fn message(&self) -> String; diff --git a/crates/ruff_macros/src/register_rules.rs b/crates/ruff_macros/src/register_rules.rs index 7f4f775a6f..b8e67d4695 100644 --- a/crates/ruff_macros/src/register_rules.rs +++ b/crates/ruff_macros/src/register_rules.rs @@ -17,9 +17,10 @@ pub fn register_rules(input: &Input) -> proc_macro2::TokenStream { }); // Apply the `attrs` to each arm, like `[cfg(feature = "foo")]`. rule_message_formats_match_arms - .extend(quote! {#(#attr)* Self::#name => <#path as Violation>::message_formats(),}); - rule_autofixable_match_arms - .extend(quote! {#(#attr)* Self::#name => <#path as Violation>::AUTOFIX,}); + .extend(quote! {#(#attr)* Self::#name => <#path as ruff_diagnostics::Violation>::message_formats(),}); + rule_autofixable_match_arms.extend( + quote! {#(#attr)* Self::#name => <#path as ruff_diagnostics::Violation>::AUTOFIX,}, + ); rule_explanation_match_arms.extend(quote! {#(#attr)* Self::#name => #path::explanation(),}); // Enable conversion from `DiagnosticKind` to `Rule`. @@ -56,7 +57,7 @@ pub fn register_rules(input: &Input) -> proc_macro2::TokenStream { } /// Returns the autofix status of this rule. - pub fn autofixable(&self) -> Option { + pub fn autofixable(&self) -> Option { match self { #rule_autofixable_match_arms } } } @@ -65,7 +66,7 @@ pub fn register_rules(input: &Input) -> proc_macro2::TokenStream { fn rule(&self) -> &'static Rule; } - impl AsRule for DiagnosticKind { + impl AsRule for ruff_diagnostics::DiagnosticKind { fn rule(&self) -> &'static Rule { match self.name.as_str() { #from_impls_for_diagnostic_kind diff --git a/crates/ruff_macros/src/violation.rs b/crates/ruff_macros/src/violation.rs index 22dd8dca98..2f861a4a50 100644 --- a/crates/ruff_macros/src/violation.rs +++ b/crates/ruff_macros/src/violation.rs @@ -44,12 +44,12 @@ pub fn violation(violation: &ItemStruct) -> Result { let explanation = get_docs(&violation.attrs)?; let violation = if explanation.trim().is_empty() { quote! { - #[derive(Debug, PartialEq, Eq, serde::Serialize, serde::Deserialize)] + #[derive(Debug, PartialEq, Eq)] #violation - impl From<#ident> for crate::registry::DiagnosticKind { + impl From<#ident> for ruff_diagnostics::DiagnosticKind { fn from(value: #ident) -> Self { - use crate::violation::Violation; + use ruff_diagnostics::Violation; Self { body: Violation::message(&value), @@ -62,7 +62,7 @@ pub fn violation(violation: &ItemStruct) -> Result { } } else { quote! { - #[derive(Debug, PartialEq, Eq, serde::Serialize, serde::Deserialize)] + #[derive(Debug, PartialEq, Eq)] #violation impl #ident { @@ -71,9 +71,9 @@ pub fn violation(violation: &ItemStruct) -> Result { } } - impl From<#ident> for crate::registry::DiagnosticKind { + impl From<#ident> for ruff_diagnostics::DiagnosticKind { fn from(value: #ident) -> Self { - use crate::violation::Violation; + use ruff_diagnostics::Violation; Self { body: Violation::message(&value), diff --git a/scripts/add_rule.py b/scripts/add_rule.py index fa2c3df31f..3cb6a07510 100755 --- a/scripts/add_rule.py +++ b/scripts/add_rule.py @@ -79,10 +79,9 @@ def main(*, name: str, code: str, linter: str) -> None: # Add the relevant rule function. with (rules_dir / f"{rule_name_snake}.rs").open("w") as fp: fp.write( - """use ruff_macros::derive_message_formats; + """use ruff_macros::{derive_message_formats, violation}; +use ruff_diagnostics::Violation; -use ruff_macros::violation; -use crate::violation::Violation; use crate::checkers::ast::Checker; #[violation]