]> git.scottworley.com Git - paperdoorknob/blob - spec.py
3aa72920843103c737aa9c93982d8fabde74837c
[paperdoorknob] / spec.py
1 # paperdoorknob: Print glowfic
2 #
3 # This program is free software: you can redistribute it and/or modify it
4 # under the terms of the GNU General Public License as published by the
5 # Free Software Foundation, version 3.
6
7
8 from dataclasses import dataclass
9
10 from typing import Callable, IO
11
12 from bs4.element import Tag
13
14 from fetch import Fetcher
15 from glowfic import Layout
16 from images import ImageStore
17 from texify import Texifier
18
19
20 # pylint: disable=too-many-instance-attributes
21 @dataclass(frozen=True)
22 class Spec:
23 url: str
24 fetcher: Fetcher
25 images: ImageStore
26 htmlfilter: Callable[[bytes], bytes]
27 domfilter: Callable[[Tag], None]
28 texifier: Texifier
29 texfilter: Callable[[bytes], bytes]
30 icon_size: float
31 layout: Layout
32 geometry: str | None
33 texout: IO[bytes]
34 log: Callable[[str], None]