numbers-parser 4.14.1__py3-none-any.whl → 4.14.2__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 +3 -3
- numbers_parser/_cat_numbers.py +10 -11
- numbers_parser/_csv2numbers.py +13 -14
- numbers_parser/_unpack_numbers.py +4 -4
- numbers_parser/cell.py +257 -229
- numbers_parser/constants.py +6 -3
- numbers_parser/containers.py +11 -10
- numbers_parser/document.py +196 -149
- numbers_parser/exceptions.py +1 -8
- numbers_parser/formula.py +28 -30
- numbers_parser/generated/TSKArchives_pb2.py +92 -92
- numbers_parser/generated/TSSArchives_pb2.py +36 -36
- numbers_parser/generated/TSWPCommandArchives_pb2.py +99 -99
- numbers_parser/generated/fontmap.py +16 -10
- numbers_parser/generated/mapping.py +0 -1
- numbers_parser/iwafile.py +16 -16
- numbers_parser/iwork.py +32 -17
- numbers_parser/model.py +222 -210
- numbers_parser/numbers_cache.py +6 -7
- numbers_parser/numbers_uuid.py +4 -1
- numbers_parser/roman.py +21 -7
- {numbers_parser-4.14.1.dist-info → numbers_parser-4.14.2.dist-info}/METADATA +14 -1
- {numbers_parser-4.14.1.dist-info → numbers_parser-4.14.2.dist-info}/RECORD +26 -26
- {numbers_parser-4.14.1.dist-info → numbers_parser-4.14.2.dist-info}/LICENSE.rst +0 -0
- {numbers_parser-4.14.1.dist-info → numbers_parser-4.14.2.dist-info}/WHEEL +0 -0
- {numbers_parser-4.14.1.dist-info → numbers_parser-4.14.2.dist-info}/entry_points.txt +0 -0
numbers_parser/numbers_cache.py
CHANGED
|
@@ -10,7 +10,8 @@ class Cacheable:
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
def cache(num_args=1):
|
|
13
|
-
"""
|
|
13
|
+
"""
|
|
14
|
+
Decorator to memoize a class method using a precise subset of
|
|
14
15
|
its arguments.
|
|
15
16
|
"""
|
|
16
17
|
|
|
@@ -21,10 +22,9 @@ def cache(num_args=1):
|
|
|
21
22
|
key = ".".join([str(args[x]) for x in range(num_args)])
|
|
22
23
|
if key in self._cache[method]:
|
|
23
24
|
return self._cache[method][key]
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
return value
|
|
25
|
+
value = func(self, *args, **kwargs)
|
|
26
|
+
self._cache[method][key] = value
|
|
27
|
+
return value
|
|
28
28
|
|
|
29
29
|
def inner_no_args(self):
|
|
30
30
|
method = func.__name__
|
|
@@ -34,7 +34,6 @@ def cache(num_args=1):
|
|
|
34
34
|
|
|
35
35
|
if num_args == 0:
|
|
36
36
|
return inner_no_args
|
|
37
|
-
|
|
38
|
-
return inner_multi_args
|
|
37
|
+
return inner_multi_args
|
|
39
38
|
|
|
40
39
|
return cache_decorator
|
numbers_parser/numbers_uuid.py
CHANGED
|
@@ -71,5 +71,8 @@ class NumbersUUID(UUID):
|
|
|
71
71
|
uuid_w1 = (self.int >> 32) & 0xFFFFFFFF
|
|
72
72
|
uuid_w0 = self.int & 0xFFFFFFFF
|
|
73
73
|
return TSPMessages.CFUUIDArchive(
|
|
74
|
-
uuid_w3=uuid_w3,
|
|
74
|
+
uuid_w3=uuid_w3,
|
|
75
|
+
uuid_w2=uuid_w2,
|
|
76
|
+
uuid_w1=uuid_w1,
|
|
77
|
+
uuid_w0=uuid_w0,
|
|
75
78
|
)
|
numbers_parser/roman.py
CHANGED
|
@@ -4,15 +4,29 @@ def to_roman(value: int) -> str:
|
|
|
4
4
|
return "N"
|
|
5
5
|
|
|
6
6
|
if value < 1 or value > 3999:
|
|
7
|
-
|
|
7
|
+
msg = "Number out of range for Roman numerals"
|
|
8
|
+
raise ValueError(msg)
|
|
8
9
|
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
roman_map = {
|
|
11
|
+
1000: "M",
|
|
12
|
+
900: "CM",
|
|
13
|
+
500: "D",
|
|
14
|
+
400: "CD",
|
|
15
|
+
100: "C",
|
|
16
|
+
90: "XC",
|
|
17
|
+
50: "L",
|
|
18
|
+
40: "XL",
|
|
19
|
+
10: "X",
|
|
20
|
+
9: "IX",
|
|
21
|
+
5: "V",
|
|
22
|
+
4: "IV",
|
|
23
|
+
1: "I",
|
|
24
|
+
}
|
|
11
25
|
|
|
12
26
|
roman_num = ""
|
|
13
|
-
for
|
|
14
|
-
while value >=
|
|
15
|
-
roman_num +=
|
|
16
|
-
value -=
|
|
27
|
+
for int_value, roman_symbol in roman_map.items():
|
|
28
|
+
while value >= int_value:
|
|
29
|
+
roman_num += roman_symbol
|
|
30
|
+
value -= int_value
|
|
17
31
|
|
|
18
32
|
return roman_num
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: numbers-parser
|
|
3
|
-
Version: 4.14.
|
|
3
|
+
Version: 4.14.2
|
|
4
4
|
Summary: Read and write Apple Numbers spreadsheets
|
|
5
5
|
Home-page: https://github.com/masaccio/numbers-parser
|
|
6
6
|
License: MIT
|
|
@@ -128,6 +128,18 @@ Cells are objects with a common base class of `Cell`. All cell types
|
|
|
128
128
|
have a property `value` which returns the contents of the cell as a
|
|
129
129
|
python datatype. Available cell types are:
|
|
130
130
|
|
|
131
|
+
| Cell type | value type | Additional properties |
|
|
132
|
+
|--------------|----------------------|--------------------------------------------------------------------------------------------------------|
|
|
133
|
+
| NumberCell | `float` | |
|
|
134
|
+
| TextCell | `str` | |
|
|
135
|
+
| RichTextCell | `str` | See [Rich text](https://masaccio.github.io/numbers-parser/api/cells.html#numbers_parser.RichTextCell) |
|
|
136
|
+
| EmptyCell | `None` | |
|
|
137
|
+
| BoolCell | `bool` | |
|
|
138
|
+
| DateCell | `datetime.datetime` | |
|
|
139
|
+
| DurationCell | `datetime.timedelta` | |
|
|
140
|
+
| ErrorCell | `None` | |
|
|
141
|
+
| MergedCell | `None` | See [Merged cells](https://masaccio.github.io/numbers-parser/api/cells.html#numbers_parser.MergedCell) |
|
|
142
|
+
|
|
131
143
|
Cell references can be either zero-offset row/column integers or an
|
|
132
144
|
Excel/Numbers A1 notation. Where cell values are not `None` the
|
|
133
145
|
property `formatted_value` returns the cell value as a `str` as
|
|
@@ -489,6 +501,7 @@ The following limitations are expected to always remain:
|
|
|
489
501
|
(see [issue 69](https://github.com/masaccio/numbers-parser/issues/69) for details).
|
|
490
502
|
- Password-encrypted documents cannot be opened. You must first re-save without
|
|
491
503
|
a password to read (see [issue 88](https://github.com/masaccio/numbers-parser/issues/88) for details).
|
|
504
|
+
A UnsupportedError exception is raised when such documents are opened.
|
|
492
505
|
|
|
493
506
|
## License
|
|
494
507
|
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
numbers_parser/__init__.py,sha256=
|
|
2
|
-
numbers_parser/_cat_numbers.py,sha256=
|
|
3
|
-
numbers_parser/_csv2numbers.py,sha256=
|
|
4
|
-
numbers_parser/_unpack_numbers.py,sha256=
|
|
1
|
+
numbers_parser/__init__.py,sha256=a5CkU3_Fn41rHS0DN8u8se0iz2JhvmggRHmSh-akn5o,1428
|
|
2
|
+
numbers_parser/_cat_numbers.py,sha256=ISBoHUvQv-_CG_yyx2IHvdj2OG3l0ejl2qk2ZV3y9Zk,4737
|
|
3
|
+
numbers_parser/_csv2numbers.py,sha256=R_13gVe_RfLWLOv-DzVJ60xkqhdOA-RKna-Ce5ud4V8,14624
|
|
4
|
+
numbers_parser/_unpack_numbers.py,sha256=KvY04wqTH6JPwZWHAW1VlcY1HZQvXq-U5THEG7Au0mY,7045
|
|
5
5
|
numbers_parser/bullets.py,sha256=CKMjSYRzLM123wQNDG8B5vfodRLjW5UOc2HDPlvfNr4,2637
|
|
6
|
-
numbers_parser/cell.py,sha256=
|
|
7
|
-
numbers_parser/constants.py,sha256=
|
|
8
|
-
numbers_parser/containers.py,sha256=
|
|
6
|
+
numbers_parser/cell.py,sha256=lx3RlIh6UohlhmnyoyHWf7Tq6XNXvF--C52sWHDBb3A,76583
|
|
7
|
+
numbers_parser/constants.py,sha256=JyTKQCnmEP6eNUQpk7eWQYlygTgUhVD7G6Std6426xs,10322
|
|
8
|
+
numbers_parser/containers.py,sha256=SBD99t0ABHraGA8729jPXy5VcRHT21U_WM3ijOIiwd4,4886
|
|
9
9
|
numbers_parser/currencies.py,sha256=8k4a3WKmDoHeurkDICymHX13N7ManHSTaka_JNXCZYA,3767
|
|
10
10
|
numbers_parser/data/empty.numbers,sha256=zQjVqcNGN-xNZh51_eAxD8Zxmxh88Sd7kpf4JygUA_E,90601
|
|
11
|
-
numbers_parser/document.py,sha256=
|
|
12
|
-
numbers_parser/exceptions.py,sha256=
|
|
11
|
+
numbers_parser/document.py,sha256=j1G9xH9Z7UndsQBSBRCUMLHtc4I77X6rJVOcuV4IZvQ,59094
|
|
12
|
+
numbers_parser/exceptions.py,sha256=51yJTYm0X2am4YK-F6sVYOHmlYrBex_e4lYtbmiQX3I,611
|
|
13
13
|
numbers_parser/experimental.py,sha256=WARjTa-2ePb8Ga8Q6oDP6EJCs12ofLRF2YpwzUu66ZI,374
|
|
14
|
-
numbers_parser/formula.py,sha256=
|
|
14
|
+
numbers_parser/formula.py,sha256=yRGSrd0Jrv_pgwtfokYRI2rZwUyTMYIV_Icm_8dj_P8,10759
|
|
15
15
|
numbers_parser/generated/TNArchives_pb2.py,sha256=Tq1UC2Ml1dzAQFIrz3Om-sGI903FBZmlN3GgYQNt4a8,15931
|
|
16
16
|
numbers_parser/generated/TNArchives_sos_pb2.py,sha256=AYI1X5t5Gb4l941jXlHEY0v97ToIze0bSYBR7KQmS0A,1215
|
|
17
17
|
numbers_parser/generated/TNCommandArchives_pb2.py,sha256=my5CgnWmqHa5p0NFf-aUC8aqEPz3-pXXlyz4UJmZKZE,18378
|
|
@@ -32,11 +32,11 @@ numbers_parser/generated/TSCKArchives_sos_pb2.py,sha256=2zK3-z-pe1xrY1qut28VQjHR
|
|
|
32
32
|
numbers_parser/generated/TSDArchives_pb2.py,sha256=G5vUxZbx66eTdNgxbagUQmo6N7pvfoXwU07jBgv90cU,39093
|
|
33
33
|
numbers_parser/generated/TSDArchives_sos_pb2.py,sha256=Q2MYAXjAW-PGE3FY8kFH89rry9PPUQv7DS956wymFwo,6022
|
|
34
34
|
numbers_parser/generated/TSDCommandArchives_pb2.py,sha256=zMHr3_Koa9vGmkl2PMTnMptUCY2iOe1zJOWN6re2jQs,29291
|
|
35
|
-
numbers_parser/generated/TSKArchives_pb2.py,sha256=
|
|
35
|
+
numbers_parser/generated/TSKArchives_pb2.py,sha256=D5EaP8aTC2VstJo7XfsGQ1VNzPPDRe34FXknSR5yUb8,26357
|
|
36
36
|
numbers_parser/generated/TSPArchiveMessages_pb2.py,sha256=5Th08Q19AOsMEMggvM9fda1StJjV8LTDDI5x7pY6aM8,17950
|
|
37
37
|
numbers_parser/generated/TSPDatabaseMessages_pb2.py,sha256=_jvq890xBQpSDcYOKgII30XlxukPBRZBu0kkRpbJ-z0,2024
|
|
38
38
|
numbers_parser/generated/TSPMessages_pb2.py,sha256=LBHRhNnQdDu226sh3gK_AOjbO3LDkGCWpVi1wzf7emA,13032
|
|
39
|
-
numbers_parser/generated/TSSArchives_pb2.py,sha256=
|
|
39
|
+
numbers_parser/generated/TSSArchives_pb2.py,sha256=DNqQYFogujTOLIIW4B4_tTTLdGz-Y-kmkxQOhWLmMmg,10067
|
|
40
40
|
numbers_parser/generated/TSSArchives_sos_pb2.py,sha256=FAhtvQ9TBg18AcIk4HwGCreNWlEu3k_kK_9jRVsh7FM,2842
|
|
41
41
|
numbers_parser/generated/TSTArchives_pb2.py,sha256=PRNF8aceuLyEYmJunUG-R8PIa4ruWnKZThOy11o59Z4,88236
|
|
42
42
|
numbers_parser/generated/TSTArchives_sos_pb2.py,sha256=JxiMXSdTH5VJo-c5zDdD_tzGQCTrUDE2K0YP_x-zh84,12597
|
|
@@ -44,19 +44,19 @@ numbers_parser/generated/TSTCommandArchives_pb2.py,sha256=LEyGJBOLdhxVarepxGfHpr
|
|
|
44
44
|
numbers_parser/generated/TSTStylePropertyArchiving_pb2.py,sha256=0ADsIwTk4GcTeQJRhYxEEjsD_SuLEOSUaGYdHnsO9CA,12415
|
|
45
45
|
numbers_parser/generated/TSWPArchives_pb2.py,sha256=6bGFEo-lABOA8l1PbDG96GVd1vmB9PMaYFiqAiDsHdk,55432
|
|
46
46
|
numbers_parser/generated/TSWPArchives_sos_pb2.py,sha256=poJ49WA4JjZsHpmROyv4jFl2xGpJy6pTRCaJQZ5ZGr0,29114
|
|
47
|
-
numbers_parser/generated/TSWPCommandArchives_pb2.py,sha256
|
|
47
|
+
numbers_parser/generated/TSWPCommandArchives_pb2.py,sha256=-wQpDqveA64l_V-0jXyMkycrE_L7e9zXYzw9JfirsbE,25595
|
|
48
48
|
numbers_parser/generated/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
49
|
-
numbers_parser/generated/fontmap.py,sha256=
|
|
49
|
+
numbers_parser/generated/fontmap.py,sha256=ORrf3PtxG_gfT1t8R77yXjXBlIefRjvUCBUuG5RCTh8,23806
|
|
50
50
|
numbers_parser/generated/functionmap.py,sha256=9OLSNlOVWxRO9xS8QZmK1HURpc11c1B5nIAAecUwA98,6082
|
|
51
|
-
numbers_parser/generated/mapping.py,sha256=
|
|
52
|
-
numbers_parser/iwafile.py,sha256=
|
|
53
|
-
numbers_parser/iwork.py,sha256=
|
|
54
|
-
numbers_parser/model.py,sha256=
|
|
55
|
-
numbers_parser/numbers_cache.py,sha256=
|
|
56
|
-
numbers_parser/numbers_uuid.py,sha256=
|
|
57
|
-
numbers_parser/roman.py,sha256=
|
|
58
|
-
numbers_parser-4.14.
|
|
59
|
-
numbers_parser-4.14.
|
|
60
|
-
numbers_parser-4.14.
|
|
61
|
-
numbers_parser-4.14.
|
|
62
|
-
numbers_parser-4.14.
|
|
51
|
+
numbers_parser/generated/mapping.py,sha256=bJS_CK3AXXMFUSoSWbeDt6VTbCqIfX9OnTKLr0qDezA,32288
|
|
52
|
+
numbers_parser/iwafile.py,sha256=nVwCcXvx8TgX-DkYqSbcJQzKyXR1Z8_y547XeY7Y-fs,11948
|
|
53
|
+
numbers_parser/iwork.py,sha256=Qx1Izf9cfQKnLTDiJyeCOsmL9PSsfV-XOf0Kkb2oPMo,9396
|
|
54
|
+
numbers_parser/model.py,sha256=45twYfR1xtQbVkvcGO4c-jurS5ZqKPGM-ltVp1uJJhs,107011
|
|
55
|
+
numbers_parser/numbers_cache.py,sha256=wJHEGQfCbRvX94xL2Uehlz5UjTr8n4nBgutCw_4Dbis,1098
|
|
56
|
+
numbers_parser/numbers_uuid.py,sha256=d5-Hwu-lWbBPuIP6vybNBuVzzja5HeuKsgK_PvMSw9c,2735
|
|
57
|
+
numbers_parser/roman.py,sha256=CErv1uRp8eE9Bsuh_QsrBAzKFsfHSEs8CHpfFW0Gd70,725
|
|
58
|
+
numbers_parser-4.14.2.dist-info/LICENSE.rst,sha256=8vTa1-5KSdHrTpU9rlheO5005EWReEPMpjV7BjSaMc4,1050
|
|
59
|
+
numbers_parser-4.14.2.dist-info/METADATA,sha256=Wq_ehqr9iqT9Kdv6BTnpjsmXUCJmU3v7UUIejTcbp3I,23003
|
|
60
|
+
numbers_parser-4.14.2.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
61
|
+
numbers_parser-4.14.2.dist-info/entry_points.txt,sha256=8VSxWAamOAvVcKS6iza4BQtYe03nga552HMLcVY-MBc,160
|
|
62
|
+
numbers_parser-4.14.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|