|
1 | 1 | """Code in here is only used by pypdf.filters._xobj_to_image""" |
2 | 2 |
|
| 3 | +import sys |
3 | 4 | from io import BytesIO |
4 | 5 | from typing import Any, List, Tuple, Union, cast |
5 | 6 |
|
|
14 | 15 | NullObject, |
15 | 16 | ) |
16 | 17 |
|
17 | | -try: |
18 | | - from typing import Literal, TypeAlias |
19 | | -except ImportError: |
| 18 | +if sys.version_info[:2] >= (3, 8): |
| 19 | + from typing import Literal |
| 20 | +else: |
20 | 21 | # PEP 586 introduced typing.Literal with Python 3.8 |
21 | 22 | # For older Python versions, the backport typing_extensions is necessary: |
22 | | - from typing_extensions import Literal, TypeAlias # type: ignore[assignment] |
| 23 | + from typing_extensions import Literal # type: ignore[assignment] |
| 24 | + |
| 25 | +if sys.version_info[:2] >= (3, 10): |
| 26 | + from typing import TypeAlias |
| 27 | +else: |
| 28 | + from typing_extensions import TypeAlias |
23 | 29 |
|
24 | 30 |
|
25 | 31 | try: |
@@ -70,22 +76,28 @@ def _get_imagemode( |
70 | 76 | color_space = color_space[1] |
71 | 77 | if isinstance(color_space, IndirectObject): |
72 | 78 | color_space = color_space.get_object() |
73 | | - mode2, invert_color = _get_imagemode(color_space, color_components, prev_mode, depth + 1) |
| 79 | + mode2, invert_color = _get_imagemode( |
| 80 | + color_space, color_components, prev_mode, depth + 1 |
| 81 | + ) |
74 | 82 | if mode2 in ("RGB", "CMYK"): |
75 | 83 | mode2 = "P" |
76 | 84 | return mode2, invert_color |
77 | 85 | elif color_space[0] == "/Separation": |
78 | 86 | color_space = color_space[2] |
79 | 87 | if isinstance(color_space, IndirectObject): |
80 | 88 | color_space = color_space.get_object() |
81 | | - mode2, invert_color = _get_imagemode(color_space, color_components, prev_mode, depth + 1) |
| 89 | + mode2, invert_color = _get_imagemode( |
| 90 | + color_space, color_components, prev_mode, depth + 1 |
| 91 | + ) |
82 | 92 | return mode2, True |
83 | 93 | elif color_space[0] == "/DeviceN": |
84 | 94 | color_components = len(color_space[1]) |
85 | 95 | color_space = color_space[2] |
86 | 96 | if isinstance(color_space, IndirectObject): # pragma: no cover |
87 | 97 | color_space = color_space.get_object() |
88 | | - mode2, invert_color = _get_imagemode(color_space, color_components, prev_mode, depth + 1) |
| 98 | + mode2, invert_color = _get_imagemode( |
| 99 | + color_space, color_components, prev_mode, depth + 1 |
| 100 | + ) |
89 | 101 | return mode2, invert_color |
90 | 102 |
|
91 | 103 | mode_map = { |
|
0 commit comments