tksheet 7.4.4__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
 
@@ -67,11 +68,11 @@ def _string_fallback(item: str) -> tuple[int, ...]:
67
68
  5,
68
69
  len(components),
69
70
  tuple(int(e) if e.isdigit() else e.lower() for comp in components[:-1] for e in split(r"(\d+)", comp) if e),
70
- tuple(),
71
+ (),
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
 
@@ -117,7 +118,7 @@ def version_sort_key(item: object) -> tuple[int, ...]:
117
118
  for e in split(r"(\d+)", comp)
118
119
  if e
119
120
  ),
120
- tuple(),
121
+ (),
121
122
  )
122
123
  else:
123
124
  return (1, item)
@@ -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
 
@@ -195,7 +196,7 @@ def natural_sort_key(item: object) -> tuple[int, ...]:
195
196
  for e in split(r"(\d+)", comp)
196
197
  if e
197
198
  ),
198
- tuple(),
199
+ (),
199
200
  )
200
201
  else:
201
202
  return (1, item)
@@ -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,
@@ -393,15 +394,15 @@ def sort_columns_by_row(
393
394
  unsorted_part = [elem for idx, elem in enumerate(row_data) if idx not in sort_indices_set]
394
395
  new_data.append(sorted_part + unsorted_part)
395
396
 
396
- return sort_indices, {old: new for old, new in zip(range(len(data[row])), sort_indices)}
397
+ return sort_indices, dict(zip(range(len(data[row])), sort_indices))
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:
@@ -111,16 +111,22 @@ class TextEditorTkText(tk.Text):
111
111
  ):
112
112
  self.tag_add("align", 1.0, "end")
113
113
  self.event_generate("<<TextModified>>")
114
- if args and len(args) > 1 and args[1] != "\n" and args != ("1.0", "end"):
115
- if self.yview() != (0.0, 1.0) and self.newline_bindng is not None:
116
- self.newline_bindng(check_lines=False)
114
+ if (
115
+ args
116
+ and len(args) > 1
117
+ and args[1] != "\n"
118
+ and args != ("1.0", "end")
119
+ and self.yview() != (0.0, 1.0)
120
+ and self.newline_bindng is not None
121
+ ):
122
+ self.newline_bindng(check_lines=False)
117
123
  return result
118
124
 
119
- def rc(self, event: object) -> None:
125
+ def rc(self, event: Any) -> None:
120
126
  self.focus_set()
121
127
  self.rc_popup_menu.tk_popup(event.x_root, event.y_root)
122
128
 
123
- def delete_key(self, event: object = None) -> None:
129
+ def delete_key(self, event: Any = None) -> None:
124
130
  if self.editor_del_key == "forward":
125
131
  return
126
132
  elif not self.editor_del_key:
@@ -133,27 +139,27 @@ class TextEditorTkText(tk.Text):
133
139
  self.delete("insert-1c")
134
140
  return "break"
135
141
 
136
- def select_all(self, event: object = None) -> Literal["break"]:
142
+ def select_all(self, event: Any = None) -> Literal["break"]:
137
143
  self.tag_add(tk.SEL, "1.0", tk.END)
138
144
  self.mark_set(tk.INSERT, tk.END)
139
145
  # self.see(tk.INSERT)
140
146
  return "break"
141
147
 
142
- def cut(self, event: object = None) -> Literal["break"]:
148
+ def cut(self, event: Any = None) -> Literal["break"]:
143
149
  self.event_generate(f"<{ctrl_key}-x>")
144
150
  self.event_generate("<KeyRelease>")
145
151
  return "break"
146
152
 
147
- def copy(self, event: object = None) -> Literal["break"]:
153
+ def copy(self, event: Any = None) -> Literal["break"]:
148
154
  self.event_generate(f"<{ctrl_key}-c>")
149
155
  return "break"
150
156
 
151
- def paste(self, event: object = None) -> Literal["break"]:
157
+ def paste(self, event: Any = None) -> Literal["break"]:
152
158
  self.event_generate(f"<{ctrl_key}-v>")
153
159
  self.event_generate("<KeyRelease>")
154
160
  return "break"
155
161
 
156
- def undo(self, event: object = None) -> Literal["break"]:
162
+ def undo(self, event: Any = None) -> Literal["break"]:
157
163
  self.event_generate(f"<{ctrl_key}-z>")
158
164
  self.event_generate("<KeyRelease>")
159
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 (
@@ -220,12 +221,11 @@ class TopLeftRectangle(tk.Canvas):
220
221
  self.PAR.ops.default_row_index_width,
221
222
  set_TL=True,
222
223
  )
223
- elif rect[0] == self.rh_box:
224
- if self.CH.height_resizing_enabled:
225
- self.CH.set_height(
226
- self.MT.get_default_header_height(),
227
- set_TL=True,
228
- )
224
+ elif rect[0] == self.rh_box and self.CH.height_resizing_enabled:
225
+ self.CH.set_height(
226
+ self.MT.get_default_header_height(),
227
+ set_TL=True,
228
+ )
229
229
  self.MT.main_table_redraw_grid_and_text(
230
230
  redraw_header=True,
231
231
  redraw_row_index=True,
@@ -233,22 +233,22 @@ class TopLeftRectangle(tk.Canvas):
233
233
  if self.extra_b1_press_func is not None:
234
234
  self.extra_b1_press_func(event)
235
235
 
236
- def b1_motion(self, event: object = None) -> None:
236
+ def b1_motion(self, event: Any = None) -> None:
237
237
  self.focus_set()
238
238
  if self.extra_b1_motion_func is not None:
239
239
  self.extra_b1_motion_func(event)
240
240
 
241
- def b1_release(self, event: object = None) -> None:
241
+ def b1_release(self, event: Any = None) -> None:
242
242
  self.focus_set()
243
243
  if self.extra_b1_release_func is not None:
244
244
  self.extra_b1_release_func(event)
245
245
 
246
- def double_b1(self, event: object = None) -> None:
246
+ def double_b1(self, event: Any = None) -> None:
247
247
  self.focus_set()
248
248
  if self.extra_double_b1_func is not None:
249
249
  self.extra_double_b1_func(event)
250
250
 
251
- def rc(self, event: object = None) -> None:
251
+ def rc(self, event: Any = None) -> None:
252
252
  self.focus_set()
253
253
  if self.extra_rc_func is not None:
254
254
  self.extra_rc_func(event)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: tksheet
3
- Version: 7.4.4
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
@@ -24,7 +24,9 @@ License: Copyright (c) 2019 ragardner and open source contributors
24
24
  SOFTWARE.
25
25
 
26
26
  Project-URL: Homepage, https://github.com/ragardner/tksheet
27
- Project-URL: Bug Reports, https://github.com/ragardner/tksheet/issues
27
+ Project-URL: Documentation, https://github.com/ragardner/tksheet/wiki/Version-7
28
+ Project-URL: Changelog, https://github.com/ragardner/tksheet/blob/master/docs/CHANGELOG.md
29
+ Project-URL: Issues, https://github.com/ragardner/tksheet/issues
28
30
  Project-URL: Funding, https://github.com/ragardner
29
31
  Keywords: tkinter,table,widget,tree,treeview,sheet,grid,tk
30
32
  Classifier: Development Status :: 5 - Production/Stable
@@ -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,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.8.0)
2
+ Generator: setuptools (75.8.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,22 +0,0 @@
1
- tksheet/__init__.py,sha256=DJduXwiEFlPhe0uDqKUZCRGgf9pB-aubUvC_sXCpVp8,2313
2
- tksheet/colors.py,sha256=dHhmdFuQDlwohDHsAfT9VdrKoSl_R33L72a3HCin5zo,51591
3
- tksheet/column_headers.py,sha256=Dq3GqcUvBpereMdOTU3OqkfSkCb8nSUM18uHF2Vsrqo,103442
4
- tksheet/constants.py,sha256=PkvAtdYXSOiOO5zuxqrObvGIVV2sEE0enN8YLhI8zCc,3922
5
- tksheet/find_window.py,sha256=JfkgpGluSng3bKMBneDNQg-AJmBcmCW7JIhtYbSUZaE,8036
6
- tksheet/formatters.py,sha256=21ZkMaDIJNUtjvtlAbPl8Y19I9nDxue-JJegw6hblz8,10551
7
- tksheet/functions.py,sha256=KQe1AncAiVUxvcq9GAJ8TBXKaSAxk5-VDHDY6hHApLk,53183
8
- tksheet/main_table.py,sha256=jWG9Of249O-bPujDG1umoXZUndM6wIsx8lqNWPqVTz4,358190
9
- tksheet/other_classes.py,sha256=ADybikLipEG4NABXx8bGVAovJJhWcomQOWTorzS1CPU,16581
10
- tksheet/row_index.py,sha256=NUpv_cpGDKO_tF4tICcK2BaW1Z0-w8sdE9NYVyHNHO8,133849
11
- tksheet/sheet.py,sha256=s_9jyRok7AGanMZ9NzQYjkFxlwavjEMSBnOEN3uoJoQ,283724
12
- tksheet/sheet_options.py,sha256=A_cJEc6XirLO8YrWQHfb10lK2VhGbz28_3XgrKx3TfM,9753
13
- tksheet/sorting.py,sha256=xBSh_b7QyRRDzwqmKMPEevCZY1KpmMbyA6kl0yvcK6U,16887
14
- tksheet/text_editor.py,sha256=ZLVF-0WxDin5qUAJ5r7dmsdwvhyEoxw0PlPvi_AGNPE,7328
15
- tksheet/themes.py,sha256=AoNAxibnQi04MN0Zpbn9-kyDnkiiV8TDNWP9FYjpuf0,18473
16
- tksheet/tksheet_types.py,sha256=8JQVlA6N9jEZTEAytbcyuhOGuNE4fUPxYhTqoidxEE0,588
17
- tksheet/top_left_rectangle.py,sha256=KhTT-rBUwQTgaHjSwL83cL5_71k2L1B7gxkSxZlTSK8,8598
18
- tksheet-7.4.4.dist-info/LICENSE.txt,sha256=ndbcCPe9SlHfweE_W2RAueWUe2k7yudyxYLq6WjFdn4,1101
19
- tksheet-7.4.4.dist-info/METADATA,sha256=F4df5FisLoL6dkzwUbayE2Djt0fgD1bibXlVOFLaoDM,7839
20
- tksheet-7.4.4.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
21
- tksheet-7.4.4.dist-info/top_level.txt,sha256=my61PXCcck_HHAc9cq3NAlyAr3A3FXxCy9gptEOaCN8,8
22
- tksheet-7.4.4.dist-info/RECORD,,