numbers-parser 4.4.0__py3-none-any.whl → 4.4.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/_cat_numbers.py +12 -4
- numbers_parser/cell_storage.py +12 -7
- numbers_parser/document.py +8 -0
- numbers_parser/model.py +6 -0
- {numbers_parser-4.4.0.dist-info → numbers_parser-4.4.2.dist-info}/METADATA +1 -1
- {numbers_parser-4.4.0.dist-info → numbers_parser-4.4.2.dist-info}/RECORD +9 -9
- {numbers_parser-4.4.0.dist-info → numbers_parser-4.4.2.dist-info}/LICENSE.rst +0 -0
- {numbers_parser-4.4.0.dist-info → numbers_parser-4.4.2.dist-info}/WHEEL +0 -0
- {numbers_parser-4.4.0.dist-info → numbers_parser-4.4.2.dist-info}/entry_points.txt +0 -0
numbers_parser/_cat_numbers.py
CHANGED
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
import argparse
|
|
2
2
|
import csv
|
|
3
3
|
import logging
|
|
4
|
+
import sigfig
|
|
4
5
|
import sys
|
|
5
6
|
|
|
6
|
-
from numbers_parser import
|
|
7
|
+
from numbers_parser import (
|
|
8
|
+
Document,
|
|
9
|
+
_get_version,
|
|
10
|
+
NumberCell,
|
|
11
|
+
ErrorCell,
|
|
12
|
+
FileFormatError,
|
|
13
|
+
)
|
|
7
14
|
from numbers_parser import __name__ as numbers_parser_name
|
|
8
15
|
from numbers_parser.experimental import _enable_experimental_features
|
|
9
|
-
from numbers_parser.
|
|
10
|
-
from numbers_parser.cell import ErrorCell
|
|
16
|
+
from numbers_parser.constants import MAX_SIGNIFICANT_DIGITS
|
|
11
17
|
|
|
12
18
|
logger = logging.getLogger(numbers_parser_name)
|
|
13
19
|
|
|
@@ -73,12 +79,14 @@ def print_table_names(filename):
|
|
|
73
79
|
|
|
74
80
|
|
|
75
81
|
def cell_as_string(args, cell):
|
|
76
|
-
if
|
|
82
|
+
if isinstance(cell, ErrorCell) and not (args.formulas):
|
|
77
83
|
return "#REF!"
|
|
78
84
|
elif args.formulas and cell.formula is not None:
|
|
79
85
|
return cell.formula
|
|
80
86
|
elif args.formatting and cell.formatted_value is not None:
|
|
81
87
|
return cell.formatted_value
|
|
88
|
+
elif isinstance(cell, NumberCell):
|
|
89
|
+
return sigfig.round(cell.value, sigfigs=MAX_SIGNIFICANT_DIGITS, warn=False)
|
|
82
90
|
elif cell.value is None:
|
|
83
91
|
return ""
|
|
84
92
|
else:
|
numbers_parser/cell_storage.py
CHANGED
|
@@ -529,12 +529,8 @@ def expand_quotes(value: str) -> str:
|
|
|
529
529
|
return formatted_value
|
|
530
530
|
|
|
531
531
|
|
|
532
|
-
# import inspect
|
|
533
|
-
|
|
534
|
-
|
|
535
532
|
def decode_number_format(format, value, name): # noqa: C901
|
|
536
533
|
"""Parse a custom date format string and return a formatted number value"""
|
|
537
|
-
# cell = inspect.currentframe().f_back.f_back.f_back.f_locals["self"]
|
|
538
534
|
custom_format_string = format.custom_format_string
|
|
539
535
|
value *= format.scale_factor
|
|
540
536
|
if "%" in custom_format_string and format.scale_factor == 1.0:
|
|
@@ -614,8 +610,17 @@ def decode_number_format(format, value, name): # noqa: C901
|
|
|
614
610
|
int_pad = None
|
|
615
611
|
int_width = num_integers
|
|
616
612
|
|
|
617
|
-
#
|
|
618
|
-
#
|
|
613
|
+
# value_1 = str(value).split(".")[0]
|
|
614
|
+
# value_2 = sigfig.round(str(value).split(".")[1], sigfig=MAX_SIGNIFICANT_DIGITS, warn=False)
|
|
615
|
+
# int_pad_space_as_zero = (
|
|
616
|
+
# num_integers > 0
|
|
617
|
+
# and num_decimals > 0
|
|
618
|
+
# and int_pad == CellPadding.SPACE
|
|
619
|
+
# and dec_pad is None
|
|
620
|
+
# and num_integers > len(value_1)
|
|
621
|
+
# and num_decimals > len(value_2)
|
|
622
|
+
# )
|
|
623
|
+
int_pad_space_as_zero = False
|
|
619
624
|
|
|
620
625
|
# Formatting integer zero:
|
|
621
626
|
# Blank (padded if needed) if int_pad is SPACE and no decimals
|
|
@@ -637,7 +642,7 @@ def decode_number_format(format, value, name): # noqa: C901
|
|
|
637
642
|
and len(str(decimal)) > num_decimals
|
|
638
643
|
):
|
|
639
644
|
formatted_value = "".rjust(int_width)
|
|
640
|
-
elif int_pad == CellPadding.ZERO:
|
|
645
|
+
elif int_pad_space_as_zero or int_pad == CellPadding.ZERO:
|
|
641
646
|
if format.show_thousands_separator:
|
|
642
647
|
formatted_value = f"{integer:0{int_width},}"
|
|
643
648
|
else:
|
numbers_parser/document.py
CHANGED
|
@@ -224,6 +224,14 @@ class Table:
|
|
|
224
224
|
"""Set the table's name"""
|
|
225
225
|
self._model.table_name(self._table_id, value)
|
|
226
226
|
|
|
227
|
+
@property
|
|
228
|
+
def table_name_enabled(self):
|
|
229
|
+
return self._model.table_name_enabled(self._table_id)
|
|
230
|
+
|
|
231
|
+
@table_name_enabled.setter
|
|
232
|
+
def table_name_enabled(self, enabled):
|
|
233
|
+
self._model.table_name_enabled(self._table_id, enabled)
|
|
234
|
+
|
|
227
235
|
@property
|
|
228
236
|
def num_header_rows(self) -> int:
|
|
229
237
|
"""Return the number of header rows"""
|
numbers_parser/model.py
CHANGED
|
@@ -321,6 +321,12 @@ class _NumbersModel:
|
|
|
321
321
|
else:
|
|
322
322
|
self.objects[table_id].table_name = value
|
|
323
323
|
|
|
324
|
+
def table_name_enabled(self, table_id: int, enabled: bool = None):
|
|
325
|
+
if enabled is not None:
|
|
326
|
+
self.objects[table_id].table_name_enabled = enabled
|
|
327
|
+
else:
|
|
328
|
+
return self.objects[table_id].table_name_enabled
|
|
329
|
+
|
|
324
330
|
@lru_cache(maxsize=None)
|
|
325
331
|
def table_tiles(self, table_id):
|
|
326
332
|
bds = self.objects[table_id].base_data_store
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
numbers_parser/__init__.py,sha256=E2l5g-HQ94PIroUFDsLl3y7NWAW3NByA0MNe7ffIY-M,2081
|
|
2
|
-
numbers_parser/_cat_numbers.py,sha256=
|
|
2
|
+
numbers_parser/_cat_numbers.py,sha256=aLRSIp6uTk5rNsuHsRni84t5rXfTQqu3sVeaWI27u3U,4506
|
|
3
3
|
numbers_parser/_unpack_numbers.py,sha256=qm9h-yAR9Z2gfqaJidknK2tqZ3_MmCla-89Uhf-pbNs,5784
|
|
4
4
|
numbers_parser/bullets.py,sha256=aTfRM0-xP1Ybl13dT2x7Izm-tsAd-IyJq8PaoXQgXno,2616
|
|
5
5
|
numbers_parser/cell.py,sha256=cc5qOTzIx_cAD5qQpZFt9LX7qtkkW6Pv7cWzH7O-Cf0,25629
|
|
6
|
-
numbers_parser/cell_storage.py,sha256=
|
|
6
|
+
numbers_parser/cell_storage.py,sha256=0LLxQDhRFex-UHFxWRvHqGaj_BYRZIVYRK8bxxtNz5I,29077
|
|
7
7
|
numbers_parser/constants.py,sha256=MZZi0eyf_sZ_xwrAhD3xO0jmfYnrtVATMsj4uz60xfA,1900
|
|
8
8
|
numbers_parser/containers.py,sha256=Sv3onjaCz1oKjD8BWq6WwZ2_TQMHxVB2iDm716gh5ZU,4239
|
|
9
9
|
numbers_parser/data/empty.numbers,sha256=8JOp035V-p2ff9_Wao7mLcYvb6_if6O2cus_esjVA9k,90316
|
|
10
|
-
numbers_parser/document.py,sha256=
|
|
10
|
+
numbers_parser/document.py,sha256=m1lFZwwTaH3YsDHtK5LuLc1zCwXh0BYzQXUktIWNpdE,20685
|
|
11
11
|
numbers_parser/exceptions.py,sha256=2aHsiWpEC9IimMgdsnffDFh9jrTHE6Ih7rYzvIhD50s,663
|
|
12
12
|
numbers_parser/experimental.py,sha256=WARjTa-2ePb8Ga8Q6oDP6EJCs12ofLRF2YpwzUu66ZI,374
|
|
13
13
|
numbers_parser/file.py,sha256=E6Rn2IjzNQr_rrUNXFSyjV9cqkvwUS6SPllQ_GZVbqs,3683
|
|
@@ -49,10 +49,10 @@ numbers_parser/generated/fontmap.py,sha256=YlM-cbROvYiPSAZh3279Y3DGABgcbZtKdEm62
|
|
|
49
49
|
numbers_parser/generated/functionmap.py,sha256=VdZo0ERMYONcrnJFwABcSCHb8pjA4wY2ogt8Janz57M,6082
|
|
50
50
|
numbers_parser/iwafile.py,sha256=hu-6ZooxzqMv36hzc32FTCegPdPIUjgNQksBaEyA7AQ,11868
|
|
51
51
|
numbers_parser/mapping.py,sha256=jDrhxarZpIlsCjWYbsoS3tjZlGa3toFj2LPx135cLOM,32117
|
|
52
|
-
numbers_parser/model.py,sha256=
|
|
52
|
+
numbers_parser/model.py,sha256=m1mca8o4tao1G6VuUPTx8YcXCyKWiy63yoxFwXFyOQE,91399
|
|
53
53
|
numbers_parser/numbers_uuid.py,sha256=mL17qYC_q7fuShMscRK0TegirSiG80gor_TlI06pac0,2642
|
|
54
|
-
numbers_parser-4.4.
|
|
55
|
-
numbers_parser-4.4.
|
|
56
|
-
numbers_parser-4.4.
|
|
57
|
-
numbers_parser-4.4.
|
|
58
|
-
numbers_parser-4.4.
|
|
54
|
+
numbers_parser-4.4.2.dist-info/LICENSE.rst,sha256=8vTa1-5KSdHrTpU9rlheO5005EWReEPMpjV7BjSaMc4,1050
|
|
55
|
+
numbers_parser-4.4.2.dist-info/METADATA,sha256=6p_ckCyqzDyczmXt-A7MsOLYP4sCJRlU9j7MCYVVIy8,24433
|
|
56
|
+
numbers_parser-4.4.2.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
|
|
57
|
+
numbers_parser-4.4.2.dist-info/entry_points.txt,sha256=V91uB9vBPxf3eCY1h-0syv21imYCT0MJfMxf87DmwIk,115
|
|
58
|
+
numbers_parser-4.4.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|