Skip to content

Commit

Permalink
feat: make it possible to pass a custom callback to ensure_serialized…
Browse files Browse the repository at this point in the history
…() and ensure_deserialized()
  • Loading branch information
vberlier committed Jun 26, 2021
1 parent 299c0a8 commit d75648b
Showing 1 changed file with 26 additions and 4 deletions.
30 changes: 26 additions & 4 deletions beet/core/file.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,15 +88,37 @@ def ensure_source_path(self) -> FileSystemPath:
"a source path."
)

def ensure_serialized(self) -> SerializeType:
def ensure_serialized(
self,
serializer: Optional[Callable[[ValueType], SerializeType]] = None,
) -> SerializeType:
"""Make sure that the content of the file is serialized."""
content = self.serialize(self.get_content())
backup = self.serializer
if serializer:
self.serializer = serializer

try:
content = self.serialize(self.get_content())
finally:
self.serializer = backup

self.set_content(content)
return content

def ensure_deserialized(self) -> ValueType:
def ensure_deserialized(
self,
deserializer: Optional[Callable[[SerializeType], ValueType]] = None,
) -> ValueType:
"""Make sure that the content of the file is deserialized."""
content = self.deserialize(self.get_content())
backup = self.deserializer
if deserializer:
self.deserializer = deserializer

try:
content = self.deserialize(self.get_content())
finally:
self.deserializer = backup

self.set_content(content)
return content

Expand Down

0 comments on commit d75648b

Please sign in to comment.