diff --git a/src/wireviz/DataClasses.py b/src/wireviz/DataClasses.py index a0addbd..302b121 100644 --- a/src/wireviz/DataClasses.py +++ b/src/wireviz/DataClasses.py @@ -43,7 +43,7 @@ class Image: caption: Optional[MultilineHypertext] = None # See also HTML doc at https://graphviz.org/doc/info/shapes.html#html - def __post_init__(self): + def __post_init__(self) -> None: if self.fixedsize is None: # Default True if any dimension specified unless self.scale also is specified. diff --git a/src/wireviz/Harness.py b/src/wireviz/Harness.py index 1791ea4..3a39881 100644 --- a/src/wireviz/Harness.py +++ b/src/wireviz/Harness.py @@ -342,7 +342,7 @@ class Harness: return data.read() @property - def svg(self): + def svg(self) -> str: graph = self.create_graph() return embed_svg_images(graph.pipe(format='svg').decode('utf-8'), Path.cwd()) diff --git a/src/wireviz/svgembed.py b/src/wireviz/svgembed.py index ea802ca..1ada421 100644 --- a/src/wireviz/svgembed.py +++ b/src/wireviz/svgembed.py @@ -8,7 +8,7 @@ from typing import Union mime_subtype_replacements = {'jpg': 'jpeg', 'tif': 'tiff'} -def embed_svg_images(svg_in: str, base_path: Path): +def embed_svg_images(svg_in: str, base_path: Union[str, Path] = Path.cwd()) -> str: # first, find any image references in SVG data, and cache the respective base64-encoded image images_b64 = {} # cache of base64-encoded images re_xlink=re.compile(r'xlink:href="(?P.*?)"', re.IGNORECASE) @@ -16,7 +16,6 @@ def embed_svg_images(svg_in: str, base_path: Path): imgurl = xlink.group('URL') if not imgurl in images_b64: # only encode/cache every unique URL once imgurl_abs = (Path(base_path) / imgurl).resolve() - images_b64[imgurl] = base64.b64encode(imgurl_abs.read_bytes()).decode('utf-8') # second, replace links with the base64-encoded data svg_out = svg_in @@ -26,14 +25,14 @@ def embed_svg_images(svg_in: str, base_path: Path): return svg_out -def get_mime_subtype(filename: Union[str, Path]): +def get_mime_subtype(filename: Union[str, Path]) -> str: mime_subtype = Path(filename).suffix.lstrip('.').lower() if mime_subtype in mime_subtype_replacements: mime_subtype = mime_subtype_replacements[mime_subtype] return mime_subtype -def embed_svg_images_file(filename_in: Union[str, Path], overwrite: bool = True): +def embed_svg_images_file(filename_in: Union[str, Path], overwrite: bool = True) -> None: filename_in = Path(filename_in).resolve() filename_out = filename_in.with_suffix('.b64.svg') filename_out.write_text(embed_svg_images(filename_in.read_text(), filename_in.parent))