numbers-parser 4.10.6__py3-none-any.whl → 4.11.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.
numbers_parser/model.py CHANGED
@@ -2,6 +2,7 @@ import re
2
2
  from array import array
3
3
  from collections import defaultdict
4
4
  from hashlib import sha1
5
+ from math import floor
5
6
  from pathlib import Path
6
7
  from struct import pack
7
8
  from typing import Dict, List, Optional, Tuple, Union
@@ -308,25 +309,6 @@ class _NumbersModel(Cacheable):
308
309
  self.objects[table_id].number_of_columns = num_cols
309
310
  return self.objects[table_id].number_of_columns
310
311
 
311
- @cache()
312
- def col_storage_map(self, table_id: int):
313
- # The base data store contains a reference to columnHeaders
314
- # which is an ordered list that identfies which offset to use
315
- # to index storage buffers for each column.
316
- #
317
- # {
318
- # "hiding_state": 0,
319
- # "index": 0,
320
- # "number_of_cells": 3,
321
- # "size": 0.0
322
- # },
323
- col_bucket_map = {i: None for i in range(self.objects[table_id].number_of_columns)}
324
- bds = self.objects[table_id].base_data_store
325
- buckets = self.objects[bds.columnHeaders.identifier].headers
326
- for i, bucket in enumerate(buckets):
327
- col_bucket_map[bucket.index] = i
328
- return col_bucket_map
329
-
330
312
  def table_name(self, table_id, value=None):
331
313
  if value is None:
332
314
  return self.objects[table_id].table_name
@@ -341,6 +323,23 @@ class _NumbersModel(Cacheable):
341
323
  else:
342
324
  return self.objects[table_id].table_name_enabled
343
325
 
326
+ def caption_enabled(self, table_id: int, enabled: Optional[bool] = None) -> bool:
327
+ table_info = self.objects[self.table_info_id(table_id)]
328
+ if enabled is not None:
329
+ table_info.super.caption_hidden = not enabled
330
+ else:
331
+ return not table_info.super.caption_hidden
332
+
333
+ def caption_text(self, table_id: int, caption: str = None) -> str:
334
+ table_info = self.objects[self.table_info_id(table_id)]
335
+ caption_info_id = table_info.super.caption.identifier
336
+ caption_storage_id = self.objects[caption_info_id].super.owned_storage.identifier
337
+ caption_text = self.objects[caption_storage_id].text
338
+ if caption is not None:
339
+ caption_text[0] = caption
340
+ else:
341
+ return caption_text[0]
342
+
344
343
  @cache()
345
344
  def table_tiles(self, table_id):
346
345
  bds = self.objects[table_id].base_data_store
@@ -855,10 +854,7 @@ class _NumbersModel(Cacheable):
855
854
 
856
855
  for col, cells in enumerate(col_data):
857
856
  num_rows = len(cells) - sum([isinstance(x, MergedCell) for x in cells])
858
- if table_id in self._col_widths and col in self._col_widths[table_id]:
859
- width = self._col_widths[table_id][col]
860
- else:
861
- width = current_column_widths[col]
857
+ width = current_column_widths[col]
862
858
  header = TSTArchives.HeaderStorageBucket.Header(
863
859
  index=col,
864
860
  numberOfCells=num_rows,
@@ -1039,19 +1035,10 @@ class _NumbersModel(Cacheable):
1039
1035
 
1040
1036
  def table_height(self, table_id: int) -> int:
1041
1037
  """Return the height of a table in points."""
1042
- table_model = self.objects[table_id]
1043
- bds = self.objects[table_id].base_data_store
1044
- buckets = self.objects[bds.rowHeaders.buckets[0].identifier].headers
1045
-
1046
1038
  height = 0.0
1047
- for i, row in self.row_storage_map(table_id).items():
1048
- if table_id in self._row_heights and i in self._row_heights[table_id]:
1049
- height += self._row_heights[table_id][i]
1050
- elif row is not None and buckets[i].size != 0.0:
1051
- height += buckets[i].size
1052
- else:
1053
- height += table_model.default_row_height
1054
- return round(height)
1039
+ for row in range(self.number_of_rows(table_id)):
1040
+ height += self.row_height(table_id, row)
1041
+ return floor(height)
1055
1042
 
1056
1043
  def row_height(self, table_id: int, row: int, height: Optional[int] = None) -> int:
1057
1044
  if height is not None:
@@ -1069,24 +1056,40 @@ class _NumbersModel(Cacheable):
1069
1056
  buckets = self.objects[bucket_id].headers
1070
1057
  bucket_map = {x.index: x for x in buckets}
1071
1058
  if row in bucket_map and bucket_map[row].size != 0.0:
1072
- return round(bucket_map[row].size)
1059
+ height = round(bucket_map[row].size)
1073
1060
  else:
1074
- return round(table_model.default_row_height)
1061
+ height = round(table_model.default_row_height)
1062
+
1063
+ data = self._table_data[table_id]
1064
+ max_top_border = max(
1065
+ [0.0]
1066
+ + [
1067
+ data[row][col].border.top.width
1068
+ for col in range(len(data[row]))
1069
+ if data[row][col].border.top is not None
1070
+ ]
1071
+ )
1072
+ max_bottom_border = max(
1073
+ [0.0]
1074
+ + [
1075
+ data[row][col].border.bottom.width
1076
+ for col in range(len(data[row]))
1077
+ if data[row][col].border.bottom is not None
1078
+ ]
1079
+ )
1080
+ height += max_top_border / 2
1081
+ height += max_bottom_border / 2
1082
+
1083
+ if table_id not in self._row_heights:
1084
+ self._row_heights[table_id] = {}
1085
+ self._row_heights[table_id][row] = floor(height)
1086
+ return self._row_heights[table_id][row]
1075
1087
 
1076
1088
  def table_width(self, table_id: int) -> int:
1077
1089
  """Return the width of a table in points."""
1078
- table_model = self.objects[table_id]
1079
- bds = self.objects[table_id].base_data_store
1080
- buckets = self.objects[bds.columnHeaders.identifier].headers
1081
-
1082
1090
  width = 0.0
1083
- for i, col in self.col_storage_map(table_id).items():
1084
- if table_id in self._col_widths and i in self._col_widths[table_id]:
1085
- width += self._col_widths[table_id][i]
1086
- elif col is not None and buckets[i].size != 0.0:
1087
- width += buckets[i].size
1088
- else:
1089
- width += table_model.default_column_width
1091
+ for row in range(self.number_of_columns(table_id)):
1092
+ width += self.col_width(table_id, row)
1090
1093
  return round(width)
1091
1094
 
1092
1095
  def col_width(self, table_id: int, col: int, width: Optional[int] = None) -> int:
@@ -1105,9 +1108,34 @@ class _NumbersModel(Cacheable):
1105
1108
  buckets = self.objects[bucket_id].headers
1106
1109
  bucket_map = {x.index: x for x in buckets}
1107
1110
  if col in bucket_map and bucket_map[col].size != 0.0:
1108
- return round(bucket_map[col].size)
1111
+ width = round(bucket_map[col].size)
1109
1112
  else:
1110
- return round(table_model.default_column_width)
1113
+ width = round(table_model.default_column_width)
1114
+
1115
+ data = self._table_data[table_id]
1116
+ max_left_border = max(
1117
+ [0.0]
1118
+ + [
1119
+ data[row][col].border.left.width
1120
+ for row in range(len(data))
1121
+ if data[row][col].border.left is not None
1122
+ ]
1123
+ )
1124
+ max_right_border = max(
1125
+ [0.0]
1126
+ + [
1127
+ data[row][col].border.right.width
1128
+ for row in range(len(data))
1129
+ if data[row][col].border.right is not None
1130
+ ]
1131
+ )
1132
+ width += max_left_border / 2
1133
+ width += max_right_border / 2
1134
+
1135
+ if table_id not in self._col_widths:
1136
+ self._col_widths[table_id] = {}
1137
+ self._col_widths[table_id][col] = floor(width)
1138
+ return self._col_widths[table_id][col]
1111
1139
 
1112
1140
  def num_header_rows(self, table_id: int, num_headers: Optional[int] = None) -> int:
1113
1141
  """Return/set the number of header rows."""
@@ -1210,6 +1238,23 @@ class _NumbersModel(Cacheable):
1210
1238
  "Tables/HeaderStorageBucket-{}",
1211
1239
  )
1212
1240
 
1241
+ # caption_storage_id, caption_storage = self.objects.create_object_from_dict(
1242
+ # "CalculationEngine",
1243
+ # {"text": ["TEST Caption"]},
1244
+ # TSWPArchives.StorageArchive,
1245
+ # )
1246
+ # caption_info_id, caption_info = self.objects.create_object_from_dict(
1247
+ # "CalculationEngine",
1248
+ # {},
1249
+ # TSAArchives.CaptionInfoArchive,
1250
+ # )
1251
+ # caption_info.super.MergeFrom(TSWPArchives.ShapeInfoArchive())
1252
+ # caption_info.super.super.MergeFrom(TSDArchives.ShapeArchive())
1253
+ # caption_info.super.super.super.MergeFrom(TSDArchives.DrawableArchive())
1254
+ # caption_info.super.owned_storage.MergeFrom(
1255
+ # TSPMessages.Reference(identifier=caption_storage_id)
1256
+ # )
1257
+
1213
1258
  style_table_id, _ = self.objects.create_object_from_dict(
1214
1259
  "Index/Tables/DataList-{}",
1215
1260
  {"listType": TSTArchives.TableDataList.ListType.STYLE, "nextListID": 1},
@@ -1275,11 +1320,11 @@ class _NumbersModel(Cacheable):
1275
1320
  TSPMessages.Reference(identifier=row_headers_id),
1276
1321
  )
1277
1322
 
1278
- data = [
1323
+ self._table_data[table_model_id] = [
1279
1324
  [Cell._empty_cell(table_model_id, row, col, self) for col in range(num_cols)]
1280
1325
  for row in range(num_rows)
1281
1326
  ]
1282
- self.recalculate_table_data(table_model_id, data)
1327
+ self.recalculate_table_data(table_model_id, self._table_data[table_model_id])
1283
1328
 
1284
1329
  table_info_id, table_info = self.objects.create_object_from_dict(
1285
1330
  "CalculationEngine",
@@ -2002,21 +2047,33 @@ class _NumbersModel(Cacheable):
2002
2047
  cell._border.top = border_value
2003
2048
  if (cell := self.cell_for_stroke(table_id, "bottom", row - 1, col)) is not None:
2004
2049
  cell._border.bottom = border_value
2050
+ if table_id in self._row_heights:
2051
+ self._row_heights[table_id].pop(row, None)
2052
+ self._row_heights[table_id].pop(row - 1, None)
2005
2053
  elif side == "right":
2006
2054
  if (cell := self.cell_for_stroke(table_id, "right", row, col)) is not None:
2007
2055
  cell._border.right = border_value
2008
2056
  if (cell := self.cell_for_stroke(table_id, "left", row, col + 1)) is not None:
2009
2057
  cell._border.left = border_value
2058
+ if table_id in self._col_widths:
2059
+ self._col_widths[table_id].pop(col, None)
2060
+ self._col_widths[table_id].pop(col + 1, None)
2010
2061
  elif side == "bottom":
2011
2062
  if (cell := self.cell_for_stroke(table_id, "bottom", row, col)) is not None:
2012
2063
  cell._border.bottom = border_value
2013
2064
  if (cell := self.cell_for_stroke(table_id, "top", row + 1, col)) is not None:
2014
2065
  cell._border.top = border_value
2066
+ if table_id in self._row_heights:
2067
+ self._row_heights[table_id].pop(row, None)
2068
+ self._row_heights[table_id].pop(row + 1, None)
2015
2069
  else: # left border
2016
2070
  if (cell := self.cell_for_stroke(table_id, "left", row, col)) is not None:
2017
2071
  cell._border.left = border_value
2018
2072
  if (cell := self.cell_for_stroke(table_id, "right", row, col - 1)) is not None:
2019
2073
  cell._border.right = border_value
2074
+ if table_id in self._col_widths:
2075
+ self._col_widths[table_id].pop(col, None)
2076
+ self._col_widths[table_id].pop(col - 1, None)
2020
2077
 
2021
2078
  def extract_strokes_in_layers(self, table_id: int, layer_ids: List, side: str):
2022
2079
  for layer_id in layer_ids:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: numbers-parser
3
- Version: 4.10.6
3
+ Version: 4.11.3
4
4
  Summary: Read and write Apple Numbers spreadsheets
5
5
  Home-page: https://github.com/masaccio/numbers-parser
6
6
  License: MIT
@@ -34,8 +34,8 @@ Description-Content-Type: text/markdown
34
34
  [![Test Status](https://github.com/masaccio/numbers-parser/actions/workflows/run-all-tests.yml/badge.svg)](https://github.com/masaccio/numbers-parser/actions/workflows/run-all-tests.yml)[![Security Checks](https://github.com/masaccio/numbers-parser/actions/workflows/codeql.yml/badge.svg)](https://github.com/masaccio/numbers-parser/actions/workflows/codeql.yml)[![Code Coverage](https://codecov.io/gh/masaccio/numbers-parser/branch/main/graph/badge.svg?token=EKIUFGT05E)](https://codecov.io/gh/masaccio/numbers-parser)[![PyPI Version](https://badge.fury.io/py/numbers-parser.svg)](https://badge.fury.io/py/numbers-parser)
35
35
 
36
36
  `numbers-parser` is a Python module for parsing [Apple Numbers](https://www.apple.com/numbers/)`.numbers` files. It supports Numbers files
37
- generated by Numbers version 10.3, and up with the latest tested version being 14.0
38
- (current as of April 2024).
37
+ generated by Numbers version 10.3, and up with the latest tested version being 14.1
38
+ (current as of June 2024).
39
39
 
40
40
  It supports and is tested against Python versions from 3.9 onwards. It is not compatible
41
41
  with earlier versions of Python.
@@ -1,59 +1,60 @@
1
1
  numbers_parser/__init__.py,sha256=1guReSiMinXSKkip4UoC-a1X9OAgdiYTTDiZ03FDmqE,1411
2
2
  numbers_parser/_cat_numbers.py,sha256=3tLvBQEagGcNL26XxfqguNim0JDtTNgEbiGKpLjBxLI,4623
3
- numbers_parser/_unpack_numbers.py,sha256=PNEENAir573lxIbocK5WdY2KIhIak323ixvNyp7S0js,7004
3
+ numbers_parser/_unpack_numbers.py,sha256=7B6AJ2GB-MzFdrKal_GMMgUWzVUZ5h9PsPJecGk2ppY,7032
4
4
  numbers_parser/bullets.py,sha256=OnVVMPjhTDrC-ncw52Gb00UEXNmn2Rvd3xi7lfqW3hk,2616
5
- numbers_parser/cell.py,sha256=z-D_xoH6N6JcXzcgKxXsbFHqM9FtMEsLBazt2TLdLVQ,76351
6
- numbers_parser/constants.py,sha256=CyZvHPKHtET2TgpD-eiCS2vkoz8U5Of43rxPnAD0RgM,9912
5
+ numbers_parser/cell.py,sha256=18xi25ZoIOEwuOEX8T1FyLQBt0lx9jURE0gDIKjyGnI,76340
6
+ numbers_parser/constants.py,sha256=L9_UhsWMqswsn1sCr-aAx_7mR2k8IHYdhpe8t_CP6lM,9924
7
7
  numbers_parser/containers.py,sha256=j0FhaXPUG5YSRK5_3WIxXQOeckHVu24KMlYetWIZ_Xg,4882
8
8
  numbers_parser/currencies.py,sha256=8k4a3WKmDoHeurkDICymHX13N7ManHSTaka_JNXCZYA,3767
9
9
  numbers_parser/data/empty.numbers,sha256=8JOp035V-p2ff9_Wao7mLcYvb6_if6O2cus_esjVA9k,90316
10
- numbers_parser/document.py,sha256=mi9AxaxrtVFDu-aGQU_TnlVyRMHi_F4UZMPy50g7Z4c,57837
10
+ numbers_parser/document.py,sha256=duj6G2lFtVOEzY3uuR865KNfw0kWswtvLSXh604Wu6Q,59182
11
11
  numbers_parser/exceptions.py,sha256=0Jnmw06YlGvYcvzqc2wiR2Y4eAgvFJLpf0tFrsmlyPU,607
12
12
  numbers_parser/experimental.py,sha256=WARjTa-2ePb8Ga8Q6oDP6EJCs12ofLRF2YpwzUu66ZI,374
13
13
  numbers_parser/formula.py,sha256=4KQIhS6NMOdvz9rLsaVqXGnUDA4QCDpH8Lrz516PoU0,10574
14
- numbers_parser/generated/TNArchives_pb2.py,sha256=cps3nLPpNWdSxhxmpWTDXiWeTE7HzxHcuaOReuY01v0,15834
14
+ numbers_parser/generated/TNArchives_pb2.py,sha256=Tq1UC2Ml1dzAQFIrz3Om-sGI903FBZmlN3GgYQNt4a8,15931
15
15
  numbers_parser/generated/TNArchives_sos_pb2.py,sha256=AYI1X5t5Gb4l941jXlHEY0v97ToIze0bSYBR7KQmS0A,1215
16
- numbers_parser/generated/TNCommandArchives_pb2.py,sha256=AtDBJ_r-slDRVzHxJdXXZPAhpf-jpHj27ujIa2-aPtg,18271
16
+ numbers_parser/generated/TNCommandArchives_pb2.py,sha256=my5CgnWmqHa5p0NFf-aUC8aqEPz3-pXXlyz4UJmZKZE,18378
17
17
  numbers_parser/generated/TNCommandArchives_sos_pb2.py,sha256=MhIENEtVylmebThyhglAwO6dhu23UuF2DvdxtUoEvf0,1857
18
- numbers_parser/generated/TSAArchives_pb2.py,sha256=P6IPcixKO2NdgJISbipbsCTI25SPjGMBqwsaRd5DxwE,19809
18
+ numbers_parser/generated/TSAArchives_pb2.py,sha256=FqNAQf5ul602CJS0tvA5p-gEbuUUw3msI4WfkRrVg5k,19907
19
19
  numbers_parser/generated/TSAArchives_sos_pb2.py,sha256=UlEScYhun_N-Cbr2v5RcgvJuwkloUuPJbrWxnQTOAfo,2033
20
20
  numbers_parser/generated/TSACommandArchives_sos_pb2.py,sha256=dyjRN08Ly1qp5m3jcOE5yClARAzg5KyOYNMWyplRq8w,3907
21
21
  numbers_parser/generated/TSCEArchives_pb2.py,sha256=BgV0Bw70bSLqs9v_q75HxT5_VTu4pb75AFVuOJUxOpo,64758
22
22
  numbers_parser/generated/TSCH3DArchives_pb2.py,sha256=eV4GahEGv_3nGNgnN6xc3kfJ07UT3oALlLeJdh0GcQ4,11162
23
23
  numbers_parser/generated/TSCHArchives_Common_pb2.py,sha256=dqgymAVSSQmjp3XuuXFRfXoSXhbQqaQXWbd-JUJs7Nc,8655
24
24
  numbers_parser/generated/TSCHArchives_GEN_pb2.py,sha256=_v3oN76ohi0uDlzoIg6AZnGWyirjLzhBSRLunsFkSco,45616
25
- numbers_parser/generated/TSCHArchives_pb2.py,sha256=r4iqZeywfS8kHaZoeMWUfXAXXycrSyhwyp0JpIVsPME,23803
25
+ numbers_parser/generated/TSCHArchives_pb2.py,sha256=_Mu_VMDWeS7cEUNeta0UOm6v2oHYqXE-s5qT304t_Jg,23907
26
26
  numbers_parser/generated/TSCHArchives_sos_pb2.py,sha256=xyzFKVpIc_SriTn-z_Y7-HkDSRwVfjwE_bl5WwHd0p0,63730
27
27
  numbers_parser/generated/TSCHCommandArchives_pb2.py,sha256=DkJUuBn-LXiY3a5rXipzFxb2mvOthHOKXdjaxYgt0as,27446
28
28
  numbers_parser/generated/TSCHPreUFFArchives_pb2.py,sha256=EWhd5HcquCEYeFac1hwlHJuWu1glbTicfa2MaKK-XPY,30051
29
+ numbers_parser/generated/TSCKArchives_pb2.py,sha256=VH7I8dHDyDxGdr3EefK7gp2ewHxwVW_U6xCxzJ1x_Ik,28105
30
+ numbers_parser/generated/TSCKArchives_sos_pb2.py,sha256=2zK3-z-pe1xrY1qut28VQjHRtSbq63SxrO0b_bfBj24,1945
29
31
  numbers_parser/generated/TSDArchives_pb2.py,sha256=G5vUxZbx66eTdNgxbagUQmo6N7pvfoXwU07jBgv90cU,39093
30
32
  numbers_parser/generated/TSDArchives_sos_pb2.py,sha256=Q2MYAXjAW-PGE3FY8kFH89rry9PPUQv7DS956wymFwo,6022
31
- numbers_parser/generated/TSDCommandArchives_pb2.py,sha256=DFxngZeWeqjBc-Y_EZxP1emHK5I_qQj5ewkc_xq_gfo,29192
32
- numbers_parser/generated/TSKArchives_pb2.py,sha256=naNFAUk-D-rtD2vq-X2K6N7IOtDapBxF-ms4vVpdn-I,53324
33
- numbers_parser/generated/TSKArchives_sos_pb2.py,sha256=Pi6hjw0g3JSrZ-y0gbqkojRB6_abYavqwoygiqmxgYE,1941
33
+ numbers_parser/generated/TSDCommandArchives_pb2.py,sha256=zMHr3_Koa9vGmkl2PMTnMptUCY2iOe1zJOWN6re2jQs,29291
34
+ numbers_parser/generated/TSKArchives_pb2.py,sha256=zh8bXgKdaHBNVHQ7rKf5PpV0vOmQG6HU9cY3BkEuSPk,26162
34
35
  numbers_parser/generated/TSPArchiveMessages_pb2.py,sha256=5Th08Q19AOsMEMggvM9fda1StJjV8LTDDI5x7pY6aM8,17950
35
36
  numbers_parser/generated/TSPDatabaseMessages_pb2.py,sha256=_jvq890xBQpSDcYOKgII30XlxukPBRZBu0kkRpbJ-z0,2024
36
37
  numbers_parser/generated/TSPMessages_pb2.py,sha256=LBHRhNnQdDu226sh3gK_AOjbO3LDkGCWpVi1wzf7emA,13032
37
- numbers_parser/generated/TSSArchives_pb2.py,sha256=grvUGHXl2hHcXKzsuoxyquskuo0cV1y841hHERFiYz0,9893
38
+ numbers_parser/generated/TSSArchives_pb2.py,sha256=7HGR32kgG6arl4uu08Tuop7brOFGgcRJIc0WKLbqCHI,9980
38
39
  numbers_parser/generated/TSSArchives_sos_pb2.py,sha256=FAhtvQ9TBg18AcIk4HwGCreNWlEu3k_kK_9jRVsh7FM,2842
39
- numbers_parser/generated/TSTArchives_pb2.py,sha256=smmTu4cTaCsX4Jp0TpVuuzaS_KYznpUB-h-4vZg82Yg,88138
40
+ numbers_parser/generated/TSTArchives_pb2.py,sha256=PRNF8aceuLyEYmJunUG-R8PIa4ruWnKZThOy11o59Z4,88236
40
41
  numbers_parser/generated/TSTArchives_sos_pb2.py,sha256=JxiMXSdTH5VJo-c5zDdD_tzGQCTrUDE2K0YP_x-zh84,12597
41
42
  numbers_parser/generated/TSTCommandArchives_pb2.py,sha256=LEyGJBOLdhxVarepxGfHprNs8vIAmSCO-iNnl3Afdkk,59523
42
43
  numbers_parser/generated/TSTStylePropertyArchiving_pb2.py,sha256=0ADsIwTk4GcTeQJRhYxEEjsD_SuLEOSUaGYdHnsO9CA,12415
43
- numbers_parser/generated/TSWPArchives_pb2.py,sha256=1jndSYYOlamxOkUlcWeDgdScduqX9OhJy2HSuZEKFhU,55326
44
+ numbers_parser/generated/TSWPArchives_pb2.py,sha256=6bGFEo-lABOA8l1PbDG96GVd1vmB9PMaYFiqAiDsHdk,55432
44
45
  numbers_parser/generated/TSWPArchives_sos_pb2.py,sha256=poJ49WA4JjZsHpmROyv4jFl2xGpJy6pTRCaJQZ5ZGr0,29114
45
- numbers_parser/generated/TSWPCommandArchives_pb2.py,sha256=LCAklKgtN5EZt8cvO6jELYHyZhRqYunvbanV79a4Gu4,25482
46
+ numbers_parser/generated/TSWPCommandArchives_pb2.py,sha256=JmtH0x8SOh7PdhNtN2LfpGhmxJukzhXtJIIUACp-z2Y,25581
46
47
  numbers_parser/generated/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
48
  numbers_parser/generated/fontmap.py,sha256=pqc1HwwTr3UbFMmhUaHJg1dX5-3pXbyhfS2bkdZHKnI,22748
48
49
  numbers_parser/generated/functionmap.py,sha256=VdZo0ERMYONcrnJFwABcSCHb8pjA4wY2ogt8Janz57M,6082
49
- numbers_parser/generated/mapping.py,sha256=5yU_B_K6RECcTu8VnjC882rrnEvVI28LQvs4d9264Xg,32215
50
+ numbers_parser/generated/mapping.py,sha256=xt1NaZtTse1OX3vBizENKkWl-0OgNb4SMJ0Uo-rRz0U,32342
50
51
  numbers_parser/iwafile.py,sha256=4_MMtHdWMAfIzwODyaM7DsWKh-8yJ2blTfbues8sbdI,11915
51
52
  numbers_parser/iwork.py,sha256=CXXM797MqcIokovrIBAx--LNG7tIVpKqeBwR4V2OrzQ,9141
52
- numbers_parser/model.py,sha256=Xqp_pc4hDKLUpP06_eQTruaq_4ey295yLpNyoapxXpg,98360
53
+ numbers_parser/model.py,sha256=MIubQNU4-tgkUJLGJ16Ih1Kzf-FI2IRkO4jLmKgrh8Q,100476
53
54
  numbers_parser/numbers_cache.py,sha256=1ghEBghQAYFpPiEeOtb74i016mXc039v1pOubbqvaLs,1141
54
55
  numbers_parser/numbers_uuid.py,sha256=q0IbHFKuBXC7MnZN3g55dgCVKOLD-4SO4MdXeN6dt0g,2699
55
- numbers_parser-4.10.6.dist-info/LICENSE.rst,sha256=8vTa1-5KSdHrTpU9rlheO5005EWReEPMpjV7BjSaMc4,1050
56
- numbers_parser-4.10.6.dist-info/METADATA,sha256=aWN8OAVae4iYCg5W-JTD_hmh_CrCeZPd_jalwo6fbkQ,16213
57
- numbers_parser-4.10.6.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
58
- numbers_parser-4.10.6.dist-info/entry_points.txt,sha256=V91uB9vBPxf3eCY1h-0syv21imYCT0MJfMxf87DmwIk,115
59
- numbers_parser-4.10.6.dist-info/RECORD,,
56
+ numbers_parser-4.11.3.dist-info/LICENSE.rst,sha256=8vTa1-5KSdHrTpU9rlheO5005EWReEPMpjV7BjSaMc4,1050
57
+ numbers_parser-4.11.3.dist-info/METADATA,sha256=D6UaDldNfFKNrL1XLSvShIJwePq1hpA5i1AyGMKp7pk,16212
58
+ numbers_parser-4.11.3.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
59
+ numbers_parser-4.11.3.dist-info/entry_points.txt,sha256=V91uB9vBPxf3eCY1h-0syv21imYCT0MJfMxf87DmwIk,115
60
+ numbers_parser-4.11.3.dist-info/RECORD,,
@@ -1,31 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- # Generated by the protocol buffer compiler. DO NOT EDIT!
3
- # source: TSKArchives_sos.proto
4
- """Generated protocol buffer code."""
5
- from google.protobuf.internal import builder as _builder
6
- from google.protobuf import descriptor as _descriptor
7
- from google.protobuf import descriptor_pool as _descriptor_pool
8
- from google.protobuf import symbol_database as _symbol_database
9
- # @@protoc_insertion_point(imports)
10
-
11
- _sym_db = _symbol_database.Default()
12
-
13
-
14
- import numbers_parser.generated.TSKArchives_pb2 as TSKArchives__pb2
15
- import numbers_parser.generated.TSPMessages_pb2 as TSPMessages__pb2
16
-
17
-
18
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15TSKArchives_sos.proto\x12\x06TSKSOS\x1a\x11TSKArchives.proto\x1a\x11TSPMessages.proto\"\x8c\x01\n\x1e\x46ixCorruptedDataCommandArchive\x12\"\n\x05super\x18\x01 \x02(\x0b\x32\x13.TSK.CommandArchive\x12\x1d\n\x15\x63orrupted_digest_list\x18\x02 \x03(\t\x12\'\n\x1f\x63orrupted_digest_list_undefined\x18\x03 \x01(\x08\"\x98\x01\n%RemoveAuthorIdentifiersCommandArchive\x12\"\n\x05super\x18\x01 \x02(\x0b\x32\x13.TSK.CommandArchive\x12%\n\x12\x61uthor_identifiers\x18\x02 \x03(\x0b\x32\t.TSP.UUID\x12$\n\x1c\x61uthor_identifiers_undefined\x18\x03 \x01(\x08\"G\n!ResetActivityStreamCommandArchive\x12\"\n\x05super\x18\x01 \x02(\x0b\x32\x13.TSK.CommandArchive')
19
-
20
- _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
21
- _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'TSKArchives_sos_pb2', globals())
22
- if _descriptor._USE_C_DESCRIPTORS == False:
23
-
24
- DESCRIPTOR._options = None
25
- _FIXCORRUPTEDDATACOMMANDARCHIVE._serialized_start=72
26
- _FIXCORRUPTEDDATACOMMANDARCHIVE._serialized_end=212
27
- _REMOVEAUTHORIDENTIFIERSCOMMANDARCHIVE._serialized_start=215
28
- _REMOVEAUTHORIDENTIFIERSCOMMANDARCHIVE._serialized_end=367
29
- _RESETACTIVITYSTREAMCOMMANDARCHIVE._serialized_start=369
30
- _RESETACTIVITYSTREAMCOMMANDARCHIVE._serialized_end=440
31
- # @@protoc_insertion_point(module_scope)