from typing import List
from fontTools.ufoLib import UFOReader, UFOWriter
from ufoLib2.objects.misc import DataStore
[docs]class DataSet(DataStore):
"""Represents a mapping of POSIX filename strings to arbitrary data bytes.
Always use forward slahes (/) as directory separators, even on Windows.
Behavior:
DataSet behaves like a dictionary of type ``Dict[str, bytes]``.
>>> from ufoLib2 import Font
>>> font = Font()
>>> font.data["test.txt"] = b"123"
>>> font.data["directory/my_binary_blob.bin"] = b"456"
>>> font.data["test.txt"]
b'123'
>>> del font.data["test.txt"]
>>> list(font.data.items())
[('directory/my_binary_blob.bin', b'456')]
"""
@staticmethod
def list_contents(reader: UFOReader) -> List[str]:
"""Returns a list of POSIX filename strings in the data store."""
return reader.getDataDirectoryListing()
@staticmethod
def read_data(reader: UFOReader, filename: str) -> bytes:
"""Returns the data at filename within the store."""
return reader.readData(filename)
@staticmethod
def write_data(writer: UFOWriter, filename: str, data: bytes) -> None:
"""Writes the data to filename within the store."""
writer.writeData(filename, data)
@staticmethod
def remove_data(writer: UFOWriter, filename: str) -> None:
"""Remove the data at filename within the store."""
writer.removeData(filename)