Skip to content

Commit

Permalink
solve attr-defined errors, fixes #496
Browse files Browse the repository at this point in the history
  • Loading branch information
SoulMelody committed Oct 2, 2024
1 parent f9f0e18 commit 102ac28
Show file tree
Hide file tree
Showing 31 changed files with 131 additions and 34 deletions.
1 change: 1 addition & 0 deletions libresvip/cli/commands/proj.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# mypy: disable-error-code="attr-defined"
import pathlib
from typing import Annotated, Optional, get_type_hints

Expand Down
3 changes: 2 additions & 1 deletion libresvip/core/warning_types.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from typing import Optional

from loguru import _logger
from typing_extensions import Self

warning_logger = _logger.Logger(
core=_logger.Core(),
Expand All @@ -30,7 +31,7 @@ def __init__(self) -> None:
self._output = io.StringIO()
self.output = ""

def __enter__(self) -> None:
def __enter__(self) -> Self:
self._handler_id = warning_logger.add(
self._output, format="{extra[handler_id]}|{message}", level="WARNING"
)
Expand Down
2 changes: 1 addition & 1 deletion libresvip/extension/manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ def find_spec(
if (
spec := PathFinder.find_spec(fullname, path, target)
) is not None and spec.loader is not None:
spec.loader = SourceFileLoader(spec.loader.name, spec.loader.path)
spec.loader = SourceFileLoader(spec.loader.name, spec.loader.path) # type: ignore[attr-defined]
return spec

def is_plugin(self, member: object) -> TypeGuard[BasePlugin_co]:
Expand Down
4 changes: 2 additions & 2 deletions libresvip/gui/modules/task_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -861,11 +861,11 @@ def plugin_info_file(self, plugin_archive: zipfile.Path) -> Optional[zipfile.Pat

@Slot(list, result="QVariant")
def extract_plugin_infos(self, paths: list[str]) -> list[dict[str, str]]:
infos = []
infos: list[dict[str, str]] = []
for path in paths:
zip_file = zipfile.Path(path)
if (plugin_info_filename := self.plugin_info_file(zip_file)) is not None:
plugin_info = plugin_manager.info_cls.load(plugin_info_filename)
plugin_info = plugin_manager.plugin_info_class.load(plugin_info_filename)
if plugin_info is not None:
infos.append(
{
Expand Down
2 changes: 2 additions & 0 deletions libresvip/gui/modules/vendor/qasync/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
BSD License
"""

# mypy: disable-error-code="attr-defined"

from __future__ import annotations

__author__ = (
Expand Down
2 changes: 1 addition & 1 deletion libresvip/gui/modules/vendor/qasync/_common.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

from PySide6 import QtCore

_fileno = selectors._fileobj_to_fd
_fileno = selectors._fileobj_to_fd # type: ignore[attr-defined]


def make_signaller(*types: type) -> QtCore.QObject:
Expand Down
2 changes: 2 additions & 0 deletions libresvip/gui/modules/vendor/qasync/_windows.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
# © 2014 Arve Knudsen <[email protected]>
# BSD License

# mypy: disable-error-code="attr-defined"

"""Windows specific Quamash functionality."""

from __future__ import annotations
Expand Down
2 changes: 1 addition & 1 deletion libresvip/plugins/aisp/aisingers_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@
InstrumentalTrack,
Note,
ParamCurve,
Point,
Points,
Project,
SingingTrack,
SongTempo,
TimeSignature,
Track,
)
from libresvip.model.point import Point

from .model import (
AISAudioTrack,
Expand Down
5 changes: 3 additions & 2 deletions libresvip/plugins/aisp/model.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import enum
import itertools
from typing import Annotated, Literal, Optional, Union
from collections.abc import Iterable
from typing import Annotated, Literal, Optional, Union, cast

import more_itertools
from pydantic import (
Expand Down Expand Up @@ -43,7 +44,7 @@ def validate_pit(
return None
value_list = value.split() if isinstance(value, str) else value
pit_list = []
for x in value_list:
for x in cast(Iterable[Union[float, str]], value_list):
if isinstance(x, str) and "x" in x:
x, _, repeat_times = x.partition("x")
pit_list.extend([float(x)] * int(repeat_times))
Expand Down
2 changes: 1 addition & 1 deletion libresvip/plugins/ds/diffsinger_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@
Note,
ParamCurve,
Params,
Point,
Points,
Project,
SingingTrack,
SongTempo,
TimeSignature,
)
from libresvip.model.point import Point
from libresvip.utils.music_math import hz2midi, note2midi

from .model import DsItem, DsProject
Expand Down
3 changes: 2 additions & 1 deletion libresvip/plugins/ds/utils/gender_param_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
from libresvip.model.point import Point
from libresvip.utils.search import binary_find_first, binary_find_last

from ..models.ds_param_curve import DsParamCurve, DsParamNode
from ..models.ds_param_curve import DsParamCurve
from ..models.ds_param_node import DsParamNode


class GenderParamUtils:
Expand Down
2 changes: 1 addition & 1 deletion libresvip/plugins/mid/midi_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,14 @@
Note,
ParamCurve,
Params,
Point,
Project,
SingingTrack,
SongTempo,
TimeSignature,
Track,
)
from libresvip.model.pitch_simulator import PitchSimulator
from libresvip.model.point import Point
from libresvip.model.portamento import PortamentoPitch
from libresvip.model.relative_pitch_curve import RelativePitchCurve
from libresvip.utils.music_math import ratio_to_db
Expand Down
2 changes: 1 addition & 1 deletion libresvip/plugins/mtp/muta_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@
InstrumentalTrack,
Note,
ParamCurve,
Point,
Points,
Project,
SingingTrack,
SongTempo,
TimeSignature,
)
from libresvip.model.point import Point

from .model import (
MutaNote,
Expand Down
2 changes: 1 addition & 1 deletion libresvip/plugins/nn/niaoniao_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
from libresvip.model.base import (
Note,
Params,
Point,
Project,
SingingTrack,
SongTempo,
TimeSignature,
)
from libresvip.model.point import Point

from .model import NNInfoLine, NNNote, NNProject, NNTimeSignature
from .options import InputOptions
Expand Down
1 change: 1 addition & 0 deletions libresvip/plugins/svip/msnrbf/svip_writer.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# Ported from QNrbf by SineStriker
# mypy: disable-error-code="attr-defined"
import dataclasses
import enum
import inspect
Expand Down
14 changes: 7 additions & 7 deletions libresvip/plugins/svip/msnrbf/xstudio_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -359,20 +359,20 @@ class XSITrack(abc.ABC):
"order": 12,
},
)


@dataclasses.dataclass
class XSSingingTrack(XSITrack):
"""SingingTool.Model.SingingTrack"""

track_type: Literal[XSTrackType.Singing] = XSTrackType.Singing
volume: float = dataclasses.field(
default=0.7,
metadata={
"alias": "_volume",
"order": 8,
},
)


@dataclasses.dataclass
class XSSingingTrack(XSITrack):
"""SingingTool.Model.SingingTrack"""

track_type: Literal[XSTrackType.Singing] = XSTrackType.Singing
note_list: XSBufList[XSNote] = dataclasses.field(
default_factory=XSBufList[XSNote],
metadata={
Expand Down
4 changes: 2 additions & 2 deletions libresvip/plugins/tlp/tunelab_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -159,9 +159,9 @@ def parse_vibrato(
vibrato_base_interval_dict[portion.closed(vibrato_start, vibrato_end)] = (
functools.partial(self.vibrato_value, vibrato_start=vibrato_start, vibrato=vibrato)
)
if part.automations is not None and part.automations.vibrato_envelope is not None:
if part.automations is not None and part.automations["VibratoEnvelope"] is not None:
for value, ticks_group in more_itertools.groupby_transform(
part.automations.vibrato_envelope.values.root,
part.automations["VibratoEnvelope"].values.root,
keyfunc=operator.attrgetter("value"),
valuefunc=operator.attrgetter("pos"),
):
Expand Down
1 change: 1 addition & 0 deletions libresvip/plugins/tssln/model.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# mypy: disable-error-code="attr-defined"
from __future__ import annotations

import enum
Expand Down
2 changes: 1 addition & 1 deletion libresvip/plugins/ufdata/ufdata_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@
from libresvip.model.base import (
Note,
ParamCurve,
Point,
Points,
Project,
SingingTrack,
SongTempo,
TimeSignature,
)
from libresvip.model.pitch_simulator import PitchSimulator
from libresvip.model.point import Point
from libresvip.model.portamento import PortamentoPitch
from libresvip.model.relative_pitch_curve import RelativePitchCurve

Expand Down
3 changes: 2 additions & 1 deletion libresvip/plugins/ust/pitch_mode1.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@
from typing import Optional

from libresvip.core.time_sync import TimeSynchronizer
from libresvip.model.base import Note, ParamCurve, Point
from libresvip.model.base import Note, ParamCurve
from libresvip.model.pitch_simulator import PitchSimulator
from libresvip.model.point import Point
from libresvip.model.portamento import PortamentoPitch
from libresvip.model.relative_pitch_curve import RelativePitchCurve

Expand Down
1 change: 1 addition & 0 deletions libresvip/plugins/ustx/util.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# mypy: disable-error-code="attr-defined"
import dataclasses
import operator

Expand Down
2 changes: 1 addition & 1 deletion libresvip/plugins/vshp/vocalshifter_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@
Note,
ParamCurve,
Params,
Point,
Project,
SingingTrack,
SongTempo,
TimeSignature,
Track,
)
from libresvip.model.point import Point
from libresvip.utils.music_math import db_to_float

from .model import (
Expand Down
75 changes: 75 additions & 0 deletions libresvip/plugins/vsqx/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,3 +89,78 @@ class VocaloidStyleTypes(BaseModel):
vibrato_type: int = Field(0, alias="vibType")
vibrato_depth: Optional[list[int]] = Field(None, alias="vibDep")
vibrato_rate: Optional[list[int]] = Field(None, alias="vibRate")


__all__ = [
"Vsq3MasterTrack",
"Vsq3MCtrl",
"Vsq3Mixer",
"Vsq3MonoTrack",
"Vsq3MonoUnit",
"Vsq3MusicalPart",
"Vsq3Note",
"Vsq3NoteStyle",
"Vsq3ParameterNames",
"Vsq3PartStyle",
"Vsq3Singer",
"Vsq3StereoTrack",
"Vsq3StereoUnit",
"Vsq3Tempo",
"Vsq3TimeSig",
"Vsq3TypeParamAttr",
"Vsq3TypePhonemes",
"Vsq3",
"Vsq3VsTrack",
"Vsq3VsUnit",
"Vsq3VVoice",
"Vsq3VVoiceTable",
"Vsq3WavPart",
"Vsq4MasterTrack",
"Vsq4MCtrl",
"Vsq4Mixer",
"Vsq4MonoTrack",
"Vsq4MonoUnit",
"Vsq4MusicalPart",
"Vsq4Note",
"Vsq4NoteStyle",
"Vsq4ParameterNames",
"Vsq4PartStyle",
"Vsq4Singer",
"Vsq4StereoTrack",
"Vsq4StereoUnit",
"Vsq4Tempo",
"Vsq4TimeSig",
"Vsq4TypeParamAttr",
"Vsq4TypePhonemes",
"Vsq4",
"Vsq4VsTrack",
"Vsq4VsUnit",
"Vsq4VVoice",
"Vsq4VVoiceTable",
"Vsq4WavPart",
"Vsqx",
"VsqxMasterTrack",
"VsqxMCtrl",
"VsqxMixer",
"VsqxMonoTrack",
"VsqxMusicalPart",
"VsqxNote",
"VsqxNoteStyle",
"VsqxParameterNames",
"VsqxPartStyle",
"VsqxTypePhonemes",
"VsqxSinger",
"VsqxStereoTrack",
"VsqxStereoUnitList",
"VsqxMonoUnitList",
"VsqxWavUnitList",
"VsqxTempoList",
"VsqxTimeSigList",
"VsqxTypeParamAttr",
"VsqxVsTrackList",
"VsqxVsUnitList",
"VsqxVVoice",
"VsqxVVoiceTable",
"VsqxWavPartList",
"VocaloidStyleTypes",
]
6 changes: 3 additions & 3 deletions libresvip/plugins/vsqx/vsqx_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
import functools
import math
import pathlib
from enum import Enum
from typing import Optional

import more_itertools
Expand All @@ -16,12 +15,12 @@
InstrumentalTrack,
Note,
ParamCurve,
Point,
Project,
SingingTrack,
SongTempo,
TimeSignature,
)
from libresvip.model.point import Point

from .constants import BPM_RATE
from .model import (
Expand All @@ -31,6 +30,7 @@
VsqxMasterTrack,
VsqxMusicalPart,
VsqxNote,
VsqxParameterNames,
VsqxTempoList,
VsqxTimeSigList,
VsqxVsTrackList,
Expand All @@ -51,7 +51,7 @@
class VsqxParser:
options: InputOptions
src_path: pathlib.Path
param_names: type[Enum] = dataclasses.field(init=False)
param_names: type[VsqxParameterNames] = dataclasses.field(init=False)
first_bar_length: int = dataclasses.field(init=False)
synchronizer: TimeSynchronizer = dataclasses.field(init=False)
pc2voice: dict[int, VsqxVVoice] = dataclasses.field(default_factory=dict)
Expand Down
Loading

0 comments on commit 102ac28

Please sign in to comment.