mirror of
https://github.com/jeertmans/manim-slides.git
synced 2025-05-17 10:45:53 +08:00
fix(lib): deprecation warnings (#467)
* fix(lib): deprecation warnings * fix(tests): collect tests in the correct order * fix(tests): ignore pydub warning * fix(tests): correctly ignore warnings * fix(ci): do we need faulthandler?
This commit is contained in:
@ -13,6 +13,8 @@ from pydantic import (
|
||||
FilePath,
|
||||
PositiveInt,
|
||||
PrivateAttr,
|
||||
conset,
|
||||
field_serializer,
|
||||
field_validator,
|
||||
model_validator,
|
||||
)
|
||||
@ -47,20 +49,13 @@ def key_id(name: str) -> PositiveInt:
|
||||
class Key(BaseModel): # type: ignore[misc]
|
||||
"""Represents a list of key codes, with optionally a name."""
|
||||
|
||||
ids: list[PositiveInt] = Field(unique=True)
|
||||
ids: conset(PositiveInt, min_length=1) # type: ignore[valid-type]
|
||||
name: Optional[str] = None
|
||||
|
||||
__signal: Signal = PrivateAttr(default_factory=Signal)
|
||||
|
||||
@field_validator("ids")
|
||||
@classmethod
|
||||
def ids_is_non_empty_set(cls, ids: set[Any]) -> set[Any]:
|
||||
if len(ids) <= 0:
|
||||
raise ValueError("Key's ids must be a non-empty set")
|
||||
return ids
|
||||
|
||||
def set_ids(self, *ids: int) -> None:
|
||||
self.ids = list(set(ids))
|
||||
self.ids = set(ids)
|
||||
|
||||
def match(self, key_id: int) -> bool:
|
||||
m = key_id in self.ids
|
||||
@ -77,6 +72,10 @@ class Key(BaseModel): # type: ignore[misc]
|
||||
def connect(self, function: Receiver) -> None:
|
||||
self.__signal.connect(function)
|
||||
|
||||
@field_serializer("ids")
|
||||
def serialize_dt(self, ids: set[int]) -> list[int]:
|
||||
return list(self.ids)
|
||||
|
||||
|
||||
class Keys(BaseModel): # type: ignore[misc]
|
||||
QUIT: Key = Field(default_factory=lambda: Key(ids=[key_id("Q")], name="QUIT"))
|
||||
@ -180,7 +179,7 @@ class BaseSlideConfig(BaseModel): # type: ignore
|
||||
fun_kwargs = {
|
||||
key: value
|
||||
for key, value in kwargs.items()
|
||||
if key not in cls.__fields__
|
||||
if key not in cls.model_fields
|
||||
}
|
||||
fun_kwargs[arg_name] = cls(**kwargs)
|
||||
return fun(*args, **fun_kwargs)
|
||||
@ -194,7 +193,7 @@ class BaseSlideConfig(BaseModel): # type: ignore
|
||||
default=field_info.default,
|
||||
annotation=field_info.annotation,
|
||||
)
|
||||
for field_name, field_info in cls.__fields__.items()
|
||||
for field_name, field_info in cls.model_fields.items()
|
||||
]
|
||||
|
||||
sig = sig.replace(parameters=parameters)
|
||||
@ -231,7 +230,7 @@ class PreSlideConfig(BaseSlideConfig):
|
||||
return cls(
|
||||
start_animation=start_animation,
|
||||
end_animation=end_animation,
|
||||
**base_slide_config.dict(),
|
||||
**base_slide_config.model_dump(),
|
||||
)
|
||||
|
||||
@field_validator("start_animation", "end_animation")
|
||||
@ -277,7 +276,7 @@ class SlideConfig(BaseSlideConfig):
|
||||
def from_pre_slide_config_and_files(
|
||||
cls, pre_slide_config: PreSlideConfig, file: Path, rev_file: Path
|
||||
) -> "SlideConfig":
|
||||
return cls(file=file, rev_file=rev_file, **pre_slide_config.dict())
|
||||
return cls(file=file, rev_file=rev_file, **pre_slide_config.model_dump())
|
||||
|
||||
|
||||
class PresentationConfig(BaseModel): # type: ignore[misc]
|
||||
|
@ -432,7 +432,7 @@ class RevealJS(Converter):
|
||||
with open(dest, "w") as f:
|
||||
revealjs_template = Template(self.load_template())
|
||||
|
||||
options = self.dict()
|
||||
options = self.model_dump()
|
||||
options["assets_dir"] = assets_dir
|
||||
|
||||
has_notes = any(
|
||||
@ -692,7 +692,7 @@ def convert(
|
||||
try:
|
||||
cls = Converter.from_string(fmt)
|
||||
except KeyError:
|
||||
logger.warn(
|
||||
logger.warning(
|
||||
f"Could not guess conversion format from {dest!s}, defaulting to HTML."
|
||||
)
|
||||
cls = RevealJS
|
||||
|
@ -228,7 +228,7 @@ class ManimSlidesMagic(Magics): # type: ignore
|
||||
# TODO: FIXME
|
||||
# Seems like files are blocked so date-uri is the only working option...
|
||||
if kwargs.get("data_uri", "false").lower().strip() == "false":
|
||||
logger.warn(
|
||||
logger.warning(
|
||||
"data_uri option is currently automatically enabled, "
|
||||
"because using local video files does not seem to work properly."
|
||||
)
|
||||
|
@ -33,7 +33,7 @@ def _list_scenes(folder: Path) -> list[str]:
|
||||
except (
|
||||
Exception
|
||||
) as e: # Could not parse this file as a proper presentation config
|
||||
logger.warn(
|
||||
logger.warning(
|
||||
f"Something went wrong with parsing presentation config `{filepath}`: {e}"
|
||||
)
|
||||
|
||||
|
@ -319,7 +319,7 @@ class Player(QMainWindow): # type: ignore[misc]
|
||||
elif -self.presentations_count <= index < 0:
|
||||
self.__current_presentation_index = index + self.presentations_count
|
||||
else:
|
||||
logger.warn(f"Could not set presentation index to {index}.")
|
||||
logger.warning(f"Could not set presentation index to {index}.")
|
||||
return
|
||||
|
||||
self.presentation_changed.emit()
|
||||
@ -343,7 +343,7 @@ class Player(QMainWindow): # type: ignore[misc]
|
||||
elif -self.current_slides_count <= index < 0:
|
||||
self.__current_slide_index = index + self.current_slides_count
|
||||
else:
|
||||
logger.warn(f"Could not set slide index to {index}.")
|
||||
logger.warning(f"Could not set slide index to {index}.")
|
||||
return
|
||||
|
||||
self.slide_changed.emit()
|
||||
|
@ -19,7 +19,7 @@ def concatenate_video_files(files: list[Path], dest: Path) -> None:
|
||||
if len(container.streams.video) > 0:
|
||||
yield file
|
||||
else:
|
||||
logger.warn(
|
||||
logger.warning(
|
||||
f"Skipping video file {file} because it does "
|
||||
"not contain any video stream. "
|
||||
"This is probably caused by Manim, see: "
|
||||
|
@ -63,7 +63,7 @@ class Wizard(QWidget): # type: ignore
|
||||
|
||||
self.layout = QGridLayout()
|
||||
|
||||
for i, (key, value) in enumerate(self.config.keys.dict().items()):
|
||||
for i, (key, value) in enumerate(self.config.keys.model_dump().items()):
|
||||
# Create label for key name information
|
||||
label = QLabel()
|
||||
key_info = value["name"] or key
|
||||
@ -97,7 +97,7 @@ class Wizard(QWidget): # type: ignore
|
||||
|
||||
def save_config(self) -> None:
|
||||
try:
|
||||
Config.model_validate(self.config.dict())
|
||||
Config.model_validate(self.config.model_dump())
|
||||
except ValueError:
|
||||
msg = QMessageBox()
|
||||
msg.setIcon(QMessageBox.Critical)
|
||||
|
Reference in New Issue
Block a user