numbers-parser 4.10.3__py3-none-any.whl → 4.10.5__py3-none-any.whl
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.
- numbers_parser/__init__.py +1 -1
- numbers_parser/_cat_numbers.py +4 -4
- numbers_parser/_unpack_numbers.py +5 -5
- numbers_parser/cell.py +119 -119
- numbers_parser/constants.py +5 -6
- numbers_parser/containers.py +13 -7
- numbers_parser/document.py +135 -113
- numbers_parser/exceptions.py +0 -7
- numbers_parser/formula.py +3 -4
- numbers_parser/generated/TNArchives_pb2.py +24 -26
- numbers_parser/generated/TSAArchives_pb2.py +26 -28
- numbers_parser/generated/TSCEArchives_pb2.py +8 -10
- numbers_parser/generated/TSCHArchives_GEN_pb2.py +28 -34
- numbers_parser/generated/TSCHArchives_pb2.py +61 -65
- numbers_parser/generated/TSDArchives_pb2.py +100 -110
- numbers_parser/generated/TSKArchives_pb2.py +168 -170
- numbers_parser/generated/TSPArchiveMessages_pb2.py +32 -34
- numbers_parser/generated/TSPMessages_pb2.py +40 -40
- numbers_parser/generated/TSSArchives_pb2.py +36 -36
- numbers_parser/generated/TSTArchives_pb2.py +321 -325
- numbers_parser/generated/TSTStylePropertyArchiving_pb2.py +8 -10
- numbers_parser/generated/TSWPArchives_pb2.py +250 -286
- numbers_parser/generated/TSWPCommandArchives_pb2.py +95 -95
- numbers_parser/iwafile.py +16 -16
- numbers_parser/iwork.py +35 -29
- numbers_parser/model.py +77 -55
- numbers_parser/numbers_uuid.py +6 -4
- {numbers_parser-4.10.3.dist-info → numbers_parser-4.10.5.dist-info}/METADATA +7 -7
- {numbers_parser-4.10.3.dist-info → numbers_parser-4.10.5.dist-info}/RECORD +32 -32
- {numbers_parser-4.10.3.dist-info → numbers_parser-4.10.5.dist-info}/LICENSE.rst +0 -0
- {numbers_parser-4.10.3.dist-info → numbers_parser-4.10.5.dist-info}/WHEEL +0 -0
- {numbers_parser-4.10.3.dist-info → numbers_parser-4.10.5.dist-info}/entry_points.txt +0 -0
numbers_parser/constants.py
CHANGED
|
@@ -86,6 +86,7 @@ SUPPORTED_NUMBERS_VERSIONS = [
|
|
|
86
86
|
"13.0",
|
|
87
87
|
"13.1",
|
|
88
88
|
"13.2",
|
|
89
|
+
"14.0",
|
|
89
90
|
]
|
|
90
91
|
|
|
91
92
|
|
|
@@ -134,7 +135,7 @@ DATETIME_FIELD_MAP = OrderedDict(
|
|
|
134
135
|
("SSS", lambda x: str(x.microsecond).zfill(6)[0:3]),
|
|
135
136
|
("SSSS", lambda x: str(x.microsecond).zfill(6)[0:4]),
|
|
136
137
|
("SSSSS", lambda x: str(x.microsecond).zfill(6)[0:5]),
|
|
137
|
-
]
|
|
138
|
+
],
|
|
138
139
|
)
|
|
139
140
|
|
|
140
141
|
|
|
@@ -255,8 +256,7 @@ CUSTOM_FORMATTING_ALLOWED_CELLS = {
|
|
|
255
256
|
|
|
256
257
|
@enum_tools.documentation.document_enum
|
|
257
258
|
class NegativeNumberStyle(IntEnum):
|
|
258
|
-
"""
|
|
259
|
-
How negative numbers are formatted.
|
|
259
|
+
"""How negative numbers are formatted.
|
|
260
260
|
|
|
261
261
|
This enum is used in cell data formats and cell custom formats using the
|
|
262
262
|
`negative_style` keyword argument.
|
|
@@ -274,8 +274,7 @@ class NegativeNumberStyle(IntEnum):
|
|
|
274
274
|
|
|
275
275
|
@enum_tools.documentation.document_enum
|
|
276
276
|
class FractionAccuracy(IntEnum):
|
|
277
|
-
"""
|
|
278
|
-
How fractions are formatted.
|
|
277
|
+
"""How fractions are formatted.
|
|
279
278
|
|
|
280
279
|
This enum is used in cell data formats and cell custom formats using the
|
|
281
280
|
`fraction_accuracy` keyword argument.
|
|
@@ -389,7 +388,7 @@ CONTROL_CELL_TYPE_MAP = {
|
|
|
389
388
|
|
|
390
389
|
@enum_tools.documentation.document_enum
|
|
391
390
|
class PaddingType(IntEnum):
|
|
392
|
-
"""How integers and decimals are padded in custom number formats"""
|
|
391
|
+
"""How integers and decimals are padded in custom number formats."""
|
|
393
392
|
|
|
394
393
|
NONE = 0
|
|
395
394
|
"""No number padding."""
|
numbers_parser/containers.py
CHANGED
|
@@ -8,7 +8,7 @@ from numbers_parser.iwork import IWork, IWorkHandler
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class ItemsList:
|
|
11
|
-
def __init__(self, model, refs, item_class):
|
|
11
|
+
def __init__(self, model, refs, item_class) -> None:
|
|
12
12
|
self._item_name = item_class.__name__.lower()
|
|
13
13
|
self._items = [item_class(model, id) for id in refs]
|
|
14
14
|
|
|
@@ -17,21 +17,24 @@ class ItemsList:
|
|
|
17
17
|
if key < 0:
|
|
18
18
|
key += len(self._items)
|
|
19
19
|
if key >= len(self._items):
|
|
20
|
-
|
|
20
|
+
msg = f"index {key} out of range"
|
|
21
|
+
raise IndexError(msg)
|
|
21
22
|
return self._items[key]
|
|
22
23
|
elif isinstance(key, str):
|
|
23
24
|
for item in self._items:
|
|
24
25
|
if item.name == key:
|
|
25
26
|
return item
|
|
26
|
-
|
|
27
|
+
msg = f"no {self._item_name} named '{key}'"
|
|
28
|
+
raise KeyError(msg)
|
|
27
29
|
else:
|
|
28
30
|
t = type(key).__name__
|
|
29
|
-
|
|
31
|
+
msg = f"invalid index type {t}"
|
|
32
|
+
raise LookupError(msg)
|
|
30
33
|
|
|
31
34
|
def __len__(self) -> int:
|
|
32
35
|
return len(self._items)
|
|
33
36
|
|
|
34
|
-
def __contains__(self, key):
|
|
37
|
+
def __contains__(self, key) -> bool:
|
|
35
38
|
return key.lower() in [x.name.lower() for x in self._items]
|
|
36
39
|
|
|
37
40
|
def append(self, item):
|
|
@@ -62,12 +65,12 @@ class ObjectStore(IWorkHandler):
|
|
|
62
65
|
|
|
63
66
|
def allowed_format(self, extension: str) -> bool:
|
|
64
67
|
"""bool: Return ``True`` if the filename extension is supported by the handler."""
|
|
65
|
-
return
|
|
68
|
+
return extension == ".numbers"
|
|
66
69
|
|
|
67
70
|
def allowed_version(self, version: str) -> bool:
|
|
68
71
|
"""bool: Return ``True`` if the document version is allowed."""
|
|
69
72
|
version = re.sub(r"(\d+)\.(\d+)\.\d+", r"\1.\2", version)
|
|
70
|
-
return
|
|
73
|
+
return version in SUPPORTED_NUMBERS_VERSIONS
|
|
71
74
|
|
|
72
75
|
def new_message_id(self):
|
|
73
76
|
"""Return the next available message ID for object creation."""
|
|
@@ -115,6 +118,9 @@ class ObjectStore(IWorkHandler):
|
|
|
115
118
|
def __getitem__(self, key: str):
|
|
116
119
|
return self._objects[key]
|
|
117
120
|
|
|
121
|
+
def __contains__(self, key: str) -> bool:
|
|
122
|
+
return key in self._objects
|
|
123
|
+
|
|
118
124
|
def __len__(self) -> int:
|
|
119
125
|
return len(self._objects)
|
|
120
126
|
|