diff --git a/rustpython_original/ruff_python_ast/src/nodes.rs b/crates/ruff_python_ast/src/nodes.rs similarity index 100% rename from rustpython_original/ruff_python_ast/src/nodes.rs rename to crates/ruff_python_ast/src/nodes.rs diff --git a/rustpython_original/literal/src/cformat.rs b/crates/ruff_python_literal/src/cformat.rs similarity index 100% rename from rustpython_original/literal/src/cformat.rs rename to crates/ruff_python_literal/src/cformat.rs diff --git a/rustpython_original/literal/src/char.rs b/crates/ruff_python_literal/src/char.rs similarity index 100% rename from rustpython_original/literal/src/char.rs rename to crates/ruff_python_literal/src/char.rs diff --git a/rustpython_original/literal/src/escape.rs b/crates/ruff_python_literal/src/escape.rs similarity index 100% rename from rustpython_original/literal/src/escape.rs rename to crates/ruff_python_literal/src/escape.rs diff --git a/rustpython_original/literal/src/float.rs b/crates/ruff_python_literal/src/float.rs similarity index 100% rename from rustpython_original/literal/src/float.rs rename to crates/ruff_python_literal/src/float.rs diff --git a/rustpython_original/literal/src/format.rs b/crates/ruff_python_literal/src/format.rs similarity index 100% rename from rustpython_original/literal/src/format.rs rename to crates/ruff_python_literal/src/format.rs diff --git a/rustpython_original/literal/src/lib.rs b/crates/ruff_python_literal/src/lib.rs similarity index 100% rename from rustpython_original/literal/src/lib.rs rename to crates/ruff_python_literal/src/lib.rs diff --git a/rustpython_original/ruff_python_parser/src/context.rs b/crates/ruff_python_parser/src/context.rs similarity index 100% rename from rustpython_original/ruff_python_parser/src/context.rs rename to crates/ruff_python_parser/src/context.rs diff --git a/rustpython_original/ruff_python_parser/src/function.rs b/crates/ruff_python_parser/src/function.rs similarity index 100% rename from rustpython_original/ruff_python_parser/src/function.rs rename to crates/ruff_python_parser/src/function.rs diff --git a/rustpython_original/ruff_python_parser/src/lexer.rs b/crates/ruff_python_parser/src/lexer.rs similarity index 100% rename from rustpython_original/ruff_python_parser/src/lexer.rs rename to crates/ruff_python_parser/src/lexer.rs diff --git a/rustpython_original/ruff_python_parser/src/lexer/cursor.rs b/crates/ruff_python_parser/src/lexer/cursor.rs similarity index 100% rename from rustpython_original/ruff_python_parser/src/lexer/cursor.rs rename to crates/ruff_python_parser/src/lexer/cursor.rs diff --git a/rustpython_original/ruff_python_parser/src/lexer/indentation.rs b/crates/ruff_python_parser/src/lexer/indentation.rs similarity index 100% rename from rustpython_original/ruff_python_parser/src/lexer/indentation.rs rename to crates/ruff_python_parser/src/lexer/indentation.rs diff --git a/rustpython_original/ruff_python_parser/src/parse.rs b/crates/ruff_python_parser/src/parse.rs similarity index 100% rename from rustpython_original/ruff_python_parser/src/parse.rs rename to crates/ruff_python_parser/src/parse.rs diff --git a/rustpython_original/ruff_python_parser/src/parser.rs b/crates/ruff_python_parser/src/parser.rs similarity index 100% rename from rustpython_original/ruff_python_parser/src/parser.rs rename to crates/ruff_python_parser/src/parser.rs diff --git a/rustpython_original/ruff_python_parser/src/python.lalrpop b/crates/ruff_python_parser/src/python.lalrpop similarity index 100% rename from rustpython_original/ruff_python_parser/src/python.lalrpop rename to crates/ruff_python_parser/src/python.lalrpop diff --git a/rustpython_original/ruff_python_parser/src/python.rs b/crates/ruff_python_parser/src/python.rs similarity index 100% rename from rustpython_original/ruff_python_parser/src/python.rs rename to crates/ruff_python_parser/src/python.rs diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__ann_assign_name.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__ann_assign_name.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__ann_assign_name.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__ann_assign_name.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_attribute.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_attribute.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_attribute.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_attribute.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_for.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_for.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_for.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_for.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_list.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_list.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_list.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_list.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_list_comp.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_list_comp.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_list_comp.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_list_comp.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_name.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_name.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_name.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_name.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_named_expr.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_named_expr.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_named_expr.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_named_expr.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_set_comp.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_set_comp.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_set_comp.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_set_comp.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_starred.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_starred.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_starred.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_starred.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_subscript.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_subscript.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_subscript.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_subscript.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_tuple.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_tuple.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_tuple.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_tuple.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_with.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_with.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_with.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_with.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__aug_assign_attribute.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__aug_assign_attribute.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__aug_assign_attribute.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__aug_assign_attribute.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__aug_assign_name.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__aug_assign_name.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__aug_assign_name.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__aug_assign_name.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__aug_assign_subscript.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__aug_assign_subscript.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__aug_assign_subscript.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__aug_assign_subscript.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__del_attribute.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__del_attribute.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__del_attribute.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__del_attribute.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__del_name.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__del_name.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__del_name.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__del_name.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__del_subscript.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__del_subscript.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__del_subscript.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__del_subscript.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_kw_only_args.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_kw_only_args.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_kw_only_args.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_kw_only_args.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_kw_only_args_with_defaults.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_kw_only_args_with_defaults.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_kw_only_args_with_defaults.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_kw_only_args_with_defaults.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_no_args.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_no_args.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_no_args.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_no_args.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_no_args_with_ranges.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_no_args_with_ranges.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_no_args_with_ranges.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_no_args_with_ranges.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_and_kw_only_args.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_and_kw_only_args.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_and_kw_only_args.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_and_kw_only_args.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_and_kw_only_args_with_defaults.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_and_kw_only_args_with_defaults.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_and_kw_only_args_with_defaults.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_and_kw_only_args_with_defaults.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_and_kw_only_args_with_defaults_and_varargs.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_and_kw_only_args_with_defaults_and_varargs.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_and_kw_only_args_with_defaults_and_varargs.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_and_kw_only_args_with_defaults_and_varargs.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_and_kw_only_args_with_defaults_and_varargs_and_kwargs.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_and_kw_only_args_with_defaults_and_varargs_and_kwargs.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_and_kw_only_args_with_defaults_and_varargs_and_kwargs.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_and_kw_only_args_with_defaults_and_varargs_and_kwargs.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_args.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_args.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_args.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_args.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_args_with_defaults.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_args_with_defaults.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_args_with_defaults.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_args_with_defaults.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_args_with_ranges.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_args_with_ranges.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_args_with_ranges.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_args_with_ranges.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_kw_only_args.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_kw_only_args.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_kw_only_args.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_kw_only_args.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_kw_only_args_with_defaults.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_kw_only_args_with_defaults.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_kw_only_args_with_defaults.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_kw_only_args_with_defaults.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_no_args.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_no_args.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_no_args.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_no_args.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_pos_and_kw_only_args.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_pos_and_kw_only_args.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_pos_and_kw_only_args.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_pos_and_kw_only_args.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_pos_args.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_pos_args.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_pos_args.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_pos_args.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_pos_args_with_defaults.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_pos_args_with_defaults.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_pos_args_with_defaults.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_pos_args_with_defaults.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__decorator_ranges.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__decorator_ranges.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__decorator_ranges.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__decorator_ranges.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__dict_unpacking.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__dict_unpacking.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__dict_unpacking.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__dict_unpacking.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__generator_expression_argument.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__generator_expression_argument.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__generator_expression_argument.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__generator_expression_argument.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__jupyter_magic.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__jupyter_magic.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__jupyter_magic.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__jupyter_magic.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__match.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__match.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__match.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__match.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__match_as_identifier.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__match_as_identifier.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__match_as_identifier.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__match_as_identifier.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__numeric_literals.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__numeric_literals.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__numeric_literals.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__numeric_literals.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__numeric_literals_attribute_access.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__numeric_literals_attribute_access.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__numeric_literals_attribute_access.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__numeric_literals_attribute_access.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_bool_op_and.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_bool_op_and.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_bool_op_and.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_bool_op_and.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_bool_op_or.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_bool_op_or.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_bool_op_or.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_bool_op_or.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_class.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_class.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_class.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_class.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_class_generic_types.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_class_generic_types.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_class_generic_types.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_class_generic_types.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_dict_comprehension.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_dict_comprehension.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_dict_comprehension.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_dict_comprehension.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_double_list_comprehension.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_double_list_comprehension.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_double_list_comprehension.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_double_list_comprehension.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_empty.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_empty.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_empty.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_empty.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_f_string.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_f_string.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_f_string.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_f_string.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_function_definition.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_function_definition.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_function_definition.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_function_definition.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_generator_comprehension.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_generator_comprehension.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_generator_comprehension.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_generator_comprehension.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_if_elif_else.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_if_elif_else.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_if_elif_else.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_if_elif_else.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_if_else_generator_comprehension.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_if_else_generator_comprehension.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_if_else_generator_comprehension.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_if_else_generator_comprehension.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_kwargs.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_kwargs.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_kwargs.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_kwargs.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_lambda.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_lambda.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_lambda.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_lambda.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_lambda_no_args.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_lambda_no_args.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_lambda_no_args.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_lambda_no_args.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_list_comprehension.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_list_comprehension.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_list_comprehension.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_list_comprehension.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_named_expression_generator_comprehension.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_named_expression_generator_comprehension.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_named_expression_generator_comprehension.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_named_expression_generator_comprehension.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_print_2.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_print_2.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_print_2.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_print_2.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_print_hello.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_print_hello.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_print_hello.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_print_hello.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_string.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_string.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_string.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_string.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_tuples.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_tuples.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_tuples.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_tuples.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_type_declaration.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_type_declaration.snap similarity index 90% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_type_declaration.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_type_declaration.snap index 3e3ed2420b..a0bc32044f 100644 --- a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_type_declaration.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_type_declaration.snap @@ -1,5 +1,5 @@ --- -source: ruff_python_parser/src/parser.rs +source: crates/ruff_python_parser/src/parser.rs expression: "ast::Suite::parse(source, \"\").unwrap()" --- [ @@ -10,7 +10,7 @@ expression: "ast::Suite::parse(source, \"\").unwrap()" ExprName { range: 6..7, id: "X", - ctx: Load, + ctx: Store, }, ), type_params: [], @@ -30,7 +30,7 @@ expression: "ast::Suite::parse(source, \"\").unwrap()" ExprName { range: 19..20, id: "X", - ctx: Load, + ctx: Store, }, ), type_params: [], @@ -63,7 +63,7 @@ expression: "ast::Suite::parse(source, \"\").unwrap()" ExprName { range: 38..39, id: "X", - ctx: Load, + ctx: Store, }, ), type_params: [], @@ -98,7 +98,7 @@ expression: "ast::Suite::parse(source, \"\").unwrap()" ExprName { range: 67..68, id: "X", - ctx: Load, + ctx: Store, }, ), type_params: [ @@ -168,7 +168,7 @@ expression: "ast::Suite::parse(source, \"\").unwrap()" ExprName { range: 107..108, id: "X", - ctx: Load, + ctx: Store, }, ), type_params: [ @@ -199,7 +199,7 @@ expression: "ast::Suite::parse(source, \"\").unwrap()" ExprName { range: 123..124, id: "X", - ctx: Load, + ctx: Store, }, ), type_params: [ @@ -269,7 +269,7 @@ expression: "ast::Suite::parse(source, \"\").unwrap()" ExprName { range: 152..153, id: "X", - ctx: Load, + ctx: Store, }, ), type_params: [ @@ -340,7 +340,7 @@ expression: "ast::Suite::parse(source, \"\").unwrap()" ExprName { range: 185..186, id: "X", - ctx: Load, + ctx: Store, }, ), type_params: [ @@ -419,7 +419,7 @@ expression: "ast::Suite::parse(source, \"\").unwrap()" ExprName { range: 223..224, id: "X", - ctx: Load, + ctx: Store, }, ), type_params: [ @@ -513,7 +513,7 @@ expression: "ast::Suite::parse(source, \"\").unwrap()" ExprName { range: 298..302, id: "type", - ctx: Load, + ctx: Store, }, ), type_params: [], @@ -528,18 +528,18 @@ expression: "ast::Suite::parse(source, \"\").unwrap()" ), TypeAlias( StmtTypeAlias { - range: 311..327, + range: 309..325, name: Name( ExprName { - range: 316..321, + range: 314..319, id: "match", - ctx: Load, + ctx: Store, }, ), type_params: [], value: Name( ExprName { - range: 324..327, + range: 322..325, id: "int", ctx: Load, }, @@ -548,18 +548,18 @@ expression: "ast::Suite::parse(source, \"\").unwrap()" ), TypeAlias( StmtTypeAlias { - range: 328..343, + range: 326..341, name: Name( ExprName { - range: 333..337, + range: 331..335, id: "case", - ctx: Load, + ctx: Store, }, ), type_params: [], value: Name( ExprName { - range: 340..343, + range: 338..341, id: "int", ctx: Load, }, @@ -568,18 +568,18 @@ expression: "ast::Suite::parse(source, \"\").unwrap()" ), TypeAlias( StmtTypeAlias { - range: 369..384, + range: 367..382, name: Name( ExprName { - range: 374..377, + range: 372..375, id: "foo", - ctx: Load, + ctx: Store, }, ), type_params: [], value: Name( ExprName { - range: 380..384, + range: 378..382, id: "type", ctx: Load, }, @@ -588,18 +588,18 @@ expression: "ast::Suite::parse(source, \"\").unwrap()" ), TypeAlias( StmtTypeAlias { - range: 385..401, + range: 383..399, name: Name( ExprName { - range: 390..393, + range: 388..391, id: "foo", - ctx: Load, + ctx: Store, }, ), type_params: [], value: Name( ExprName { - range: 396..401, + range: 394..399, id: "match", ctx: Load, }, @@ -608,18 +608,18 @@ expression: "ast::Suite::parse(source, \"\").unwrap()" ), TypeAlias( StmtTypeAlias { - range: 402..417, + range: 400..415, name: Name( ExprName { - range: 407..410, + range: 405..408, id: "foo", - ctx: Load, + ctx: Store, }, ), type_params: [], value: Name( ExprName { - range: 413..417, + range: 411..415, id: "case", ctx: Load, }, @@ -628,18 +628,18 @@ expression: "ast::Suite::parse(source, \"\").unwrap()" ), TypeAlias( StmtTypeAlias { - range: 441..456, + range: 439..454, name: Name( ExprName { - range: 449..450, + range: 447..448, id: "X", - ctx: Load, + ctx: Store, }, ), type_params: [], value: Name( ExprName { - range: 453..456, + range: 451..454, id: "int", ctx: Load, }, @@ -648,18 +648,18 @@ expression: "ast::Suite::parse(source, \"\").unwrap()" ), TypeAlias( StmtTypeAlias { - range: 457..472, + range: 455..470, name: Name( ExprName { - range: 462..463, + range: 460..461, id: "X", - ctx: Load, + ctx: Store, }, ), type_params: [], value: Name( ExprName { - range: 469..472, + range: 467..470, id: "int", ctx: Load, }, @@ -668,18 +668,18 @@ expression: "ast::Suite::parse(source, \"\").unwrap()" ), TypeAlias( StmtTypeAlias { - range: 473..488, + range: 471..486, name: Name( ExprName { - range: 478..479, + range: 476..477, id: "X", - ctx: Load, + ctx: Store, }, ), type_params: [], value: Name( ExprName { - range: 485..488, + range: 483..486, id: "int", ctx: Load, }, @@ -688,18 +688,18 @@ expression: "ast::Suite::parse(source, \"\").unwrap()" ), TypeAlias( StmtTypeAlias { - range: 489..509, + range: 487..507, name: Name( ExprName { - range: 494..495, + range: 492..493, id: "X", - ctx: Load, + ctx: Store, }, ), type_params: [], value: Name( ExprName { - range: 504..507, + range: 502..505, id: "int", ctx: Load, }, @@ -708,21 +708,21 @@ expression: "ast::Suite::parse(source, \"\").unwrap()" ), TypeAlias( StmtTypeAlias { - range: 510..529, + range: 508..527, name: Name( ExprName { - range: 521..522, + range: 519..520, id: "X", - ctx: Load, + ctx: Store, }, ), type_params: [ TypeVar( TypeParamTypeVar { - range: 523..524, + range: 521..522, name: Identifier { id: "T", - range: 523..524, + range: 521..522, }, bound: None, }, @@ -730,7 +730,7 @@ expression: "ast::Suite::parse(source, \"\").unwrap()" ], value: Name( ExprName { - range: 528..529, + range: 526..527, id: "T", ctx: Load, }, @@ -739,21 +739,21 @@ expression: "ast::Suite::parse(source, \"\").unwrap()" ), TypeAlias( StmtTypeAlias { - range: 530..550, + range: 528..548, name: Name( ExprName { - range: 535..536, + range: 533..534, id: "X", - ctx: Load, + ctx: Store, }, ), type_params: [ TypeVar( TypeParamTypeVar { - range: 544..545, + range: 542..543, name: Identifier { id: "T", - range: 544..545, + range: 542..543, }, bound: None, }, @@ -761,7 +761,7 @@ expression: "ast::Suite::parse(source, \"\").unwrap()" ], value: Name( ExprName { - range: 549..550, + range: 547..548, id: "T", ctx: Load, }, @@ -770,21 +770,21 @@ expression: "ast::Suite::parse(source, \"\").unwrap()" ), TypeAlias( StmtTypeAlias { - range: 551..570, + range: 549..568, name: Name( ExprName { - range: 556..557, + range: 554..555, id: "X", - ctx: Load, + ctx: Store, }, ), type_params: [ TypeVar( TypeParamTypeVar { - range: 558..559, + range: 556..557, name: Identifier { id: "T", - range: 558..559, + range: 556..557, }, bound: None, }, @@ -792,7 +792,7 @@ expression: "ast::Suite::parse(source, \"\").unwrap()" ], value: Name( ExprName { - range: 569..570, + range: 567..568, id: "T", ctx: Load, }, diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__patma.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__patma.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__patma.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__patma.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__slice.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__slice.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__slice.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__slice.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__star_index.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__star_index.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__star_index.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__star_index.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__try.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__try.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__try.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__try.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__try_star.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__try_star.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__try_star.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__try_star.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__type_as_identifier.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__type_as_identifier.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__type_as_identifier.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__type_as_identifier.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__variadic_generics.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__variadic_generics.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__variadic_generics.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__variadic_generics.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__with_statement.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__with_statement.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__with_statement.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__with_statement.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__backspace_alias.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__backspace_alias.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__backspace_alias.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__backspace_alias.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__bell_alias.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__bell_alias.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__bell_alias.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__bell_alias.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__carriage_return_alias.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__carriage_return_alias.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__carriage_return_alias.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__carriage_return_alias.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__character_tabulation_with_justification_alias.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__character_tabulation_with_justification_alias.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__character_tabulation_with_justification_alias.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__character_tabulation_with_justification_alias.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__delete_alias.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__delete_alias.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__delete_alias.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__delete_alias.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__double_quoted_byte.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__double_quoted_byte.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__double_quoted_byte.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__double_quoted_byte.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__escape_alias.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__escape_alias.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__escape_alias.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__escape_alias.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__escape_char_in_byte_literal.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__escape_char_in_byte_literal.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__escape_char_in_byte_literal.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__escape_char_in_byte_literal.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__escape_octet.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__escape_octet.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__escape_octet.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__escape_octet.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__form_feed_alias.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__form_feed_alias.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__form_feed_alias.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__form_feed_alias.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_constant_range.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_constant_range.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_constant_range.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_constant_range.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_escaped_character.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_escaped_character.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_escaped_character.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_escaped_character.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_escaped_newline.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_escaped_newline.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_escaped_newline.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_escaped_newline.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_line_continuation.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_line_continuation.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_line_continuation.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_line_continuation.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_parse_self_documenting_base.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_parse_self_documenting_base.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_parse_self_documenting_base.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_parse_self_documenting_base.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_parse_self_documenting_base_more.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_parse_self_documenting_base_more.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_parse_self_documenting_base_more.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_parse_self_documenting_base_more.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_parse_self_documenting_format.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_parse_self_documenting_format.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_parse_self_documenting_format.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_parse_self_documenting_format.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_unescaped_newline.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_unescaped_newline.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_unescaped_newline.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_unescaped_newline.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__hts_alias.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__hts_alias.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__hts_alias.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__hts_alias.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_empty_fstring.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_empty_fstring.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_empty_fstring.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_empty_fstring.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_1.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_1.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_1.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_1.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_2.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_2.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_2.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_2.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_3.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_3.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_3.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_3.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_equals.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_equals.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_equals.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_equals.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_nested_spec.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_nested_spec.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_nested_spec.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_nested_spec.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_not_equals.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_not_equals.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_not_equals.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_not_equals.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_not_nested_spec.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_not_nested_spec.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_not_nested_spec.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_not_nested_spec.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_self_doc_prec_space.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_self_doc_prec_space.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_self_doc_prec_space.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_self_doc_prec_space.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_self_doc_trailing_space.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_self_doc_trailing_space.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_self_doc_trailing_space.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_self_doc_trailing_space.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_yield_expr.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_yield_expr.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_yield_expr.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_yield_expr.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_string_concat.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_string_concat.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_string_concat.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_string_concat.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_string_triple_quotes_with_kind.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_string_triple_quotes_with_kind.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_string_triple_quotes_with_kind.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_string_triple_quotes_with_kind.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_f_string_concat_1.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_f_string_concat_1.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_f_string_concat_1.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_f_string_concat_1.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_f_string_concat_2.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_f_string_concat_2.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_f_string_concat_2.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_f_string_concat_2.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_string_concat_1.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_string_concat_1.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_string_concat_1.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_string_concat_1.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_string_concat_2.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_string_concat_2.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_string_concat_2.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_string_concat_2.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_byte_literal_1.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_byte_literal_1.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_byte_literal_1.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_byte_literal_1.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_byte_literal_2.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_byte_literal_2.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_byte_literal_2.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_byte_literal_2.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_fstring.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_fstring.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_fstring.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_fstring.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__single_quoted_byte.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__single_quoted_byte.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__single_quoted_byte.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__single_quoted_byte.snap diff --git a/rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__triple_quoted_raw_fstring.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__triple_quoted_raw_fstring.snap similarity index 100% rename from rustpython_original/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__triple_quoted_raw_fstring.snap rename to crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__triple_quoted_raw_fstring.snap diff --git a/rustpython_original/ruff_python_parser/src/soft_keywords.rs b/crates/ruff_python_parser/src/soft_keywords.rs similarity index 100% rename from rustpython_original/ruff_python_parser/src/soft_keywords.rs rename to crates/ruff_python_parser/src/soft_keywords.rs diff --git a/rustpython_original/ruff_python_parser/src/string.rs b/crates/ruff_python_parser/src/string.rs similarity index 100% rename from rustpython_original/ruff_python_parser/src/string.rs rename to crates/ruff_python_parser/src/string.rs diff --git a/rustpython_original/ruff_python_parser/src/token.rs b/crates/ruff_python_parser/src/token.rs similarity index 50% rename from rustpython_original/ruff_python_parser/src/token.rs rename to crates/ruff_python_parser/src/token.rs index ae0a90238e..cafca8cd11 100644 --- a/rustpython_original/ruff_python_parser/src/token.rs +++ b/crates/ruff_python_parser/src/token.rs @@ -436,3 +436,449 @@ impl StringKind { len.into() } } + +#[derive(Copy, Clone, PartialEq, Eq, Hash, Debug)] +pub enum TokenKind { + /// Token value for a name, commonly known as an identifier. + Name, + /// Token value for an integer. + Int, + /// Token value for a floating point number. + Float, + /// Token value for a complex number. + Complex, + /// Token value for a string. + String, + /// Token value for a Jupyter magic command. + MagicCommand, + /// Token value for a comment. These are filtered out of the token stream prior to parsing. + Comment, + /// Token value for a newline. + Newline, + /// Token value for a newline that is not a logical line break. These are filtered out of + /// the token stream prior to parsing. + NonLogicalNewline, + /// Token value for an indent. + Indent, + /// Token value for a dedent. + Dedent, + EndOfFile, + /// Token value for a left parenthesis `(`. + Lpar, + /// Token value for a right parenthesis `)`. + Rpar, + /// Token value for a left square bracket `[`. + Lsqb, + /// Token value for a right square bracket `]`. + Rsqb, + /// Token value for a colon `:`. + Colon, + /// Token value for a comma `,`. + Comma, + /// Token value for a semicolon `;`. + Semi, + /// Token value for plus `+`. + Plus, + /// Token value for minus `-`. + Minus, + /// Token value for star `*`. + Star, + /// Token value for slash `/`. + Slash, + /// Token value for vertical bar `|`. + Vbar, + /// Token value for ampersand `&`. + Amper, + /// Token value for less than `<`. + Less, + /// Token value for greater than `>`. + Greater, + /// Token value for equal `=`. + Equal, + /// Token value for dot `.`. + Dot, + /// Token value for percent `%`. + Percent, + /// Token value for left bracket `{`. + Lbrace, + /// Token value for right bracket `}`. + Rbrace, + /// Token value for double equal `==`. + EqEqual, + /// Token value for not equal `!=`. + NotEqual, + /// Token value for less than or equal `<=`. + LessEqual, + /// Token value for greater than or equal `>=`. + GreaterEqual, + /// Token value for tilde `~`. + Tilde, + /// Token value for caret `^`. + CircumFlex, + /// Token value for left shift `<<`. + LeftShift, + /// Token value for right shift `>>`. + RightShift, + /// Token value for double star `**`. + DoubleStar, + /// Token value for double star equal `**=`. + DoubleStarEqual, + /// Token value for plus equal `+=`. + PlusEqual, + /// Token value for minus equal `-=`. + MinusEqual, + /// Token value for star equal `*=`. + StarEqual, + /// Token value for slash equal `/=`. + SlashEqual, + /// Token value for percent equal `%=`. + PercentEqual, + /// Token value for ampersand equal `&=`. + AmperEqual, + /// Token value for vertical bar equal `|=`. + VbarEqual, + /// Token value for caret equal `^=`. + CircumflexEqual, + /// Token value for left shift equal `<<=`. + LeftShiftEqual, + /// Token value for right shift equal `>>=`. + RightShiftEqual, + /// Token value for double slash `//`. + DoubleSlash, + /// Token value for double slash equal `//=`. + DoubleSlashEqual, + /// Token value for colon equal `:=`. + ColonEqual, + /// Token value for at `@`. + At, + /// Token value for at equal `@=`. + AtEqual, + /// Token value for arrow `->`. + Rarrow, + /// Token value for ellipsis `...`. + Ellipsis, + + // Self documenting. + // Keywords (alphabetically): + False, + None, + True, + + And, + As, + Assert, + Async, + Await, + Break, + Class, + Continue, + Def, + Del, + Elif, + Else, + Except, + Finally, + For, + From, + Global, + If, + Import, + In, + Is, + Lambda, + Nonlocal, + Not, + Or, + Pass, + Raise, + Return, + Try, + While, + Match, + Type, + Case, + With, + Yield, + + // RustPython specific. + StartModule, + StartInteractive, + StartExpression, +} + +impl TokenKind { + #[inline] + pub const fn is_newline(&self) -> bool { + matches!(self, TokenKind::Newline | TokenKind::NonLogicalNewline) + } + + #[inline] + pub const fn is_unary(&self) -> bool { + matches!(self, TokenKind::Plus | TokenKind::Minus) + } + + #[inline] + pub const fn is_keyword(&self) -> bool { + matches!( + self, + TokenKind::False + | TokenKind::True + | TokenKind::None + | TokenKind::And + | TokenKind::As + | TokenKind::Assert + | TokenKind::Await + | TokenKind::Break + | TokenKind::Class + | TokenKind::Continue + | TokenKind::Def + | TokenKind::Del + | TokenKind::Elif + | TokenKind::Else + | TokenKind::Except + | TokenKind::Finally + | TokenKind::For + | TokenKind::From + | TokenKind::Global + | TokenKind::If + | TokenKind::Import + | TokenKind::In + | TokenKind::Is + | TokenKind::Lambda + | TokenKind::Nonlocal + | TokenKind::Not + | TokenKind::Or + | TokenKind::Pass + | TokenKind::Raise + | TokenKind::Return + | TokenKind::Try + | TokenKind::While + | TokenKind::With + | TokenKind::Yield + ) + } + + #[inline] + pub const fn is_operator(&self) -> bool { + matches!( + self, + TokenKind::Lpar + | TokenKind::Rpar + | TokenKind::Lsqb + | TokenKind::Rsqb + | TokenKind::Comma + | TokenKind::Semi + | TokenKind::Plus + | TokenKind::Minus + | TokenKind::Star + | TokenKind::Slash + | TokenKind::Vbar + | TokenKind::Amper + | TokenKind::Less + | TokenKind::Greater + | TokenKind::Equal + | TokenKind::Dot + | TokenKind::Percent + | TokenKind::Lbrace + | TokenKind::Rbrace + | TokenKind::EqEqual + | TokenKind::NotEqual + | TokenKind::LessEqual + | TokenKind::GreaterEqual + | TokenKind::Tilde + | TokenKind::CircumFlex + | TokenKind::LeftShift + | TokenKind::RightShift + | TokenKind::DoubleStar + | TokenKind::PlusEqual + | TokenKind::MinusEqual + | TokenKind::StarEqual + | TokenKind::SlashEqual + | TokenKind::PercentEqual + | TokenKind::AmperEqual + | TokenKind::VbarEqual + | TokenKind::CircumflexEqual + | TokenKind::LeftShiftEqual + | TokenKind::RightShiftEqual + | TokenKind::DoubleStarEqual + | TokenKind::DoubleSlash + | TokenKind::DoubleSlashEqual + | TokenKind::At + | TokenKind::AtEqual + | TokenKind::Rarrow + | TokenKind::Ellipsis + | TokenKind::ColonEqual + | TokenKind::Colon + | TokenKind::And + | TokenKind::Or + | TokenKind::Not + | TokenKind::In + | TokenKind::Is + ) + } + + #[inline] + pub const fn is_singleton(&self) -> bool { + matches!(self, TokenKind::False | TokenKind::True | TokenKind::None) + } + + #[inline] + pub const fn is_trivia(&self) -> bool { + matches!( + self, + TokenKind::Newline + | TokenKind::Indent + | TokenKind::Dedent + | TokenKind::NonLogicalNewline + | TokenKind::Comment + ) + } + + #[inline] + pub const fn is_arithmetic(&self) -> bool { + matches!( + self, + TokenKind::DoubleStar + | TokenKind::Star + | TokenKind::Plus + | TokenKind::Minus + | TokenKind::Slash + | TokenKind::DoubleSlash + | TokenKind::At + ) + } + + #[inline] + pub const fn is_bitwise_or_shift(&self) -> bool { + matches!( + self, + TokenKind::LeftShift + | TokenKind::LeftShiftEqual + | TokenKind::RightShift + | TokenKind::RightShiftEqual + | TokenKind::Amper + | TokenKind::AmperEqual + | TokenKind::Vbar + | TokenKind::VbarEqual + | TokenKind::CircumFlex + | TokenKind::CircumflexEqual + | TokenKind::Tilde + ) + } + + #[inline] + pub const fn is_soft_keyword(&self) -> bool { + matches!(self, TokenKind::Match | TokenKind::Case) + } + + pub const fn from_token(token: &Tok) -> Self { + match token { + Tok::Name { .. } => TokenKind::Name, + Tok::Int { .. } => TokenKind::Int, + Tok::Float { .. } => TokenKind::Float, + Tok::Complex { .. } => TokenKind::Complex, + Tok::String { .. } => TokenKind::String, + Tok::MagicCommand { .. } => TokenKind::MagicCommand, + Tok::Comment(_) => TokenKind::Comment, + Tok::Newline => TokenKind::Newline, + Tok::NonLogicalNewline => TokenKind::NonLogicalNewline, + Tok::Indent => TokenKind::Indent, + Tok::Dedent => TokenKind::Dedent, + Tok::EndOfFile => TokenKind::EndOfFile, + Tok::Lpar => TokenKind::Lpar, + Tok::Rpar => TokenKind::Rpar, + Tok::Lsqb => TokenKind::Lsqb, + Tok::Rsqb => TokenKind::Rsqb, + Tok::Colon => TokenKind::Colon, + Tok::Comma => TokenKind::Comma, + Tok::Semi => TokenKind::Semi, + Tok::Plus => TokenKind::Plus, + Tok::Minus => TokenKind::Minus, + Tok::Star => TokenKind::Star, + Tok::Slash => TokenKind::Slash, + Tok::Vbar => TokenKind::Vbar, + Tok::Amper => TokenKind::Amper, + Tok::Less => TokenKind::Less, + Tok::Greater => TokenKind::Greater, + Tok::Equal => TokenKind::Equal, + Tok::Dot => TokenKind::Dot, + Tok::Percent => TokenKind::Percent, + Tok::Lbrace => TokenKind::Lbrace, + Tok::Rbrace => TokenKind::Rbrace, + Tok::EqEqual => TokenKind::EqEqual, + Tok::NotEqual => TokenKind::NotEqual, + Tok::LessEqual => TokenKind::LessEqual, + Tok::GreaterEqual => TokenKind::GreaterEqual, + Tok::Tilde => TokenKind::Tilde, + Tok::CircumFlex => TokenKind::CircumFlex, + Tok::LeftShift => TokenKind::LeftShift, + Tok::RightShift => TokenKind::RightShift, + Tok::DoubleStar => TokenKind::DoubleStar, + Tok::DoubleStarEqual => TokenKind::DoubleStarEqual, + Tok::PlusEqual => TokenKind::PlusEqual, + Tok::MinusEqual => TokenKind::MinusEqual, + Tok::StarEqual => TokenKind::StarEqual, + Tok::SlashEqual => TokenKind::SlashEqual, + Tok::PercentEqual => TokenKind::PercentEqual, + Tok::AmperEqual => TokenKind::AmperEqual, + Tok::VbarEqual => TokenKind::VbarEqual, + Tok::CircumflexEqual => TokenKind::CircumflexEqual, + Tok::LeftShiftEqual => TokenKind::LeftShiftEqual, + Tok::RightShiftEqual => TokenKind::RightShiftEqual, + Tok::DoubleSlash => TokenKind::DoubleSlash, + Tok::DoubleSlashEqual => TokenKind::DoubleSlashEqual, + Tok::ColonEqual => TokenKind::ColonEqual, + Tok::At => TokenKind::At, + Tok::AtEqual => TokenKind::AtEqual, + Tok::Rarrow => TokenKind::Rarrow, + Tok::Ellipsis => TokenKind::Ellipsis, + Tok::False => TokenKind::False, + Tok::None => TokenKind::None, + Tok::True => TokenKind::True, + Tok::And => TokenKind::And, + Tok::As => TokenKind::As, + Tok::Assert => TokenKind::Assert, + Tok::Async => TokenKind::Async, + Tok::Await => TokenKind::Await, + Tok::Break => TokenKind::Break, + Tok::Class => TokenKind::Class, + Tok::Continue => TokenKind::Continue, + Tok::Def => TokenKind::Def, + Tok::Del => TokenKind::Del, + Tok::Elif => TokenKind::Elif, + Tok::Else => TokenKind::Else, + Tok::Except => TokenKind::Except, + Tok::Finally => TokenKind::Finally, + Tok::For => TokenKind::For, + Tok::From => TokenKind::From, + Tok::Global => TokenKind::Global, + Tok::If => TokenKind::If, + Tok::Import => TokenKind::Import, + Tok::In => TokenKind::In, + Tok::Is => TokenKind::Is, + Tok::Lambda => TokenKind::Lambda, + Tok::Nonlocal => TokenKind::Nonlocal, + Tok::Not => TokenKind::Not, + Tok::Or => TokenKind::Or, + Tok::Pass => TokenKind::Pass, + Tok::Raise => TokenKind::Raise, + Tok::Return => TokenKind::Return, + Tok::Try => TokenKind::Try, + Tok::While => TokenKind::While, + Tok::Match => TokenKind::Match, + Tok::Case => TokenKind::Case, + Tok::Type => TokenKind::Type, + Tok::With => TokenKind::With, + Tok::Yield => TokenKind::Yield, + Tok::StartModule => TokenKind::StartModule, + Tok::StartInteractive => TokenKind::StartInteractive, + Tok::StartExpression => TokenKind::StartExpression, + } + } +} + +impl From<&Tok> for TokenKind { + fn from(value: &Tok) -> Self { + Self::from_token(value) + } +} diff --git a/rustpython_original/ruff_text_size/src/lib.rs b/crates/ruff_text_size/src/lib.rs similarity index 100% rename from rustpython_original/ruff_text_size/src/lib.rs rename to crates/ruff_text_size/src/lib.rs diff --git a/rustpython_original/ruff_text_size/src/range.rs b/crates/ruff_text_size/src/range.rs similarity index 100% rename from rustpython_original/ruff_text_size/src/range.rs rename to crates/ruff_text_size/src/range.rs diff --git a/rustpython_original/ruff_text_size/src/schemars_impls.rs b/crates/ruff_text_size/src/schemars_impls.rs similarity index 100% rename from rustpython_original/ruff_text_size/src/schemars_impls.rs rename to crates/ruff_text_size/src/schemars_impls.rs diff --git a/rustpython_original/ruff_text_size/src/serde_impls.rs b/crates/ruff_text_size/src/serde_impls.rs similarity index 100% rename from rustpython_original/ruff_text_size/src/serde_impls.rs rename to crates/ruff_text_size/src/serde_impls.rs diff --git a/rustpython_original/ruff_text_size/src/size.rs b/crates/ruff_text_size/src/size.rs similarity index 100% rename from rustpython_original/ruff_text_size/src/size.rs rename to crates/ruff_text_size/src/size.rs diff --git a/rustpython_original/ruff_text_size/src/traits.rs b/crates/ruff_text_size/src/traits.rs similarity index 100% rename from rustpython_original/ruff_text_size/src/traits.rs rename to crates/ruff_text_size/src/traits.rs diff --git a/rustpython_original/ruff_text_size/tests/auto_traits.rs b/crates/ruff_text_size/tests/auto_traits.rs similarity index 100% rename from rustpython_original/ruff_text_size/tests/auto_traits.rs rename to crates/ruff_text_size/tests/auto_traits.rs diff --git a/rustpython_original/ruff_text_size/tests/constructors.rs b/crates/ruff_text_size/tests/constructors.rs similarity index 100% rename from rustpython_original/ruff_text_size/tests/constructors.rs rename to crates/ruff_text_size/tests/constructors.rs diff --git a/rustpython_original/ruff_text_size/tests/indexing.rs b/crates/ruff_text_size/tests/indexing.rs similarity index 100% rename from rustpython_original/ruff_text_size/tests/indexing.rs rename to crates/ruff_text_size/tests/indexing.rs diff --git a/rustpython_original/ruff_text_size/tests/main.rs b/crates/ruff_text_size/tests/main.rs similarity index 100% rename from rustpython_original/ruff_text_size/tests/main.rs rename to crates/ruff_text_size/tests/main.rs diff --git a/rustpython_original/ruff_text_size/tests/serde.rs b/crates/ruff_text_size/tests/serde.rs similarity index 100% rename from rustpython_original/ruff_text_size/tests/serde.rs rename to crates/ruff_text_size/tests/serde.rs diff --git a/rustpython_original/literal/Cargo.toml b/rustpython_original/literal/Cargo.toml deleted file mode 100644 index 7e9ae4435b..0000000000 --- a/rustpython_original/literal/Cargo.toml +++ /dev/null @@ -1,21 +0,0 @@ -[package] -name = "rustpython-literal" -version = "0.2.0" -description = "Common literal handling utilities mostly useful for unparse and repr." -authors = ["RustPython Team"] -edition = "2021" -repository = "https://github.com/RustPython/Parser/" -license = "MIT" - -[dependencies] -bitflags = { workspace = true } -hexf-parse = "0.2.1" -is-macro.workspace = true -itertools = { workspace = true } -lexical-parse-float = { version = "0.8.0", features = ["format"] } -num-bigint = { workspace = true } -num-traits = { workspace = true } -unic-ucd-category = "0.9" - -[dev-dependencies] -rand = { workspace = true } diff --git a/rustpython_original/ruff_python_ast/Cargo.toml b/rustpython_original/ruff_python_ast/Cargo.toml deleted file mode 100644 index b7235f9c58..0000000000 --- a/rustpython_original/ruff_python_ast/Cargo.toml +++ /dev/null @@ -1,15 +0,0 @@ -[package] -name = "ruff_python_ast" -version = "0.2.0" -description = "AST definitions for Ruff" -authors = ["Charlie Marsh "] -edition = "2021" -repository = "https://github.com/astral-sh/ruff" -license = "MIT" - -[dependencies] -ruff_text_size = { workspace = true } - -is-macro = { workspace = true } -num-bigint = { workspace = true } -static_assertions = { workspace = true } diff --git a/rustpython_original/ruff_python_ast/src/lib.rs b/rustpython_original/ruff_python_ast/src/lib.rs deleted file mode 100644 index 31a45fcf23..0000000000 --- a/rustpython_original/ruff_python_ast/src/lib.rs +++ /dev/null @@ -1,48 +0,0 @@ -//! Python AST node definitions and utilities. -//! -//! AST nodes are very similary defined like [Python AST](https://docs.python.org/3/library/ast.html). -//! But a few exceptions exist due to ruff_python_parser optimization. -//! They can be transformed to matching Python-styled AST in reasonable cost. -//! -//! [PythonArguments] is replaced by [Arguments]. The new [Arguments] type representation uses a new type -//! [ArgWithDefault] to represent arguments with default values. See each type documentation for more details. -//! -//! A few top-level sum types are renamed to human friendly names. -//! [CmpOp] refers `cmpop` -//! [UnaryOp] refers `unaryop` -//! [BoolOp] refers `boolop` -//! [WithItem] refers `withitem` -//! [ExceptHandler] refers `excepthandler` -//! - -mod nodes; - -pub use nodes::*; -use ruff_text_size::{TextRange, TextSize}; - -pub trait Ranged { - fn range(&self) -> TextRange; - - fn start(&self) -> TextSize { - self.range().start() - } - - fn end(&self) -> TextSize { - self.range().end() - } -} - -impl Ranged for TextRange { - fn range(&self) -> TextRange { - *self - } -} - -impl Ranged for &T -where - T: Ranged, -{ - fn range(&self) -> TextRange { - T::range(self) - } -} diff --git a/rustpython_original/ruff_python_parser/Cargo.toml b/rustpython_original/ruff_python_parser/Cargo.toml deleted file mode 100644 index b3769c7eef..0000000000 --- a/rustpython_original/ruff_python_parser/Cargo.toml +++ /dev/null @@ -1,36 +0,0 @@ -[package] -name = "ruff_python_parser" -version = "0.2.0" -description = "Parser for python code." -authors = ["Charlie Marsh ", "RustPython Team"] -build = "build.rs" -license = "MIT" -edition = "2021" - -[features] -serde = ["dep:serde"] - -[build-dependencies] -anyhow = { workspace = true } -lalrpop = { version = "0.20.0", default-features = false, optional = true } -tiny-keccak = { version = "2", features = ["sha3"] } - -[dependencies] -ruff_python_ast = { workspace = true } -ruff_text_size = { workspace = true } - -itertools = { workspace = true } -is-macro = { workspace = true } -num-bigint = { workspace = true } -num-traits = { workspace = true } -unicode_names2 = { workspace = true } - -unic-emoji-char = "0.9.0" -unic-ucd-ident = "0.9.0" -lalrpop-util = { version = "0.20.0", default-features = false } -rustc-hash = "1.1.0" -serde = { version = "1.0.133", optional = true, default-features = false, features = ["derive"] } -static_assertions = "1.1.0" - -[dev-dependencies] -insta = { workspace = true } diff --git a/rustpython_original/ruff_python_parser/README.md b/rustpython_original/ruff_python_parser/README.md deleted file mode 100644 index e79eb87fac..0000000000 --- a/rustpython_original/ruff_python_parser/README.md +++ /dev/null @@ -1,67 +0,0 @@ -# RustPython/parser - -This directory has the code for python lexing, parsing and generating Abstract Syntax Trees (AST). - -The steps are: -- Lexical analysis: splits the source code into tokens. -- Parsing and generating the AST: transforms those tokens into an AST. Uses `LALRPOP`, a Rust parser generator framework. - -This crate is published on [https://docs.rs/rustpython-parser](https://docs.rs/rustpython-parser). - -We wrote [a blog post](https://rustpython.github.io/2020/04/02/thing-explainer-parser.html) with screenshots and an explanation to help you understand the steps by seeing them in action. - -For more information on LALRPOP, here is a link to the [LALRPOP book](https://github.com/lalrpop/lalrpop). - -There is a readme in the `src` folder with the details of each file. - - -## Directory content - -`build.rs`: The build script. -`Cargo.toml`: The config file. - -The `src` directory has: - -**lib.rs** -This is the crate's root. - -**lexer.rs** -This module takes care of lexing python source text. This means source code is translated into separate tokens. - -**parser.rs** -A python parsing module. Use this module to parse python code into an AST. There are three ways to parse python code. You could parse a whole program, a single statement, or a single expression. - -**ast.rs** - Implements abstract syntax tree (AST) nodes for the python language. Roughly equivalent to [the python AST](https://docs.python.org/3/library/ast.html). - -**python.lalrpop** -Python grammar. - -**token.rs** -Different token definitions. Loosely based on token.h from CPython source. - -**errors.rs** -Define internal parse error types. The goal is to provide a matching and a safe error API, masking errors from LALR. - -**fstring.rs** -Format strings. - -**function.rs** -Collection of functions for parsing parameters, arguments. - -**location.rs** -Datatypes to support source location information. - -**mode.rs** -Execution mode check. Allowed modes are `exec`, `eval` or `single`. - - -## How to use - -For example, one could do this: -``` - use rustpython_parser::{Parse, ast}; - let python_source = "print('Hello world')"; - let python_statements = ast::Suite::parse(python_source).unwrap(); // statements - let python_expr = ast::Expr::parse(python_source).unwrap(); // or expr -``` diff --git a/rustpython_original/ruff_python_parser/build.rs b/rustpython_original/ruff_python_parser/build.rs deleted file mode 100644 index fb6d4b4d84..0000000000 --- a/rustpython_original/ruff_python_parser/build.rs +++ /dev/null @@ -1,113 +0,0 @@ -use std::fmt::Write as _; -use std::fs::File; -use std::io::{BufRead, BufReader}; -use std::path::{Path, PathBuf}; -use tiny_keccak::{Hasher, Sha3}; - -fn main() -> anyhow::Result<()> { - const SOURCE: &str = "src/python.lalrpop"; - println!("cargo:rerun-if-changed={SOURCE}"); - - let target; - let error; - - #[cfg(feature = "lalrpop")] - { - let out_dir = PathBuf::from(std::env::var_os("OUT_DIR").unwrap()); - target = out_dir.join("src/python.rs"); - } - #[cfg(not(feature = "lalrpop"))] - { - target = PathBuf::from("src/python.rs"); - error = "python.lalrpop and src/python.rs doesn't match. This is a rustpython-ruff_python_parser bug. Please report it unless you are editing rustpython-ruff_python_parser. Run `lalrpop src/python.lalrpop` to build ruff_python_parser again."; - } - - let Some(message) = requires_lalrpop(SOURCE, &target) else { - return Ok(()); - }; - - #[cfg(feature = "lalrpop")] - { - let Err(e) = try_lalrpop() else { - return Ok(()); - }; - error = e; - } - - println!("cargo:warning={message}"); - panic!("running lalrpop failed. {error:?}"); -} - -fn requires_lalrpop(source: &str, target: &Path) -> Option { - let Ok(target) = File::open(target) else { - return Some("python.rs doesn't exist. regenerate.".to_owned()); - }; - - let sha_prefix = "// sha3: "; - let sha3_line = if let Some(sha3_line) = - BufReader::with_capacity(128, target) - .lines() - .find_map(|line| { - let line = line.unwrap(); - line.starts_with(sha_prefix).then_some(line) - }) { - sha3_line - } else { - // no sha3 line - maybe old version of lalrpop installed - return Some("python.rs doesn't include sha3 hash. regenerate.".to_owned()); - }; - let expected_sha3_str = sha3_line.strip_prefix(sha_prefix).unwrap(); - - let actual_sha3 = { - let mut hasher = Sha3::v256(); - let mut f = BufReader::new(File::open(source).unwrap()); - let mut line = String::new(); - while f.read_line(&mut line).unwrap() != 0 { - if line.ends_with('\n') { - line.pop(); - if line.ends_with('\r') { - line.pop(); - } - } - hasher.update(line.as_bytes()); - hasher.update(b"\n"); - line.clear(); - } - let mut hash = [0u8; 32]; - hasher.finalize(&mut hash); - hash - }; - let eq = sha_equal(expected_sha3_str, &actual_sha3); - if !eq { - let mut actual_sha3_str = String::new(); - for byte in actual_sha3 { - write!(actual_sha3_str, "{byte:02x}").unwrap(); - } - return Some(format!( - "python.rs hash expected: {expected_sha3_str} but actual: {actual_sha3_str}" - )); - } - None -} - -#[cfg(feature = "lalrpop")] -fn try_lalrpop() -> Result<(), Box> { - // We are not using lalrpop::process_root() or Configuration::process_current_dir() - // because of https://github.com/lalrpop/lalrpop/issues/699. - lalrpop::Configuration::new() - .use_cargo_dir_conventions() - .set_in_dir(Path::new(".")) - .process() -} - -fn sha_equal(expected_sha3_str: &str, actual_sha3: &[u8; 32]) -> bool { - if expected_sha3_str.len() != 64 { - panic!("lalrpop version? hash bug is fixed in 0.19.8"); - } - - let mut expected_sha3 = [0u8; 32]; - for (i, b) in expected_sha3.iter_mut().enumerate() { - *b = u8::from_str_radix(&expected_sha3_str[i * 2..][..2], 16).unwrap(); - } - *actual_sha3 == expected_sha3 -} diff --git a/rustpython_original/ruff_python_parser/src/lib.rs b/rustpython_original/ruff_python_parser/src/lib.rs deleted file mode 100644 index 4a0740b8a5..0000000000 --- a/rustpython_original/ruff_python_parser/src/lib.rs +++ /dev/null @@ -1,196 +0,0 @@ -//! This crate can be used to parse Python source code into an Abstract -//! Syntax Tree. -//! -//! ## Overview: -//! -//! The process by which source code is parsed into an AST can be broken down -//! into two general stages: [lexical analysis] and [parsing]. -//! -//! During lexical analysis, the source code is converted into a stream of lexical -//! tokens that represent the smallest meaningful units of the language. For example, -//! the source code `print("Hello world")` would _roughly_ be converted into the following -//! stream of tokens: -//! -//! ```text -//! Name("print"), LeftParen, String("Hello world"), RightParen -//! ``` -//! -//! these tokens are then consumed by the ruff_python_parser, which matches them against a set of -//! grammar rules to verify that the source code is syntactically valid and to construct -//! an AST that represents the source code. -//! -//! During parsing, the ruff_python_parser consumes the tokens generated by the lexer and constructs -//! a tree representation of the source code. The tree is made up of nodes that represent -//! the different syntactic constructs of the language. If the source code is syntactically -//! invalid, parsing fails and an error is returned. After a successful parse, the AST can -//! be used to perform further analysis on the source code. Continuing with the example -//! above, the AST generated by the ruff_python_parser would _roughly_ look something like this: -//! -//! ```text -//! node: Expr { -//! value: { -//! node: Call { -//! func: { -//! node: Name { -//! id: "print", -//! ctx: Load, -//! }, -//! }, -//! args: [ -//! node: Constant { -//! value: Str("Hello World"), -//! kind: None, -//! }, -//! ], -//! keywords: [], -//! }, -//! }, -//! }, -//!``` -//! -//! Note: The Tokens/ASTs shown above are not the exact tokens/ASTs generated by the ruff_python_parser. -//! -//! ## Source code layout: -//! -//! The functionality of this crate is split into several modules: -//! -//! - token: This module contains the definition of the tokens that are generated by the lexer. -//! - [lexer]: This module contains the lexer and is responsible for generating the tokens. -//! - ruff_python_parser: This module contains an interface to the ruff_python_parser and is responsible for generating the AST. -//! - Functions and strings have special parsing requirements that are handled in additional files. -//! - mode: This module contains the definition of the different modes that the ruff_python_parser can be in. -//! -//! # Examples -//! -//! For example, to get a stream of tokens from a given string, one could do this: -//! -//! ``` -//! use ruff_python_parser::{lexer::lex, Mode}; -//! -//! let python_source = r#" -//! def is_odd(i): -//! return bool(i & 1) -//! "#; -//! let mut tokens = lex(python_source, Mode::Module); -//! assert!(tokens.all(|t| t.is_ok())); -//! ``` -//! -//! These tokens can be directly fed into the ruff_python_parser to generate an AST: -//! -//! ``` -//! use ruff_python_parser::{lexer::lex, Mode, parse_tokens}; -//! -//! let python_source = r#" -//! def is_odd(i): -//! return bool(i & 1) -//! "#; -//! let tokens = lex(python_source, Mode::Module); -//! let ast = parse_tokens(tokens, Mode::Module, ""); -//! -//! assert!(ast.is_ok()); -//! ``` -//! -//! Alternatively, you can use one of the other `parse_*` functions to parse a string directly without using a specific -//! mode or tokenizing the source beforehand: -//! -//! ``` -//! use ruff_python_parser::{Parse}; -//! use ruff_python_ast as ast; -//! -//! let python_source = r#" -//! def is_odd(i): -//! return bool(i & 1) -//! "#; -//! let ast = ast::Suite::parse(python_source, ""); -//! -//! assert!(ast.is_ok()); -//! ``` -//! -//! [lexical analysis]: https://en.wikipedia.org/wiki/Lexical_analysis -//! [parsing]: https://en.wikipedia.org/wiki/Parsing -//! [lexer]: crate::lexer - -pub use parser::{parse, parse_starts_at, parse_tokens, Parse, ParseError, ParseErrorType}; -#[allow(deprecated)] -pub use parser::{parse_expression, parse_expression_starts_at, parse_program}; -pub use string::FStringErrorType; -pub use token::{StringKind, Tok}; - -mod function; -// Skip flattening lexer to distinguish from full ruff_python_parser -mod context; -pub mod lexer; -mod parser; -mod soft_keywords; -mod string; -mod token; - -/// Control in the different modes by which a source file can be parsed. -/// The mode argument specifies in what way code must be parsed. -#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq)] -pub enum Mode { - /// The code consists of a sequence of statements. - Module, - /// The code consists of a sequence of interactive statement. - Interactive, - /// The code consists of a single expression. - Expression, - /// The code consists of a sequence of statements which are part of a - /// Jupyter Notebook and thus could include escape commands scoped to - /// a single line. - /// - /// ## Limitations: - /// - /// For [Dynamic object information], the escape characters (`?`, `??`) - /// must be used before an object. For example, `?foo` will be recognized, - /// but `foo?` will not. - /// - /// ## Supported escape commands: - /// - /// - [Magic command system] which is limited to [line magics] and can start - /// with `?` or `??`. - /// - [Dynamic object information] which can start with `?` or `??`. - /// - [System shell access] which can start with `!` or `!!`. - /// - [Automatic parentheses and quotes] which can start with `/`, `;`, or `,`. - /// - /// [Magic command system]: https://ipython.readthedocs.io/en/stable/interactive/reference.html#magic-command-system - /// [line magics]: https://ipython.readthedocs.io/en/stable/interactive/magics.html#line-magics - /// [Dynamic object information]: https://ipython.readthedocs.io/en/stable/interactive/reference.html#dynamic-object-information - /// [System shell access]: https://ipython.readthedocs.io/en/stable/interactive/reference.html#system-shell-access - /// [Automatic parentheses and quotes]: https://ipython.readthedocs.io/en/stable/interactive/reference.html#automatic-parentheses-and-quotes - Jupyter, -} - -impl std::str::FromStr for Mode { - type Err = ModeParseError; - fn from_str(s: &str) -> Result { - match s { - "exec" | "single" => Ok(Mode::Module), - "eval" => Ok(Mode::Expression), - "jupyter" => Ok(Mode::Jupyter), - _ => Err(ModeParseError), - } - } -} - -/// Returned when a given mode is not valid. -#[derive(Debug)] -pub struct ModeParseError; - -impl std::fmt::Display for ModeParseError { - fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { - write!(f, r#"mode must be "exec", "eval", "jupyter", or "single""#) - } -} - -#[rustfmt::skip] -mod python { - #![allow(clippy::all)] - #![allow(unused)] - - #[cfg(feature = "lalrpop")] - include!(concat!(env!("OUT_DIR"), "/src/python.rs")); - - #[cfg(not(feature = "lalrpop"))] - include!("python.rs"); -} diff --git a/rustpython_original/ruff_text_size/Cargo.toml b/rustpython_original/ruff_text_size/Cargo.toml deleted file mode 100644 index d3ce185167..0000000000 --- a/rustpython_original/ruff_text_size/Cargo.toml +++ /dev/null @@ -1,22 +0,0 @@ -[package] -name = "ruff_text_size" -version = "0.0.0" -publish = false -edition = "2021" -rust-version = "1.67.1" - -[dependencies] -serde = { version="1.0.152", optional = true, default_features = false } -schemars = { version = "0.8.12", optional = true } - -[dev-dependencies] -serde_test = { version = "1.0.152" } -static_assertions = { version = "1.1.0" } - -[features] -serde = ["dep:serde"] - -[[test]] -name = "serde" -path = "tests/serde.rs" -required-features = ["serde"] \ No newline at end of file