Coverage for /pythoncovmergedfiles/medio/medio/src/pdfminer.six/pdfminer/casting.py: 100%
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1import itertools
2from typing import Any, Optional, Tuple
4from pdfminer.utils import Matrix, Rect
6_FloatTriple = Tuple[float, float, float]
7_FloatQuadruple = Tuple[float, float, float, float]
10def safe_int(o: Any) -> Optional[int]:
11 try:
12 return int(o)
13 except (TypeError, ValueError):
14 return None
17def safe_float(o: Any) -> Optional[float]:
18 try:
19 return float(o)
20 except (TypeError, ValueError, OverflowError):
21 return None
24def safe_matrix(a: Any, b: Any, c: Any, d: Any, e: Any, f: Any) -> Optional[Matrix]:
25 a_f = safe_float(a)
26 b_f = safe_float(b)
27 c_f = safe_float(c)
28 d_f = safe_float(d)
29 e_f = safe_float(e)
30 f_f = safe_float(f)
32 if (
33 a_f is None
34 or b_f is None
35 or c_f is None
36 or d_f is None
37 or e_f is None
38 or f_f is None
39 ):
40 return None
42 return a_f, b_f, c_f, d_f, e_f, f_f
45def safe_rgb(r: Any, g: Any, b: Any) -> Optional[Tuple[float, float, float]]:
46 return _safe_float_triple(r, g, b)
49def safe_cmyk(
50 c: Any, m: Any, y: Any, k: Any
51) -> Optional[Tuple[float, float, float, float]]:
52 return _safe_float_quadruple(c, m, y, k)
55def safe_rect_list(value: Any) -> Optional[Rect]:
56 try:
57 values = list(itertools.islice(value, 4))
58 except TypeError:
59 return None
61 if len(values) != 4:
62 return None
64 return safe_rect(*values)
67def safe_rect(a: Any, b: Any, c: Any, d: Any) -> Optional[Rect]:
68 return _safe_float_quadruple(a, b, c, d)
71def _safe_float_triple(a: Any, b: Any, c: Any) -> Optional[_FloatTriple]:
72 a_f = safe_float(a)
73 b_f = safe_float(b)
74 c_f = safe_float(c)
76 if a_f is None or b_f is None or c_f is None:
77 return None
79 return a_f, b_f, c_f
82def _safe_float_quadruple(a: Any, b: Any, c: Any, d: Any) -> Optional[_FloatQuadruple]:
83 a_f = safe_float(a)
84 b_f = safe_float(b)
85 c_f = safe_float(c)
86 d_f = safe_float(d)
88 if a_f is None or b_f is None or c_f is None or d_f is None:
89 return None
91 return a_f, b_f, c_f, d_f