home · contact · privacy
Minor code structure improvements.
authorPlom Heller <plom@plomlompom.com>
Sun, 1 Nov 2026 15:32:54 +0000 (16:32 +0100)
committerPlom Heller <plom@plomlompom.com>
Sun, 1 Nov 2026 15:32:54 +0000 (16:32 +0100)
src/bookmaker/misc.py

index 7267ddd0f2d916c98cf34218aebec3b9a0f4140a..4886a6bc6500f92ba2a853e86806dc02e198f96e 100755 (executable)
@@ -23,8 +23,10 @@ except ImportError:
 
 # some general paper geometry constants
 POINTS_PER_CM = 10 * 72 / 25.4
-A4_WIDTH = 21 * POINTS_PER_CM
-A4_HEIGHT = 29.7 * POINTS_PER_CM
+A4_HEIGHT_CM = 29.7
+A4_HEIGHT = A4_HEIGHT_CM * POINTS_PER_CM
+A4_WIDTH_CM = 21
+A4_WIDTH = A4_WIDTH_CM * POINTS_PER_CM
 A4 = (A4_WIDTH, A4_HEIGHT)
 
 # constants specifically for --nup4
@@ -101,7 +103,7 @@ class Page:
             self,
             pypdf_page: PdfPage
             ) -> None:
-        self._pypdf = pypdf_page
+        self.pypdf = pypdf_page
         self.set_box()
         self.crop = PageCrop()
 
@@ -110,7 +112,7 @@ class Page:
             self
             ) -> dict[str, float]:
         'Return dict of mediabox measures.'
-        return {direction: getattr(self._pypdf.mediabox, direction)
+        return {direction: getattr(self.pypdf.mediabox, direction)
                 for direction in ('left', 'bottom', 'right', 'top')}
 
     def set_box(
@@ -122,14 +124,14 @@ class Page:
             ) -> None:
         'Set mediabox (and cropbox) measures.'
         if left is not None:
-            self._pypdf.mediabox.left = left
+            self.pypdf.mediabox.left = left
         if bottom is not None:
-            self._pypdf.mediabox.bottom = bottom
+            self.pypdf.mediabox.bottom = bottom
         if right is not None:
-            self._pypdf.mediabox.right = right
+            self.pypdf.mediabox.right = right
         if top is not None:
-            self._pypdf.mediabox.top = top
-        self._pypdf.cropbox = self._pypdf.mediabox
+            self.pypdf.mediabox.top = top
+        self.pypdf.cropbox = self.pypdf.mediabox
 
     @classmethod
     def new_blank(
@@ -143,26 +145,26 @@ class Page:
             writer: PdfWriter
             ) -> None:
         'Add self to writer.'
-        writer.add_page(self._pypdf)
+        writer.add_page(self.pypdf)
 
     def merge_page(
             self,
             page: Self
             ) -> None:
         'Merge page .to self.'
-        self._pypdf.merge_page(page._pypdf)
+        self.pypdf.merge_page(page.pypdf)
 
     def rotation(
             self
             ) -> Optional[int]:
         'Return PDF /Rotate instruction.'
-        return self._pypdf.get(ROTATE_COMMAND, None)
+        return self.pypdf.get(ROTATE_COMMAND, None)
 
     def rotate(self,
                degrees: int
                ) -> None:
         'Wrap PdfTransformation.rotate.'
-        self._pypdf.add_transformation(PdfTransformation().rotate(degrees))
+        self.pypdf.add_transformation(PdfTransformation().rotate(degrees))
 
     def translate(
             self,
@@ -170,14 +172,14 @@ class Page:
             ty: float = 0.0
             ) -> None:
         'Wrap PdfTransformation.translate.'
-        self._pypdf.add_transformation(PdfTransformation().translate(tx, ty))
+        self.pypdf.add_transformation(PdfTransformation().translate(tx, ty))
 
     def scale(
             self,
             zoom: float
             ) -> None:
         'Wrap PdfTransformation.scale.'
-        self._pypdf.add_transformation(PdfTransformation().scale(zoom, zoom))
+        self.pypdf.add_transformation(PdfTransformation().scale(zoom, zoom))
 
     def draw_lines(
             self,
@@ -186,7 +188,7 @@ class Page:
             line_width: float = 2.0,
             ) -> None:
         'Draw lines.'
-        min_x, min_y, max_x, max_y = self._pypdf.mediabox
+        min_x, min_y, max_x, max_y = self.pypdf.mediabox
         packet = BytesIO()
         c = Canvas(packet, pagesize=(max_x - min_x, max_y - min_y))
         c.setLineWidth(line_width)
@@ -194,7 +196,7 @@ class Page:
         for line in lines:
             c.line(line[0], line[1], line[2], line[3])
         c.save()
-        self._pypdf.merge_page(PdfReader(packet).pages[0])
+        self.pypdf.merge_page(PdfReader(packet).pages[0])
 
     def draw_orth_lines(
             self,
@@ -203,7 +205,7 @@ class Page:
             line_width: float = 2.0,
             ) -> None:
         'Draw horizontal or vertical lines.'
-        min_x, min_y, max_x, max_y = self._pypdf.mediabox
+        min_x, min_y, max_x, max_y = self.pypdf.mediabox
         full_lines: list[tuple[float, float, float, float]] = []
         for is_horizontal, position in lines:
             if is_horizontal:
@@ -221,7 +223,7 @@ class Page:
             line_width: float = 4.0,
             ) -> None:
         'Draw border lines around mediabox.'
-        min_x, min_y, max_x, max_y = self._pypdf.mediabox
+        min_x, min_y, max_x, max_y = self.pypdf.mediabox
         self.draw_orth_lines(
                 ((False, min_x), (True, min_y), (False, max_x), (True, max_y)),
                 rgb_color,
@@ -493,7 +495,7 @@ def _validate_args_syntax(
         args: ArgsNamespace
         ) -> None:
     'Check command args against general syntax expectations.'
-
+    arg_char = '?'
     try:
         if args.page_range:
             arg_char = 'p'
@@ -767,7 +769,7 @@ class Book:
 
     def finalize(
             self,
-            output_filename,
+            output_filename: str,
             ) -> None:
         'Close inputs, write output.'
         for file in self._opened_files: