numbers-parser 4.14.1__py3-none-any.whl → 4.14.3__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.
@@ -10,7 +10,8 @@ class Cacheable:
10
10
 
11
11
 
12
12
  def cache(num_args=1):
13
- """Decorator to memoize a class method using a precise subset of
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
- else:
25
- value = func(self, *args, **kwargs)
26
- self._cache[method][key] = value
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
- else:
38
- return inner_multi_args
37
+ return inner_multi_args
39
38
 
40
39
  return cache_decorator
@@ -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, uuid_w2=uuid_w2, uuid_w1=uuid_w1, uuid_w0=uuid_w0,
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
- raise ValueError("Number out of range for Roman numerals")
7
+ msg = "Number out of range for Roman numerals"
8
+ raise ValueError(msg)
8
9
 
9
- int_values = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]
10
- roman_symbols = ["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"]
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 i in range(len(int_values)):
14
- while value >= int_values[i]:
15
- roman_num += roman_symbols[i]
16
- value -= int_values[i]
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.1
3
+ Version: 4.14.3
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
@@ -260,7 +272,7 @@ Cell formats are changed using
260
272
  ```python
261
273
  table.set_cell_formatting(
262
274
  "C1",
263
- "date",
275
+ "datetime",
264
276
  date_time_format="EEEE, d MMMM yyyy"
265
277
  )
266
278
  table.set_cell_formatting(
@@ -283,7 +295,7 @@ before assigning it to cells using
283
295
  ```python
284
296
  long_date = doc.add_custom_format(
285
297
  name="Long Date",
286
- type="date",
298
+ type="datetime",
287
299
  date_time_format="EEEE, d MMMM yyyy"
288
300
  )
289
301
  table.set_cell_formatting("C1", "custom", format=long_date)
@@ -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=kJuCi4EL9F9zxrIBLYPwwq-qYN6brxOXmMEUJYVBpsY,1423
2
- numbers_parser/_cat_numbers.py,sha256=qU1zuM1WT7t64qfnTNz5rJ56gc-KZlVMrUPod-DRKBg,4710
3
- numbers_parser/_csv2numbers.py,sha256=MZ95S8EpKYEbaa2CYa7pm0OiyLTBtYwyBjJnnDf5pzk,14676
4
- numbers_parser/_unpack_numbers.py,sha256=4fUbVTPpe_ojG8_4LbmhriIuBTO1HMSdZqAp5q2qidw,7013
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=Esi3zeRcMspDaty3_bD0FZF1LIZTzV3bD85XygM1SoM,76257
7
- numbers_parser/constants.py,sha256=L9S3iAPrJhlU6qRHwnQTwwgmv8nQdUy3De7CVCOeBEI,10284
8
- numbers_parser/containers.py,sha256=j0FhaXPUG5YSRK5_3WIxXQOeckHVu24KMlYetWIZ_Xg,4882
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=fqjMgvTOdO5MbEoPJ9MemCcET3ozzhCcplfUr1wD7ek,59184
12
- numbers_parser/exceptions.py,sha256=0Jnmw06YlGvYcvzqc2wiR2Y4eAgvFJLpf0tFrsmlyPU,607
11
+ numbers_parser/document.py,sha256=oOw8Gag6z_lJyAhI3WcYi-RZb2k7N4I0Nj4wi1aLMFM,59114
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=Su912uGTPfxtnJVy1sCmWaG-K7XskZsLFKurC6S3h1o,10575
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=zh8bXgKdaHBNVHQ7rKf5PpV0vOmQG6HU9cY3BkEuSPk,26162
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=7HGR32kgG6arl4uu08Tuop7brOFGgcRJIc0WKLbqCHI,9980
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=JmtH0x8SOh7PdhNtN2LfpGhmxJukzhXtJIIUACp-z2Y,25581
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=tsL2y56Yyu3R6BSqco2_fxtc-GOKz21lmundPmodFrY,23861
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=xt1NaZtTse1OX3vBizENKkWl-0OgNb4SMJ0Uo-rRz0U,32342
52
- numbers_parser/iwafile.py,sha256=4_MMtHdWMAfIzwODyaM7DsWKh-8yJ2blTfbues8sbdI,11915
53
- numbers_parser/iwork.py,sha256=CXXM797MqcIokovrIBAx--LNG7tIVpKqeBwR4V2OrzQ,9141
54
- numbers_parser/model.py,sha256=hrbrZ_F8s09eC0iOM1HN4Owe610wr0c3xyo9PaGJQak,106923
55
- numbers_parser/numbers_cache.py,sha256=1ghEBghQAYFpPiEeOtb74i016mXc039v1pOubbqvaLs,1141
56
- numbers_parser/numbers_uuid.py,sha256=q0IbHFKuBXC7MnZN3g55dgCVKOLD-4SO4MdXeN6dt0g,2699
57
- numbers_parser/roman.py,sha256=QcJ9DTmLJacMm7u4PBw8sEgqL3j0XtIJesgN4KuGL8I,613
58
- numbers_parser-4.14.1.dist-info/LICENSE.rst,sha256=8vTa1-5KSdHrTpU9rlheO5005EWReEPMpjV7BjSaMc4,1050
59
- numbers_parser-4.14.1.dist-info/METADATA,sha256=cFC6GmPjzWv1lvBKsTjUUry-iMOIzIBLXK5MKdXfkL0,21334
60
- numbers_parser-4.14.1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
61
- numbers_parser-4.14.1.dist-info/entry_points.txt,sha256=8VSxWAamOAvVcKS6iza4BQtYe03nga552HMLcVY-MBc,160
62
- numbers_parser-4.14.1.dist-info/RECORD,,
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=WnTBqbeLzVerYMyJMJeTXJQhqsdCAJAFL-1_aVInaL4,107056
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.3.dist-info/LICENSE.rst,sha256=8vTa1-5KSdHrTpU9rlheO5005EWReEPMpjV7BjSaMc4,1050
59
+ numbers_parser-4.14.3.dist-info/METADATA,sha256=yt-OKVPCgzxxAywX6ToXdFjGAG-JjtzCG2Tope_wbzM,23011
60
+ numbers_parser-4.14.3.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
61
+ numbers_parser-4.14.3.dist-info/entry_points.txt,sha256=8VSxWAamOAvVcKS6iza4BQtYe03nga552HMLcVY-MBc,160
62
+ numbers_parser-4.14.3.dist-info/RECORD,,