@nomad-e/bluma-cli 0.6.9 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -18,6 +18,13 @@ license: Proprietary. LICENSE.txt has complete terms
18
18
  > design agency, not a script. Typography, spacing, color, and hierarchy are
19
19
  > not optional — they are the foundation of a credible document.
20
20
 
21
+ ## Prerequisites
22
+
23
+ - **Python 3.10+** installed and available in PATH
24
+ - Install dependencies: `pip install reportlab pypdf`
25
+ - If any script fails with `command not found` or `ModuleNotFoundError`, Python or its
26
+ packages are missing — install them before proceeding
27
+
21
28
  ## MANDATORY workflow — new multi-page reports (read first)
22
29
 
23
30
  Ad-hoc 30-line ReportLab scripts are the #1 cause of “cheap PDF” output (no
@@ -46,8 +46,24 @@ from pathlib import Path
46
46
  from typing import Any
47
47
  from xml.sax.saxutils import escape
48
48
 
49
- from reportlab.lib.pagesizes import A4
50
- from reportlab.lib.units import cm
49
+ MIN_PYTHON = (3, 10)
50
+ if sys.version_info < MIN_PYTHON:
51
+ print(
52
+ f"Error: Python {'.'.join(map(str, MIN_PYTHON))}+ is required "
53
+ f"(found {'.'.join(map(str, sys.version_info[:3]))})",
54
+ file=sys.stderr,
55
+ )
56
+ sys.exit(1)
57
+
58
+ try:
59
+ from reportlab.lib.pagesizes import A4
60
+ from reportlab.lib.units import cm
61
+ except ImportError:
62
+ print(
63
+ "Error: reportlab is required. Install with: pip install reportlab",
64
+ file=sys.stderr,
65
+ )
66
+ sys.exit(1)
51
67
  from reportlab.lib.colors import HexColor
52
68
  from reportlab.lib.styles import ParagraphStyle
53
69
  from reportlab.lib.enums import TA_CENTER, TA_JUSTIFY
@@ -8,6 +8,15 @@ Usage:
8
8
  import argparse
9
9
  import sys
10
10
 
11
+ MIN_PYTHON = (3, 10)
12
+ if sys.version_info < MIN_PYTHON:
13
+ print(
14
+ f"Error: Python {'.'.join(map(str, MIN_PYTHON))}+ is required "
15
+ f"(found {'.'.join(map(str, sys.version_info[:3]))})",
16
+ file=sys.stderr,
17
+ )
18
+ sys.exit(1)
19
+
11
20
  def merge_pdfs(input_files: list[str], output_path: str) -> None:
12
21
  try:
13
22
  from pypdf import PdfWriter, PdfReader
@@ -16,6 +16,14 @@ license: Proprietary. LICENSE.txt has complete terms
16
16
 
17
17
  # XLSX — Spreadsheet Creation, Editing & Analysis
18
18
 
19
+ ## Prerequisites
20
+
21
+ - **Python 3.10+** installed and available in PATH
22
+ - Install dependencies: `pip install openpyxl pandas`
23
+ - **LibreOffice** installed (required by `recalc.py` for formula recalculation)
24
+ - If any script fails with `command not found` or `ModuleNotFoundError`, Python or its
25
+ packages are missing — install them before proceeding
26
+
19
27
  ## Core Principle
20
28
 
21
29
  > **Formulas, not hardcodes.** Every calculated value MUST be an Excel
@@ -19,6 +19,15 @@ import os
19
19
  import sys
20
20
  import time
21
21
 
22
+ MIN_PYTHON = (3, 10)
23
+ if sys.version_info < MIN_PYTHON:
24
+ print(
25
+ f"Error: Python {'.'.join(map(str, MIN_PYTHON))}+ is required "
26
+ f"(found {'.'.join(map(str, sys.version_info[:3]))})",
27
+ file=sys.stderr,
28
+ )
29
+ sys.exit(1)
30
+
22
31
  SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
23
32
  sys.path.insert(0, SCRIPT_DIR)
24
33