tksheet 7.3.1__py3-none-any.whl → 7.3.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.
tksheet/other_classes.py CHANGED
@@ -457,7 +457,7 @@ class Node:
457
457
  return self.text
458
458
 
459
459
 
460
- class DropdownStorage:
460
+ class StorageBase:
461
461
  __slots__ = ("canvas_id", "window", "open")
462
462
 
463
463
  def __init__(self) -> None:
@@ -465,6 +465,8 @@ class DropdownStorage:
465
465
  self.window = None
466
466
  self.open = False
467
467
 
468
+
469
+ class DropdownStorage(StorageBase):
468
470
  def get_coords(self) -> int | tuple[int, int] | None:
469
471
  """
470
472
  Returns None if not open or window is None
@@ -474,14 +476,7 @@ class DropdownStorage:
474
476
  return None
475
477
 
476
478
 
477
- class TextEditorStorage:
478
- __slots__ = ("canvas_id", "window", "open")
479
-
480
- def __init__(self) -> None:
481
- self.canvas_id = None
482
- self.window = None
483
- self.open = False
484
-
479
+ class EditorStorageBase(StorageBase):
485
480
  def focus(self) -> None:
486
481
  if self.window:
487
482
  self.window.tktext.focus_set()
@@ -516,6 +511,8 @@ class TextEditorStorage:
516
511
  return self.window.tktext
517
512
  return self.window
518
513
 
514
+
515
+ class TextEditorStorage(EditorStorageBase):
519
516
  @property
520
517
  def coords(self) -> tuple[int, int]:
521
518
  return self.window.r, self.window.c
tksheet/row_index.py CHANGED
@@ -28,6 +28,12 @@ from typing import Literal
28
28
  from .colors import (
29
29
  color_map,
30
30
  )
31
+ from .constants import (
32
+ rc_binding,
33
+ text_editor_close_bindings,
34
+ text_editor_newline_bindings,
35
+ text_editor_to_unbind,
36
+ )
31
37
  from .formatters import (
32
38
  is_bool_like,
33
39
  try_to_bool,
@@ -36,6 +42,8 @@ from .functions import (
36
42
  consecutive_chunks,
37
43
  consecutive_ranges,
38
44
  event_dict,
45
+ event_has_char_key,
46
+ event_opens_dropdown_or_checkbox,
39
47
  get_n2a,
40
48
  int_x_tuple,
41
49
  is_contiguous,
@@ -58,13 +66,6 @@ from .text_editor import (
58
66
  from .types import (
59
67
  AnyIter,
60
68
  )
61
- from .vars import (
62
- rc_binding,
63
- symbols_set,
64
- text_editor_close_bindings,
65
- text_editor_newline_bindings,
66
- text_editor_to_unbind,
67
- )
68
69
 
69
70
 
70
71
  class RowIndex(tk.Canvas):
@@ -1214,6 +1215,8 @@ class RowIndex(tk.Canvas):
1214
1215
  if new_w is not None and (sheet_w_x := floor(self.PAR.winfo_width() * 0.7)) < new_w:
1215
1216
  new_w = sheet_w_x
1216
1217
  if new_w and (self.current_width - new_w > 20 or new_w - self.current_width > 3):
1218
+ if self.MT.find_window.open:
1219
+ self.MT.itemconfig(self.MT.find_window.canvas_id, state="hidden")
1217
1220
  self.set_width(new_w, set_TL=True, recreate_selection_boxes=False)
1218
1221
  return True
1219
1222
  return False
@@ -1827,8 +1830,8 @@ class RowIndex(tk.Canvas):
1827
1830
 
1828
1831
  def get_redraw_selections(self, startr: int, endr: int) -> dict[str, set[int]]:
1829
1832
  d = defaultdict(set)
1830
- for item, box in self.MT.get_selection_items():
1831
- r1, c1, r2, c2 = box.coords
1833
+ for _, box in self.MT.get_selection_items():
1834
+ r1, _, r2, _ = box.coords
1832
1835
  for r in range(startr, endr):
1833
1836
  if r1 <= r and r2 > r:
1834
1837
  d[box.type_ if box.type_ != "columns" else "cells"].add(r)
@@ -1844,7 +1847,7 @@ class RowIndex(tk.Canvas):
1844
1847
  if self.get_cell_kwargs(datarn, key="readonly"):
1845
1848
  return
1846
1849
  elif self.get_cell_kwargs(datarn, key="dropdown") or self.get_cell_kwargs(datarn, key="checkbox"):
1847
- if self.MT.event_opens_dropdown_or_checkbox(event):
1850
+ if event_opens_dropdown_or_checkbox(event):
1848
1851
  if self.get_cell_kwargs(datarn, key="dropdown"):
1849
1852
  self.open_dropdown_window(r, event=event)
1850
1853
  elif self.get_cell_kwargs(datarn, key="checkbox"):
@@ -1870,28 +1873,16 @@ class RowIndex(tk.Canvas):
1870
1873
  state: str = "normal",
1871
1874
  dropdown: bool = False,
1872
1875
  ) -> bool:
1873
- text = None
1876
+ text = f"{self.get_cell_data(self.MT.datarn(r), none_to_empty_str=True, redirect_int=True)}"
1874
1877
  extra_func_key = "??"
1875
- if event is None or self.MT.event_opens_dropdown_or_checkbox(event):
1876
- if event is not None:
1877
- if hasattr(event, "keysym") and event.keysym == "Return":
1878
- extra_func_key = "Return"
1879
- elif hasattr(event, "keysym") and event.keysym == "F2":
1880
- extra_func_key = "F2"
1881
- text = self.get_cell_data(self.MT.datarn(r), none_to_empty_str=True, redirect_int=True)
1882
- elif event is not None and (
1883
- (hasattr(event, "keysym") and event.keysym == "BackSpace") or event.keycode in (8, 855638143)
1884
- ):
1885
- extra_func_key = "BackSpace"
1886
- text = ""
1887
- elif event is not None and (
1888
- (hasattr(event, "char") and event.char.isalpha())
1889
- or (hasattr(event, "char") and event.char.isdigit())
1890
- or (hasattr(event, "char") and event.char in symbols_set)
1891
- ):
1892
- extra_func_key = event.char
1893
- text = event.char
1894
- else:
1878
+ if event_opens_dropdown_or_checkbox(event):
1879
+ if hasattr(event, "keysym") and event.keysym in ("Return", "F2", "BackSpace"):
1880
+ extra_func_key = event.keysym
1881
+ if event.keysym == "BackSpace":
1882
+ text = ""
1883
+ elif event_has_char_key(event):
1884
+ extra_func_key = text = event.char
1885
+ elif event is not None:
1895
1886
  return False
1896
1887
  if self.extra_begin_edit_cell_func:
1897
1888
  try:
@@ -1913,12 +1904,11 @@ class RowIndex(tk.Canvas):
1913
1904
  return False
1914
1905
  else:
1915
1906
  text = text if isinstance(text, str) else f"{text}"
1916
- text = "" if text is None else text
1917
1907
  if self.PAR.ops.cell_auto_resize_enabled:
1918
1908
  self.set_row_height_run_binding(r)
1919
1909
  if self.text_editor.open and r == self.text_editor.row:
1920
1910
  self.text_editor.set_text(self.text_editor.get() + "" if not isinstance(text, str) else text)
1921
- return
1911
+ return False
1922
1912
  self.hide_text_editor()
1923
1913
  if not self.MT.see(r=r, c=0, keep_yscroll=True, check_cell_visibility=True):
1924
1914
  self.MT.refresh()
@@ -1926,8 +1916,6 @@ class RowIndex(tk.Canvas):
1926
1916
  y = self.MT.row_positions[r]
1927
1917
  w = self.current_width + 1
1928
1918
  h = self.MT.row_positions[r + 1] - y + 1
1929
- if text is None:
1930
- text = self.get_cell_data(self.MT.datarn(r), none_to_empty_str=True, redirect_int=True)
1931
1919
  kwargs = {
1932
1920
  "menu_kwargs": DotDict(
1933
1921
  {
tksheet/sheet.py CHANGED
@@ -86,7 +86,7 @@ from .types import (
86
86
  AnyIter,
87
87
  CreateSpanTypes,
88
88
  )
89
- from .vars import (
89
+ from .constants import (
90
90
  USER_OS,
91
91
  backwards_compatibility_keys,
92
92
  emitted_events,
@@ -310,6 +310,7 @@ class Sheet(tk.Frame):
310
310
  highlightbackground=outline_color,
311
311
  highlightcolor=outline_color,
312
312
  )
313
+ self._startup_complete = False
313
314
  self.ops = new_sheet_options()
314
315
  if column_width is not None:
315
316
  default_column_width = column_width
@@ -509,10 +510,14 @@ class Sheet(tk.Frame):
509
510
  self.see(0, startup_select[0])
510
511
  except Exception:
511
512
  pass
512
-
513
513
  self.refresh()
514
514
  if startup_focus:
515
515
  self.MT.focus_set()
516
+ self.after_idle(self.startup_complete)
517
+
518
+ def startup_complete(self, _mod: bool = True) -> bool:
519
+ self._startup_complete = _mod
520
+ return self._startup_complete
516
521
 
517
522
  # Sheet Colors
518
523
 
@@ -653,6 +658,7 @@ class Sheet(tk.Frame):
653
658
  - "paste"
654
659
  - "delete"
655
660
  - "undo"
661
+ - "find"
656
662
  - "edit_cell"
657
663
  - "edit_header"
658
664
  - "edit_index"
@@ -661,6 +667,47 @@ class Sheet(tk.Frame):
661
667
  return self
662
668
 
663
669
  def disable_bindings(self, *bindings: str) -> Sheet:
670
+ """
671
+ List of available bindings:
672
+ - "all"
673
+ - "single_select"
674
+ - "toggle_select"
675
+ - "drag_select"
676
+ - "select_all"
677
+ - "column_drag_and_drop" / "move_columns"
678
+ - "row_drag_and_drop" / "move_rows"
679
+ - "column_select"
680
+ - "row_select"
681
+ - "column_width_resize"
682
+ - "double_click_column_resize"
683
+ - "row_width_resize"
684
+ - "column_height_resize"
685
+ - "arrowkeys" # all arrowkeys including page up and down
686
+ - "up"
687
+ - "down"
688
+ - "left"
689
+ - "right"
690
+ - "prior" # page up
691
+ - "next" # page down
692
+ - "row_height_resize"
693
+ - "double_click_row_resize"
694
+ - "right_click_popup_menu" / "rc_popup_menu" / "rc_menu"
695
+ - "rc_select"
696
+ - "rc_insert_column"
697
+ - "rc_delete_column"
698
+ - "rc_insert_row"
699
+ - "rc_delete_row"
700
+ - "ctrl_click_select" / "ctrl_select"
701
+ - "copy"
702
+ - "cut"
703
+ - "paste"
704
+ - "delete"
705
+ - "undo"
706
+ - "find"
707
+ - "edit_cell"
708
+ - "edit_header"
709
+ - "edit_index"
710
+ """
664
711
  self.MT.disable_bindings(bindings)
665
712
  return self
666
713
 
@@ -716,7 +763,7 @@ class Sheet(tk.Frame):
716
763
  - "ctrl_column_select"
717
764
  - "deselect"
718
765
  - "all_select_events", "select", "selectevents", "select_events"
719
- - "all_modified_events", "sheetmodified", "sheet_modified" "modified_events", "modified"
766
+ - "all_modified_events", "sheetmodified", "sheet_modified", "modified_events", "modified"
720
767
  - "bind_all"
721
768
  - "unbind_all"
722
769
  """
@@ -793,7 +840,8 @@ class Sheet(tk.Frame):
793
840
  "unbind_all",
794
841
  "all_modified_events",
795
842
  "sheetmodified",
796
- "sheet_modified" "modified_events",
843
+ "sheet_modified",
844
+ "modified_events",
797
845
  "modified",
798
846
  ):
799
847
  self.MT.extra_end_ctrl_c_func = f
@@ -3183,22 +3231,25 @@ class Sheet(tk.Frame):
3183
3231
  get_columns: bool = False,
3184
3232
  sort_by_row: bool = False,
3185
3233
  sort_by_column: bool = False,
3234
+ reverse: bool = False,
3186
3235
  ) -> list[tuple[int, int]] | set[tuple[int, int]]:
3187
3236
  if sort_by_row and sort_by_column:
3188
- sels = sorted(
3237
+ return sorted(
3189
3238
  self.MT.get_selected_cells(get_rows=get_rows, get_cols=get_columns),
3190
- key=lambda t: t[1],
3239
+ key=lambda t: t,
3240
+ reverse=reverse,
3191
3241
  )
3192
- return sorted(sels, key=lambda t: t[0])
3193
3242
  elif sort_by_row:
3194
3243
  return sorted(
3195
3244
  self.MT.get_selected_cells(get_rows=get_rows, get_cols=get_columns),
3196
3245
  key=lambda t: t[0],
3246
+ reverse=reverse,
3197
3247
  )
3198
3248
  elif sort_by_column:
3199
3249
  return sorted(
3200
3250
  self.MT.get_selected_cells(get_rows=get_rows, get_cols=get_columns),
3201
3251
  key=lambda t: t[1],
3252
+ reverse=reverse,
3202
3253
  )
3203
3254
  return self.MT.get_selected_cells(get_rows=get_rows, get_cols=get_columns)
3204
3255
 
@@ -3252,13 +3303,13 @@ class Sheet(tk.Frame):
3252
3303
  exclude_rows: bool = False,
3253
3304
  exclude_cells: bool = False,
3254
3305
  ) -> bool:
3255
- if self.MT.anything_selected(
3256
- exclude_columns=exclude_columns,
3257
- exclude_rows=exclude_rows,
3258
- exclude_cells=exclude_cells,
3259
- ):
3260
- return True
3261
- return False
3306
+ return bool(
3307
+ self.MT.anything_selected(
3308
+ exclude_columns=exclude_columns,
3309
+ exclude_rows=exclude_rows,
3310
+ exclude_cells=exclude_cells,
3311
+ )
3312
+ )
3262
3313
 
3263
3314
  def all_selected(self) -> bool:
3264
3315
  return self.MT.all_selected()
@@ -5407,6 +5458,8 @@ class Sheet(tk.Frame):
5407
5458
  to_show = []
5408
5459
  item_node = self.RI.tree[item]
5409
5460
  item_r = self.RI.tree_rns[item]
5461
+ item_descendants = tuple(self.RI.get_iid_descendants(item))
5462
+ num_item_descendants = len(item_descendants)
5410
5463
  if parent:
5411
5464
  if self.RI.move_pid_causes_recursive_loop(item, parent):
5412
5465
  raise ValueError(f"iid '{item}' causes a recursive loop with parent '{parent}'.")
@@ -5419,7 +5472,7 @@ class Sheet(tk.Frame):
5419
5472
  # index is on end
5420
5473
  # item row is less than move to row
5421
5474
  if item_r < new_r:
5422
- r_ctr = new_r - sum(1 for _ in self.RI.get_iid_descendants(item))
5475
+ r_ctr = new_r - num_item_descendants
5423
5476
 
5424
5477
  # new parent has children
5425
5478
  # index is on end
@@ -5436,10 +5489,10 @@ class Sheet(tk.Frame):
5436
5489
  r_ctr = (
5437
5490
  new_r
5438
5491
  + sum(1 for _ in self.RI.get_iid_descendants(parent_node.children[index].iid))
5439
- - sum(1 for _ in self.RI.get_iid_descendants(item))
5492
+ - num_item_descendants
5440
5493
  )
5441
5494
  else:
5442
- r_ctr = new_r - sum(1 for _ in self.RI.get_iid_descendants(item)) - 1
5495
+ r_ctr = new_r - num_item_descendants - 1
5443
5496
 
5444
5497
  # new parent has children
5445
5498
  # index is not end
@@ -5454,7 +5507,7 @@ class Sheet(tk.Frame):
5454
5507
  # index always start
5455
5508
  # item row is less than move to row
5456
5509
  if item_r < new_r:
5457
- r_ctr = new_r - sum(1 for _ in self.RI.get_iid_descendants(item))
5510
+ r_ctr = new_r - num_item_descendants
5458
5511
 
5459
5512
  # new parent doesn't have children
5460
5513
  # index always start
@@ -5465,7 +5518,7 @@ class Sheet(tk.Frame):
5465
5518
  if parent in self.RI.tree_open_ids and self.item_displayed(parent):
5466
5519
  to_show.append(r_ctr)
5467
5520
  r_ctr += 1
5468
- for did in self.RI.get_iid_descendants(item):
5521
+ for did in item_descendants:
5469
5522
  mapping[self.RI.tree_rns[did]] = r_ctr
5470
5523
  if to_show and self.RI.ancestors_all_open(did, item_node.parent):
5471
5524
  to_show.append(r_ctr)
@@ -5484,14 +5537,14 @@ class Sheet(tk.Frame):
5484
5537
  r_ctr = (
5485
5538
  new_r
5486
5539
  + sum(1 for _ in self.RI.get_iid_descendants(self.rowitem(new_r, data_index=True)))
5487
- - sum(1 for _ in self.RI.get_iid_descendants(item))
5540
+ - num_item_descendants
5488
5541
  )
5489
5542
  else:
5490
5543
  r_ctr = new_r
5491
5544
  mapping[item_r] = r_ctr
5492
5545
  to_show.append(r_ctr)
5493
5546
  r_ctr += 1
5494
- for did in self.RI.get_iid_descendants(item):
5547
+ for did in item_descendants:
5495
5548
  mapping[self.RI.tree_rns[did]] = r_ctr
5496
5549
  if to_show and self.RI.ancestors_all_open(did, item_node.parent):
5497
5550
  to_show.append(r_ctr)
@@ -7295,6 +7348,7 @@ class Dropdown(Sheet):
7295
7348
  search_function: Callable = dropdown_search_function,
7296
7349
  modified_function: None | Callable = None,
7297
7350
  ) -> None:
7351
+ self.set_yview(0.0)
7298
7352
  self.deselect(redraw=False)
7299
7353
  self.r = r
7300
7354
  self.c = c
tksheet/sheet_options.py CHANGED
@@ -7,7 +7,7 @@ from .other_classes import (
7
7
  from .themes import (
8
8
  theme_light_blue,
9
9
  )
10
- from .vars import (
10
+ from .constants import (
11
11
  USER_OS,
12
12
  ctrl_key,
13
13
  )
@@ -151,6 +151,21 @@ def new_sheet_options() -> DotDict:
151
151
  "next_bindings": [
152
152
  "<Next>",
153
153
  ],
154
+ "find_bindings": [
155
+ f"<{ctrl_key}-f>",
156
+ f"<{ctrl_key}-F>",
157
+ ],
158
+ "find_next_bindings": [
159
+ f"<{ctrl_key}-g>",
160
+ f"<{ctrl_key}-G>",
161
+ ],
162
+ "find_previous_bindings": [
163
+ f"<{ctrl_key}-Shift-g>",
164
+ f"<{ctrl_key}-Shift-G>",
165
+ ],
166
+ "escape_bindings": [
167
+ "<Escape>",
168
+ ],
154
169
  "vertical_scroll_borderwidth": 1,
155
170
  "horizontal_scroll_borderwidth": 1,
156
171
  "vertical_scroll_gripcount": 0,
tksheet/text_editor.py CHANGED
@@ -10,7 +10,7 @@ from .functions import (
10
10
  from .other_classes import (
11
11
  DotDict,
12
12
  )
13
- from .vars import (
13
+ from .constants import (
14
14
  ctrl_key,
15
15
  rc_binding,
16
16
  )
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  import tkinter as tk
4
4
 
5
- from .vars import rc_binding
5
+ from .constants import rc_binding
6
6
 
7
7
 
8
8
  class TopLeftRectangle(tk.Canvas):
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: tksheet
3
- Version: 7.3.1
3
+ Version: 7.3.3
4
4
  Summary: Tkinter table / sheet widget
5
5
  Author-email: ragardner <github@ragardner.simplelogin.com>
6
6
  License: Copyright (c) 2019 ragardner and open source contributors
@@ -95,22 +95,21 @@ This library is maintained with the help of **[others](https://github.com/ragard
95
95
 
96
96
  ## **Features**
97
97
 
98
- - Display and modify tabular data
99
- - Stores its display data as a Python list of lists, sublists being rows
100
- - Runs smoothly even with millions of rows/columns
101
- - Edit cells directly
98
+ - Smoothly display and modify tabular data
99
+ - [Edit cells directly](https://github.com/ragardner/tksheet/wiki/Version-7#table-functionality-and-bindings)
102
100
  - Cell values can potentially be [any class](https://github.com/ragardner/tksheet/wiki/Version-7#data-formatting), the default is any class with a `__str__` method
103
- - Drag and drop columns and rows
101
+ - [Drag and drop columns and rows](https://github.com/ragardner/tksheet/wiki/Version-7#table-functionality-and-bindings)
104
102
  - Multiple line header and index cells
105
- - Expand row heights and column widths
106
- - Change fonts and font size (not for individual cells)
107
- - Change any colors in the sheet
103
+ - [Expand row heights and column widths](https://github.com/ragardner/tksheet/wiki/Version-7#table-functionality-and-bindings)
104
+ - [Change fonts and font size (not for individual cells)](https://github.com/ragardner/tksheet/wiki/Version-7#text-font-and-alignment)
105
+ - [Change any colors in the sheet](https://github.com/ragardner/tksheet/wiki/Version-7#sheet-appearance)
108
106
  - [Treeview mode](https://github.com/ragardner/tksheet/wiki/Version-7#treeview-mode)
109
107
  - [Dropdown boxes](https://github.com/ragardner/tksheet/wiki/Version-7#dropdown-boxes)
110
108
  - [Check boxes](https://github.com/ragardner/tksheet/wiki/Version-7#check-boxes)
111
109
  - [Progress bars](https://github.com/ragardner/tksheet/wiki/Version-7#progress-bars)
112
110
  - [Hide rows and/or columns](https://github.com/ragardner/tksheet/wiki/Version-7#example-header-dropdown-boxes-and-row-filtering)
113
- - Left `"w"`, Center `"center"` or Right `"e"` text alignment for any cell/row/column
111
+ - [Left `"w"`, Center `"center"` or Right `"e"` text alignment for any cell/row/column](https://github.com/ragardner/tksheet/wiki/Version-7#text-font-and-alignment)
112
+ - [Optional built-in find window](https://github.com/ragardner/tksheet/wiki/Version-7#table-functionality-and-bindings)
114
113
 
115
114
  ```python
116
115
  """
@@ -0,0 +1,21 @@
1
+ tksheet/__init__.py,sha256=iBvftirYxhwiMRHzQhm0jJaaZIDt4BGwr8dXUE3hL5s,2241
2
+ tksheet/colors.py,sha256=1k06VorynLmnC4FdJg8H4reIA6rXaeXBpdMwXLhN8oc,51594
3
+ tksheet/column_headers.py,sha256=JoNtGsepsEho_uJq5K-yhKrO-z0qTGt4yWYE4J7Wz5w,102212
4
+ tksheet/constants.py,sha256=-NWaHEEpcQ0YHn4yGDf8SSffjceiEOayGqnEYw6VwPM,3507
5
+ tksheet/find_window.py,sha256=PcFPHLBLIeydqDTXCZwdCUAnipmA0i35oIyV3G0NnT0,8085
6
+ tksheet/formatters.py,sha256=21ZkMaDIJNUtjvtlAbPl8Y19I9nDxue-JJegw6hblz8,10551
7
+ tksheet/functions.py,sha256=Xg2T7AQ6O3VtDFqEJ0KhkQ6F3XDX86jWGcrmmFQiw_c,46625
8
+ tksheet/main_table.py,sha256=LjhYxEVVxklzz_oCxJnrbi-R5yTzbTiDesIJBWg014A,344770
9
+ tksheet/other_classes.py,sha256=wKSd30orLNIdlo9YV1nbyFy1HO8-kaey0wPUbstX5Tk,16411
10
+ tksheet/row_index.py,sha256=bduDpX2uiqH3oQWzDdKUIgOeF7LdT0ta8bHapxe6Rx0,111127
11
+ tksheet/sheet.py,sha256=gr4b7Gc5bnrHU7kcqRvti52auMCLdnXqYz8jP873rfo,290494
12
+ tksheet/sheet_options.py,sha256=zpTWAA_Sk0OaGvcxDVY5OyD8uRMWML1PLQr9eE07ztU,7899
13
+ tksheet/text_editor.py,sha256=3hVz8YKxf3-hZdVALjvlcaXkip-ZRANj7LyXfPxroXs,7454
14
+ tksheet/themes.py,sha256=AoNAxibnQi04MN0Zpbn9-kyDnkiiV8TDNWP9FYjpuf0,18473
15
+ tksheet/top_left_rectangle.py,sha256=KhTT-rBUwQTgaHjSwL83cL5_71k2L1B7gxkSxZlTSK8,8598
16
+ tksheet/types.py,sha256=4NIFPmq64g1vcbApWzLJrOZ8xhcRcOh2wCAzdn5LS2w,475
17
+ tksheet-7.3.3.dist-info/LICENSE.txt,sha256=ndbcCPe9SlHfweE_W2RAueWUe2k7yudyxYLq6WjFdn4,1101
18
+ tksheet-7.3.3.dist-info/METADATA,sha256=P-xVza5ntCFwJBSu_EI94lVvtGTyejRWxiKv0GrPpLY,7781
19
+ tksheet-7.3.3.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
20
+ tksheet-7.3.3.dist-info/top_level.txt,sha256=my61PXCcck_HHAc9cq3NAlyAr3A3FXxCy9gptEOaCN8,8
21
+ tksheet-7.3.3.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.7.0)
2
+ Generator: setuptools (75.8.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,20 +0,0 @@
1
- tksheet/__init__.py,sha256=D2eEiYomTgytJd1HZ-b4qwbtJnpbRa5Dh-EcE_EsYWE,2236
2
- tksheet/colors.py,sha256=1k06VorynLmnC4FdJg8H4reIA6rXaeXBpdMwXLhN8oc,51594
3
- tksheet/column_headers.py,sha256=9HcSz_rEPM3pelnYfrQr4AI7LR1C8Ae3GTQY9eNhMOw,102876
4
- tksheet/formatters.py,sha256=_exO2KnjtcnE_MVWLG1ngOZ-wmrXZhuh7uEi2iPs1Tk,10546
5
- tksheet/functions.py,sha256=egowBJuShOPuNiX46v9M8E5pzPiX2FrobCqVgKLBKWo,43482
6
- tksheet/main_table.py,sha256=9SDXmEc-uqM58iovq52s_VgI_Ykt4i42-65-YzxDviU,337745
7
- tksheet/other_classes.py,sha256=cYcu8TYgGdsJ6ZGG51AQFVrzj7Lu0LwAn62V7iUh_mc,16488
8
- tksheet/row_index.py,sha256=RiIfxCfDZgDEPb7OwwCSo8O4hY1Lkh8P6p_YkHE7bWc,111666
9
- tksheet/sheet.py,sha256=dI8tg6fLZH2Zvmm5q1NhYDd_RH6jghUA8BMuPeeazus,289010
10
- tksheet/sheet_options.py,sha256=YzZWhqmZgrZqdR4NZV8Xe8xRgs5_2MHpUlBSDUhXHzY,7429
11
- tksheet/text_editor.py,sha256=zrBdURBFNBbnl8GmZ4vQMFZ3UmvAvfBZ7KSJi_WtrNI,7449
12
- tksheet/themes.py,sha256=AoNAxibnQi04MN0Zpbn9-kyDnkiiV8TDNWP9FYjpuf0,18473
13
- tksheet/top_left_rectangle.py,sha256=0vzhYK7oGe9M_v7mlxFLh595XuXuXDOjooCDuR5sqnM,8593
14
- tksheet/types.py,sha256=4NIFPmq64g1vcbApWzLJrOZ8xhcRcOh2wCAzdn5LS2w,475
15
- tksheet/vars.py,sha256=-NWaHEEpcQ0YHn4yGDf8SSffjceiEOayGqnEYw6VwPM,3507
16
- tksheet-7.3.1.dist-info/LICENSE.txt,sha256=ndbcCPe9SlHfweE_W2RAueWUe2k7yudyxYLq6WjFdn4,1101
17
- tksheet-7.3.1.dist-info/METADATA,sha256=5Xbqc5dFTlp-UFOdDr1g7zmoFI7JE9moRklUMsm1_m8,7282
18
- tksheet-7.3.1.dist-info/WHEEL,sha256=A3WOREP4zgxI0fKrHUG8DC8013e3dK3n7a6HDbcEIwE,91
19
- tksheet-7.3.1.dist-info/top_level.txt,sha256=my61PXCcck_HHAc9cq3NAlyAr3A3FXxCy9gptEOaCN8,8
20
- tksheet-7.3.1.dist-info/RECORD,,
File without changes