tksheet 7.5.8__py3-none-any.whl → 7.5.10__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/__init__.py CHANGED
@@ -4,7 +4,7 @@
4
4
  tksheet - A Python tkinter table widget
5
5
  """
6
6
 
7
- __version__ = "7.5.8"
7
+ __version__ = "7.5.10"
8
8
 
9
9
  from .colors import (
10
10
  color_map,
tksheet/column_headers.py CHANGED
@@ -1863,14 +1863,15 @@ class ColumnHeaders(tk.Canvas):
1863
1863
  except Exception:
1864
1864
  self.tooltip.content_text.focus_set()
1865
1865
  return
1866
- if not self.tooltip.cell_readonly:
1866
+ if not self.tooltip.cell_readonly or not self.tooltip.note_readonly:
1867
1867
  _, c, cell, note = self.tooltip.get()
1868
1868
  datacn = self.MT.datacn(c)
1869
- event_data = self.new_single_edit_event(c, datacn, "??", self.get_cell_data(datacn), cell)
1870
- self.do_single_edit(c, datacn, event_data, cell)
1871
- if not self.tooltip.note_readonly:
1872
- span = self.PAR.span(None, datacn, None, datacn + 1).options(table=False, header=True)
1873
- self.PAR.note(span, note=note if note else None, readonly=False)
1869
+ if not self.tooltip.cell_readonly:
1870
+ event_data = self.new_single_edit_event(c, datacn, "??", self.get_cell_data(datacn), cell)
1871
+ self.do_single_edit(c, datacn, event_data, cell)
1872
+ if not self.tooltip.note_readonly:
1873
+ span = self.PAR.span(None, datacn, None, datacn + 1).options(table=False, header=True)
1874
+ self.PAR.note(span, note=note if note else None, readonly=False)
1874
1875
  self.hide_tooltip()
1875
1876
  self.MT.refresh()
1876
1877
  self.focus_set()
tksheet/functions.py CHANGED
@@ -835,6 +835,17 @@ def move_elements_to(
835
835
  )
836
836
 
837
837
 
838
+ def remove_duplicates_outside_section(strings: list[str], section_start: int, section_size: int) -> list[str]:
839
+ if section_start == 0 and section_size >= len(strings):
840
+ return strings
841
+
842
+ section_end = section_start + section_size
843
+ section_set = set(strings[section_start:section_end])
844
+ print(section_set, section_start, section_size)
845
+
846
+ return [s for i, s in enumerate(strings) if (section_start <= i < section_end) or (s not in section_set)]
847
+
848
+
838
849
  def get_new_indexes(
839
850
  move_to: int,
840
851
  to_move: Iterable[int],
tksheet/main_table.py CHANGED
@@ -1805,7 +1805,7 @@ class MainTable(tk.Canvas):
1805
1805
  create_selections: bool = True,
1806
1806
  event_data: EventDataDict | None = None,
1807
1807
  undo_modification: EventDataDict | None = None,
1808
- node_change: None | tuple[str, str, int] = None,
1808
+ node_change: None | dict = None,
1809
1809
  manage_tree: bool = True,
1810
1810
  ) -> tuple[dict[int, int], dict[int, int], EventDataDict]:
1811
1811
  self.saved_row_heights = {}
@@ -1965,7 +1965,10 @@ class MainTable(tk.Canvas):
1965
1965
  # finally, change the span coords
1966
1966
  span["from_r"], span["upto_r"] = newfrom, newupto
1967
1967
 
1968
- if (not self.PAR.ops.treeview or not undo_modification) and (move_heights and disp_new_idxs):
1968
+ if not undo_modification and create_selections and self.PAR.ops.treeview:
1969
+ self.PAR.selection_set(*[self._row_index[k].iid for k in data_new_idxs.values()])
1970
+
1971
+ elif not undo_modification and move_heights and disp_new_idxs:
1969
1972
  self.set_row_positions(
1970
1973
  itr=move_elements_by_mapping_gen(
1971
1974
  self.get_row_heights(),
@@ -6577,19 +6580,20 @@ class MainTable(tk.Canvas):
6577
6580
  except Exception:
6578
6581
  self.tooltip.content_text.focus_set()
6579
6582
  return
6580
- if not self.tooltip.cell_readonly:
6583
+ if not self.tooltip.cell_readonly or not self.tooltip.note_readonly:
6581
6584
  r, c, cell, note = self.tooltip.get()
6582
6585
  datarn, datacn = self.datarn(r), self.datacn(c)
6583
- event_data = self.new_single_edit_event(
6584
- r, c, datarn, datacn, "??", self.get_cell_data(datarn, datacn), cell
6585
- )
6586
- value, event_data = self.single_edit_run_validation(datarn, datacn, event_data)
6587
- if value is not None and (
6588
- self.set_cell_data_undo(r=r, c=c, datarn=datarn, datacn=datacn, value=value, redraw=False)
6589
- ):
6590
- try_binding(self.extra_end_edit_cell_func, event_data)
6591
- if not self.tooltip.note_readonly:
6592
- self.PAR.note(datarn, datacn, note=note if note else None, readonly=False)
6586
+ if not self.tooltip.cell_readonly:
6587
+ event_data = self.new_single_edit_event(
6588
+ r, c, datarn, datacn, "??", self.get_cell_data(datarn, datacn), cell
6589
+ )
6590
+ value, event_data = self.single_edit_run_validation(datarn, datacn, event_data)
6591
+ if value is not None and (
6592
+ self.set_cell_data_undo(r=r, c=c, datarn=datarn, datacn=datacn, value=value, redraw=False)
6593
+ ):
6594
+ try_binding(self.extra_end_edit_cell_func, event_data)
6595
+ if not self.tooltip.note_readonly:
6596
+ self.PAR.note(datarn, datacn, note=note if note else None, readonly=False)
6593
6597
  self.hide_tooltip()
6594
6598
  self.refresh()
6595
6599
  self.focus_set()
tksheet/row_index.py CHANGED
@@ -35,6 +35,7 @@ from .functions import (
35
35
  num2alpha,
36
36
  push_displayed,
37
37
  recursive_bind,
38
+ remove_duplicates_outside_section,
38
39
  rounded_box_coords,
39
40
  safe_copy,
40
41
  stored_event_dict,
@@ -884,7 +885,7 @@ class RowIndex(tk.Canvas):
884
885
  elif (iid := self.event_over_tree_arrow(r, canvasy, event.x)) is not None:
885
886
  if self.MT.selection_boxes:
886
887
  self.select_row(r, ext=True, redraw=False)
887
- self.PAR.item(iid, open_=iid not in self.tree_open_ids)
888
+ self.PAR.item(iid, open_=iid not in self.tree_open_ids, undo=False)
888
889
  else:
889
890
  self.mouseclick_outside_editor_or_dropdown_all_canvases(inside=True)
890
891
  self.b1_pressed_loc = None
@@ -2036,14 +2037,15 @@ class RowIndex(tk.Canvas):
2036
2037
  except Exception:
2037
2038
  self.tooltip.content_text.focus_set()
2038
2039
  return
2039
- if not self.tooltip.cell_readonly:
2040
+ if not self.tooltip.cell_readonly or not self.tooltip.note_readonly:
2040
2041
  r, _, cell, note = self.tooltip.get()
2041
2042
  datarn = self.MT.datarn(r)
2042
- event_data = self.new_single_edit_event(r, datarn, "??", self.get_cell_data(datarn), cell)
2043
- self.do_single_edit(r, datarn, event_data, cell)
2044
- if not self.tooltip.note_readonly:
2045
- span = self.PAR.span(datarn).options(table=False, index=True)
2046
- self.PAR.note(span, note=note if note else None, readonly=False)
2043
+ if not self.tooltip.cell_readonly:
2044
+ event_data = self.new_single_edit_event(r, datarn, "??", self.get_cell_data(datarn), cell)
2045
+ self.do_single_edit(r, datarn, event_data, cell)
2046
+ if not self.tooltip.note_readonly:
2047
+ span = self.PAR.span(datarn).options(table=False, index=True)
2048
+ self.PAR.note(span, note=note if note else None, readonly=False)
2047
2049
  self.hide_tooltip()
2048
2050
  self.MT.refresh()
2049
2051
  self.focus_set()
@@ -2790,6 +2792,14 @@ class RowIndex(tk.Canvas):
2790
2792
 
2791
2793
  return event_data
2792
2794
 
2795
+ def remove_descendants(self, iids: set[str]) -> tuple[list[int], set[str]]:
2796
+ return (
2797
+ sorted(
2798
+ self.rns[iid] for iid in iids if not any(ancestor in iids for ancestor in self.get_iid_ancestors(iid))
2799
+ ),
2800
+ iids,
2801
+ )
2802
+
2793
2803
  def move_rows_mod_nodes(
2794
2804
  self,
2795
2805
  data_new_idxs: dict[int, int],
@@ -2798,7 +2808,7 @@ class RowIndex(tk.Canvas):
2798
2808
  maxidx: int,
2799
2809
  event_data: EventDataDict,
2800
2810
  undo_modification: EventDataDict | None = None,
2801
- node_change: tuple[str, str, int] | None = None,
2811
+ node_change: dict | None = None,
2802
2812
  ) -> Generator[tuple[dict[int, int], dict[int, int], dict[str, int], EventDataDict]] | None:
2803
2813
  # data_new_idxs is {old: new, old: new}
2804
2814
  # data_old_idxs is {new: old, new: old}
@@ -2812,97 +2822,84 @@ class RowIndex(tk.Canvas):
2812
2822
 
2813
2823
  elif event_data["moved"]["rows"]:
2814
2824
  if node_change:
2815
- item = node_change[0]
2816
- moved_rows = [self.rns[item]]
2817
- new_parent = node_change[1]
2818
- move_to_index = node_change[2]
2819
- # new parent exists
2825
+ moved_rows, iids = self.remove_descendants(node_change["iids"])
2826
+ new_parent = node_change["new_par"]
2827
+ move_to_index = node_change["index"]
2820
2828
  if new_parent:
2821
2829
  new_par_cn = self.iid_children(new_parent)
2822
- # determine index
2830
+ len_new_par_cn = len(new_par_cn)
2823
2831
  if isinstance(move_to_index, int):
2824
- move_to_index = min(move_to_index, len(new_par_cn))
2832
+ move_to_index = min(move_to_index, len_new_par_cn)
2825
2833
  else:
2826
- move_to_index = len(new_par_cn)
2827
- # determine insert row
2834
+ move_to_index = len_new_par_cn
2828
2835
  if not new_par_cn:
2829
2836
  insert_row = self.rns[new_parent] + 1
2830
- elif move_to_index >= len(new_par_cn):
2837
+ elif move_to_index >= len_new_par_cn:
2831
2838
  insert_row = self.rns[new_par_cn[-1]] + self.num_descendants(new_par_cn[-1]) + 1
2832
- elif new_parent == self.iid_parent(item):
2833
- if move_to_index <= self.PAR.index(item):
2834
- # Insert before the sibling at move_to_index
2835
- insert_row = self.rns[new_par_cn[move_to_index]]
2836
- else:
2837
- # Insert after the sibling at move_to_index
2838
- insert_row = self.rns[new_par_cn[move_to_index]]
2839
- insert_row += 1 + self.num_descendants(new_par_cn[move_to_index])
2840
2839
  else:
2840
+ # To get the ids to the proper index and insert row -
2841
+ # For every iid that is being moved under the same parent but to an
2842
+ # index further along we have to adjust the insert row and move to index
2841
2843
  insert_row = self.rns[new_par_cn[move_to_index]]
2842
- # no new parent
2844
+ for iid in iids:
2845
+ if new_parent == self.iid_parent(iid) and move_to_index > self.PAR.index(iid):
2846
+ insert_row += 1 + self.num_descendants(new_par_cn[move_to_index])
2847
+ move_to_index += 1
2848
+ if move_to_index >= len_new_par_cn:
2849
+ break
2843
2850
  else:
2844
- # determine index
2845
2851
  if isinstance(move_to_index, int):
2846
2852
  move_to_index = min(move_to_index, sum(1 for _ in self.gen_top_nodes()))
2847
2853
  else:
2848
2854
  move_to_index = sum(1 for _ in self.gen_top_nodes())
2849
- # determine insert row
2850
2855
  insert_row = self.PAR._get_id_insert_row(move_to_index, new_parent)
2851
2856
  else:
2852
- # remove any descendants
2853
- iids = {self.MT._row_index[r].iid for r in event_data["moved"]["rows"]["data"]}
2854
- moved_rows = sorted(
2855
- self.rns[iid]
2856
- for iid in iids
2857
- if not any(ancestor in iids for ancestor in self.get_iid_ancestors(iid))
2857
+ moved_rows, iids = self.remove_descendants(
2858
+ {self.MT._row_index[r].iid for r in event_data["moved"]["rows"]["data"]}
2858
2859
  )
2859
- item = self.MT._row_index[moved_rows[0]].iid
2860
2860
  if isinstance(event_data.value, int):
2861
2861
  if event_data.value >= len(self.MT.displayed_rows):
2862
2862
  insert_row = len(self.MT._row_index)
2863
2863
  else:
2864
2864
  insert_row = self.MT.datarn(event_data.value)
2865
2865
  move_to_iid = self.MT._row_index[min(insert_row, len(self.MT._row_index) - 1)].iid
2866
-
2867
2866
  else:
2868
2867
  min_from = min(event_data["moved"]["rows"]["data"])
2869
- # max_from = max(event_data.moved.rows)
2870
2868
  min_to = min(event_data["moved"]["rows"]["data"].values())
2871
2869
  max_to = max(event_data["moved"]["rows"]["data"].values())
2872
2870
  insert_row = max_to if min_from <= min_to else min_to
2873
2871
  move_to_iid = self.MT._row_index[insert_row].iid
2874
-
2875
2872
  move_to_index = self.PAR.index(move_to_iid)
2876
2873
  new_parent = self.iid_parent(move_to_iid)
2877
-
2878
- event_data["moved"]["rows"]["data"] = {moved_rows[0]: insert_row}
2874
+ if any(
2875
+ self.move_pid_causes_recursive_loop(self.MT._row_index[r].iid, new_parent) for r in moved_rows
2876
+ ):
2877
+ event_data["moved"]["rows"], data_new_idxs, data_old_idxs = {}, {}, {}
2878
+ moved_rows = []
2879
2879
 
2880
2880
  new_loc_is_displayed = not new_parent or (
2881
2881
  new_parent and new_parent in self.tree_open_ids and self.PAR.item_displayed(new_parent)
2882
2882
  )
2883
- event_data["moved"]["rows"]["displayed"] = {}
2883
+ event_data["moved"]["rows"]["displayed"], disp_new_idxs = {}, {}
2884
2884
 
2885
- if any(self.move_pid_causes_recursive_loop(self.MT._row_index[r].iid, new_parent) for r in moved_rows):
2886
- event_data["moved"]["rows"] = {}
2887
- data_new_idxs, data_old_idxs, disp_new_idxs = {}, {}, {}
2888
-
2889
- else:
2885
+ if moved_rows:
2886
+ event_data["moved"]["rows"]["data"] = {moved_rows[0]: insert_row}
2887
+ iids = []
2890
2888
  for r in moved_rows:
2891
2889
  iid = self.MT._row_index[r].iid
2892
- event_data = self.move_node(
2893
- event_data=event_data,
2894
- item=iid,
2895
- parent=new_parent,
2896
- index=move_to_index,
2890
+ event_data = self.move_node(event_data=event_data, item=iid, parent=new_parent)
2891
+ iids.append(iid)
2892
+ if new_parent:
2893
+ self.iid_node(new_parent).children[move_to_index:move_to_index] = iids
2894
+ self.iid_node(new_parent).children = remove_duplicates_outside_section(
2895
+ self.iid_children(new_parent), move_to_index, len(iids)
2897
2896
  )
2898
- move_to_index += 1
2899
2897
  event_data["moved"]["rows"]["data"] = get_new_indexes(
2900
2898
  insert_row,
2901
2899
  event_data["moved"]["rows"]["data"],
2902
2900
  )
2903
2901
  data_new_idxs = event_data["moved"]["rows"]["data"]
2904
2902
  data_old_idxs = {v: k for k, v in data_new_idxs.items()}
2905
- disp_new_idxs = event_data["moved"]["rows"]["displayed"]
2906
2903
 
2907
2904
  if data_new_idxs:
2908
2905
  self.MT.move_rows_data(data_new_idxs, data_old_idxs, maxidx)
@@ -2919,27 +2916,16 @@ class RowIndex(tk.Canvas):
2919
2916
 
2920
2917
  yield None
2921
2918
 
2922
- def move_node(
2923
- self,
2924
- event_data: EventDataDict,
2925
- item: str,
2926
- parent: str | None = None,
2927
- index: int = 0,
2928
- ) -> EventDataDict:
2919
+ def move_node(self, event_data: EventDataDict, item: str, parent: str | None = None) -> EventDataDict:
2929
2920
  # also backs up nodes
2930
2921
  if parent is None:
2931
2922
  parent = self.iid_parent(item)
2932
-
2933
2923
  item_node = self.iid_node(item)
2934
-
2935
- # new parent is an item
2936
2924
  if parent:
2937
2925
  parent_node = self.iid_node(parent)
2938
2926
  # its the same parent, we're just moving index
2939
2927
  if parent == item_node.parent:
2940
2928
  event_data = self.copy_nodes((item, parent), event_data)
2941
- parent_node.children.insert(index, parent_node.children.pop(parent_node.children.index(item)))
2942
-
2943
2929
  else:
2944
2930
  if item_node.parent:
2945
2931
  event_data = self.copy_nodes((item, item_node.parent, parent), event_data)
@@ -2947,9 +2933,6 @@ class RowIndex(tk.Canvas):
2947
2933
  event_data = self.copy_nodes((item, parent), event_data)
2948
2934
  self.remove_iid_from_parents_children(item)
2949
2935
  item_node.parent = parent_node.iid
2950
- parent_node.children.insert(index, item)
2951
-
2952
- # no new parent
2953
2936
  else:
2954
2937
  if item_node.parent:
2955
2938
  event_data = self.copy_nodes((item, item_node.parent), event_data)
@@ -2958,7 +2941,7 @@ class RowIndex(tk.Canvas):
2958
2941
  self.remove_iid_from_parents_children(item)
2959
2942
  self.MT._row_index[self.rns[item]].parent = ""
2960
2943
 
2961
- # last row in mapping is where to start from +1
2944
+ # last row in mapping + 1 is where to start from
2962
2945
  mapping = event_data["moved"]["rows"]["data"]
2963
2946
  row_ctr = next(reversed(mapping.values())) + 1
2964
2947
 
@@ -2966,13 +2949,11 @@ class RowIndex(tk.Canvas):
2966
2949
  if rn not in mapping:
2967
2950
  mapping[rn] = row_ctr
2968
2951
  row_ctr += 1
2969
-
2970
2952
  for did in self.get_iid_descendants(item):
2971
2953
  mapping[self.rns[did]] = row_ctr
2972
2954
  row_ctr += 1
2973
2955
 
2974
2956
  event_data["moved"]["rows"]["data"] = mapping
2975
-
2976
2957
  return event_data
2977
2958
 
2978
2959
  def restore_nodes(self, event_data: EventDataDict) -> None:
tksheet/sheet.py CHANGED
@@ -4980,14 +4980,6 @@ class Sheet(tk.Frame):
4980
4980
  self.del_rows(rows, data_indexes=True, undo=undo)
4981
4981
  return self.set_refresh_timer(rows)
4982
4982
 
4983
- def set_children(self, parent: str, *newchildren) -> Sheet:
4984
- """
4985
- Moves everything in '*newchildren' under 'parent'
4986
- """
4987
- for iid in unpack(newchildren):
4988
- self.move(iid, parent)
4989
- return self
4990
-
4991
4983
  def top_index_row(self, index: int) -> int:
4992
4984
  try:
4993
4985
  return next(self.RI.rns[n.iid] for i, n in enumerate(self.RI.gen_top_nodes()) if i == index)
@@ -5009,9 +5001,9 @@ class Sheet(tk.Frame):
5009
5001
  """
5010
5002
  if item not in self.RI.rns:
5011
5003
  raise ValueError(f"Item '{item}' does not exist.")
5012
- if parent and parent not in self.RI.rns:
5004
+ elif parent and parent not in self.RI.rns:
5013
5005
  raise ValueError(f"Parent '{parent}' does not exist.")
5014
- if self.RI.move_pid_causes_recursive_loop(item, parent):
5006
+ elif self.RI.move_pid_causes_recursive_loop(item, parent):
5015
5007
  raise ValueError(f"Item '{item}' causes recursive loop with parent '{parent}.")
5016
5008
  data_new_idxs, disp_new_idxs, event_data = self.MT.move_rows_adjust_options_dict(
5017
5009
  data_new_idxs={},
@@ -5022,7 +5014,45 @@ class Sheet(tk.Frame):
5022
5014
  move_heights=True,
5023
5015
  create_selections=select,
5024
5016
  event_data=None,
5025
- node_change=(item, parent, index),
5017
+ node_change={"iids": {item}, "new_par": parent, "index": index},
5018
+ )
5019
+ if undo:
5020
+ self.MT.undo_stack.append(stored_event_dict(event_data))
5021
+ self.MT.sheet_modified(event_data, emit_event=emit_event)
5022
+ self.set_refresh_timer()
5023
+ return data_new_idxs, disp_new_idxs, event_data
5024
+
5025
+ def set_children(
5026
+ self,
5027
+ parent: str,
5028
+ *newchildren: str,
5029
+ index: int | None = None,
5030
+ select: bool = True,
5031
+ undo: bool = True,
5032
+ emit_event: bool = False,
5033
+ ) -> Sheet:
5034
+ """
5035
+ Moves everything in '*newchildren' under 'parent'
5036
+ """
5037
+ if parent and parent not in self.RI.rns:
5038
+ raise ValueError(f"Parent '{parent}' does not exist.")
5039
+ iids = set()
5040
+ for iid in unpack(newchildren):
5041
+ if iid not in self.RI.rns:
5042
+ raise ValueError(f"Item '{iid}' does not exist.")
5043
+ elif self.RI.move_pid_causes_recursive_loop(iid, parent):
5044
+ raise ValueError(f"Item '{iid}' causes recursive loop with parent '{parent}.")
5045
+ iids.add(iid)
5046
+ data_new_idxs, disp_new_idxs, event_data = self.MT.move_rows_adjust_options_dict(
5047
+ data_new_idxs={},
5048
+ data_old_idxs={},
5049
+ totalrows=None,
5050
+ disp_new_idxs={},
5051
+ move_data=True,
5052
+ move_heights=True,
5053
+ create_selections=select,
5054
+ event_data=None,
5055
+ node_change={"iids": iids, "new_par": parent, "index": index},
5026
5056
  )
5027
5057
  if undo:
5028
5058
  self.MT.undo_stack.append(stored_event_dict(event_data))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tksheet
3
- Version: 7.5.8
3
+ Version: 7.5.10
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
@@ -1,15 +1,15 @@
1
- tksheet/__init__.py,sha256=guUQx6M_vpYrJvYXpJHxr9eq8br5iOMXF1ZqYPEG73M,2532
1
+ tksheet/__init__.py,sha256=3Ue-5hmalzD8JxLLXk1WoBPBWdZ3MWkFfs_3wx0S2w8,2533
2
2
  tksheet/colors.py,sha256=dHhmdFuQDlwohDHsAfT9VdrKoSl_R33L72a3HCin5zo,51591
3
- tksheet/column_headers.py,sha256=5hwloDxaBO2wf_3qJbDDJWX8I8rKx-WPwv0UPWQ9xnk,110618
3
+ tksheet/column_headers.py,sha256=-i8LMCUW1UuKpyurWySJRyjiCqisgFrjm9l8U58bFAY,110720
4
4
  tksheet/constants.py,sha256=4cpU_PmOgN0isBVPWwCwBwqD8Fxnu4HJgDSSjfxjiPo,25467
5
5
  tksheet/find_window.py,sha256=aV2U-IDFL6xNRhF4VomdrXEML4qw6QBqlfrVskuiTNY,20954
6
6
  tksheet/formatters.py,sha256=r2vjgmKs_xWBYlfqVhPPNKQc67zCawOIl4dp4XAEzYg,10182
7
- tksheet/functions.py,sha256=8S5u8GXl-uHxsRfGqG5Vt5ec7nOql7QczvTWSNuoRPg,56109
8
- tksheet/main_table.py,sha256=RuITcYD9kmn8JVYBW8WH6TQzOs03DV57EZbPHTw18iA,367907
7
+ tksheet/functions.py,sha256=O74jt9Kq-JgtWaI7fHBXbIbCTdi79B3eHidR-wfiAZ0,56585
8
+ tksheet/main_table.py,sha256=awMX6ABc_LW-gzhZh9MKnyMv9-ZKpBEQUcEylwKjVMA,368162
9
9
  tksheet/menus.py,sha256=sRHZRgnYWddBtlzvbyWFSN2cVhlmUWyA9zf4vpqun7I,19431
10
10
  tksheet/other_classes.py,sha256=6LpexHAxj23ZweuL3a4yCcdMSj_iXP38S7WRNQAehe0,18354
11
- tksheet/row_index.py,sha256=UgySVE0i3MvAoVz7HVcYZnu_1DpAHby4_pTAkrAKthI,146973
12
- tksheet/sheet.py,sha256=i3h1FBko5dAdlWcv57WoP8e2NorRXk2eC_kACYaLK1Q,271847
11
+ tksheet/row_index.py,sha256=wmoQylsUJQMnbONIndeRM_gW9eHJg-DdmX6MjxqlQlk,146892
12
+ tksheet/sheet.py,sha256=gYm2o_chSI9vCtxY4r5j9soKQXXWFgvuH2FrEd3IGc4,273109
13
13
  tksheet/sheet_options.py,sha256=dhHY4jUULGXH2b_VOjoAfKXm3PAz7QL5CrVnHA0byho,14697
14
14
  tksheet/sorting.py,sha256=zcZPpRtP1h_xJGtGkG3E43H7deKQFnh9cMwZ1B2-aGc,17502
15
15
  tksheet/text_editor.py,sha256=Ksz4kT7TrCIzDhRZK9EM54M7R_5CvrwC1aeTrUPNOTg,8391
@@ -17,8 +17,8 @@ tksheet/themes.py,sha256=kUUCUmvgu8vUlzfVNk9a3BEbeBcU3asNwPB_u-OejCY,18471
17
17
  tksheet/tksheet_types.py,sha256=qthH565jq60QCAeczvIWttIa4X5rFfLWPSwWBMDPilw,4611
18
18
  tksheet/tooltip.py,sha256=TTWk3HW5Sltamish9GCnAECwZLa9Rm6QC8-RCDDtQnE,12374
19
19
  tksheet/top_left_rectangle.py,sha256=A4wWL8PFl57Pn2Ek71rASCE1-bW844cTl7bgt4tLWzI,8499
20
- tksheet-7.5.8.dist-info/licenses/LICENSE.txt,sha256=n1UvJHBr-AYNOf6ExICDsEggh9R7U4V4m_gH7FD-y-o,2305
21
- tksheet-7.5.8.dist-info/METADATA,sha256=zLKKkpmO0H9rS0wtQIokuLh9WOscff7AxfFFVFkfV6Q,9474
22
- tksheet-7.5.8.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
23
- tksheet-7.5.8.dist-info/top_level.txt,sha256=my61PXCcck_HHAc9cq3NAlyAr3A3FXxCy9gptEOaCN8,8
24
- tksheet-7.5.8.dist-info/RECORD,,
20
+ tksheet-7.5.10.dist-info/licenses/LICENSE.txt,sha256=n1UvJHBr-AYNOf6ExICDsEggh9R7U4V4m_gH7FD-y-o,2305
21
+ tksheet-7.5.10.dist-info/METADATA,sha256=GI9d24XzxknLTYE8ITC4_dWUii4pG2r_P-jczO3Sb6I,9475
22
+ tksheet-7.5.10.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
23
+ tksheet-7.5.10.dist-info/top_level.txt,sha256=my61PXCcck_HHAc9cq3NAlyAr3A3FXxCy9gptEOaCN8,8
24
+ tksheet-7.5.10.dist-info/RECORD,,