home · contact · privacy
Minor code style improvements.
authorPlom Heller <plom@plomlompom.com>
Mon, 6 Apr 2026 00:08:46 +0000 (02:08 +0200)
committerPlom Heller <plom@plomlompom.com>
Mon, 6 Apr 2026 00:08:46 +0000 (02:08 +0200)
bookmaker.py

index 157711f0956064b6b26dcacb5d744c901b5411f2..8250ce882612834220e92c9cb24c042633b0a2b4 100755 (executable)
@@ -344,8 +344,8 @@ def args_to_pagelist(
         try:
             reader = PdfReader(file)
         except PdfStreamError as e:
-            for file in opened_files:
-                file.close()
+            for to_close in opened_files:
+                to_close.close()
             raise ArgFail('i',
                           f'cannot interpret {filename} as PDF file') from e
         range_string = None
@@ -410,9 +410,8 @@ def pad_pages_to_multiple_of_8(
     if mod_to_8 > 0:
         old_len = len(pages_to_add)
         for _ in range(8 - mod_to_8):
-            new_page = PdfPage.create_blank_page(
-                    width=A4_WIDTH, height=A4_HEIGHT)
-            pages_to_add += [new_page]
+            pages_to_add += [PdfPage.create_blank_page(width=A4_WIDTH,
+                                                       height=A4_HEIGHT)]
         print(f'-n: number of input pages {old_len} not required multiple '
               f'of 8, padded to {len(pages_to_add)}')
 
@@ -449,10 +448,9 @@ def collect_page_croppings(args_crops,
             print(f'{prefix}: to pages {idx_start + 1}:{idx_after} '
                   f'applying crop: {page_crop.format_in_cm}{suffix}')
             for n_page in range(idx_start, idx_after):
-                if args_symmetry and n_page % 2:
-                    page_croppings[n_page] = page_crop.make_mirror()
-                else:
-                    page_croppings[n_page] = page_crop
+                page_croppings[n_page] = (page_crop.make_mirror()
+                                          if (args_symmetry and n_page % 2)
+                                          else page_crop)
     elif args_keep_mediabox:
         for n_page, page in enumerate(pages_to_add):
             page_croppings[n_page] = PageCrop(
@@ -506,19 +504,15 @@ def build_nup4_output(
     for i, page in enumerate(pages_to_add):
         new_page = new_page or PdfPage.create_blank_page(width=A4_WIDTH,
                                                          height=A4_HEIGHT)
-        corrected_i = old_indices[i]
         nup4_inner_page_transform(
-                page, page_croppings[corrected_i], nup4_geometry, nup4_i)
+                page, page_croppings[old_indices[i]], nup4_geometry, nup4_i)
         nup4_outer_page_transform(page, nup4_geometry, nup4_i)
         new_page.merge_page(page)
         page_count += 1
         print(f'merged page number {page_count} (of {len(pages_to_add)})')
         nup4_i += 1
         if nup4_i > 3:
-            ornate_nup4(args_analyze,
-                        is_front_page,
-                        new_page,
-                        nup4_geometry)
+            ornate_nup4(args_analyze, is_front_page, new_page, nup4_geometry)
             writer.add_page(new_page)
             nup4_i = 0
             new_page = None
@@ -557,12 +551,9 @@ def nup4_inner_page_transform(
     'Apply to page crop instructions adequate to position in nup4 geometry.'
     page.add_transformation(PdfTransformation().translate(
         ty=A4_HEIGHT / crop.zoom - (A4_HEIGHT - crop.top)))
-    if nup4_i in {0, 2}:
-        page.add_transformation(PdfTransformation().translate(
-            tx=-crop.left))
-    elif nup4_i in {1, 3}:
-        page.add_transformation(PdfTransformation().translate(
-            tx=A4_WIDTH / crop.zoom - (A4_WIDTH - crop.right)))
+    page.add_transformation(PdfTransformation().translate(
+        tx=((-crop.left) if nup4_i in {0, 2}
+            else A4_WIDTH / crop.zoom - (A4_WIDTH - crop.right))))  # in {1, 3}
     page.add_transformation(PdfTransformation().scale(
         crop.zoom * nup4_geometry.shrink_for_spine,
         crop.zoom * nup4_geometry.shrink_for_spine))
@@ -598,8 +589,8 @@ def nup4_outer_page_transform(
         x_section = A4_WIDTH
         page.mediabox.left = A4_HALF_WIDTH
         page.mediabox.right = A4_WIDTH
-    page.add_transformation(PdfTransformation().translate(
-        tx=x_section, ty=y_section))
+    page.add_transformation(PdfTransformation().translate(tx=x_section,
+                                                          ty=y_section))
     page.add_transformation(PdfTransformation().scale(QUARTER_SCALE_FACTOR,
                                                       QUARTER_SCALE_FACTOR))
 
@@ -631,11 +622,12 @@ def ornate_nup4(
         nup4_geometry.shrink_for_margin, nup4_geometry.shrink_for_margin))
     new_page.add_transformation(PdfTransformation().translate(
         tx=printable_offset_x, ty=printable_offset_y))
+    if not (args_analyze or is_front_page):
+        return
     x_left_spine_limit = A4_HALF_WIDTH * nup4_geometry.shrink_for_spine
     x_right_spine_limit = A4_WIDTH - x_left_spine_limit
-    if args_analyze or is_front_page:
-        packet = BytesIO()
-        c = Canvas(packet, pagesize=A4)
+    packet = BytesIO()
+    c = Canvas(packet, pagesize=A4)
     if args_analyze:
         # spine lines
         c.setLineWidth(0.1)
@@ -645,10 +637,9 @@ def ornate_nup4(
         c.setLineWidth(0.2)
         draw_cut(c, x_left_spine_limit, 1)
         draw_cut(c, x_right_spine_limit, -1)
-    if args_analyze or is_front_page:
-        c.save()
-        new_pdf = PdfReader(packet)
-        new_page.merge_page(new_pdf.pages[0])
+    c.save()
+    new_pdf = PdfReader(packet)
+    new_page.merge_page(new_pdf.pages[0])
 
 
 def draw_cut(
@@ -657,8 +648,9 @@ def draw_cut(
         direction: int
         ) -> None:
     'Into canvas draw book binding cut guide at x_spine_limit into direction.'
-    outer_start_x = x_spine_limit - 0.5 * CUT_WIDTH * direction
-    inner_start_x = x_spine_limit + 0.5 * CUT_WIDTH * direction
+    directed_half_width = 0.5 * CUT_WIDTH * direction
+    outer_start_x = x_spine_limit - directed_half_width
+    inner_start_x = x_spine_limit + directed_half_width
     middle_point_y = A4_HALF_HEIGHT + MIDDLE_POINT_DEPTH * direction
     end_point_y = A4_HALF_HEIGHT + CUT_DEPTH * direction
     canvas.line(inner_start_x, A4_HALF_HEIGHT, x_spine_limit, end_point_y)