tksheet 7.1.6__py3-none-any.whl → 7.1.7__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/row_index.py CHANGED
@@ -31,7 +31,7 @@ from .functions import (
31
31
  consecutive_chunks,
32
32
  ev_stack_dict,
33
33
  event_dict,
34
- get_checkbox_points,
34
+ rounded_box_coords,
35
35
  get_n2a,
36
36
  is_contiguous,
37
37
  num2alpha,
@@ -405,7 +405,7 @@ class RowIndex(tk.Canvas):
405
405
  ):
406
406
  self.open_cell(event)
407
407
  elif (iid := self.event_over_tree_arrow(r, self.canvasy(event.y), event.x)) is not None:
408
- self.PAR.item(iid, open_=iid not in self.tree_open_ids)
408
+ self.PAR.item(iid, open_=iid not in self.tree_open_ids, redraw=False)
409
409
  self.rsz_h = None
410
410
  self.mouse_motion(event)
411
411
  try_binding(self.extra_double_b1_func, event)
@@ -869,7 +869,7 @@ class RowIndex(tk.Canvas):
869
869
  elif (iid := self.event_over_tree_arrow(r, canvasy, event.x)) is not None:
870
870
  if self.MT.selection_boxes:
871
871
  self.select_row(r, redraw=False)
872
- self.PAR.item(iid, open_=iid not in self.tree_open_ids)
872
+ self.PAR.item(iid, open_=iid not in self.tree_open_ids, redraw=False)
873
873
  else:
874
874
  self.mouseclick_outside_editor_or_dropdown_all_canvases(inside=True)
875
875
  self.b1_pressed_loc = None
@@ -958,14 +958,33 @@ class RowIndex(tk.Canvas):
958
958
  outline: str,
959
959
  state: str,
960
960
  tags: str | tuple[str],
961
+ iid: None | int = None,
961
962
  ) -> int:
962
- if self.hidd_boxes:
963
- iid = self.hidd_boxes.pop()
964
- self.coords(iid, x1, y1, x2, y2)
963
+ coords = rounded_box_coords(
964
+ x1,
965
+ y1,
966
+ x2,
967
+ y2,
968
+ radius=9 if self.PAR.ops.rounded_boxes else 0,
969
+ )
970
+ if isinstance(iid, int):
971
+ self.coords(iid, coords)
965
972
  self.itemconfig(iid, fill=fill, outline=outline, state=state, tags=tags)
966
973
  else:
967
- iid = self.create_rectangle(x1, y1, x2, y2, fill=fill, outline=outline, state=state, tags=tags)
968
- self.disp_boxes.add(iid)
974
+ if self.hidd_boxes:
975
+ iid = self.hidd_boxes.pop()
976
+ self.coords(iid, coords)
977
+ self.itemconfig(iid, fill=fill, outline=outline, state=state, tags=tags)
978
+ else:
979
+ iid = self.create_polygon(
980
+ coords,
981
+ fill=fill,
982
+ outline=outline,
983
+ state=state,
984
+ tags=tags,
985
+ smooth=True,
986
+ )
987
+ self.disp_boxes.add(iid)
969
988
  return iid
970
989
 
971
990
  def hide_box(self, item: int | None) -> None:
@@ -1341,7 +1360,7 @@ class RowIndex(tk.Canvas):
1341
1360
  self.disp_dropdown[t] = True
1342
1361
 
1343
1362
  def redraw_checkbox(self, x1, y1, x2, y2, fill, outline, tag, draw_check=False):
1344
- points = get_checkbox_points(x1, y1, x2, y2)
1363
+ points = rounded_box_coords(x1, y1, x2, y2)
1345
1364
  if self.hidd_checkbox:
1346
1365
  t, sh = self.hidd_checkbox.popitem()
1347
1366
  self.coords(t, points)
@@ -1359,7 +1378,7 @@ class RowIndex(tk.Canvas):
1359
1378
  y1 = y1 + 4
1360
1379
  x2 = x2 - 3
1361
1380
  y2 = y2 - 3
1362
- points = get_checkbox_points(x1, y1, x2, y2, radius=4)
1381
+ points = rounded_box_coords(x1, y1, x2, y2, radius=4)
1363
1382
  if self.hidd_checkbox:
1364
1383
  t, sh = self.hidd_checkbox.popitem()
1365
1384
  self.coords(t, points)
@@ -1659,16 +1678,14 @@ class RowIndex(tk.Canvas):
1659
1678
  dct[iid] = False
1660
1679
  return True
1661
1680
 
1662
- def get_redraw_selections(self, startr, endr):
1663
- d = defaultdict(list)
1681
+ def get_redraw_selections(self, startr: int, endr: int) -> dict[str, set[int]]:
1682
+ d = defaultdict(set)
1664
1683
  for item, box in self.MT.get_selection_items(columns=False):
1665
- d[box.type_].append(box.coords)
1666
- d2 = {}
1667
- if "cells" in d:
1668
- d2["cells"] = {r for r in range(startr, endr) for r1, c1, r2, c2 in d["cells"] if r1 <= r and r2 > r}
1669
- if "rows" in d:
1670
- d2["rows"] = {r for r in range(startr, endr) for r1, c1, r2, c2 in d["rows"] if r1 <= r and r2 > r}
1671
- return d2
1684
+ r1, c1, r2, c2 = box.coords
1685
+ for r in range(startr, endr):
1686
+ if r1 <= r and r2 > r:
1687
+ d[box.type_].add(r)
1688
+ return d
1672
1689
 
1673
1690
  def open_cell(self, event: object = None, ignore_existing_editor=False):
1674
1691
  if not self.MT.anything_selected() or (not ignore_existing_editor and self.text_editor.open):
@@ -1892,6 +1909,8 @@ class RowIndex(tk.Canvas):
1892
1909
 
1893
1910
  def hide_text_editor(self, reason: None | str = None) -> None:
1894
1911
  if self.text_editor.open:
1912
+ for b in ("<Alt-Return>", "<Option-Return>", "<Tab>", "<Return>", "<FocusOut>", "<Escape>"):
1913
+ self.text_editor.tktext.unbind(b)
1895
1914
  self.itemconfig(self.text_editor.canvas_id, state="hidden")
1896
1915
  self.text_editor.open = False
1897
1916
  if reason == "Escape":
@@ -1913,7 +1932,7 @@ class RowIndex(tk.Canvas):
1913
1932
  if editor_info is not None and len(editor_info) >= 2 and editor_info[1] == "Escape":
1914
1933
  self.hide_text_editor_and_dropdown()
1915
1934
  return
1916
- self.text_editor_value = self.text_editor.get()
1935
+ text_editor_value = self.text_editor.get()
1917
1936
  r = editor_info[0]
1918
1937
  datarn = r if self.MT.all_rows_displayed else self.MT.displayed_rows[r]
1919
1938
  event_data = event_dict(
@@ -1921,7 +1940,7 @@ class RowIndex(tk.Canvas):
1921
1940
  sheet=self.PAR.name,
1922
1941
  cells_index={datarn: self.get_cell_data(datarn)},
1923
1942
  key=editor_info[1] if len(editor_info) >= 2 else "FocusOut",
1924
- value=self.text_editor_value,
1943
+ value=text_editor_value,
1925
1944
  loc=r,
1926
1945
  boxes=self.MT.get_boxes(),
1927
1946
  selected=self.MT.selected,
@@ -1934,11 +1953,11 @@ class RowIndex(tk.Canvas):
1934
1953
  check_input_valid=False,
1935
1954
  )
1936
1955
  if self.MT.edit_validation_func:
1937
- self.text_editor_value = self.MT.edit_validation_func(event_data)
1938
- if self.text_editor_value is not None and self.input_valid_for_cell(datarn, self.text_editor_value):
1939
- edited = set_data(value=self.text_editor_value)
1940
- elif self.input_valid_for_cell(datarn, self.text_editor_value):
1941
- edited = set_data(value=self.text_editor_value)
1956
+ text_editor_value = self.MT.edit_validation_func(event_data)
1957
+ if text_editor_value is not None and self.input_valid_for_cell(datarn, text_editor_value):
1958
+ edited = set_data(value=text_editor_value)
1959
+ elif self.input_valid_for_cell(datarn, text_editor_value):
1960
+ edited = set_data(value=text_editor_value)
1942
1961
  if edited:
1943
1962
  try_binding(self.extra_end_edit_cell_func, event_data)
1944
1963
  self.MT.recreate_all_selection_boxes()
@@ -2125,6 +2144,7 @@ class RowIndex(tk.Canvas):
2125
2144
 
2126
2145
  def hide_dropdown_window(self) -> None:
2127
2146
  if self.dropdown.open:
2147
+ self.dropdown.window.unbind("<FocusOut>")
2128
2148
  self.itemconfig(self.dropdown.canvas_id, state="hidden")
2129
2149
  self.dropdown.open = False
2130
2150
 
tksheet/sheet.py CHANGED
@@ -171,6 +171,9 @@ class Sheet(tk.Frame):
171
171
  display_selected_fg_over_highlights: bool = False,
172
172
  show_selected_cells_border: bool = True,
173
173
  treeview: bool = False,
174
+ treeview_indent: str | int = "3",
175
+ rounded_boxes: bool = True,
176
+ alternate_color: str = "",
174
177
  # colors
175
178
  outline_thickness: int = 0,
176
179
  outline_color: str = theme_light_blue["outline_color"],
@@ -3795,8 +3798,6 @@ class Sheet(tk.Frame):
3795
3798
  )
3796
3799
  if deselect_all:
3797
3800
  self.MT.deselect(redraw=False)
3798
- else:
3799
- self.MT.deselect_any(rows=rows, redraw=False)
3800
3801
  self.set_refresh_timer(redraw)
3801
3802
  return self
3802
3803
 
@@ -4558,6 +4559,7 @@ class Sheet(tk.Frame):
4558
4559
  text: str | None = None,
4559
4560
  values: list | None = None,
4560
4561
  open_: bool | None = None,
4562
+ redraw: bool = True,
4561
4563
  ) -> DotDict | Sheet:
4562
4564
  """
4563
4565
  Modify options for item
@@ -4600,7 +4602,7 @@ class Sheet(tk.Frame):
4600
4602
  else:
4601
4603
  self.RI.tree_open_ids.discard(item)
4602
4604
  get = not (isinstance(iid, str) or isinstance(text, str) or isinstance(values, list) or isinstance(open_, bool))
4603
- self.set_refresh_timer(redraw=not get)
4605
+ self.set_refresh_timer(redraw=not get or redraw)
4604
4606
  if get:
4605
4607
  return DotDict(
4606
4608
  text=self.RI.tree[item].text,
@@ -4616,10 +4618,11 @@ class Sheet(tk.Frame):
4616
4618
  raise ValueError(f"item '{item.lower()}' does not exist.")
4617
4619
 
4618
4620
  def rowitem(self, row: int, data_index: bool = False) -> str | None:
4619
- if not data_index:
4620
- row = self.data_r(row)
4621
- if isinstance(row, int) and len(self.MT._row_index) > row:
4622
- return self.MT._row_index[row].iid
4621
+ if isinstance(row, int):
4622
+ if not data_index:
4623
+ row = self.data_r(row)
4624
+ if len(self.MT._row_index) > row:
4625
+ return self.MT._row_index[row].iid
4623
4626
  return None
4624
4627
 
4625
4628
  def get_children(self, item: None | str = None) -> Generator[str]:
@@ -4660,67 +4663,23 @@ class Sheet(tk.Frame):
4660
4663
  self.set_refresh_timer(True)
4661
4664
  return self
4662
4665
 
4663
- def set_children(self, item: str, *newchildren) -> Sheet:
4666
+ def set_children(self, parent: str, *newchildren) -> Sheet:
4664
4667
  """
4665
- Moves everything in '*newchildren' under 'item'
4668
+ Moves everything in '*newchildren' under 'parent'
4666
4669
  """
4667
- if (item := item.lower()) and item not in self.RI.tree:
4668
- raise ValueError(f"Item '{item}' does not exist.")
4669
- mapping = {}
4670
- to_show = []
4671
- if item:
4672
- new_parent = self.RI.tree[item]
4673
- if new_parent.children:
4674
- ctr = self.RI.tree_rns[new_parent.children[-1].iid] + 1
4675
- else:
4676
- ctr = self.RI.tree_rns[new_parent.iid] + 1
4677
- for cid in unpack(newchildren):
4678
- if self.RI.pid_causes_recursive_loop(cid, item):
4679
- raise ValueError(f"iid '{cid}' causes a recursive loop with parent '{item}'.")
4680
- cid_node = self.RI.tree[cid]
4681
- mapping[self.RI.tree_rns[cid]] = ctr
4682
- if item in self.RI.tree_open_ids and self.item_displayed(item):
4683
- to_show.append(ctr)
4684
- ctr += 1
4685
- for did in self.RI.get_iid_descendants(cid):
4686
- mapping[self.RI.tree_rns[did]] = ctr
4687
- if to_show and self.RI.ancestors_all_open(did, self.RI.tree[cid].parent):
4688
- to_show.append(ctr)
4689
- ctr += 1
4690
- self.RI.remove_node_from_parents_children(cid_node)
4691
- cid_node.parent = new_parent
4692
- new_parent.children.append(cid_node)
4693
- else:
4694
- ctr = (
4695
- len(self.MT._row_index)
4696
- - len(newchildren)
4697
- - sum(1 for cid in unpack(newchildren) for _ in self.RI.get_iid_descendants(cid))
4698
- )
4699
- for cid in unpack(newchildren):
4700
- cid_node = self.RI.tree[cid]
4701
- mapping[self.RI.tree_rns[cid]] = ctr
4702
- to_show.append(ctr)
4703
- ctr += 1
4704
- for did in self.RI.get_iid_descendants(cid):
4705
- mapping[self.RI.tree_rns[did]] = ctr
4706
- if self.RI.ancestors_all_open(did, cid_node.parent):
4707
- to_show.append(ctr)
4708
- ctr += 1
4709
- self.RI.remove_node_from_parents_children(cid_node)
4710
- self.RI.tree[cid].parent = ""
4711
- self.mapping_move_rows(
4712
- data_new_idxs=mapping,
4713
- data_indexes=True,
4714
- create_selections=False,
4715
- redraw=False,
4716
- )
4717
- if item and (item not in self.RI.tree_open_ids or not self.item_displayed(item)):
4718
- self.hide_rows(set(mapping.values()), data_indexes=True)
4719
- self.show_rows(to_show)
4720
- self.set_refresh_timer(True)
4670
+ for iid in unpack(newchildren):
4671
+ self.move(iid, parent)
4721
4672
  return self
4722
4673
 
4723
- def move(self, item: str, parent: str, index: int = 0) -> Sheet:
4674
+ def find_rn_at_top_index(self, index: int) -> int:
4675
+ wo_par = 0
4676
+ for rn, n in enumerate(self.MT._row_index):
4677
+ if not n.parent:
4678
+ if wo_par == index:
4679
+ return rn
4680
+ wo_par += 1
4681
+
4682
+ def move(self, item: str, parent: str, index: int | None = None) -> Sheet:
4724
4683
  """
4725
4684
  Moves item to be under parent as child at index
4726
4685
  'parent' can be empty string which will make item a top node
@@ -4737,35 +4696,49 @@ class Sheet(tk.Frame):
4737
4696
  raise ValueError(f"iid '{item}' causes a recursive loop with parent '{parent}'.")
4738
4697
  parent_node = self.RI.tree[parent]
4739
4698
  if parent_node.children:
4740
- if len(parent_node.children) < index:
4741
- index = len(parent_node.children)
4742
- ctr = self.RI.tree_rns[parent_node.children[index].iid]
4699
+ if index is None or index >= len(parent_node.children):
4700
+ index = len(parent_node.children) - 1
4701
+ item_r = self.RI.tree_rns[item]
4702
+ new_r = self.RI.tree_rns[parent_node.children[index].iid]
4703
+ if item_node not in parent_node.children:
4704
+ new_r += 1
4705
+ new_r_desc = sum(1 for _ in self.RI.get_iid_descendants(parent_node.children[index].iid))
4706
+ item_desc = sum(1 for _ in self.RI.get_iid_descendants(item))
4707
+ if item_r < new_r:
4708
+ r_ctr = new_r + new_r_desc - item_desc
4709
+ else:
4710
+ r_ctr = new_r
4743
4711
  else:
4744
- ctr = self.RI.tree_rns[parent_node.iid] + 1
4745
- mapping[self.RI.tree_rns[item]] = ctr
4712
+ r_ctr = self.RI.tree_rns[parent_node.iid] + 1
4713
+ mapping[item_r] = r_ctr
4746
4714
  if parent in self.RI.tree_open_ids and self.item_displayed(parent):
4747
- to_show.append(ctr)
4748
- ctr += 1
4715
+ to_show.append(r_ctr)
4716
+ r_ctr += 1
4749
4717
  for did in self.RI.get_iid_descendants(item):
4750
- mapping[self.RI.tree_rns[did]] = ctr
4718
+ mapping[self.RI.tree_rns[did]] = r_ctr
4751
4719
  if to_show and self.RI.ancestors_all_open(did, item_node.parent):
4752
- to_show.append(ctr)
4753
- ctr += 1
4720
+ to_show.append(r_ctr)
4721
+ r_ctr += 1
4754
4722
  self.RI.remove_node_from_parents_children(item_node)
4755
4723
  item_node.parent = parent_node
4756
4724
  parent_node.children.append(item_node)
4757
4725
  else:
4758
- if len(self.MT._row_index) < index:
4759
- index = len(self.MT._row_index)
4760
- ctr = index
4761
- mapping[self.RI.tree_rns[item]] = ctr
4762
- to_show.append(ctr)
4763
- ctr += 1
4726
+ new_r = self.find_rn_at_top_index((sum(1 for _ in self.get_children("")) - 1) if index is None else index)
4727
+ item_r = self.RI.tree_rns[item]
4728
+ if item_r < new_r:
4729
+ par_desc = sum(1 for _ in self.RI.get_iid_descendants(self.rowitem(new_r, data_index=True)))
4730
+ item_desc = sum(1 for _ in self.RI.get_iid_descendants(item))
4731
+ r_ctr = new_r + par_desc - item_desc
4732
+ else:
4733
+ r_ctr = new_r
4734
+ mapping[item_r] = r_ctr
4735
+ to_show.append(r_ctr)
4736
+ r_ctr += 1
4764
4737
  for did in self.RI.get_iid_descendants(item):
4765
- mapping[self.RI.tree_rns[did]] = ctr
4738
+ mapping[self.RI.tree_rns[did]] = r_ctr
4766
4739
  if to_show and self.RI.ancestors_all_open(did, item_node.parent):
4767
- to_show.append(ctr)
4768
- ctr += 1
4740
+ to_show.append(r_ctr)
4741
+ r_ctr += 1
4769
4742
  self.RI.remove_node_from_parents_children(item_node)
4770
4743
  self.RI.tree[item].parent = ""
4771
4744
  self.mapping_move_rows(
tksheet/sheet_options.py CHANGED
@@ -234,6 +234,8 @@ def new_sheet_options() -> DotDict:
234
234
  "display_selected_fg_over_highlights": False,
235
235
  "show_selected_cells_border": True,
236
236
  "treeview": False,
237
- "treeview_indent": "2",
237
+ "treeview_indent": "3",
238
+ "rounded_boxes": True,
239
+ "alternate_color": "",
238
240
  }
239
241
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tksheet
3
- Version: 7.1.6
3
+ Version: 7.1.7
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
@@ -0,0 +1,21 @@
1
+ tksheet/__init__.py,sha256=UgweIADXnlw1-KpD4Xr0sA_l6qAWTP3yzQ1Bo716Fkg,2010
2
+ tksheet/colors.py,sha256=1k06VorynLmnC4FdJg8H4reIA6rXaeXBpdMwXLhN8oc,51594
3
+ tksheet/column_headers.py,sha256=dBEnPjbI6nqcS0OISWJ0tXBBxtGjB67OE8z2-Bx8X1U,99870
4
+ tksheet/formatters.py,sha256=DXif00aq9DgFpXwkbiqD86KxtDg0Meop51hLY-KcGNQ,10037
5
+ tksheet/functions.py,sha256=dMJwG27Qo5WsfwzkL7A9X-PERGuGFhpQvP95BnlohJ8,39612
6
+ tksheet/listbox.py,sha256=BUHx-PsZL6yGMewxAaEZV_8mOXCVWenWqzHp3tasGvo,384
7
+ tksheet/main_table.py,sha256=ngwXVNqrtOZPtR-BqCuh7UVAubfB8v_JfdI2peJAzPM,323154
8
+ tksheet/other_classes.py,sha256=Hjr7c0kD2_880xjtGuFn9gQ-7ED5kSiNahniBeXcf84,13604
9
+ tksheet/row_index.py,sha256=NHFu5a35nPMuxajHhpS2RH8sOTYKKKb6WGO8zWofxqs,105354
10
+ tksheet/sheet.py,sha256=PbCa8RCiBYg3Zl_26j1aIKphGst84S2lGHKodnZ6Kk0,256166
11
+ tksheet/sheet_options.py,sha256=mh0rTvWrFvIKaiv88jtMZy0TSA8zTS1GXSe88u8_rzk,11978
12
+ tksheet/text_editor.py,sha256=81_IZKrTVa2KIx2cJ4n3cFvFMAwvbHIQYgqtyat-97I,6681
13
+ tksheet/themes.py,sha256=OwUe31NRbosjw3ZoZsMyB8lNVyYin9YcKLhCturi5q8,13398
14
+ tksheet/top_left_rectangle.py,sha256=-2u9GfOvcqhkKwHEtbqdFvXCY3RbvL5k2Sh9l3r_k04,8275
15
+ tksheet/types.py,sha256=IgoEHMbceKpakcZtanxKaKJ4RdCq7UW6EoEIIz5O59k,340
16
+ tksheet/vars.py,sha256=Iukk7-MMT9X7vv0m3nQPKzbp2Iw2Pg1wJEW7js919Mo,2092
17
+ tksheet-7.1.7.dist-info/LICENSE.txt,sha256=ndbcCPe9SlHfweE_W2RAueWUe2k7yudyxYLq6WjFdn4,1101
18
+ tksheet-7.1.7.dist-info/METADATA,sha256=w5PeLRxO5tOgSz577YZLks3-OtluVDYw6Kw--fixI8w,6013
19
+ tksheet-7.1.7.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
20
+ tksheet-7.1.7.dist-info/top_level.txt,sha256=my61PXCcck_HHAc9cq3NAlyAr3A3FXxCy9gptEOaCN8,8
21
+ tksheet-7.1.7.dist-info/RECORD,,
@@ -1,20 +0,0 @@
1
- tksheet/__init__.py,sha256=95JUoulFU3M59S4BSLtmbHtdYN9bUTph238FEb2u0S8,1874
2
- tksheet/colors.py,sha256=1k06VorynLmnC4FdJg8H4reIA6rXaeXBpdMwXLhN8oc,51594
3
- tksheet/column_headers.py,sha256=2Y5QcT5WmxjXudPszKHcd7hHuTNRfxoRVyKx2bsBGZI,99449
4
- tksheet/formatters.py,sha256=DXif00aq9DgFpXwkbiqD86KxtDg0Meop51hLY-KcGNQ,10037
5
- tksheet/functions.py,sha256=OZdcbYcKpiU_2YhwPWASZ8QfyF3tRhGiwY80sh5Rbx4,39610
6
- tksheet/main_table.py,sha256=ThNsmwC_e2o5nEjB53RvIMLaj3rcWEfASeMtt2TTNl4,321201
7
- tksheet/other_classes.py,sha256=Hjr7c0kD2_880xjtGuFn9gQ-7ED5kSiNahniBeXcf84,13604
8
- tksheet/row_index.py,sha256=TsAYN0cBchH-diKzU3fuZXlgTOmrODq8EIeT2RcTblk,104750
9
- tksheet/sheet.py,sha256=_VotKhIMM1aAUmDNPZC4h0_q6NP-sB4nGRRIZ-iggSc,257417
10
- tksheet/sheet_options.py,sha256=Vcy4RxTKvf2HM-Yc53ex0lpBe6ATXc_pdx4oLhfjDgU,11906
11
- tksheet/text_editor.py,sha256=81_IZKrTVa2KIx2cJ4n3cFvFMAwvbHIQYgqtyat-97I,6681
12
- tksheet/themes.py,sha256=OwUe31NRbosjw3ZoZsMyB8lNVyYin9YcKLhCturi5q8,13398
13
- tksheet/top_left_rectangle.py,sha256=-2u9GfOvcqhkKwHEtbqdFvXCY3RbvL5k2Sh9l3r_k04,8275
14
- tksheet/types.py,sha256=IgoEHMbceKpakcZtanxKaKJ4RdCq7UW6EoEIIz5O59k,340
15
- tksheet/vars.py,sha256=Iukk7-MMT9X7vv0m3nQPKzbp2Iw2Pg1wJEW7js919Mo,2092
16
- tksheet-7.1.6.dist-info/LICENSE.txt,sha256=ndbcCPe9SlHfweE_W2RAueWUe2k7yudyxYLq6WjFdn4,1101
17
- tksheet-7.1.6.dist-info/METADATA,sha256=2ZtrwFvnlwzpFt9hY_C_Mpf5ghtHjmRPz65pfc5N1xI,6013
18
- tksheet-7.1.6.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
19
- tksheet-7.1.6.dist-info/top_level.txt,sha256=my61PXCcck_HHAc9cq3NAlyAr3A3FXxCy9gptEOaCN8,8
20
- tksheet-7.1.6.dist-info/RECORD,,