numbers-parser 4.14.3__tar.gz → 4.14.4__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.
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/PKG-INFO +9 -26
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/README.md +6 -23
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/pyproject.toml +2 -2
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/_cat_numbers.py +15 -6
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/model.py +4 -1
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/LICENSE.rst +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/__init__.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/_csv2numbers.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/_unpack_numbers.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/bullets.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/cell.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/constants.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/containers.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/currencies.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/data/empty.numbers +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/document.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/exceptions.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/experimental.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/formula.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TNArchives_pb2.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TNArchives_sos_pb2.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TNCommandArchives_pb2.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TNCommandArchives_sos_pb2.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSAArchives_pb2.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSAArchives_sos_pb2.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSACommandArchives_sos_pb2.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSCEArchives_pb2.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSCH3DArchives_pb2.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSCHArchives_Common_pb2.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSCHArchives_GEN_pb2.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSCHArchives_pb2.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSCHArchives_sos_pb2.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSCHCommandArchives_pb2.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSCHPreUFFArchives_pb2.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSCKArchives_pb2.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSCKArchives_sos_pb2.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSDArchives_pb2.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSDArchives_sos_pb2.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSDCommandArchives_pb2.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSKArchives_pb2.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSPArchiveMessages_pb2.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSPDatabaseMessages_pb2.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSPMessages_pb2.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSSArchives_pb2.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSSArchives_sos_pb2.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSTArchives_pb2.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSTArchives_sos_pb2.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSTCommandArchives_pb2.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSTStylePropertyArchiving_pb2.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSWPArchives_pb2.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSWPArchives_sos_pb2.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSWPCommandArchives_pb2.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/__init__.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/fontmap.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/functionmap.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/mapping.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/iwafile.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/iwork.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/numbers_cache.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/numbers_uuid.py +0 -0
- {numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/roman.py +0 -0
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
2
|
Name: numbers-parser
|
|
3
|
-
Version: 4.14.
|
|
3
|
+
Version: 4.14.4
|
|
4
4
|
Summary: Read and write Apple Numbers spreadsheets
|
|
5
|
-
Home-page: https://github.com/masaccio/numbers-parser
|
|
6
5
|
License: MIT
|
|
7
6
|
Author: Jon Connell
|
|
8
7
|
Author-email: python@figsandfudge.com
|
|
@@ -14,6 +13,7 @@ Classifier: Programming Language :: Python :: 3.9
|
|
|
14
13
|
Classifier: Programming Language :: Python :: 3.10
|
|
15
14
|
Classifier: Programming Language :: Python :: 3.11
|
|
16
15
|
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
17
17
|
Classifier: Topic :: Office/Business :: Financial :: Spreadsheet
|
|
18
18
|
Requires-Dist: compact-json (>=1.1.3,<2.0.0)
|
|
19
19
|
Requires-Dist: enum-tools (>=0.11)
|
|
@@ -40,38 +40,20 @@ with earlier versions of Python.
|
|
|
40
40
|
|
|
41
41
|
## Installation
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
python3 -m pip install numbers-parser
|
|
45
|
-
```
|
|
43
|
+
A pre-requisite for this package is [python-snappy](https://pypi.org/project/python-snappy/) which will be installed by Python automatically, but python-snappy also requires binary libraries for snappy compression.
|
|
46
44
|
|
|
47
|
-
|
|
48
|
-
which will be installed by Python automatically, but python-snappy also requires that the binary
|
|
49
|
-
libraries for snappy compression are present.
|
|
50
|
-
|
|
51
|
-
The most straightforward way to install the binary dependencies is to use
|
|
52
|
-
[Homebrew](https://brew.sh) and source Python from Homebrew rather than from macOS as described
|
|
53
|
-
in the [python-snappy github](https://github.com/andrix/python-snappy):
|
|
54
|
-
|
|
55
|
-
For Intel Macs:
|
|
45
|
+
The most straightforward way to install the binary dependencies is to use [Homebrew](https://brew.sh) and source Python from Homebrew rather than from macOS as described in the [python-snappy github](https://github.com/andrix/python-snappy). Using [pipx](https://pipx.pypa.io/stable/installation/) for package management is also strongly recommended:
|
|
56
46
|
|
|
57
47
|
```bash
|
|
58
|
-
brew install snappy python3
|
|
59
|
-
|
|
60
|
-
python3 -m pip install python-snappy
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
For Apple Silicon Macs:
|
|
64
|
-
|
|
65
|
-
```bash
|
|
66
|
-
brew install snappy python3
|
|
67
|
-
CPPFLAGS="-I/opt/homebrew/include -L/opt/homebrew/lib" \
|
|
68
|
-
python3 -m pip install python-snappy
|
|
48
|
+
brew install snappy python3 pipx
|
|
49
|
+
pipx install numbers-parser
|
|
69
50
|
```
|
|
70
51
|
|
|
71
52
|
For Linux (your package manager may be different):
|
|
72
53
|
|
|
73
54
|
```bash
|
|
74
55
|
sudo apt-get -y install libsnappy-dev
|
|
56
|
+
python3 -m pip install numbers-parser
|
|
75
57
|
```
|
|
76
58
|
|
|
77
59
|
On Windows, you will need to either arrange for snappy to be found for VSC++ or you can install python
|
|
@@ -80,6 +62,7 @@ for Windows on Arm. There appear to be no x86 pre-compiled packages for Windows.
|
|
|
80
62
|
|
|
81
63
|
```text
|
|
82
64
|
pip install python_snappy-0.6.1-cp312-cp312-win_arm64.whl
|
|
65
|
+
python3 -m pip install numbers-parser
|
|
83
66
|
```
|
|
84
67
|
|
|
85
68
|
## Quick Start
|
|
@@ -11,38 +11,20 @@ with earlier versions of Python.
|
|
|
11
11
|
|
|
12
12
|
## Installation
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
python3 -m pip install numbers-parser
|
|
16
|
-
```
|
|
14
|
+
A pre-requisite for this package is [python-snappy](https://pypi.org/project/python-snappy/) which will be installed by Python automatically, but python-snappy also requires binary libraries for snappy compression.
|
|
17
15
|
|
|
18
|
-
|
|
19
|
-
which will be installed by Python automatically, but python-snappy also requires that the binary
|
|
20
|
-
libraries for snappy compression are present.
|
|
21
|
-
|
|
22
|
-
The most straightforward way to install the binary dependencies is to use
|
|
23
|
-
[Homebrew](https://brew.sh) and source Python from Homebrew rather than from macOS as described
|
|
24
|
-
in the [python-snappy github](https://github.com/andrix/python-snappy):
|
|
25
|
-
|
|
26
|
-
For Intel Macs:
|
|
16
|
+
The most straightforward way to install the binary dependencies is to use [Homebrew](https://brew.sh) and source Python from Homebrew rather than from macOS as described in the [python-snappy github](https://github.com/andrix/python-snappy). Using [pipx](https://pipx.pypa.io/stable/installation/) for package management is also strongly recommended:
|
|
27
17
|
|
|
28
18
|
```bash
|
|
29
|
-
brew install snappy python3
|
|
30
|
-
|
|
31
|
-
python3 -m pip install python-snappy
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
For Apple Silicon Macs:
|
|
35
|
-
|
|
36
|
-
```bash
|
|
37
|
-
brew install snappy python3
|
|
38
|
-
CPPFLAGS="-I/opt/homebrew/include -L/opt/homebrew/lib" \
|
|
39
|
-
python3 -m pip install python-snappy
|
|
19
|
+
brew install snappy python3 pipx
|
|
20
|
+
pipx install numbers-parser
|
|
40
21
|
```
|
|
41
22
|
|
|
42
23
|
For Linux (your package manager may be different):
|
|
43
24
|
|
|
44
25
|
```bash
|
|
45
26
|
sudo apt-get -y install libsnappy-dev
|
|
27
|
+
python3 -m pip install numbers-parser
|
|
46
28
|
```
|
|
47
29
|
|
|
48
30
|
On Windows, you will need to either arrange for snappy to be found for VSC++ or you can install python
|
|
@@ -51,6 +33,7 @@ for Windows on Arm. There appear to be no x86 pre-compiled packages for Windows.
|
|
|
51
33
|
|
|
52
34
|
```text
|
|
53
35
|
pip install python_snappy-0.6.1-cp312-cp312-win_arm64.whl
|
|
36
|
+
python3 -m pip install numbers-parser
|
|
54
37
|
```
|
|
55
38
|
|
|
56
39
|
## Quick Start
|
|
@@ -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.14.
|
|
15
|
+
version = "4.14.4"
|
|
16
16
|
|
|
17
17
|
[tool.poetry.scripts]
|
|
18
18
|
cat-numbers = "numbers_parser._cat_numbers:main"
|
|
@@ -34,7 +34,6 @@ python-dateutil = "^2.9.0.post0"
|
|
|
34
34
|
gprof2dot = "^2022.7.29"
|
|
35
35
|
line-profiler = "^4.0.3"
|
|
36
36
|
mock = ">=5.1.0"
|
|
37
|
-
psutil = ">=5.9"
|
|
38
37
|
pytest = ">=7.2.0"
|
|
39
38
|
pytest-check = ">=1.0"
|
|
40
39
|
pytest-console-scripts = "^1.3.1"
|
|
@@ -46,6 +45,7 @@ python-magic = ">=0.4"
|
|
|
46
45
|
tqdm = ">=4.66"
|
|
47
46
|
colorama = "^0.4.6"
|
|
48
47
|
roman = "^4.2"
|
|
48
|
+
pympler = "^1.1"
|
|
49
49
|
|
|
50
50
|
[tool.poetry.group.docs]
|
|
51
51
|
optional = true
|
|
@@ -5,7 +5,15 @@ import sys
|
|
|
5
5
|
|
|
6
6
|
from sigfig import round as sigfig
|
|
7
7
|
|
|
8
|
-
from numbers_parser import
|
|
8
|
+
from numbers_parser import (
|
|
9
|
+
Document,
|
|
10
|
+
ErrorCell,
|
|
11
|
+
FileError,
|
|
12
|
+
FileFormatError,
|
|
13
|
+
NumberCell,
|
|
14
|
+
UnsupportedError,
|
|
15
|
+
_get_version,
|
|
16
|
+
)
|
|
9
17
|
from numbers_parser import __name__ as numbers_parser_name
|
|
10
18
|
from numbers_parser.constants import MAX_SIGNIFICANT_DIGITS
|
|
11
19
|
from numbers_parser.experimental import _enable_experimental_features
|
|
@@ -137,11 +145,12 @@ def main() -> None:
|
|
|
137
145
|
print_table_names(filename)
|
|
138
146
|
else:
|
|
139
147
|
print_table(args, filename)
|
|
140
|
-
except FileFormatError as e: # noqa: PERF203
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
148
|
+
except (FileFormatError, FileError, UnsupportedError) as e: # noqa: PERF203
|
|
149
|
+
err_str = str(e)
|
|
150
|
+
if filename in err_str:
|
|
151
|
+
print(err_str, file=sys.stderr)
|
|
152
|
+
else:
|
|
153
|
+
print(f"{filename}: {err_str}", file=sys.stderr)
|
|
145
154
|
sys.exit(1)
|
|
146
155
|
|
|
147
156
|
|
|
@@ -706,7 +706,10 @@ class _NumbersModel(Cacheable):
|
|
|
706
706
|
@cache(num_args=2)
|
|
707
707
|
def table_string(self, table_id: int, key: int) -> str:
|
|
708
708
|
"""Return the string associated with a string ID for a particular table."""
|
|
709
|
-
|
|
709
|
+
try:
|
|
710
|
+
return self._table_strings.lookup_value(table_id, key).string
|
|
711
|
+
except KeyError:
|
|
712
|
+
return ""
|
|
710
713
|
|
|
711
714
|
def init_table_strings(self, table_id: int) -> None:
|
|
712
715
|
"""Cache table strings reference and delete all existing keys/values."""
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TNArchives_pb2.py
RENAMED
|
File without changes
|
{numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TNArchives_sos_pb2.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSAArchives_pb2.py
RENAMED
|
File without changes
|
{numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSAArchives_sos_pb2.py
RENAMED
|
File without changes
|
|
File without changes
|
{numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSCEArchives_pb2.py
RENAMED
|
File without changes
|
{numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSCH3DArchives_pb2.py
RENAMED
|
File without changes
|
|
File without changes
|
{numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSCHArchives_GEN_pb2.py
RENAMED
|
File without changes
|
{numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSCHArchives_pb2.py
RENAMED
|
File without changes
|
{numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSCHArchives_sos_pb2.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSCKArchives_pb2.py
RENAMED
|
File without changes
|
{numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSCKArchives_sos_pb2.py
RENAMED
|
File without changes
|
{numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSDArchives_pb2.py
RENAMED
|
File without changes
|
{numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSDArchives_sos_pb2.py
RENAMED
|
File without changes
|
|
File without changes
|
{numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSKArchives_pb2.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSPMessages_pb2.py
RENAMED
|
File without changes
|
{numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSSArchives_pb2.py
RENAMED
|
File without changes
|
{numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSSArchives_sos_pb2.py
RENAMED
|
File without changes
|
{numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSTArchives_pb2.py
RENAMED
|
File without changes
|
{numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSTArchives_sos_pb2.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSWPArchives_pb2.py
RENAMED
|
File without changes
|
{numbers_parser-4.14.3 → numbers_parser-4.14.4}/src/numbers_parser/generated/TSWPArchives_sos_pb2.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|