numbers-parser 4.4.0__tar.gz → 4.4.2__tar.gz

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.
Files changed (57) hide show
  1. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/PKG-INFO +1 -1
  2. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/pyproject.toml +1 -1
  3. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/_cat_numbers.py +12 -4
  4. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/cell_storage.py +12 -7
  5. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/document.py +8 -0
  6. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/model.py +6 -0
  7. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/LICENSE.rst +0 -0
  8. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/README.md +0 -0
  9. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/__init__.py +0 -0
  10. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/_unpack_numbers.py +0 -0
  11. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/bullets.py +0 -0
  12. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/cell.py +0 -0
  13. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/constants.py +0 -0
  14. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/containers.py +0 -0
  15. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/data/empty.numbers +0 -0
  16. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/exceptions.py +0 -0
  17. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/experimental.py +0 -0
  18. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/file.py +0 -0
  19. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/formula.py +0 -0
  20. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/generated/TNArchives_pb2.py +0 -0
  21. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/generated/TNArchives_sos_pb2.py +0 -0
  22. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/generated/TNCommandArchives_pb2.py +0 -0
  23. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/generated/TNCommandArchives_sos_pb2.py +0 -0
  24. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/generated/TSAArchives_pb2.py +0 -0
  25. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/generated/TSAArchives_sos_pb2.py +0 -0
  26. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/generated/TSACommandArchives_sos_pb2.py +0 -0
  27. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/generated/TSCEArchives_pb2.py +0 -0
  28. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/generated/TSCH3DArchives_pb2.py +0 -0
  29. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/generated/TSCHArchives_Common_pb2.py +0 -0
  30. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/generated/TSCHArchives_GEN_pb2.py +0 -0
  31. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/generated/TSCHArchives_pb2.py +0 -0
  32. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/generated/TSCHArchives_sos_pb2.py +0 -0
  33. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/generated/TSCHCommandArchives_pb2.py +0 -0
  34. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/generated/TSCHPreUFFArchives_pb2.py +0 -0
  35. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/generated/TSDArchives_pb2.py +0 -0
  36. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/generated/TSDArchives_sos_pb2.py +0 -0
  37. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/generated/TSDCommandArchives_pb2.py +0 -0
  38. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/generated/TSKArchives_pb2.py +0 -0
  39. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/generated/TSKArchives_sos_pb2.py +0 -0
  40. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/generated/TSPArchiveMessages_pb2.py +0 -0
  41. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/generated/TSPDatabaseMessages_pb2.py +0 -0
  42. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/generated/TSPMessages_pb2.py +0 -0
  43. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/generated/TSSArchives_pb2.py +0 -0
  44. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/generated/TSSArchives_sos_pb2.py +0 -0
  45. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/generated/TSTArchives_pb2.py +0 -0
  46. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/generated/TSTArchives_sos_pb2.py +0 -0
  47. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/generated/TSTCommandArchives_pb2.py +0 -0
  48. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/generated/TSTStylePropertyArchiving_pb2.py +0 -0
  49. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/generated/TSWPArchives_pb2.py +0 -0
  50. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/generated/TSWPArchives_sos_pb2.py +0 -0
  51. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/generated/TSWPCommandArchives_pb2.py +0 -0
  52. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/generated/__init__.py +0 -0
  53. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/generated/fontmap.py +0 -0
  54. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/generated/functionmap.py +0 -0
  55. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/iwafile.py +0 -0
  56. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/mapping.py +0 -0
  57. {numbers_parser-4.4.0 → numbers_parser-4.4.2}/src/numbers_parser/numbers_uuid.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: numbers-parser
3
- Version: 4.4.0
3
+ Version: 4.4.2
4
4
  Summary: Read and write Apple Numbers spreadsheets
5
5
  Home-page: https://github.com/masaccio/numbers-parser
6
6
  License: MIT
@@ -12,7 +12,7 @@ name = "numbers-parser"
12
12
  packages = [{include = "numbers_parser", from = "src"}]
13
13
  readme = "README.md"
14
14
  repository = "https://github.com/masaccio/numbers-parser"
15
- version = "4.4.0"
15
+ version = "4.4.2"
16
16
 
17
17
  [tool.poetry.scripts]
18
18
  cat-numbers = "numbers_parser._cat_numbers:main"
@@ -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 Document, _get_version
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.exceptions import FileFormatError
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 type(cell) == ErrorCell and not (args.formulas):
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:
@@ -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
- # if num_integers == 0 and dec_pad == CellPadding.SPACE:
618
- # dec_pad = CellPadding.ZERO
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:
@@ -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"""
@@ -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
File without changes