tksheet 7.4.5__py3-none-any.whl → 7.4.6__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.
tksheet/sorting.py CHANGED
@@ -4,6 +4,7 @@ from collections.abc import Callable, Generator, Iterable, Iterator
4
4
  from datetime import datetime
5
5
  from pathlib import Path
6
6
  from re import split
7
+ from typing import Any
7
8
 
8
9
  AnyIter = Iterable | Iterator
9
10
 
@@ -71,7 +72,7 @@ def _string_fallback(item: str) -> tuple[int, ...]:
71
72
  )
72
73
 
73
74
 
74
- def version_sort_key(item: object) -> tuple[int, ...]:
75
+ def version_sort_key(item: Any) -> tuple[int, ...]:
75
76
  """
76
77
  A key for natural sorting of various Python types.
77
78
 
@@ -144,7 +145,7 @@ def version_sort_key(item: object) -> tuple[int, ...]:
144
145
  return (6, item)
145
146
 
146
147
 
147
- def natural_sort_key(item: object) -> tuple[int, ...]:
148
+ def natural_sort_key(item: Any) -> tuple[int, ...]:
148
149
  """
149
150
  A key for natural sorting of various Python types.
150
151
 
@@ -222,7 +223,7 @@ def natural_sort_key(item: object) -> tuple[int, ...]:
222
223
  return (6, item)
223
224
 
224
225
 
225
- def fast_sort_key(item: object) -> tuple[int, ...]:
226
+ def fast_sort_key(item: Any) -> tuple[int, ...]:
226
227
  """
227
228
  A faster key for natural sorting of various Python types.
228
229
 
@@ -268,11 +269,11 @@ def fast_sort_key(item: object) -> tuple[int, ...]:
268
269
 
269
270
 
270
271
  def sort_selection(
271
- data: list[list[object]],
272
+ data: list[list[Any]],
272
273
  reverse: bool = False,
273
274
  key: Callable | None = None,
274
275
  row_wise: bool = False,
275
- ) -> list[list[object]]:
276
+ ) -> list[list[Any]]:
276
277
  if not data or not isinstance(data[0], list):
277
278
  raise ValueError("Data must be a list of lists.")
278
279
 
@@ -297,11 +298,11 @@ def sort_selection(
297
298
 
298
299
 
299
300
  def sort_column(
300
- data: list[list[object]] | list[object] | AnyIter[object],
301
+ data: list[list[Any]] | list[Any] | AnyIter[Any],
301
302
  column: int = 0,
302
303
  reverse: bool = False,
303
304
  key: Callable | None = None,
304
- ) -> list[list[object]] | list[object]:
305
+ ) -> list[list[Any]] | list[Any]:
305
306
  if not data:
306
307
  return data
307
308
 
@@ -315,11 +316,11 @@ def sort_column(
315
316
 
316
317
 
317
318
  def sort_row(
318
- data: list[list[object]] | list[object] | AnyIter[object],
319
+ data: list[list[Any]] | list[Any] | AnyIter[Any],
319
320
  row: int = 0,
320
321
  reverse: bool = False,
321
322
  key: Callable | None = None,
322
- ) -> list[list[object]]:
323
+ ) -> list[list[Any]]:
323
324
  if not data:
324
325
  return data
325
326
 
@@ -337,11 +338,11 @@ def sort_row(
337
338
 
338
339
 
339
340
  def sort_rows_by_column(
340
- data: list[list[object]],
341
+ data: list[list[Any]],
341
342
  column: int = 0,
342
343
  reverse: bool = False,
343
344
  key: Callable | None = None,
344
- ) -> tuple[list[tuple[int, list[object]]], dict[int, int]]:
345
+ ) -> tuple[list[tuple[int, list[Any]]], dict[int, int]]:
345
346
  if not data:
346
347
  return data, {}
347
348
 
@@ -364,7 +365,7 @@ def sort_rows_by_column(
364
365
 
365
366
 
366
367
  def sort_columns_by_row(
367
- data: list[list[object]],
368
+ data: list[list[Any]],
368
369
  row: int = 0,
369
370
  reverse: bool = False,
370
371
  key: Callable | None = None,
@@ -397,11 +398,11 @@ def sort_columns_by_row(
397
398
 
398
399
 
399
400
  def _sort_node_children(
400
- node: object,
401
- tree: dict[str, object],
401
+ node: Any,
402
+ tree: dict[str, Any],
402
403
  reverse: bool,
403
404
  key: Callable,
404
- ) -> Generator[object, None, None]:
405
+ ) -> Generator[Any, None, None]:
405
406
  sorted_children = sorted(
406
407
  (tree[child_iid] for child_iid in node.children if child_iid in tree),
407
408
  key=lambda child: key(child.text),
@@ -414,12 +415,12 @@ def _sort_node_children(
414
415
 
415
416
 
416
417
  def sort_tree_view(
417
- _row_index: list[object],
418
+ _row_index: list[Any],
418
419
  tree_rns: dict[str, int],
419
- tree: dict[str, object],
420
+ tree: dict[str, Any],
420
421
  key: Callable | None = None,
421
422
  reverse: bool = False,
422
- ) -> tuple[list[object], dict[int, int]]:
423
+ ) -> tuple[list[Any], dict[int, int]]:
423
424
  if not _row_index or not tree_rns or not tree:
424
425
  return [], {}
425
426
 
tksheet/text_editor.py CHANGED
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  import tkinter as tk
4
4
  from collections.abc import Callable
5
- from typing import Literal
5
+ from typing import Any, Literal
6
6
 
7
7
  from .constants import align_helper, ctrl_key, rc_binding
8
8
  from .functions import convert_align
@@ -99,7 +99,7 @@ class TextEditorTkText(tk.Text):
99
99
  self.tag_configure("align", justify=self.align)
100
100
  self.tag_add("align", 1.0, "end")
101
101
 
102
- def _proxy(self, command: object, *args) -> object:
102
+ def _proxy(self, command: Any, *args) -> Any:
103
103
  try:
104
104
  result = self.tk.call((self._orig, command) + args)
105
105
  except Exception:
@@ -122,11 +122,11 @@ class TextEditorTkText(tk.Text):
122
122
  self.newline_bindng(check_lines=False)
123
123
  return result
124
124
 
125
- def rc(self, event: object) -> None:
125
+ def rc(self, event: Any) -> None:
126
126
  self.focus_set()
127
127
  self.rc_popup_menu.tk_popup(event.x_root, event.y_root)
128
128
 
129
- def delete_key(self, event: object = None) -> None:
129
+ def delete_key(self, event: Any = None) -> None:
130
130
  if self.editor_del_key == "forward":
131
131
  return
132
132
  elif not self.editor_del_key:
@@ -139,27 +139,27 @@ class TextEditorTkText(tk.Text):
139
139
  self.delete("insert-1c")
140
140
  return "break"
141
141
 
142
- def select_all(self, event: object = None) -> Literal["break"]:
142
+ def select_all(self, event: Any = None) -> Literal["break"]:
143
143
  self.tag_add(tk.SEL, "1.0", tk.END)
144
144
  self.mark_set(tk.INSERT, tk.END)
145
145
  # self.see(tk.INSERT)
146
146
  return "break"
147
147
 
148
- def cut(self, event: object = None) -> Literal["break"]:
148
+ def cut(self, event: Any = None) -> Literal["break"]:
149
149
  self.event_generate(f"<{ctrl_key}-x>")
150
150
  self.event_generate("<KeyRelease>")
151
151
  return "break"
152
152
 
153
- def copy(self, event: object = None) -> Literal["break"]:
153
+ def copy(self, event: Any = None) -> Literal["break"]:
154
154
  self.event_generate(f"<{ctrl_key}-c>")
155
155
  return "break"
156
156
 
157
- def paste(self, event: object = None) -> Literal["break"]:
157
+ def paste(self, event: Any = None) -> Literal["break"]:
158
158
  self.event_generate(f"<{ctrl_key}-v>")
159
159
  self.event_generate("<KeyRelease>")
160
160
  return "break"
161
161
 
162
- def undo(self, event: object = None) -> Literal["break"]:
162
+ def undo(self, event: Any = None) -> Literal["break"]:
163
163
  self.event_generate(f"<{ctrl_key}-z>")
164
164
  self.event_generate("<KeyRelease>")
165
165
  return "break"
tksheet/tksheet_types.py CHANGED
@@ -27,3 +27,190 @@ CellPropertyKey = Literal[
27
27
  ]
28
28
 
29
29
  AnyIter = Iterable | Iterator
30
+
31
+ Binding = Literal[
32
+ "all",
33
+ "single_select",
34
+ "toggle_select",
35
+ "drag_select",
36
+ "select_all",
37
+ "column_drag_and_drop",
38
+ "move_columns",
39
+ "row_drag_and_drop",
40
+ "move_rows",
41
+ "column_select",
42
+ "row_select",
43
+ "column_width_resize",
44
+ "double_click_column_resize",
45
+ "row_width_resize",
46
+ "column_height_resize",
47
+ "arrowkeys",
48
+ "up",
49
+ "down",
50
+ "left",
51
+ "right",
52
+ "prior",
53
+ "next",
54
+ "row_height_resize",
55
+ "double_click_row_resize",
56
+ "right_click_popup_menu",
57
+ "rc_popup_menu",
58
+ "rc_menu",
59
+ "rc_select",
60
+ "rc_insert_column",
61
+ "rc_delete_column",
62
+ "rc_insert_row",
63
+ "rc_delete_row",
64
+ "sort_cells",
65
+ "sort_row",
66
+ "sort_column",
67
+ "sort_col",
68
+ "sort_rows",
69
+ "sort_columns",
70
+ "sort_cols",
71
+ "ctrl_click_select",
72
+ "ctrl_select",
73
+ "copy",
74
+ "cut",
75
+ "paste",
76
+ "delete",
77
+ "undo",
78
+ "find",
79
+ "edit_cell",
80
+ "edit_header",
81
+ "edit_index",
82
+ ]
83
+
84
+ ExtraBinding = Literal[
85
+ "begin_sort_cells",
86
+ "sort_cells",
87
+ "end_sort_cells",
88
+ "begin_sort_rows",
89
+ "sort_rows",
90
+ "end_sort_rows",
91
+ "begin_sort_columns",
92
+ "sort_columns",
93
+ "end_sort_columns",
94
+ "begin_copy",
95
+ "begin_ctrl_c",
96
+ "ctrl_c",
97
+ "end_copy",
98
+ "end_ctrl_c",
99
+ "copy",
100
+ "begin_cut",
101
+ "begin_ctrl_x",
102
+ "ctrl_x",
103
+ "end_cut",
104
+ "end_ctrl_x",
105
+ "cut",
106
+ "begin_paste",
107
+ "begin_ctrl_v",
108
+ "ctrl_v",
109
+ "end_paste",
110
+ "end_ctrl_v",
111
+ "paste",
112
+ "begin_undo",
113
+ "begin_ctrl_z",
114
+ "ctrl_z",
115
+ "end_undo",
116
+ "end_ctrl_z",
117
+ "undo",
118
+ "begin_delete_key",
119
+ "begin_delete",
120
+ "delete_key",
121
+ "end_delete",
122
+ "end_delete_key",
123
+ "delete",
124
+ "begin_edit_cell",
125
+ "begin_edit_table",
126
+ "end_edit_cell",
127
+ "edit_cell",
128
+ "edit_table",
129
+ "begin_edit_header",
130
+ "end_edit_header",
131
+ "edit_header",
132
+ "begin_edit_index",
133
+ "end_edit_index",
134
+ "edit_index",
135
+ "begin_row_index_drag_drop",
136
+ "begin_move_rows",
137
+ "row_index_drag_drop",
138
+ "move_rows",
139
+ "end_move_rows",
140
+ "end_row_index_drag_drop",
141
+ "begin_column_header_drag_drop",
142
+ "begin_move_columns",
143
+ "column_header_drag_drop",
144
+ "move_columns",
145
+ "end_move_columns",
146
+ "end_column_header_drag_drop",
147
+ "begin_rc_delete_row",
148
+ "begin_delete_rows",
149
+ "rc_delete_row",
150
+ "end_rc_delete_row",
151
+ "end_delete_rows",
152
+ "delete_rows",
153
+ "begin_rc_delete_column",
154
+ "begin_delete_columns",
155
+ "rc_delete_column",
156
+ "end_rc_delete_column",
157
+ "end_delete_columns",
158
+ "delete_columns",
159
+ "begin_rc_insert_column",
160
+ "begin_insert_column",
161
+ "begin_insert_columns",
162
+ "begin_add_column",
163
+ "begin_rc_add_column",
164
+ "begin_add_columns",
165
+ "rc_insert_column",
166
+ "end_rc_insert_column",
167
+ "end_insert_column",
168
+ "end_insert_columns",
169
+ "rc_add_column",
170
+ "end_rc_add_column",
171
+ "end_add_column",
172
+ "end_add_columns",
173
+ "add_columns",
174
+ "begin_rc_insert_row",
175
+ "begin_insert_row",
176
+ "begin_insert_rows",
177
+ "begin_rc_add_row",
178
+ "begin_add_row",
179
+ "begin_add_rows",
180
+ "rc_insert_row",
181
+ "end_rc_insert_row",
182
+ "end_insert_row",
183
+ "end_insert_rows",
184
+ "rc_add_row",
185
+ "end_rc_add_row",
186
+ "end_add_row",
187
+ "end_add_rows",
188
+ "add_rows",
189
+ "row_height_resize",
190
+ "column_width_resize",
191
+ "cell_select",
192
+ "select_all",
193
+ "row_select",
194
+ "column_select",
195
+ "drag_select_cells",
196
+ "drag_select_rows",
197
+ "drag_select_columns",
198
+ "shift_cell_select",
199
+ "shift_row_select",
200
+ "shift_column_select",
201
+ "ctrl_cell_select",
202
+ "ctrl_row_select",
203
+ "ctrl_column_select",
204
+ "deselect",
205
+ "all_select_events",
206
+ "select",
207
+ "selectevents",
208
+ "select_events",
209
+ "all_modified_events",
210
+ "sheetmodified",
211
+ "sheet_modified",
212
+ "modified_events",
213
+ "modified",
214
+ "bind_all",
215
+ "unbind_all",
216
+ ]
@@ -1,6 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import tkinter as tk
4
+ from typing import Any
4
5
 
5
6
  from .constants import rc_binding
6
7
 
@@ -107,34 +108,34 @@ class TopLeftRectangle(tk.Canvas):
107
108
  def sa_state(self, state: str = "normal") -> None:
108
109
  self.itemconfig("sa", state=state)
109
110
 
110
- def rw_enter(self, event: object = None) -> None:
111
+ def rw_enter(self, event: Any = None) -> None:
111
112
  if self.RI.width_resizing_enabled:
112
113
  self.itemconfig(
113
114
  "rw",
114
115
  fill=self.PAR.ops.top_left_fg_highlight,
115
116
  )
116
117
 
117
- def sa_enter(self, event: object = None) -> None:
118
+ def sa_enter(self, event: Any = None) -> None:
118
119
  if self.MT.select_all_enabled:
119
120
  self.itemconfig(
120
121
  self.select_all_tri,
121
122
  fill=self.PAR.ops.top_left_fg_highlight,
122
123
  )
123
124
 
124
- def rh_enter(self, event: object = None) -> None:
125
+ def rh_enter(self, event: Any = None) -> None:
125
126
  if self.CH.height_resizing_enabled:
126
127
  self.itemconfig(
127
128
  "rh",
128
129
  fill=self.PAR.ops.top_left_fg_highlight,
129
130
  )
130
131
 
131
- def rw_leave(self, event: object = None) -> None:
132
+ def rw_leave(self, event: Any = None) -> None:
132
133
  self.itemconfig("rw", fill=self.PAR.ops.top_left_fg)
133
134
 
134
- def rh_leave(self, event: object = None) -> None:
135
+ def rh_leave(self, event: Any = None) -> None:
135
136
  self.itemconfig("rh", fill=self.PAR.ops.top_left_fg)
136
137
 
137
- def sa_leave(self, event: object = None) -> None:
138
+ def sa_leave(self, event: Any = None) -> None:
138
139
  self.itemconfig(
139
140
  self.select_all_tri,
140
141
  fill=self.PAR.ops.top_left_fg,
@@ -197,12 +198,12 @@ class TopLeftRectangle(tk.Canvas):
197
198
  )
198
199
  self.coords(self.select_all_box, 0, 0, w - 5, h - 5)
199
200
 
200
- def mouse_motion(self, event: object = None) -> None:
201
+ def mouse_motion(self, event: Any = None) -> None:
201
202
  self.MT.reset_mouse_motion_creations()
202
203
  if self.extra_motion_func is not None:
203
204
  self.extra_motion_func(event)
204
205
 
205
- def b1_press(self, event: object = None) -> None:
206
+ def b1_press(self, event: Any = None) -> None:
206
207
  self.focus_set()
207
208
  rect = self.find_overlapping(event.x, event.y, event.x, event.y)
208
209
  if not rect or rect[0] in (
@@ -232,22 +233,22 @@ class TopLeftRectangle(tk.Canvas):
232
233
  if self.extra_b1_press_func is not None:
233
234
  self.extra_b1_press_func(event)
234
235
 
235
- def b1_motion(self, event: object = None) -> None:
236
+ def b1_motion(self, event: Any = None) -> None:
236
237
  self.focus_set()
237
238
  if self.extra_b1_motion_func is not None:
238
239
  self.extra_b1_motion_func(event)
239
240
 
240
- def b1_release(self, event: object = None) -> None:
241
+ def b1_release(self, event: Any = None) -> None:
241
242
  self.focus_set()
242
243
  if self.extra_b1_release_func is not None:
243
244
  self.extra_b1_release_func(event)
244
245
 
245
- def double_b1(self, event: object = None) -> None:
246
+ def double_b1(self, event: Any = None) -> None:
246
247
  self.focus_set()
247
248
  if self.extra_double_b1_func is not None:
248
249
  self.extra_double_b1_func(event)
249
250
 
250
- def rc(self, event: object = None) -> None:
251
+ def rc(self, event: Any = None) -> None:
251
252
  self.focus_set()
252
253
  if self.extra_rc_func is not None:
253
254
  self.extra_rc_func(event)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: tksheet
3
- Version: 7.4.5
3
+ Version: 7.4.6
4
4
  Summary: Tkinter table / sheet and treeview widget
5
5
  Author-email: ragardner <github@ragardner.simplelogin.com>
6
6
  License: Copyright (c) 2019 ragardner and open source contributors
@@ -0,0 +1,22 @@
1
+ tksheet/__init__.py,sha256=8h-1neNe1xXDjRkZSABB1JzRI_NkOk6DavPvKXla6Ng,2313
2
+ tksheet/colors.py,sha256=dHhmdFuQDlwohDHsAfT9VdrKoSl_R33L72a3HCin5zo,51591
3
+ tksheet/column_headers.py,sha256=uz3eRsJcKVj0fJd-cGrwXV1rA06asPENJvAibSGlHTM,103164
4
+ tksheet/constants.py,sha256=P2Bu4xzF82GGgZtoREdG-wBOyWOlY-2Pyvg_SNYXE6k,3941
5
+ tksheet/find_window.py,sha256=PNSQweZ2advYCfSYm4gWM7BQ8NaiwD822eiIZpSTyrw,8020
6
+ tksheet/formatters.py,sha256=DGcRiMsDJnySNpQcjfiX84oJ7TmOSMdU6u9injIhA4g,10095
7
+ tksheet/functions.py,sha256=uydf4DHuA74GWzjNUQh1Y0Ntp9XCA2PM_63SBiVCo8c,52747
8
+ tksheet/main_table.py,sha256=L-wKDluoSPp2fo6-JS1EV3VT2B2_6xaGrgVIRT3SYLs,354322
9
+ tksheet/other_classes.py,sha256=pe9_Cj6d3rdeMif9nGvUz0MEUChf0l4d669RNqcNhY4,16578
10
+ tksheet/row_index.py,sha256=BJW7_Bvk6ozyy-88ML9JmUwmR5tko7dWAINO6YwrkrA,134210
11
+ tksheet/sheet.py,sha256=Ki5XzCGonXDhn-fuRfgmotGJxWL1Ru_7Mym1tmnNu6M,283693
12
+ tksheet/sheet_options.py,sha256=A_cJEc6XirLO8YrWQHfb10lK2VhGbz28_3XgrKx3TfM,9753
13
+ tksheet/sorting.py,sha256=-x1ZBIYfaneRrQPhbb0Ehs70373o52ADXp481La3nOY,16806
14
+ tksheet/text_editor.py,sha256=rU8Fz0-ltkM63W9io2DoZJPyzUGzCc9Z0qBtc4D1H40,7404
15
+ tksheet/themes.py,sha256=AoNAxibnQi04MN0Zpbn9-kyDnkiiV8TDNWP9FYjpuf0,18473
16
+ tksheet/tksheet_types.py,sha256=8i3BlJrqCO9d4HD-XYl_mSSHQAeAzrRKRXneS6ZzorM,4624
17
+ tksheet/top_left_rectangle.py,sha256=M52IrPIeMoYE3jSpooZmqw_0W5Fz_R-Yu1ZqA685EZ8,8557
18
+ tksheet-7.4.6.dist-info/LICENSE.txt,sha256=ndbcCPe9SlHfweE_W2RAueWUe2k7yudyxYLq6WjFdn4,1101
19
+ tksheet-7.4.6.dist-info/METADATA,sha256=GTd6uG8ExWy-in5MpLpZkygKsRqnxU3xzXIv_qkZMSw,8005
20
+ tksheet-7.4.6.dist-info/WHEEL,sha256=nn6H5-ilmfVryoAQl3ZQ2l8SH5imPWFpm1A5FgEuFV4,91
21
+ tksheet-7.4.6.dist-info/top_level.txt,sha256=my61PXCcck_HHAc9cq3NAlyAr3A3FXxCy9gptEOaCN8,8
22
+ tksheet-7.4.6.dist-info/RECORD,,
@@ -1,22 +0,0 @@
1
- tksheet/__init__.py,sha256=DBwinDqYjK3FjcSqsMWT72Ew9gnVODLENV3h5GMYLd0,2313
2
- tksheet/colors.py,sha256=dHhmdFuQDlwohDHsAfT9VdrKoSl_R33L72a3HCin5zo,51591
3
- tksheet/column_headers.py,sha256=SSDDxSsfVwgg81R2eS4LZoRTfLWixIT_tIBrcZFfXDE,103240
4
- tksheet/constants.py,sha256=YzomMDH38tPCk3XgbmtYebx_8RIJklD2wpeCUCCJnC0,3906
5
- tksheet/find_window.py,sha256=JfkgpGluSng3bKMBneDNQg-AJmBcmCW7JIhtYbSUZaE,8036
6
- tksheet/formatters.py,sha256=eKOX69mUXjkSHMqOMeda0nzMgb88Q05qjZBFCIlZmKc,10239
7
- tksheet/functions.py,sha256=W2gNUQRFCCZH0gYCNECdl9-HZrhnEMYnxHEY9yl13uw,53058
8
- tksheet/main_table.py,sha256=OzNnHRcg4JIPuG4Wx5KWe8ZNR0uwVV_78kK1uS9cksg,352912
9
- tksheet/other_classes.py,sha256=2dMTcH21lDGXXLOO6DmT8HgrhdDOjFC-vo-RlLIv-yk,16603
10
- tksheet/row_index.py,sha256=1KuU-_7k1Ci97v8RgKT-oSf5wolrQ72-vI8iB3spKo0,134283
11
- tksheet/sheet.py,sha256=0CqGOrAK8THnyLkvUu3nCP5lubb2AqtNDXeJ7I7XcMI,283928
12
- tksheet/sheet_options.py,sha256=A_cJEc6XirLO8YrWQHfb10lK2VhGbz28_3XgrKx3TfM,9753
13
- tksheet/sorting.py,sha256=PGTQBaHyxc4TJ_gws44w9TsX2WSMavdOXN5119YhdZg,16851
14
- tksheet/text_editor.py,sha256=czGlcJDV9o_jPS4nOlvpjOOs0wkVnK4cGI7PubMMElU,7426
15
- tksheet/themes.py,sha256=AoNAxibnQi04MN0Zpbn9-kyDnkiiV8TDNWP9FYjpuf0,18473
16
- tksheet/tksheet_types.py,sha256=8JQVlA6N9jEZTEAytbcyuhOGuNE4fUPxYhTqoidxEE0,588
17
- tksheet/top_left_rectangle.py,sha256=WHf2FnId1QJ4q2vy9AbMIjAaP-6s9erPqSU5duN9giw,8569
18
- tksheet-7.4.5.dist-info/LICENSE.txt,sha256=ndbcCPe9SlHfweE_W2RAueWUe2k7yudyxYLq6WjFdn4,1101
19
- tksheet-7.4.5.dist-info/METADATA,sha256=4gWTvamk5QyT2W7WI1o73xGqjDvCg38zHgTiDHylvnY,8005
20
- tksheet-7.4.5.dist-info/WHEEL,sha256=nn6H5-ilmfVryoAQl3ZQ2l8SH5imPWFpm1A5FgEuFV4,91
21
- tksheet-7.4.5.dist-info/top_level.txt,sha256=my61PXCcck_HHAc9cq3NAlyAr3A3FXxCy9gptEOaCN8,8
22
- tksheet-7.4.5.dist-info/RECORD,,