From 7aca4317880683b0b42586b5eb7a5475ffcd7b9f Mon Sep 17 00:00:00 2001 From: Lilaa3 <87947656+Lilaa3@users.noreply.github.com> Date: Sun, 14 Jan 2024 11:55:39 +0000 Subject: [PATCH] LALALALALALA --- fast64_internal/sm64/animation/c_parser.py | 92 +- fast64_internal/sm64/animation/importing.py | 93 +- fast64_internal/sm64/animation/operators.py | 82 +- fast64_internal/sm64/animation/panels.py | 3 +- .../animation/pylint_delete_before_pr.json | 1719 +++-------------- fast64_internal/sm64/animation/utility.py | 1 - 6 files changed, 408 insertions(+), 1582 deletions(-) diff --git a/fast64_internal/sm64/animation/c_parser.py b/fast64_internal/sm64/animation/c_parser.py index be7aa4489..ecf1b9312 100644 --- a/fast64_internal/sm64/animation/c_parser.py +++ b/fast64_internal/sm64/animation/c_parser.py @@ -1,4 +1,5 @@ from dataclasses import dataclass, field +import dataclasses import re from typing import List, Union @@ -13,8 +14,8 @@ class IfDefMacro: @dataclass class ParsedValue: - value: Union[str, int, float] - if_def: IfDefMacro + value: Union[str, int, float] = 0 + if_def: IfDefMacro = IfDefMacro() def set_or_add(self, value): if isinstance(self.value, list): @@ -41,6 +42,8 @@ class Include: @dataclass class Initialization(ParsedValue): keywords: List[str] = field(default_factory=list) + name: str = "" + is_extern: bool = False is_static: bool = False is_const: bool = False @@ -84,7 +87,8 @@ def array_to_struct_dict(self, struct_definition: list[str]): '"', "'", "|", - "\\" "/", + "\\", + "/", "%", "*", ".", @@ -94,29 +98,43 @@ def array_to_struct_dict(self, struct_definition: list[str]): "<", ) -delimiters_pattern = "|".join(map(re.escape, delimiters)) +DELIMITERS_PATTERN = "|".join(map(re.escape, delimiters)) token_pattern = re.compile( - r""" + rf""" (?: # Non-capturing group for alternatives - [^{delimiters_pattern}\s"']+ # Match characters that are not delimiters or whitespace or quotes + [^{DELIMITERS_PATTERN}\s"']+ # Match characters that are not delimiters or whitespace or quotes | "[^"]*" # Match double-quoted strings | '[^']*' # Match single-quoted strings ) | - [{delimiters_pattern}] # Match any of the delimiters - """.format( - delimiters_pattern=re.escape(delimiters_pattern) - ), + [{DELIMITERS_PATTERN}] # Match any of the delimiters + """, re.VERBOSE, ) comment_pattern = re.compile(r"/\*.*?\*/|//.*?$", re.DOTALL | re.MULTILINE) +@dataclass class CParser: + values: list[Initialization] = dataclasses.field(default_factory=list) + values_by_name: dict[str, Initialization] = dataclasses.field(default_factory=dict) + + cur_initializer: Initialization = Initialization() + reading_array_size: bool = False + reading_keywords: bool = True + reading_function: bool = False # Used for stack stuff, functions are not supported + reading_macro: bool = False + + stack: list[ParsedValue] = dataclasses.field(default_factory=list) + accumulated_tokens: list[str] = dataclasses.field(default_factory=list) + accumulated_macro_tokens: list[str] = dataclasses.field(default_factory=list) + if_defs: list[IfDefMacro] = dataclasses.field(default_factory=list) + origin_path: str = "" + def get_tabs(self): return "\t" * len(self.stack) @@ -154,7 +172,6 @@ def read_macro(self, prev_token: str, cur_token: str): self.stack[-1].set_or_add(Include(self.accumulated_macro_tokens[1])) elif macro_type in {"ifdef", "if", "ifndef"}: self.if_defs.append(IfDefMacro(macro_type, " ".join(self.accumulated_macro_tokens[1:]))) - pass elif macro_type in {"elif", "else"}: self.if_defs.pop() self.if_defs.append(IfDefMacro(macro_type, " ".join(self.accumulated_macro_tokens[1:]))) @@ -169,7 +186,7 @@ def read_macro(self, prev_token: str, cur_token: str): self.accumulated_macro_tokens.append(cur_token) - def read_values(self, prev_token: str, cur_token: str): + def read_values(self, cur_token: str): if cur_token == "=": designated_value = DesignatedValue( None, self.if_defs.copy(), "".join(self.accumulated_tokens).strip().replace(".", "", 1) @@ -188,9 +205,6 @@ def read_values(self, prev_token: str, cur_token: str): array = ParsedValue([], self.if_defs.copy()) - if cur_token == "(": - array.name = prev_token - self.stack[-1].set_or_add(array) self.stack.append(array) elif cur_token in {"}", ")"} or (cur_token == ";" and not self.reading_function): @@ -203,10 +217,10 @@ def read_values(self, prev_token: str, cur_token: str): if len(self.stack) == 0: self.reading_function = False self.reading_keywords = True - self.cur_initializer = Initialization(None, IfDefMacro()) + self.cur_initializer = Initialization() elif isinstance(self.stack[-1], DesignatedValue): self.stack.pop() - elif cur_token == ";" or cur_token == ",": + elif cur_token in {";", ","}: self.handle_accumulated_tokens() else: self.accumulated_tokens.append(cur_token) @@ -216,12 +230,10 @@ def read_keywords(self, prev_token: str, cur_token: str): if cur_token == "]": self.reading_array_size = False return - else: - if cur_token == "[": - self.reading_array_size = True - return + if cur_token == "[": + self.reading_array_size = True + return - add_token = False if cur_token == "static": self.cur_initializer.is_static = True elif cur_token == "const": @@ -234,13 +246,8 @@ def read_keywords(self, prev_token: str, cur_token: str): self.cur_initializer.is_struct = True elif cur_token == "*": self.cur_initializer.pointer_depth += 1 - else: - add_token = True - - if not add_token: - return - if cur_token in {"=", "{", ";"}: + elif cur_token in {"=", "{", ";"}: self.values.append(self.cur_initializer) if prev_token == ")" and cur_token == "{": self.reading_function = True @@ -253,20 +260,21 @@ def read_keywords(self, prev_token: str, cur_token: str): self.cur_initializer.if_def = self.if_defs.copy() self.reading_keywords = False - elif not cur_token in {"\n"}: + elif not cur_token == "\n": self.cur_initializer.keywords.append(cur_token) def read_c_text(self, text: str, origin_path: str = ""): - self.cur_initializer = Initialization(None, IfDefMacro()) - self.reading_array_size = False - self.reading_keywords = True - self.reading_function = False # Used for stack stuff, functions are not supported - self.reading_macro = False - - self.stack: list[ParsedValue] = [] - self.accumulated_tokens: list[str] = [] - self.accumulated_macro_tokens: list[str] = [] - self.if_defs: list[IfDefMacro] = [] + self.cur_initializer = Initialization() + self.reading_array_size, self.reading_keywords, self.reading_function, self.reading_macro = ( + False, + True, + False, + False, + ) + self.stack.clear() + self.accumulated_tokens.clear() + self.accumulated_macro_tokens.clear() + self.if_defs.clear() self.origin_path = origin_path @@ -288,8 +296,4 @@ def read_c_text(self, text: str, origin_path: str = ""): if cur_token == "=": continue # HACK!!! if not self.reading_keywords: - self.read_values(prev_token, cur_token) - - def __init__(self) -> None: - self.values: list[Initialization] = [] - self.values_by_name: dict[str, Initialization] = {} + self.read_values(cur_token) diff --git a/fast64_internal/sm64/animation/importing.py b/fast64_internal/sm64/animation/importing.py index d70990b8d..03322c78f 100644 --- a/fast64_internal/sm64/animation/importing.py +++ b/fast64_internal/sm64/animation/importing.py @@ -1,17 +1,16 @@ from collections import OrderedDict -import bpy -from bpy.types import Object, bpy_prop_collection - -import dataclasses -from io import BufferedReader import math import os from typing import Optional +from io import BufferedReader +import dataclasses + +import bpy +from bpy.types import Object from mathutils import Euler, Vector, Quaternion from ...utility import PluginError, decodeSegmentedAddr, path_checks from ...utility_anim import stashActionInArmature -from ..sm64_utility import import_rom_checks from ..sm64_level_parser import parseLevelAtPointer from ..sm64_constants import ( level_pointers, @@ -55,8 +54,8 @@ def __init__(self): def read_pairs(self, pairs: list[SM64_AnimPair]): array: list[int] = [] - maxFrame = max([len(pair.values) for pair in pairs]) - for frame in range(maxFrame): + max_frame = max(len(pair.values) for pair in pairs) + for frame in range(max_frame): array.append([x.getFrame(frame) for x in pairs]) return array @@ -64,8 +63,7 @@ def read_translation(self, pairs: list[SM64_AnimPair], scale: float): translation_frames = self.read_pairs(pairs) for translation_frame in translation_frames: - scaledTrans = [(1.0 / scale) * x for x in translation_frame] - self.translation.append(scaledTrans) + self.translation.append([(1.0 / scale) * x for x in translation_frame]) def read_rotation(self, pairs: list[SM64_AnimPair]): rotation_frames: list[Vector] = self.read_pairs(pairs) @@ -126,8 +124,8 @@ def animation_data_to_blender(armature_obj: Object, blender_to_sm64_scale: float index=property_index, action_group=pose_bone.name, ) - for frame in range(len(bone_data.translation)): - f_curve.keyframe_points.insert(frame, bone_data.translation[frame][property_index]) + for frame, translation in enumerate(bone_data.translation): + f_curve.keyframe_points.insert(frame, translation[property_index]) is_root = False for property_index in range(4): @@ -136,8 +134,8 @@ def animation_data_to_blender(armature_obj: Object, blender_to_sm64_scale: float index=property_index, action_group=pose_bone.name, ) - for frame in range(len(bone_data.rotation)): - f_curve.keyframe_points.insert(frame, bone_data.rotation[frame][property_index]) + for frame, rotation in enumerate(bone_data.rotation): + f_curve.keyframe_points.insert(frame, rotation[property_index]) def import_animation_from_c_header( @@ -184,7 +182,7 @@ def import_c_animations(path: str, animations: dict[str, SM64_Anim], table: SM64 print(f"Exception while attempting to parse file {filepath}: {str(e)}") # Should I raise here? - print(f"All files have been parsed") + print("All files have been parsed") table_initialization: None | Initialization = None all_headers: OrderedDict[SM64_AnimHeader] = OrderedDict() @@ -236,24 +234,24 @@ def import_binary_header( @dataclasses.dataclass class DMATableEntrie: - offsetFromTable: int - address: int + offset: int size: int + address: int -def read_binary_dma_table_entries(rom_data: BufferedReader, address: int) -> list[DMATableEntrie]: - dma_entries: list[DMATableEntrie] = [] +def read_binary_dma_table_entries(rom_data: BufferedReader, address: int): + entries: list[DMATableEntrie] = [] dma_table_reader = RomReading(rom_data, address) - numEntries = dma_table_reader.read_value(4) - addrPlaceholder = dma_table_reader.read_value(4) + num_entries = dma_table_reader.read_value(4) # numEntries + dma_table_reader.read_value(4) # addrPlaceholder - for i in range(numEntries): + for _ in range(num_entries): offset = dma_table_reader.read_value(4) size = dma_table_reader.read_value(4) - dma_entries.append(DMATableEntrie(offset, address + offset, size)) + entries.append(DMATableEntrie(offset, size, address + offset)) - return dma_entries + return entries def import_binary_dma_animation( @@ -270,13 +268,12 @@ def import_binary_dma_animation( header = import_binary_header(rom_data, entrie.address, True, None, animations) table.elements.append(header) else: - if not (0 <= table_index < len(entries)): + if not 0 <= table_index < len(entries): raise PluginError("Entrie outside of defined table.") entrie: DMATableEntrie = entries[table_index] header = import_binary_header(rom_data, entrie.address, True, None, animations) table.elements.append(header) - return header def import_binary_table( @@ -342,47 +339,3 @@ def import_binary_animations( import_binary_header(rom_data, address, False, segment_data, animations) else: raise PluginError("Unimplemented binary import type.") - - -def import_animation_to_blender( - armature_obj: Object, - import_type: str, - sm64_to_blender_scale: float, - table_elements: bpy_prop_collection, - c_path: str = "", - import_rom_path: str = "", - address: int = 0, - is_segmented_pointer: bool = True, - level: str = "IC", - binary_import_type: str = "Animation", - read_entire_table: bool = False, - table_index: int = 0, - ignore_null: bool = False, -): - animations: dict[str, SM64_Anim] = {} - table = SM64_AnimTable() - - if import_type == "Binary": - import_rom_checks(import_rom_path) - with open(import_rom_path, "rb") as rom_data: - import_binary_animations( - rom_data, - binary_import_type, - is_segmented_pointer, - address, - level, - animations, - read_entire_table, - table_index, - ignore_null, - table, - ) - elif import_type == "C": - import_c_animations(c_path, animations, table) - else: - raise PluginError("Unimplemented Import Type.") - - for data in animations.values(): - animation_data_to_blender(armature_obj, sm64_to_blender_scale, data) - - table.to_blender(table_elements) diff --git a/fast64_internal/sm64/animation/operators.py b/fast64_internal/sm64/animation/operators.py index 2567c92ae..dd43fd0f1 100644 --- a/fast64_internal/sm64/animation/operators.py +++ b/fast64_internal/sm64/animation/operators.py @@ -1,3 +1,4 @@ +import ast import math import os import bpy @@ -8,11 +9,14 @@ StringProperty, IntProperty, ) +from .classes import SM64_Anim, SM64_AnimTable +from ..sm64_utility import import_rom_checks from .importing import ( + import_binary_animations, import_binary_dma_animation, animation_data_to_blender, - import_animation_to_blender, + import_c_animations, ) from .exporting import ( @@ -190,8 +194,6 @@ def execute_operator(self, context): for i in range(len(variants)): variants.remove(0) - action_props.update_header_variant_numbers() - if self.type == "ADD": variants[-1].action = action arrayIndex = self.arrayIndex @@ -201,6 +203,8 @@ def execute_operator(self, context): context.scene.fast64.sm64.anim_export.actor_name, action, action_props.get_headers()[arrayIndex] ) + action_props.update_header_variant_numbers() + return {"FINISHED"} def execute(self, context): @@ -329,6 +333,7 @@ def execute_operator(self, context): animation_data_to_blender(armatureObj, sm64Props.blender_to_sm64_scale, data) tableList.to_blender(sm64Props.table.elements) + self.report({"INFO"}, "Success!") return {"FINISHED"} def execute(self, context): @@ -339,37 +344,60 @@ def execute(self, context): return {"CANCELLED"} +def eval_num_from_str(string: str): + try: + return ast.literal_eval(string) + except SyntaxError as e: + raise SyntaxError(f"{str(e)}.\nIf value is in hexadecimal, use 0x before it.") + + class SM64_ImportAnim(bpy.types.Operator): bl_idname = "scene.sm64_import_anim" bl_label = "Import Animation" bl_options = {"REGISTER", "UNDO", "PRESET"} + def execute_operator(self, context): + sm64_props = context.scene.fast64.sm64 + anim_import_props = sm64_props.anim_import + + animation_operator_checks(context, False) + + animations: dict[str, SM64_Anim] = {} + table = SM64_AnimTable() + + if anim_import_props.import_type == "Binary": + import_rom_path = abspath(sm64_props.import_rom) + import_rom_checks(import_rom_path) + with open(import_rom_path, "rb") as rom_data: + import_binary_animations( + rom_data, + anim_import_props.binary_import_type, + anim_import_props.isSegmentedPointer(), + eval_num_from_str( + anim_import_props.DMATableAddress + if anim_import_props.binary_import_type == "DMA" + else anim_import_props.address + ), + anim_import_props.level, + animations, + anim_import_props.read_entire_table, + anim_import_props.tableIndex, + anim_import_props.ignore_null, + table, + ) + elif anim_import_props.import_type == "C": + import_c_animations(abspath(anim_import_props.path), animations, table) + + for data in animations.values(): + animation_data_to_blender(context.selected_objects[0], sm64_props.blender_to_sm64_scale, data) + table.to_blender(sm64_props.anim_export.table.elements) + + self.report({"INFO"}, "Success!") + return {"FINISHED"} + def execute(self, context): try: - sm64_props = context.scene.fast64.sm64 - anim_import_props = sm64_props.anim_import - - animation_operator_checks(context, False) - - import_animation_to_blender( - context.selected_objects[0], - anim_import_props.import_type, - sm64_props.blender_to_sm64_scale, - sm64_props.anim_export.table.elements, - abspath(anim_import_props.path), - abspath(sm64_props.import_rom), - int(anim_import_props.DMATableAddress, 16) - if anim_import_props.binary_import_type == "DMA" - else int(anim_import_props.address, 16), - anim_import_props.isSegmentedPointer(), - anim_import_props.level, - anim_import_props.binary_import_type, - anim_import_props.read_entire_table, - anim_import_props.tableIndex, - anim_import_props.ignore_null, - ) - self.report({"INFO"}, "Success!") - return {"FINISHED"} + return self.execute_operator(context) except Exception as e: raisePluginError(self, e) return {"CANCELLED"} diff --git a/fast64_internal/sm64/animation/panels.py b/fast64_internal/sm64/animation/panels.py index c0c3986f9..166b4ae18 100644 --- a/fast64_internal/sm64/animation/panels.py +++ b/fast64_internal/sm64/animation/panels.py @@ -20,8 +20,7 @@ class SM64_ImportAnimPanel(SM64_Panel): isImport = True def draw(self, context: bpy.types.Context): - sm64Props = context.scene.fast64.sm64 - sm64Props.anim_import.draw_props(self.layout.column()) + context.scene.fast64.sm64.anim_import.draw_props(self.layout.column()) sm64_anim_panels = [SM64_ExportAnimPanel, SM64_ImportAnimPanel] diff --git a/fast64_internal/sm64/animation/pylint_delete_before_pr.json b/fast64_internal/sm64/animation/pylint_delete_before_pr.json index 762ff20b3..d273fc64a 100644 --- a/fast64_internal/sm64/animation/pylint_delete_before_pr.json +++ b/fast64_internal/sm64/animation/pylint_delete_before_pr.json @@ -1,30 +1,4 @@ [ - { - "type": "error", - "module": "fast64-animations.fast64_internal.sm64.animation.classes", - "obj": "", - "line": 1, - "column": 0, - "endLine": 1, - "endColumn": 10, - "path": "classes.py", - "symbol": "import-error", - "message": "Unable to import 'bpy'", - "message-id": "E0401" - }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.classes", - "obj": "SM64_AnimHeader", - "line": 18, - "column": 0, - "endLine": 18, - "endColumn": 21, - "path": "classes.py", - "symbol": "missing-class-docstring", - "message": "Missing class docstring", - "message-id": "C0115" - }, { "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.classes", @@ -363,19 +337,6 @@ "message": "Variable name \"structDict\" doesn't conform to snake_case naming style", "message-id": "C0103" }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.classes", - "obj": "SM64_AnimTable", - "line": 164, - "column": 0, - "endLine": 164, - "endColumn": 20, - "path": "classes.py", - "symbol": "missing-class-docstring", - "message": "Missing class docstring", - "message-id": "C0115" - }, { "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.classes", @@ -428,19 +389,6 @@ "message": "Method name \"readC\" doesn't conform to snake_case naming style", "message-id": "C0103" }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.classes", - "obj": "SM64_AnimPair", - "line": 188, - "column": 0, - "endLine": 188, - "endColumn": 19, - "path": "classes.py", - "symbol": "missing-class-docstring", - "message": "Missing class docstring", - "message-id": "C0115" - }, { "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.classes", @@ -623,19 +571,6 @@ "message": "Constant name \"headerSize\" doesn't conform to UPPER_CASE naming style", "message-id": "C0103" }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.classes", - "obj": "SM64_Anim", - "line": 230, - "column": 0, - "endLine": 230, - "endColumn": 15, - "path": "classes.py", - "symbol": "missing-class-docstring", - "message": "Missing class docstring", - "message-id": "C0115" - }, { "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.classes", @@ -1381,7 +1316,7 @@ "type": "warning", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "", - "line": 520, + "line": 521, "column": 9, "endLine": null, "endColumn": null, @@ -1390,58 +1325,6 @@ "message": "TODO: Add selected action button should add all variations in action.", "message-id": "W0511" }, - { - "type": "error", - "module": "fast64-animations.fast64_internal.sm64.animation.properties", - "obj": "", - "line": 1, - "column": 0, - "endLine": 1, - "endColumn": 10, - "path": "properties.py", - "symbol": "import-error", - "message": "Unable to import 'bpy'", - "message-id": "E0401" - }, - { - "type": "error", - "module": "fast64-animations.fast64_internal.sm64.animation.properties", - "obj": "", - "line": 3, - "column": 0, - "endLine": 3, - "endColumn": 54, - "path": "properties.py", - "symbol": "import-error", - "message": "Unable to import 'bpy.utils'", - "message-id": "E0401" - }, - { - "type": "error", - "module": "fast64-animations.fast64_internal.sm64.animation.properties", - "obj": "", - "line": 4, - "column": 0, - "endLine": 11, - "endColumn": 1, - "path": "properties.py", - "symbol": "import-error", - "message": "Unable to import 'bpy.props'", - "message-id": "E0401" - }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.properties", - "obj": "SM64_HeaderOverwrites", - "line": 55, - "column": 0, - "endLine": 55, - "endColumn": 27, - "path": "properties.py", - "symbol": "missing-class-docstring", - "message": "Missing class docstring", - "message-id": "C0115" - }, { "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.properties", @@ -1481,19 +1364,6 @@ "message": "Too few public methods (1/2)", "message-id": "R0903" }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.properties", - "obj": "SM64_AnimHeaderProps", - "line": 88, - "column": 0, - "endLine": 88, - "endColumn": 26, - "path": "properties.py", - "symbol": "missing-class-docstring", - "message": "Missing class docstring", - "message-id": "C0115" - }, { "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.properties", @@ -1663,19 +1533,6 @@ "message": "Variable name \"addOp\" doesn't conform to snake_case naming style", "message-id": "C0103" }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.properties", - "obj": "SM64_ActionProps", - "line": 218, - "column": 0, - "endLine": 218, - "endColumn": 22, - "path": "properties.py", - "symbol": "missing-class-docstring", - "message": "Missing class docstring", - "message-id": "C0115" - }, { "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.properties", @@ -1988,19 +1845,6 @@ "message": "Variable name \"nameSplit\" doesn't conform to snake_case naming style", "message-id": "C0103" }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.properties", - "obj": "SM64_TableElement", - "line": 378, - "column": 0, - "endLine": 378, - "endColumn": 23, - "path": "properties.py", - "symbol": "missing-class-docstring", - "message": "Missing class docstring", - "message-id": "C0115" - }, { "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.properties", @@ -2044,9 +1888,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimTable.getAnimTableName", - "line": 397, + "line": 398, "column": 4, - "endLine": 397, + "endLine": 398, "endColumn": 24, "path": "properties.py", "symbol": "invalid-name", @@ -2057,9 +1901,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimTable.getAnimTableFileName", - "line": 402, + "line": 403, "column": 4, - "endLine": 402, + "endLine": 403, "endColumn": 28, "path": "properties.py", "symbol": "invalid-name", @@ -2070,9 +1914,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimTable.getAnimTableFileName", - "line": 402, + "line": 403, "column": 35, - "endLine": 402, + "endLine": 403, "endColumn": 44, "path": "properties.py", "symbol": "invalid-name", @@ -2083,9 +1927,9 @@ "type": "refactor", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimTable.getAnimTableFileName", - "line": 403, + "line": 404, "column": 8, - "endLine": 406, + "endLine": 407, "endColumn": 32, "path": "properties.py", "symbol": "no-else-return", @@ -2096,9 +1940,9 @@ "type": "warning", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimTable.get_headers", - "line": 415, + "line": 416, "column": 16, - "endLine": 415, + "endLine": 416, "endColumn": 118, "path": "properties.py", "symbol": "raise-missing-from", @@ -2109,9 +1953,9 @@ "type": "warning", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimTable.get_actions", - "line": 426, + "line": 427, "column": 16, - "endLine": 426, + "endLine": 427, "endColumn": 118, "path": "properties.py", "symbol": "raise-missing-from", @@ -2122,9 +1966,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimTable.drawTableNameSettings", - "line": 430, + "line": 431, "column": 4, - "endLine": 430, + "endLine": 431, "endColumn": 29, "path": "properties.py", "symbol": "invalid-name", @@ -2135,9 +1979,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimTable.drawTableNameSettings", - "line": 431, + "line": 432, "column": 8, - "endLine": 431, + "endLine": 432, "endColumn": 17, "path": "properties.py", "symbol": "invalid-name", @@ -2148,9 +1992,9 @@ "type": "refactor", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimTable.drawTableNameSettings", - "line": 434, + "line": 435, "column": 8, - "endLine": 439, + "endLine": 440, "endColumn": 18, "path": "properties.py", "symbol": "no-else-return", @@ -2161,9 +2005,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimTable.drawTableNameSettings", - "line": 440, + "line": 441, "column": 8, - "endLine": 440, + "endLine": 441, "endColumn": 17, "path": "properties.py", "symbol": "invalid-name", @@ -2174,9 +2018,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimTable.drawTableElement", - "line": 447, + "line": 448, "column": 4, - "endLine": 447, + "endLine": 448, "endColumn": 24, "path": "properties.py", "symbol": "invalid-name", @@ -2187,9 +2031,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimTable.drawTableElement", - "line": 447, + "line": 448, "column": 49, - "endLine": 447, + "endLine": 448, "endColumn": 58, "path": "properties.py", "symbol": "invalid-name", @@ -2200,9 +2044,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimTable.drawTableElement", - "line": 447, + "line": 448, "column": 60, - "endLine": 447, + "endLine": 448, "endColumn": 75, "path": "properties.py", "symbol": "invalid-name", @@ -2213,9 +2057,9 @@ "type": "refactor", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimTable.drawTableElement", - "line": 447, + "line": 448, "column": 4, - "endLine": 447, + "endLine": 448, "endColumn": 24, "path": "properties.py", "symbol": "too-many-locals", @@ -2226,9 +2070,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimTable.drawTableElement", - "line": 448, + "line": 449, "column": 8, - "endLine": 448, + "endLine": 449, "endColumn": 19, "path": "properties.py", "symbol": "invalid-name", @@ -2239,9 +2083,9 @@ "type": "warning", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimTable.drawTableElement", - "line": 472, + "line": 473, "column": 42, - "endLine": 472, + "endLine": 473, "endColumn": 90, "path": "properties.py", "symbol": "f-string-without-interpolation", @@ -2252,9 +2096,9 @@ "type": "warning", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimTable.drawTableElement", - "line": 481, + "line": 482, "column": 32, - "endLine": 481, + "endLine": 482, "endColumn": 82, "path": "properties.py", "symbol": "f-string-without-interpolation", @@ -2265,9 +2109,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimTable.drawTableElement", - "line": 484, + "line": 485, "column": 8, - "endLine": 484, + "endLine": 485, "endColumn": 16, "path": "properties.py", "symbol": "invalid-name", @@ -2278,9 +2122,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimTable.drawTableElement", - "line": 487, + "line": 488, "column": 8, - "endLine": 487, + "endLine": 488, "endColumn": 17, "path": "properties.py", "symbol": "invalid-name", @@ -2291,9 +2135,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimTable.drawTableElement", - "line": 489, + "line": 490, "column": 8, - "endLine": 489, + "endLine": 490, "endColumn": 14, "path": "properties.py", "symbol": "invalid-name", @@ -2304,9 +2148,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimTable.drawTableElement", - "line": 492, + "line": 493, "column": 8, - "endLine": 492, + "endLine": 493, "endColumn": 19, "path": "properties.py", "symbol": "invalid-name", @@ -2317,9 +2161,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimTable.drawTableElement", - "line": 494, + "line": 495, "column": 8, - "endLine": 494, + "endLine": 495, "endColumn": 16, "path": "properties.py", "symbol": "invalid-name", @@ -2330,9 +2174,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimTable.draw_props", - "line": 498, + "line": 499, "column": 8, - "endLine": 498, + "endLine": 499, "endColumn": 17, "path": "properties.py", "symbol": "invalid-name", @@ -2343,9 +2187,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimTable.draw_props", - "line": 526, + "line": 534, "column": 12, - "endLine": 526, + "endLine": 534, "endColumn": 19, "path": "properties.py", "symbol": "invalid-name", @@ -2356,9 +2200,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimTable.draw_props", - "line": 529, + "line": 537, "column": 16, - "endLine": 529, + "endLine": 537, "endColumn": 26, "path": "properties.py", "symbol": "invalid-name", @@ -2369,22 +2213,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimBinaryExportProps", - "line": 535, - "column": 0, - "endLine": 535, - "endColumn": 32, - "path": "properties.py", - "symbol": "missing-class-docstring", - "message": "Missing class docstring", - "message-id": "C0115" - }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.properties", - "obj": "SM64_AnimBinaryExportProps", - "line": 535, + "line": 543, "column": 0, - "endLine": 535, + "endLine": 543, "endColumn": 32, "path": "properties.py", "symbol": "invalid-name", @@ -2395,9 +2226,9 @@ "type": "refactor", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimBinaryExportProps", - "line": 535, + "line": 543, "column": 0, - "endLine": 535, + "endLine": 543, "endColumn": 32, "path": "properties.py", "symbol": "too-few-public-methods", @@ -2408,9 +2239,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimExportProps", - "line": 561, + "line": 569, "column": 0, - "endLine": 561, + "endLine": 569, "endColumn": 26, "path": "properties.py", "symbol": "invalid-name", @@ -2421,9 +2252,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimExportProps.is_dma_structure", - "line": 595, + "line": 603, "column": 31, - "endLine": 595, + "endLine": 603, "endColumn": 40, "path": "properties.py", "symbol": "invalid-name", @@ -2434,9 +2265,9 @@ "type": "refactor", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimExportProps.is_dma_structure", - "line": 596, + "line": 604, "column": 8, - "endLine": 600, + "endLine": 608, "endColumn": 45, "path": "properties.py", "symbol": "no-else-return", @@ -2447,9 +2278,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimExportProps.canUseDMAStructure", - "line": 618, + "line": 626, "column": 4, - "endLine": 618, + "endLine": 626, "endColumn": 26, "path": "properties.py", "symbol": "invalid-name", @@ -2460,9 +2291,9 @@ "type": "refactor", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimExportProps.canUseDMAStructure", - "line": 619, + "line": 627, "column": 15, - "endLine": 619, + "endLine": 627, "endColumn": 72, "path": "properties.py", "symbol": "consider-using-in", @@ -2473,9 +2304,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimImportProps", - "line": 672, + "line": 682, "column": 0, - "endLine": 672, + "endLine": 682, "endColumn": 26, "path": "properties.py", "symbol": "invalid-name", @@ -2486,9 +2317,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimImportProps.isBinaryImport", - "line": 696, + "line": 706, "column": 4, - "endLine": 696, + "endLine": 706, "endColumn": 22, "path": "properties.py", "symbol": "invalid-name", @@ -2499,9 +2330,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimImportProps.isSegmentedPointer", - "line": 699, + "line": 709, "column": 4, - "endLine": 699, + "endLine": 709, "endColumn": 26, "path": "properties.py", "symbol": "invalid-name", @@ -2512,9 +2343,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimImportProps.drawBinaryAddress", - "line": 702, + "line": 712, "column": 4, - "endLine": 702, + "endLine": 712, "endColumn": 25, "path": "properties.py", "symbol": "invalid-name", @@ -2525,9 +2356,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimImportProps.drawBinary", - "line": 707, + "line": 717, "column": 4, - "endLine": 707, + "endLine": 717, "endColumn": 18, "path": "properties.py", "symbol": "invalid-name", @@ -2538,74 +2369,22 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.properties", "obj": "SM64_AnimImportProps.drawC", - "line": 732, + "line": 742, "column": 4, - "endLine": 732, + "endLine": 742, "endColumn": 13, "path": "properties.py", "symbol": "invalid-name", "message": "Method name \"drawC\" doesn't conform to snake_case naming style", "message-id": "C0103" }, - { - "type": "error", - "module": "fast64-animations.fast64_internal.sm64.animation.operators", - "obj": "", - "line": 3, - "column": 0, - "endLine": 3, - "endColumn": 10, - "path": "operators.py", - "symbol": "import-error", - "message": "Unable to import 'bpy'", - "message-id": "E0401" - }, - { - "type": "error", - "module": "fast64-animations.fast64_internal.sm64.animation.operators", - "obj": "", - "line": 4, - "column": 0, - "endLine": 4, - "endColumn": 54, - "path": "operators.py", - "symbol": "import-error", - "message": "Unable to import 'bpy.utils'", - "message-id": "E0401" - }, - { - "type": "error", - "module": "fast64-animations.fast64_internal.sm64.animation.operators", - "obj": "", - "line": 5, - "column": 0, - "endLine": 5, - "endColumn": 28, - "path": "operators.py", - "symbol": "import-error", - "message": "Unable to import 'bpy.path'", - "message-id": "E0401" - }, - { - "type": "error", - "module": "fast64-animations.fast64_internal.sm64.animation.operators", - "obj": "", - "line": 6, - "column": 0, - "endLine": 10, - "endColumn": 1, - "path": "operators.py", - "symbol": "import-error", - "message": "Unable to import 'bpy.props'", - "message-id": "E0401" - }, { "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "emulateNoLoop", - "line": 38, + "line": 42, "column": 0, - "endLine": 38, + "endLine": 42, "endColumn": 17, "path": "operators.py", "symbol": "invalid-name", @@ -2616,9 +2395,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "emulateNoLoop", - "line": 39, + "line": 43, "column": 4, - "endLine": 39, + "endLine": 43, "endColumn": 15, "path": "operators.py", "symbol": "invalid-name", @@ -2629,9 +2408,9 @@ "type": "warning", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "emulateNoLoop", - "line": 45, + "line": 49, "column": 4, - "endLine": 47, + "endLine": 51, "endColumn": 14, "path": "operators.py", "symbol": "bare-except", @@ -2642,9 +2421,9 @@ "type": "warning", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "emulateNoLoop", - "line": 54, + "line": 58, "column": 4, - "endLine": 54, + "endLine": 58, "endColumn": 15, "path": "operators.py", "symbol": "unused-variable", @@ -2655,22 +2434,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_PreviewAnimOperator", - "line": 74, - "column": 0, - "endLine": 74, - "endColumn": 30, - "path": "operators.py", - "symbol": "missing-class-docstring", - "message": "Missing class docstring", - "message-id": "C0115" - }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.operators", - "obj": "SM64_PreviewAnimOperator", - "line": 74, + "line": 78, "column": 0, - "endLine": 74, + "endLine": 78, "endColumn": 30, "path": "operators.py", "symbol": "invalid-name", @@ -2681,9 +2447,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_PreviewAnimOperator.executeOperation", - "line": 82, + "line": 86, "column": 4, - "endLine": 82, + "endLine": 86, "endColumn": 24, "path": "operators.py", "symbol": "invalid-name", @@ -2694,9 +2460,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_PreviewAnimOperator.executeOperation", - "line": 85, + "line": 89, "column": 8, - "endLine": 85, + "endLine": 89, "endColumn": 19, "path": "operators.py", "symbol": "invalid-name", @@ -2707,9 +2473,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_PreviewAnimOperator.executeOperation", - "line": 87, + "line": 91, "column": 8, - "endLine": 87, + "endLine": 91, "endColumn": 19, "path": "operators.py", "symbol": "invalid-name", @@ -2720,9 +2486,9 @@ "type": "warning", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_PreviewAnimOperator.execute", - "line": 120, + "line": 124, "column": 15, - "endLine": 120, + "endLine": 124, "endColumn": 24, "path": "operators.py", "symbol": "broad-exception-caught", @@ -2733,22 +2499,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_TableOperations", - "line": 125, - "column": 0, - "endLine": 125, - "endColumn": 26, - "path": "operators.py", - "symbol": "missing-class-docstring", - "message": "Missing class docstring", - "message-id": "C0115" - }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.operators", - "obj": "SM64_TableOperations", - "line": 125, + "line": 129, "column": 0, - "endLine": 125, + "endLine": 129, "endColumn": 26, "path": "operators.py", "symbol": "invalid-name", @@ -2759,9 +2512,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_TableOperations.execute_operator", - "line": 136, + "line": 140, "column": 8, - "endLine": 136, + "endLine": 140, "endColumn": 19, "path": "operators.py", "symbol": "invalid-name", @@ -2772,9 +2525,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_TableOperations.execute_operator", - "line": 138, + "line": 142, "column": 8, - "endLine": 138, + "endLine": 142, "endColumn": 21, "path": "operators.py", "symbol": "invalid-name", @@ -2785,9 +2538,9 @@ "type": "warning", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_TableOperations.execute_operator", - "line": 152, + "line": 156, "column": 16, - "endLine": 152, + "endLine": 156, "endColumn": 17, "path": "operators.py", "symbol": "unused-variable", @@ -2798,9 +2551,9 @@ "type": "warning", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_TableOperations.execute", - "line": 160, + "line": 164, "column": 15, - "endLine": 160, + "endLine": 164, "endColumn": 24, "path": "operators.py", "symbol": "broad-exception-caught", @@ -2811,22 +2564,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_AnimVariantOperations", - "line": 165, - "column": 0, - "endLine": 165, - "endColumn": 32, - "path": "operators.py", - "symbol": "missing-class-docstring", - "message": "Missing class docstring", - "message-id": "C0115" - }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.operators", - "obj": "SM64_AnimVariantOperations", - "line": 165, + "line": 169, "column": 0, - "endLine": 165, + "endLine": 169, "endColumn": 32, "path": "operators.py", "symbol": "invalid-name", @@ -2837,9 +2577,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_AnimVariantOperations.execute_operator", - "line": 197, + "line": 199, "column": 12, - "endLine": 197, + "endLine": 199, "endColumn": 22, "path": "operators.py", "symbol": "invalid-name", @@ -2850,9 +2590,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_AnimVariantOperations.execute_operator", - "line": 199, + "line": 201, "column": 16, - "endLine": 199, + "endLine": 201, "endColumn": 26, "path": "operators.py", "symbol": "invalid-name", @@ -2863,9 +2603,9 @@ "type": "warning", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_AnimVariantOperations.execute_operator", - "line": 190, + "line": 194, "column": 16, - "endLine": 190, + "endLine": 194, "endColumn": 17, "path": "operators.py", "symbol": "unused-variable", @@ -2876,9 +2616,9 @@ "type": "warning", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_AnimVariantOperations.execute", - "line": 209, + "line": 213, "column": 15, - "endLine": 209, + "endLine": 213, "endColumn": 24, "path": "operators.py", "symbol": "broad-exception-caught", @@ -2889,22 +2629,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_ExportAnimTable", - "line": 214, - "column": 0, - "endLine": 214, - "endColumn": 26, - "path": "operators.py", - "symbol": "missing-class-docstring", - "message": "Missing class docstring", - "message-id": "C0115" - }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.operators", - "obj": "SM64_ExportAnimTable", - "line": 214, + "line": 218, "column": 0, - "endLine": 214, + "endLine": 218, "endColumn": 26, "path": "operators.py", "symbol": "invalid-name", @@ -2915,9 +2642,9 @@ "type": "warning", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_ExportAnimTable.execute", - "line": 223, + "line": 227, "column": 15, - "endLine": 223, + "endLine": 227, "endColumn": 24, "path": "operators.py", "symbol": "broad-exception-caught", @@ -2928,9 +2655,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_ExportAnimTable.execute", - "line": 227, + "line": 231, "column": 8, - "endLine": 227, + "endLine": 231, "endColumn": 19, "path": "operators.py", "symbol": "invalid-name", @@ -2941,9 +2668,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_ExportAnimTable.execute", - "line": 228, + "line": 232, "column": 8, - "endLine": 228, + "endLine": 232, "endColumn": 19, "path": "operators.py", "symbol": "invalid-name", @@ -2954,9 +2681,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_ExportAnimTable.execute", - "line": 229, + "line": 233, "column": 8, - "endLine": 229, + "endLine": 233, "endColumn": 21, "path": "operators.py", "symbol": "invalid-name", @@ -2967,9 +2694,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_ExportAnimTable.execute", - "line": 230, + "line": 234, "column": 8, - "endLine": 230, + "endLine": 234, "endColumn": 20, "path": "operators.py", "symbol": "invalid-name", @@ -2980,9 +2707,9 @@ "type": "warning", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_ExportAnimTable.execute", - "line": 238, + "line": 242, "column": 15, - "endLine": 238, + "endLine": 242, "endColumn": 24, "path": "operators.py", "symbol": "broad-exception-caught", @@ -2993,9 +2720,9 @@ "type": "refactor", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_ExportAnimTable", - "line": 214, + "line": 218, "column": 0, - "endLine": 214, + "endLine": 218, "endColumn": 26, "path": "operators.py", "symbol": "too-few-public-methods", @@ -3006,22 +2733,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_ExportAnim", - "line": 249, - "column": 0, - "endLine": 249, - "endColumn": 21, - "path": "operators.py", - "symbol": "missing-class-docstring", - "message": "Missing class docstring", - "message-id": "C0115" - }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.operators", - "obj": "SM64_ExportAnim", - "line": 249, + "line": 253, "column": 0, - "endLine": 249, + "endLine": 253, "endColumn": 21, "path": "operators.py", "symbol": "invalid-name", @@ -3032,9 +2746,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_ExportAnim.execute", - "line": 257, + "line": 261, "column": 8, - "endLine": 257, + "endLine": 261, "endColumn": 19, "path": "operators.py", "symbol": "invalid-name", @@ -3045,9 +2759,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_ExportAnim.execute", - "line": 258, + "line": 262, "column": 8, - "endLine": 258, + "endLine": 262, "endColumn": 21, "path": "operators.py", "symbol": "invalid-name", @@ -3058,9 +2772,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_ExportAnim.execute", - "line": 258, + "line": 262, "column": 23, - "endLine": 258, + "endLine": 262, "endColumn": 30, "path": "operators.py", "symbol": "invalid-name", @@ -3071,9 +2785,9 @@ "type": "warning", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_ExportAnim.execute", - "line": 262, + "line": 266, "column": 15, - "endLine": 262, + "endLine": 266, "endColumn": 24, "path": "operators.py", "symbol": "broad-exception-caught", @@ -3084,9 +2798,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_ExportAnim.execute", - "line": 266, + "line": 270, "column": 8, - "endLine": 266, + "endLine": 270, "endColumn": 19, "path": "operators.py", "symbol": "invalid-name", @@ -3097,9 +2811,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_ExportAnim.execute", - "line": 267, + "line": 271, "column": 8, - "endLine": 267, + "endLine": 271, "endColumn": 19, "path": "operators.py", "symbol": "invalid-name", @@ -3110,9 +2824,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_ExportAnim.execute", - "line": 268, + "line": 272, "column": 8, - "endLine": 268, + "endLine": 272, "endColumn": 21, "path": "operators.py", "symbol": "invalid-name", @@ -3123,9 +2837,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_ExportAnim.execute", - "line": 269, + "line": 273, "column": 8, - "endLine": 269, + "endLine": 273, "endColumn": 20, "path": "operators.py", "symbol": "invalid-name", @@ -3136,9 +2850,9 @@ "type": "warning", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_ExportAnim.execute", - "line": 278, + "line": 282, "column": 15, - "endLine": 278, + "endLine": 282, "endColumn": 24, "path": "operators.py", "symbol": "broad-exception-caught", @@ -3149,9 +2863,9 @@ "type": "refactor", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_ExportAnim", - "line": 249, + "line": 253, "column": 0, - "endLine": 249, + "endLine": 253, "endColumn": 21, "path": "operators.py", "symbol": "too-few-public-methods", @@ -3162,22 +2876,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_ImportAllMarioAnims", - "line": 296, - "column": 0, - "endLine": 296, - "endColumn": 30, - "path": "operators.py", - "symbol": "missing-class-docstring", - "message": "Missing class docstring", - "message-id": "C0115" - }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.operators", - "obj": "SM64_ImportAllMarioAnims", - "line": 296, + "line": 300, "column": 0, - "endLine": 296, + "endLine": 300, "endColumn": 30, "path": "operators.py", "symbol": "invalid-name", @@ -3188,9 +2889,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_ImportAllMarioAnims.execute_operator", - "line": 304, + "line": 308, "column": 8, - "endLine": 304, + "endLine": 308, "endColumn": 17, "path": "operators.py", "symbol": "invalid-name", @@ -3201,9 +2902,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_ImportAllMarioAnims.execute_operator", - "line": 305, + "line": 309, "column": 8, - "endLine": 305, + "endLine": 309, "endColumn": 19, "path": "operators.py", "symbol": "invalid-name", @@ -3214,9 +2915,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_ImportAllMarioAnims.execute_operator", - "line": 307, + "line": 311, "column": 8, - "endLine": 307, + "endLine": 311, "endColumn": 19, "path": "operators.py", "symbol": "invalid-name", @@ -3227,9 +2928,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_ImportAllMarioAnims.execute_operator", - "line": 309, + "line": 313, "column": 8, - "endLine": 309, + "endLine": 313, "endColumn": 16, "path": "operators.py", "symbol": "invalid-name", @@ -3240,9 +2941,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_ImportAllMarioAnims.execute_operator", - "line": 310, + "line": 314, "column": 8, - "endLine": 310, + "endLine": 314, "endColumn": 17, "path": "operators.py", "symbol": "invalid-name", @@ -3253,9 +2954,9 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_ImportAllMarioAnims.execute_operator", - "line": 313, + "line": 317, "column": 71, - "endLine": 313, + "endLine": 317, "endColumn": 78, "path": "operators.py", "symbol": "invalid-name", @@ -3266,22 +2967,35 @@ "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_ImportAllMarioAnims.execute_operator", - "line": 314, + "line": 318, "column": 20, - "endLine": 314, + "endLine": 318, "endColumn": 29, "path": "operators.py", "symbol": "invalid-name", "message": "Variable name \"entrieStr\" doesn't conform to snake_case naming style", "message-id": "C0103" }, + { + "type": "error", + "module": "fast64-animations.fast64_internal.sm64.animation.operators", + "obj": "SM64_ImportAllMarioAnims.execute_operator", + "line": 319, + "column": 20, + "endLine": 326, + "endColumn": 21, + "path": "operators.py", + "symbol": "assignment-from-no-return", + "message": "Assigning result of a function call, where the function has no return", + "message-id": "E1111" + }, { "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_ImportAllMarioAnims.execute_operator", - "line": 328, + "line": 332, "column": 12, - "endLine": 328, + "endLine": 332, "endColumn": 19, "path": "operators.py", "symbol": "invalid-name", @@ -3292,9 +3006,9 @@ "type": "error", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_ImportAllMarioAnims.execute_operator", - "line": 330, + "line": 334, "column": 8, - "endLine": 330, + "endLine": 334, "endColumn": 28, "path": "operators.py", "symbol": "no-member", @@ -3305,9 +3019,9 @@ "type": "warning", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_ImportAllMarioAnims.execute_operator", - "line": 314, + "line": 318, "column": 37, - "endLine": 314, + "endLine": 318, "endColumn": 48, "path": "operators.py", "symbol": "unused-variable", @@ -3318,9 +3032,9 @@ "type": "warning", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_ImportAllMarioAnims.execute_operator", - "line": 328, + "line": 332, "column": 12, - "endLine": 328, + "endLine": 332, "endColumn": 19, "path": "operators.py", "symbol": "unused-variable", @@ -3331,9 +3045,9 @@ "type": "warning", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_ImportAllMarioAnims.execute", - "line": 337, + "line": 342, "column": 15, - "endLine": 337, + "endLine": 342, "endColumn": 24, "path": "operators.py", "symbol": "broad-exception-caught", @@ -3341,25 +3055,25 @@ "message-id": "W0718" }, { - "type": "convention", + "type": "warning", "module": "fast64-animations.fast64_internal.sm64.animation.operators", - "obj": "SM64_ImportAnim", - "line": 342, - "column": 0, - "endLine": 342, - "endColumn": 21, + "obj": "eval_num_from_str", + "line": 351, + "column": 8, + "endLine": 351, + "endColumn": 86, "path": "operators.py", - "symbol": "missing-class-docstring", - "message": "Missing class docstring", - "message-id": "C0115" + "symbol": "raise-missing-from", + "message": "Consider explicitly re-raising using 'raise SyntaxError(f'{str(e)}.\\nIf value is in hexadecimal, use 0x before it.') from e'", + "message-id": "W0707" }, { "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_ImportAnim", - "line": 342, + "line": 354, "column": 0, - "endLine": 342, + "endLine": 354, "endColumn": 21, "path": "operators.py", "symbol": "invalid-name", @@ -3370,48 +3084,22 @@ "type": "warning", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_ImportAnim.execute", - "line": 373, + "line": 401, "column": 15, - "endLine": 373, + "endLine": 401, "endColumn": 24, "path": "operators.py", "symbol": "broad-exception-caught", "message": "Catching too general exception Exception", "message-id": "W0718" }, - { - "type": "refactor", - "module": "fast64-animations.fast64_internal.sm64.animation.operators", - "obj": "SM64_ImportAnim", - "line": 342, - "column": 0, - "endLine": 342, - "endColumn": 21, - "path": "operators.py", - "symbol": "too-few-public-methods", - "message": "Too few public methods (1/2)", - "message-id": "R0903" - }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.operators", - "obj": "SM64_SearchMarioAnimEnum", - "line": 378, - "column": 0, - "endLine": 378, - "endColumn": 30, - "path": "operators.py", - "symbol": "missing-class-docstring", - "message": "Missing class docstring", - "message-id": "C0115" - }, { "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_SearchMarioAnimEnum", - "line": 378, + "line": 406, "column": 0, - "endLine": 378, + "endLine": 406, "endColumn": 30, "path": "operators.py", "symbol": "invalid-name", @@ -3422,9 +3110,9 @@ "type": "warning", "module": "fast64-animations.fast64_internal.sm64.animation.operators", "obj": "SM64_SearchMarioAnimEnum.invoke", - "line": 395, + "line": 423, "column": 30, - "endLine": 395, + "endLine": 423, "endColumn": 35, "path": "operators.py", "symbol": "unused-argument", @@ -3457,32 +3145,6 @@ "message": "Multiple imports on one line (bpy, mathutils, os)", "message-id": "C0410" }, - { - "type": "error", - "module": "fast64-animations.fast64_internal.sm64.animation.exporting", - "obj": "", - "line": 1, - "column": 0, - "endLine": 1, - "endColumn": 25, - "path": "exporting.py", - "symbol": "import-error", - "message": "Unable to import 'bpy'", - "message-id": "E0401" - }, - { - "type": "error", - "module": "fast64-animations.fast64_internal.sm64.animation.exporting", - "obj": "", - "line": 1, - "column": 0, - "endLine": 1, - "endColumn": 25, - "path": "exporting.py", - "symbol": "import-error", - "message": "Unable to import 'mathutils'", - "message-id": "E0401" - }, { "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.exporting", @@ -6175,636 +5837,90 @@ "message-id": "C0411" }, { - "type": "convention", + "type": "refactor", "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "IfDefMacro", - "line": 9, + "obj": "Initialization", + "line": 43, "column": 0, - "endLine": 9, - "endColumn": 16, + "endLine": 43, + "endColumn": 20, "path": "c_parser.py", - "symbol": "missing-class-docstring", - "message": "Missing class docstring", - "message-id": "C0115" + "symbol": "too-many-instance-attributes", + "message": "Too many instance attributes (10/7)", + "message-id": "R0902" }, { - "type": "convention", + "type": "refactor", "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "ParsedValue", - "line": 15, + "obj": "CParser", + "line": 122, "column": 0, - "endLine": 15, - "endColumn": 17, + "endLine": 122, + "endColumn": 13, "path": "c_parser.py", - "symbol": "missing-class-docstring", - "message": "Missing class docstring", - "message-id": "C0115" + "symbol": "too-many-instance-attributes", + "message": "Too many instance attributes (12/7)", + "message-id": "R0902" }, { "type": "warning", - "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "CParser.read_values", - "line": 192, - "column": 16, - "endLine": 192, - "endColumn": 26, - "path": "c_parser.py", - "symbol": "attribute-defined-outside-init", - "message": "Attribute 'name' defined outside __init__", - "message-id": "W0201" + "module": "fast64-animations.fast64_internal.sm64.animation.importing", + "obj": "", + "line": 109, + "column": 5, + "endLine": null, + "endColumn": null, + "path": "importing.py", + "symbol": "fixme", + "message": "TODO: Duplicate keyframe filter", + "message-id": "W0511" }, { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "MacroCall", - "line": 27, - "column": 0, - "endLine": 27, - "endColumn": 15, - "path": "c_parser.py", - "symbol": "missing-class-docstring", - "message": "Missing class docstring", - "message-id": "C0115" + "type": "warning", + "module": "fast64-animations.fast64_internal.sm64.animation.importing", + "obj": "", + "line": 202, + "column": 13, + "endLine": null, + "endColumn": null, + "path": "importing.py", + "symbol": "fixme", + "message": "TODO: Add suport for enum indexed tables", + "message-id": "W0511" }, { "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "DesignatedValue", - "line": 32, + "module": "fast64-animations.fast64_internal.sm64.animation.importing", + "obj": "SM64_AnimBone", + "line": 49, "column": 0, - "endLine": 32, - "endColumn": 21, - "path": "c_parser.py", - "symbol": "missing-class-docstring", - "message": "Missing class docstring", - "message-id": "C0115" + "endLine": 49, + "endColumn": 19, + "path": "importing.py", + "symbol": "invalid-name", + "message": "Class name \"SM64_AnimBone\" doesn't conform to PascalCase naming style", + "message-id": "C0103" }, { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "Include", - "line": 37, + "type": "refactor", + "module": "fast64-animations.fast64_internal.sm64.animation.importing", + "obj": "animation_data_to_blender", + "line": 93, "column": 0, - "endLine": 37, - "endColumn": 13, - "path": "c_parser.py", - "symbol": "missing-class-docstring", - "message": "Missing class docstring", - "message-id": "C0115" - }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "Initialization", - "line": 42, - "column": 0, - "endLine": 42, - "endColumn": 20, - "path": "c_parser.py", - "symbol": "missing-class-docstring", - "message": "Missing class docstring", - "message-id": "C0115" - }, - { - "type": "refactor", - "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "Initialization", - "line": 42, - "column": 0, - "endLine": 42, - "endColumn": 20, - "path": "c_parser.py", - "symbol": "too-many-instance-attributes", - "message": "Too many instance attributes (10/7)", - "message-id": "R0902" - }, - { - "type": "warning", - "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "CParser.read_keywords", - "line": 250, - "column": 12, - "endLine": 250, - "endColumn": 37, - "path": "c_parser.py", - "symbol": "attribute-defined-outside-init", - "message": "Attribute 'name' defined outside __init__", - "message-id": "W0201" - }, - { - "type": "warning", - "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "", - "line": 87, - "column": 0, - "endLine": null, - "endColumn": null, - "path": "c_parser.py", - "symbol": "implicit-str-concat", - "message": "Implicit string concatenation found in tuple", - "message-id": "W1404" - }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "", - "line": 97, - "column": 0, - "endLine": 97, - "endColumn": 18, - "path": "c_parser.py", - "symbol": "invalid-name", - "message": "Constant name \"delimiters_pattern\" doesn't conform to UPPER_CASE naming style", - "message-id": "C0103" - }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "CParser", - "line": 119, - "column": 0, - "endLine": 119, - "endColumn": 13, - "path": "c_parser.py", - "symbol": "missing-class-docstring", - "message": "Missing class docstring", - "message-id": "C0115" - }, - { - "type": "refactor", - "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "CParser", - "line": 119, - "column": 0, - "endLine": 119, - "endColumn": 13, - "path": "c_parser.py", - "symbol": "too-many-instance-attributes", - "message": "Too many instance attributes (12/7)", - "message-id": "R0902" - }, - { - "type": "warning", - "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "CParser.read_macro", - "line": 157, - "column": 16, - "endLine": 157, - "endColumn": 20, - "path": "c_parser.py", - "symbol": "unnecessary-pass", - "message": "Unnecessary pass statement", - "message-id": "W0107" - }, - { - "type": "refactor", - "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "CParser.read_values", - "line": 209, - "column": 13, - "endLine": 209, - "endColumn": 49, - "path": "c_parser.py", - "symbol": "consider-using-in", - "message": "Consider merging these comparisons with 'in' by using 'cur_token in (';', ',')'. Use a set instead if elements are hashable.", - "message-id": "R1714" - }, - { - "type": "refactor", - "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "CParser.read_keywords", - "line": 215, - "column": 8, - "endLine": 222, - "endColumn": 22, - "path": "c_parser.py", - "symbol": "no-else-return", - "message": "Unnecessary \"else\" after \"return\", remove the \"else\" and de-indent the code inside it", - "message-id": "R1705" - }, - { - "type": "refactor", - "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "CParser.read_keywords", - "line": 214, - "column": 4, - "endLine": 214, - "endColumn": 21, - "path": "c_parser.py", - "symbol": "too-many-branches", - "message": "Too many branches (14/12)", - "message-id": "R0912" - }, - { - "type": "warning", - "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "CParser.read_macro", - "line": 167, - "column": 12, - "endLine": 167, - "endColumn": 30, - "path": "c_parser.py", - "symbol": "attribute-defined-outside-init", - "message": "Attribute 'reading_macro' defined outside __init__", - "message-id": "W0201" - }, - { - "type": "warning", - "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "CParser.read_c_text", - "line": 264, - "column": 8, - "endLine": 264, - "endColumn": 26, - "path": "c_parser.py", - "symbol": "attribute-defined-outside-init", - "message": "Attribute 'reading_macro' defined outside __init__", - "message-id": "W0201" - }, - { - "type": "warning", - "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "CParser.read_c_text", - "line": 280, - "column": 16, - "endLine": 280, - "endColumn": 34, - "path": "c_parser.py", - "symbol": "attribute-defined-outside-init", - "message": "Attribute 'reading_macro' defined outside __init__", - "message-id": "W0201" - }, - { - "type": "warning", - "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "CParser.read_values", - "line": 204, - "column": 16, - "endLine": 204, - "endColumn": 37, - "path": "c_parser.py", - "symbol": "attribute-defined-outside-init", - "message": "Attribute 'reading_function' defined outside __init__", - "message-id": "W0201" - }, - { - "type": "warning", - "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "CParser.read_keywords", - "line": 246, - "column": 16, - "endLine": 246, - "endColumn": 37, - "path": "c_parser.py", - "symbol": "attribute-defined-outside-init", - "message": "Attribute 'reading_function' defined outside __init__", - "message-id": "W0201" - }, - { - "type": "warning", - "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "CParser.read_c_text", - "line": 263, - "column": 8, - "endLine": 263, - "endColumn": 29, - "path": "c_parser.py", - "symbol": "attribute-defined-outside-init", - "message": "Attribute 'reading_function' defined outside __init__", - "message-id": "W0201" - }, - { - "type": "warning", - "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "CParser.read_values", - "line": 205, - "column": 16, - "endLine": 205, - "endColumn": 37, - "path": "c_parser.py", - "symbol": "attribute-defined-outside-init", - "message": "Attribute 'reading_keywords' defined outside __init__", - "message-id": "W0201" - }, - { - "type": "warning", - "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "CParser.read_keywords", - "line": 254, - "column": 12, - "endLine": 254, - "endColumn": 33, - "path": "c_parser.py", - "symbol": "attribute-defined-outside-init", - "message": "Attribute 'reading_keywords' defined outside __init__", - "message-id": "W0201" - }, - { - "type": "warning", - "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "CParser.read_c_text", - "line": 262, - "column": 8, - "endLine": 262, - "endColumn": 29, - "path": "c_parser.py", - "symbol": "attribute-defined-outside-init", - "message": "Attribute 'reading_keywords' defined outside __init__", - "message-id": "W0201" - }, - { - "type": "warning", - "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "CParser.read_values", - "line": 206, - "column": 16, - "endLine": 206, - "endColumn": 36, - "path": "c_parser.py", - "symbol": "attribute-defined-outside-init", - "message": "Attribute 'cur_initializer' defined outside __init__", - "message-id": "W0201" - }, - { - "type": "warning", - "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "CParser.read_c_text", - "line": 260, - "column": 8, - "endLine": 260, - "endColumn": 28, - "path": "c_parser.py", - "symbol": "attribute-defined-outside-init", - "message": "Attribute 'cur_initializer' defined outside __init__", - "message-id": "W0201" - }, - { - "type": "warning", - "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "CParser.read_keywords", - "line": 217, - "column": 16, - "endLine": 217, - "endColumn": 39, - "path": "c_parser.py", - "symbol": "attribute-defined-outside-init", - "message": "Attribute 'reading_array_size' defined outside __init__", - "message-id": "W0201" - }, - { - "type": "warning", - "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "CParser.read_keywords", - "line": 221, - "column": 16, - "endLine": 221, - "endColumn": 39, - "path": "c_parser.py", - "symbol": "attribute-defined-outside-init", - "message": "Attribute 'reading_array_size' defined outside __init__", - "message-id": "W0201" - }, - { - "type": "warning", - "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "CParser.read_c_text", - "line": 261, - "column": 8, - "endLine": 261, - "endColumn": 31, - "path": "c_parser.py", - "symbol": "attribute-defined-outside-init", - "message": "Attribute 'reading_array_size' defined outside __init__", - "message-id": "W0201" - }, - { - "type": "warning", - "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "CParser.read_c_text", - "line": 266, - "column": 8, - "endLine": 266, - "endColumn": 18, - "path": "c_parser.py", - "symbol": "attribute-defined-outside-init", - "message": "Attribute 'stack' defined outside __init__", - "message-id": "W0201" - }, - { - "type": "warning", - "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "CParser.read_c_text", - "line": 267, - "column": 8, - "endLine": 267, - "endColumn": 31, - "path": "c_parser.py", - "symbol": "attribute-defined-outside-init", - "message": "Attribute 'accumulated_tokens' defined outside __init__", - "message-id": "W0201" - }, - { - "type": "warning", - "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "CParser.read_c_text", - "line": 268, - "column": 8, - "endLine": 268, - "endColumn": 37, - "path": "c_parser.py", - "symbol": "attribute-defined-outside-init", - "message": "Attribute 'accumulated_macro_tokens' defined outside __init__", - "message-id": "W0201" - }, - { - "type": "warning", - "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "CParser.read_c_text", - "line": 269, - "column": 8, - "endLine": 269, - "endColumn": 20, - "path": "c_parser.py", - "symbol": "attribute-defined-outside-init", - "message": "Attribute 'if_defs' defined outside __init__", - "message-id": "W0201" - }, - { - "type": "warning", - "module": "fast64-animations.fast64_internal.sm64.animation.c_parser", - "obj": "CParser.read_c_text", - "line": 271, - "column": 8, - "endLine": 271, - "endColumn": 24, - "path": "c_parser.py", - "symbol": "attribute-defined-outside-init", - "message": "Attribute 'origin_path' defined outside __init__", - "message-id": "W0201" - }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.importing", - "obj": "", - "line": 273, - "column": 0, - "endLine": null, - "endColumn": null, - "path": "importing.py", - "symbol": "superfluous-parens", - "message": "Unnecessary parens after 'not' keyword", - "message-id": "C0325" - }, - { - "type": "warning", - "module": "fast64-animations.fast64_internal.sm64.animation.importing", - "obj": "", - "line": 111, - "column": 5, - "endLine": null, - "endColumn": null, - "path": "importing.py", - "symbol": "fixme", - "message": "TODO: Duplicate keyframe filter", - "message-id": "W0511" - }, - { - "type": "warning", - "module": "fast64-animations.fast64_internal.sm64.animation.importing", - "obj": "", - "line": 204, - "column": 13, - "endLine": null, - "endColumn": null, - "path": "importing.py", - "symbol": "fixme", - "message": "TODO: Add suport for enum indexed tables", - "message-id": "W0511" - }, - { - "type": "error", - "module": "fast64-animations.fast64_internal.sm64.animation.importing", - "obj": "", - "line": 2, - "column": 0, - "endLine": 2, - "endColumn": 10, - "path": "importing.py", - "symbol": "import-error", - "message": "Unable to import 'bpy'", - "message-id": "E0401" - }, - { - "type": "error", - "module": "fast64-animations.fast64_internal.sm64.animation.importing", - "obj": "", - "line": 10, - "column": 0, - "endLine": 10, - "endColumn": 47, - "path": "importing.py", - "symbol": "import-error", - "message": "Unable to import 'mathutils'", - "message-id": "E0401" - }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.importing", - "obj": "SM64_AnimBone", - "line": 50, - "column": 0, - "endLine": 50, - "endColumn": 19, - "path": "importing.py", - "symbol": "missing-class-docstring", - "message": "Missing class docstring", - "message-id": "C0115" - }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.importing", - "obj": "SM64_AnimBone", - "line": 50, - "column": 0, - "endLine": 50, - "endColumn": 19, - "path": "importing.py", - "symbol": "invalid-name", - "message": "Class name \"SM64_AnimBone\" doesn't conform to PascalCase naming style", - "message-id": "C0103" - }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.importing", - "obj": "SM64_AnimBone.read_pairs", - "line": 58, - "column": 8, - "endLine": 58, - "endColumn": 16, - "path": "importing.py", - "symbol": "invalid-name", - "message": "Variable name \"maxFrame\" doesn't conform to snake_case naming style", - "message-id": "C0103" - }, - { - "type": "refactor", - "module": "fast64-animations.fast64_internal.sm64.animation.importing", - "obj": "SM64_AnimBone.read_pairs", - "line": 58, - "column": 19, - "endLine": 58, - "endColumn": 60, - "path": "importing.py", - "symbol": "consider-using-generator", - "message": "Consider using a generator instead 'max(len(pair.values) for pair in pairs)'", - "message-id": "R1728" - }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.importing", - "obj": "SM64_AnimBone.read_translation", - "line": 67, - "column": 12, - "endLine": 67, - "endColumn": 23, - "path": "importing.py", - "symbol": "invalid-name", - "message": "Variable name \"scaledTrans\" doesn't conform to snake_case naming style", - "message-id": "C0103" - }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.importing", - "obj": "animation_data_to_blender", - "line": 129, - "column": 16, - "endLine": 130, - "endColumn": 103, - "path": "importing.py", - "symbol": "consider-using-enumerate", - "message": "Consider using enumerate instead of iterating with range and len", - "message-id": "C0200" - }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.importing", - "obj": "animation_data_to_blender", - "line": 139, - "column": 12, - "endLine": 140, - "endColumn": 96, - "path": "importing.py", - "symbol": "consider-using-enumerate", - "message": "Consider using enumerate instead of iterating with range and len", - "message-id": "C0200" + "endLine": 93, + "endColumn": 29, + "path": "importing.py", + "symbol": "too-many-locals", + "message": "Too many local variables (17/15)", + "message-id": "R0914" }, { "type": "warning", "module": "fast64-animations.fast64_internal.sm64.animation.importing", "obj": "import_c_animations", - "line": 183, + "line": 181, "column": 15, - "endLine": 183, + "endLine": 181, "endColumn": 24, "path": "importing.py", "symbol": "broad-exception-caught", @@ -6815,139 +5931,35 @@ "type": "warning", "module": "fast64-animations.fast64_internal.sm64.animation.importing", "obj": "import_c_animations", - "line": 181, + "line": 179, "column": 17, - "endLine": 181, + "endLine": 179, "endColumn": 36, "path": "importing.py", "symbol": "unspecified-encoding", "message": "Using open without explicitly specifying an encoding", "message-id": "W1514" }, - { - "type": "warning", - "module": "fast64-animations.fast64_internal.sm64.animation.importing", - "obj": "import_c_animations", - "line": 187, - "column": 10, - "endLine": 187, - "endColumn": 39, - "path": "importing.py", - "symbol": "f-string-without-interpolation", - "message": "Using an f-string that does not have any interpolated variables", - "message-id": "W1309" - }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.importing", - "obj": "DMATableEntrie", - "line": 238, - "column": 0, - "endLine": 238, - "endColumn": 20, - "path": "importing.py", - "symbol": "missing-class-docstring", - "message": "Missing class docstring", - "message-id": "C0115" - }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.importing", - "obj": "DMATableEntrie", - "line": 239, - "column": 4, - "endLine": null, - "endColumn": null, - "path": "importing.py", - "symbol": "invalid-name", - "message": "Attribute name \"offsetFromTable\" doesn't conform to snake_case naming style", - "message-id": "C0103" - }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.importing", - "obj": "read_binary_dma_table_entries", - "line": 248, - "column": 4, - "endLine": 248, - "endColumn": 14, - "path": "importing.py", - "symbol": "invalid-name", - "message": "Variable name \"numEntries\" doesn't conform to snake_case naming style", - "message-id": "C0103" - }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.importing", - "obj": "read_binary_dma_table_entries", - "line": 249, - "column": 4, - "endLine": 249, - "endColumn": 19, - "path": "importing.py", - "symbol": "invalid-name", - "message": "Variable name \"addrPlaceholder\" doesn't conform to snake_case naming style", - "message-id": "C0103" - }, - { - "type": "warning", - "module": "fast64-animations.fast64_internal.sm64.animation.importing", - "obj": "read_binary_dma_table_entries", - "line": 249, - "column": 4, - "endLine": 249, - "endColumn": 19, - "path": "importing.py", - "symbol": "unused-variable", - "message": "Unused variable 'addrPlaceholder'", - "message-id": "W0612" - }, - { - "type": "warning", - "module": "fast64-animations.fast64_internal.sm64.animation.importing", - "obj": "read_binary_dma_table_entries", - "line": 251, - "column": 8, - "endLine": 251, - "endColumn": 9, - "path": "importing.py", - "symbol": "unused-variable", - "message": "Unused variable 'i'", - "message-id": "W0612" - }, { "type": "refactor", "module": "fast64-animations.fast64_internal.sm64.animation.importing", "obj": "import_binary_dma_animation", - "line": 259, + "line": 257, "column": 0, - "endLine": 259, + "endLine": 257, "endColumn": 31, "path": "importing.py", "symbol": "too-many-arguments", "message": "Too many arguments (6/5)", "message-id": "R0913" }, - { - "type": "refactor", - "module": "fast64-animations.fast64_internal.sm64.animation.importing", - "obj": "import_binary_dma_animation", - "line": 259, - "column": 0, - "endLine": 259, - "endColumn": 31, - "path": "importing.py", - "symbol": "inconsistent-return-statements", - "message": "Either all return statements in a function should return an expression, or none of them should.", - "message-id": "R1710" - }, { "type": "refactor", "module": "fast64-animations.fast64_internal.sm64.animation.importing", "obj": "import_binary_table", - "line": 282, + "line": 279, "column": 0, - "endLine": 282, + "endLine": 279, "endColumn": 23, "path": "importing.py", "symbol": "too-many-arguments", @@ -6958,145 +5970,15 @@ "type": "refactor", "module": "fast64-animations.fast64_internal.sm64.animation.importing", "obj": "import_binary_animations", - "line": 319, + "line": 316, "column": 0, - "endLine": 319, + "endLine": 316, "endColumn": 28, "path": "importing.py", "symbol": "too-many-arguments", "message": "Too many arguments (10/5)", "message-id": "R0913" }, - { - "type": "refactor", - "module": "fast64-animations.fast64_internal.sm64.animation.importing", - "obj": "import_animation_to_blender", - "line": 347, - "column": 0, - "endLine": 347, - "endColumn": 31, - "path": "importing.py", - "symbol": "too-many-arguments", - "message": "Too many arguments (13/5)", - "message-id": "R0913" - }, - { - "type": "refactor", - "module": "fast64-animations.fast64_internal.sm64.animation.importing", - "obj": "import_animation_to_blender", - "line": 347, - "column": 0, - "endLine": 347, - "endColumn": 31, - "path": "importing.py", - "symbol": "too-many-locals", - "message": "Too many local variables (17/15)", - "message-id": "R0914" - }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.importing", - "obj": "", - "line": 5, - "column": 0, - "endLine": 5, - "endColumn": 18, - "path": "importing.py", - "symbol": "wrong-import-order", - "message": "standard import \"import dataclasses\" should be placed before \"import bpy\"", - "message-id": "C0411" - }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.importing", - "obj": "", - "line": 6, - "column": 0, - "endLine": 6, - "endColumn": 29, - "path": "importing.py", - "symbol": "wrong-import-order", - "message": "standard import \"from io import BufferedReader\" should be placed before \"import bpy\"", - "message-id": "C0411" - }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.importing", - "obj": "", - "line": 7, - "column": 0, - "endLine": 7, - "endColumn": 11, - "path": "importing.py", - "symbol": "wrong-import-order", - "message": "standard import \"import math\" should be placed before \"import bpy\"", - "message-id": "C0411" - }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.importing", - "obj": "", - "line": 8, - "column": 0, - "endLine": 8, - "endColumn": 9, - "path": "importing.py", - "symbol": "wrong-import-order", - "message": "standard import \"import os\" should be placed before \"import bpy\"", - "message-id": "C0411" - }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.importing", - "obj": "", - "line": 9, - "column": 0, - "endLine": 9, - "endColumn": 27, - "path": "importing.py", - "symbol": "wrong-import-order", - "message": "standard import \"from typing import Optional\" should be placed before \"import bpy\"", - "message-id": "C0411" - }, - { - "type": "error", - "module": "fast64-animations.fast64_internal.sm64.animation.panels", - "obj": "", - "line": 1, - "column": 0, - "endLine": 1, - "endColumn": 10, - "path": "panels.py", - "symbol": "import-error", - "message": "Unable to import 'bpy'", - "message-id": "E0401" - }, - { - "type": "error", - "module": "fast64-animations.fast64_internal.sm64.animation.panels", - "obj": "", - "line": 2, - "column": 0, - "endLine": 2, - "endColumn": 54, - "path": "panels.py", - "symbol": "import-error", - "message": "Unable to import 'bpy.utils'", - "message-id": "E0401" - }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.panels", - "obj": "SM64_ExportAnimPanel", - "line": 7, - "column": 0, - "endLine": 7, - "endColumn": 26, - "path": "panels.py", - "symbol": "missing-class-docstring", - "message": "Missing class docstring", - "message-id": "C0115" - }, { "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.panels", @@ -7110,19 +5992,6 @@ "message": "Class name \"SM64_ExportAnimPanel\" doesn't conform to PascalCase naming style", "message-id": "C0103" }, - { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.panels", - "obj": "SM64_ImportAnimPanel", - "line": 16, - "column": 0, - "endLine": 16, - "endColumn": 26, - "path": "panels.py", - "symbol": "missing-class-docstring", - "message": "Missing class docstring", - "message-id": "C0115" - }, { "type": "convention", "module": "fast64-animations.fast64_internal.sm64.animation.panels", @@ -7137,42 +6006,16 @@ "message-id": "C0103" }, { - "type": "convention", - "module": "fast64-animations.fast64_internal.sm64.animation.panels", - "obj": "SM64_ImportAnimPanel.draw", - "line": 23, - "column": 8, - "endLine": 23, - "endColumn": 17, - "path": "panels.py", - "symbol": "invalid-name", - "message": "Variable name \"sm64Props\" doesn't conform to snake_case naming style", - "message-id": "C0103" - }, - { - "type": "error", - "module": "fast64-animations.fast64_internal.sm64.animation.utility", - "obj": "", - "line": 4, - "column": 0, - "endLine": 4, - "endColumn": 10, - "path": "utility.py", - "symbol": "import-error", - "message": "Unable to import 'bpy'", - "message-id": "E0401" - }, - { - "type": "convention", + "type": "refactor", "module": "fast64-animations.fast64_internal.sm64.animation.utility", "obj": "RomReading", - "line": 13, + "line": 12, "column": 0, - "endLine": 13, + "endLine": 12, "endColumn": 16, "path": "utility.py", - "symbol": "missing-class-docstring", - "message": "Missing class docstring", - "message-id": "C0115" + "symbol": "too-few-public-methods", + "message": "Too few public methods (1/2)", + "message-id": "R0903" } ] diff --git a/fast64_internal/sm64/animation/utility.py b/fast64_internal/sm64/animation/utility.py index 04d3183ff..bce8bc111 100644 --- a/fast64_internal/sm64/animation/utility.py +++ b/fast64_internal/sm64/animation/utility.py @@ -9,7 +9,6 @@ from ..sm64_geolayout_bone import animatableBoneTypes -# pylint: disable=too-few-public-methods class RomReading: def __init__(self, rom_data: BufferedReader, start_address: int): self.start_address = start_address