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/main_table.py CHANGED
@@ -11,7 +11,7 @@ from itertools import accumulate, chain, cycle, filterfalse, islice, repeat
11
11
  from math import ceil, floor
12
12
  from operator import itemgetter
13
13
  from tkinter import TclError
14
- from typing import Literal
14
+ from typing import Any, Literal
15
15
 
16
16
  from .colors import color_map
17
17
  from .column_headers import ColumnHeaders
@@ -101,7 +101,7 @@ from .other_classes import (
101
101
  from .row_index import RowIndex
102
102
  from .sorting import sort_selection
103
103
  from .text_editor import TextEditor
104
- from .tksheet_types import AnyIter
104
+ from .tksheet_types import AnyIter, Binding
105
105
 
106
106
 
107
107
  class MainTable(tk.Canvas):
@@ -359,10 +359,10 @@ class MainTable(tk.Canvas):
359
359
  else:
360
360
  super().event_generate(*args, **kwargs)
361
361
 
362
- def refresh(self, event: object = None) -> None:
362
+ def refresh(self, event: Any = None) -> None:
363
363
  self.PAR.set_refresh_timer()
364
364
 
365
- def window_configured(self, event: object) -> None:
365
+ def window_configured(self, event: Any) -> None:
366
366
  w = self.PAR.winfo_width()
367
367
  if w != self.PAR_width:
368
368
  self.PAR_width = w
@@ -974,7 +974,7 @@ class MainTable(tk.Canvas):
974
974
  self.refresh()
975
975
  return event_data
976
976
 
977
- def ctrl_v(self, event: object = None, validation: bool = True) -> None | EventDataDict:
977
+ def ctrl_v(self, event: Any = None, validation: bool = True) -> None | EventDataDict:
978
978
  if not self.PAR.ops.paste_can_expand_x and len(self.col_positions) == 1:
979
979
  return
980
980
  if not self.PAR.ops.paste_can_expand_y and len(self.row_positions) == 1:
@@ -1217,7 +1217,7 @@ class MainTable(tk.Canvas):
1217
1217
  self.PAR.emit_event("<<Paste>>", event_data)
1218
1218
  return event_data
1219
1219
 
1220
- def delete_key(self, event: object = None, validation: bool = True) -> None | EventDataDict:
1220
+ def delete_key(self, event: Any = None, validation: bool = True) -> None | EventDataDict:
1221
1221
  if not self.selected:
1222
1222
  return
1223
1223
  event_data = self.new_event_dict("edit_table")
@@ -1251,7 +1251,7 @@ class MainTable(tk.Canvas):
1251
1251
  self.PAR.emit_event("<<Delete>>", event_data)
1252
1252
  return event_data
1253
1253
 
1254
- def event_data_set_cell(self, datarn: int, datacn: int, value: object, event_data: dict) -> EventDataDict:
1254
+ def event_data_set_cell(self, datarn: int, datacn: int, value: Any, event_data: dict) -> EventDataDict:
1255
1255
  if self.input_valid_for_cell(datarn, datacn, value):
1256
1256
  event_data["cells"]["table"][(datarn, datacn)] = self.get_cell_data(datarn, datacn)
1257
1257
  self.set_cell_data(datarn, datacn, value)
@@ -1780,7 +1780,7 @@ class MainTable(tk.Canvas):
1780
1780
  )
1781
1781
  )
1782
1782
 
1783
- def undo(self, event: object = None) -> None | EventDataDict:
1783
+ def undo(self, event: Any = None) -> None | EventDataDict:
1784
1784
  if not self.undo_stack:
1785
1785
  return
1786
1786
  modification = self.undo_stack[-1]["data"]
@@ -1794,7 +1794,7 @@ class MainTable(tk.Canvas):
1794
1794
  self.PAR.emit_event("<<Undo>>", event_data)
1795
1795
  return event_data
1796
1796
 
1797
- def redo(self, event: object = None) -> None | EventDataDict:
1797
+ def redo(self, event: Any = None) -> None | EventDataDict:
1798
1798
  if not self.redo_stack:
1799
1799
  return
1800
1800
  modification = self.redo_stack[-1]["data"]
@@ -2175,7 +2175,7 @@ class MainTable(tk.Canvas):
2175
2175
  self.PAR.emit_event("<<SheetSelect>>", data=event_data)
2176
2176
  self.PAR.emit_event("<<SelectAll>>", data=event_data)
2177
2177
 
2178
- def select_columns(self, event: object) -> None:
2178
+ def select_columns(self, event: Any) -> None:
2179
2179
  if not self.selected:
2180
2180
  return
2181
2181
  r1, c1, r2, c2 = self.selection_boxes[self.selected.fill_iid].coords
@@ -2186,7 +2186,7 @@ class MainTable(tk.Canvas):
2186
2186
  item=self.CH.select_col(range(c1, c2), redraw=True),
2187
2187
  )
2188
2188
 
2189
- def select_rows(self, event: object) -> None:
2189
+ def select_rows(self, event: Any) -> None:
2190
2190
  if not self.selected:
2191
2191
  return
2192
2192
  r1, c1, r2, c2 = self.selection_boxes[self.selected.fill_iid].coords
@@ -2197,12 +2197,12 @@ class MainTable(tk.Canvas):
2197
2197
  item=self.RI.select_row(range(r1, r2), redraw=True),
2198
2198
  )
2199
2199
 
2200
- def select_row_start(self, event: object) -> None:
2200
+ def select_row_start(self, event: Any) -> None:
2201
2201
  if self.selected:
2202
2202
  self.see(self.selected.row, 0)
2203
2203
  self.select_cell(self.selected.row, 0, redraw=True)
2204
2204
 
2205
- def select_a1(self, event: object) -> None:
2205
+ def select_a1(self, event: Any) -> None:
2206
2206
  if len(self.row_positions) > 1 and len(self.col_positions) > 1:
2207
2207
  self.see(0, 0)
2208
2208
  self.select_cell(0, 0, redraw=True)
@@ -2462,7 +2462,7 @@ class MainTable(tk.Canvas):
2462
2462
  if redraw:
2463
2463
  self.refresh()
2464
2464
 
2465
- def page_UP(self, event: object = None) -> None:
2465
+ def page_UP(self, event: Any = None) -> None:
2466
2466
  height = self.winfo_height()
2467
2467
  top = self.canvasy(0)
2468
2468
  scrollto_y = max(0, top - height)
@@ -2487,7 +2487,7 @@ class MainTable(tk.Canvas):
2487
2487
  self.RI.yview(*args)
2488
2488
  self.main_table_redraw_grid_and_text(redraw_row_index=True)
2489
2489
 
2490
- def page_DOWN(self, event: object = None) -> None:
2490
+ def page_DOWN(self, event: Any = None) -> None:
2491
2491
  height = self.winfo_height()
2492
2492
  top = self.canvasy(0)
2493
2493
  scrollto = top + height
@@ -2517,7 +2517,7 @@ class MainTable(tk.Canvas):
2517
2517
  self.RI.yview(*args)
2518
2518
  self.main_table_redraw_grid_and_text(redraw_row_index=True)
2519
2519
 
2520
- def arrowkey_UP(self, event: object = None) -> None:
2520
+ def arrowkey_UP(self, event: Any = None) -> None:
2521
2521
  if not self.selected:
2522
2522
  return
2523
2523
  r = self.selected.row
@@ -2534,7 +2534,7 @@ class MainTable(tk.Canvas):
2534
2534
  ):
2535
2535
  self.select_cell(r - 1, c, redraw=True)
2536
2536
 
2537
- def arrowkey_LEFT(self, event: object = None) -> None:
2537
+ def arrowkey_LEFT(self, event: Any = None) -> None:
2538
2538
  if not self.selected:
2539
2539
  return
2540
2540
  r = self.selected.row
@@ -2543,13 +2543,15 @@ class MainTable(tk.Canvas):
2543
2543
  self.see(r, c)
2544
2544
  else:
2545
2545
  self.see(r, c - 1, redraw=False)
2546
- if self.selected.type_ == "columns":
2546
+ if self.selected.type_ == "columns" and self.CH.col_selection_enabled:
2547
2547
  self.CH.select_col(c - 1, redraw=True)
2548
2548
 
2549
- elif self.selected.type_ in ("cells", "rows"):
2549
+ elif self.selected.type_ in ("cells", "rows") and (
2550
+ self.single_selection_enabled or self.toggle_selection_enabled
2551
+ ):
2550
2552
  self.select_cell(r, c - 1, redraw=True)
2551
2553
 
2552
- def arrowkey_DOWN(self, event: object = None) -> None:
2554
+ def arrowkey_DOWN(self, event: Any = None) -> None:
2553
2555
  if not self.selected:
2554
2556
  return
2555
2557
  r = self.selected.row
@@ -2564,13 +2566,15 @@ class MainTable(tk.Canvas):
2564
2566
  bottom_right_corner=brc,
2565
2567
  redraw=False,
2566
2568
  )
2567
- if self.selected.type_ == "rows":
2569
+ if self.selected.type_ == "rows" and self.RI.row_selection_enabled:
2568
2570
  self.RI.select_row(r + 1, redraw=True)
2569
2571
 
2570
- elif self.selected.type_ in ("cells", "columns"):
2572
+ elif self.selected.type_ in ("cells", "columns") and (
2573
+ self.single_selection_enabled or self.toggle_selection_enabled
2574
+ ):
2571
2575
  self.select_cell(r + 1, c, redraw=True)
2572
2576
 
2573
- def arrowkey_RIGHT(self, event: object = None) -> None:
2577
+ def arrowkey_RIGHT(self, event: Any = None) -> None:
2574
2578
  if not self.selected:
2575
2579
  return
2576
2580
  r = self.selected.row
@@ -2585,10 +2589,12 @@ class MainTable(tk.Canvas):
2585
2589
  bottom_right_corner=brc,
2586
2590
  redraw=False,
2587
2591
  )
2588
- if self.selected.type_ == "columns":
2592
+ if self.selected.type_ == "columns" and self.CH.col_selection_enabled:
2589
2593
  self.CH.select_col(c + 1, redraw=True)
2590
2594
 
2591
- elif self.selected.type_ in ("cells", "rows"):
2595
+ elif self.selected.type_ in ("cells", "rows") and (
2596
+ self.single_selection_enabled or self.toggle_selection_enabled
2597
+ ):
2592
2598
  self.select_cell(r, c + 1, redraw=True)
2593
2599
 
2594
2600
  def shift_arrowkey_select_box(
@@ -2623,7 +2629,7 @@ class MainTable(tk.Canvas):
2623
2629
  self.see(see_r, see_c, keep_xscroll=keep_xscroll, keep_yscroll=keep_yscroll, redraw=False)
2624
2630
  self.refresh()
2625
2631
 
2626
- def shift_arrowkey_UP(self, event: object = None) -> None:
2632
+ def shift_arrowkey_UP(self, event: Any = None) -> None:
2627
2633
  if not self.selected:
2628
2634
  return
2629
2635
  r1, c1, r2, c2 = self.selected.box
@@ -2640,7 +2646,7 @@ class MainTable(tk.Canvas):
2640
2646
  see_r = r1
2641
2647
  self.shift_arrowkey_select_box(r1, c1, r2, c2, current_r, current_c, see_r, c1, keep_xscroll=True)
2642
2648
 
2643
- def shift_arrowkey_DOWN(self, event: object = None) -> None:
2649
+ def shift_arrowkey_DOWN(self, event: Any = None) -> None:
2644
2650
  if not self.selected:
2645
2651
  return
2646
2652
  r1, c1, r2, c2 = self.selected.box
@@ -2655,7 +2661,7 @@ class MainTable(tk.Canvas):
2655
2661
  see_r = r1
2656
2662
  self.shift_arrowkey_select_box(r1, c1, r2, c2, current_r, current_c, see_r, c1, keep_xscroll=True)
2657
2663
 
2658
- def shift_arrowkey_LEFT(self, event: object = None) -> None:
2664
+ def shift_arrowkey_LEFT(self, event: Any = None) -> None:
2659
2665
  if not self.selected:
2660
2666
  return
2661
2667
  r1, c1, r2, c2 = self.selected.box
@@ -2672,7 +2678,7 @@ class MainTable(tk.Canvas):
2672
2678
  see_c = c1
2673
2679
  self.shift_arrowkey_select_box(r1, c1, r2, c2, current_r, current_c, r1, see_c, keep_yscroll=True)
2674
2680
 
2675
- def shift_arrowkey_RIGHT(self, event: object = None) -> None:
2681
+ def shift_arrowkey_RIGHT(self, event: Any = None) -> None:
2676
2682
  if not self.selected:
2677
2683
  return
2678
2684
  r1, c1, r2, c2 = self.selected.box
@@ -3011,7 +3017,7 @@ class MainTable(tk.Canvas):
3011
3017
  **mnkwgs,
3012
3018
  )
3013
3019
 
3014
- def enable_bindings(self, bindings: object) -> None:
3020
+ def enable_bindings(self, bindings: Any) -> None:
3015
3021
  if not bindings:
3016
3022
  self._enable_binding("all")
3017
3023
  elif isinstance(bindings, (list, tuple)):
@@ -3025,7 +3031,7 @@ class MainTable(tk.Canvas):
3025
3031
  self._enable_binding(bindings.lower())
3026
3032
  self.create_rc_menus()
3027
3033
 
3028
- def disable_bindings(self, bindings: object) -> None:
3034
+ def disable_bindings(self, bindings: Any) -> None:
3029
3035
  if not bindings:
3030
3036
  self._disable_binding("all")
3031
3037
  elif isinstance(bindings, (list, tuple)):
@@ -3039,7 +3045,7 @@ class MainTable(tk.Canvas):
3039
3045
  self._disable_binding(bindings)
3040
3046
  self.create_rc_menus()
3041
3047
 
3042
- def _enable_binding(self, binding: str) -> None:
3048
+ def _enable_binding(self, binding: Binding) -> None:
3043
3049
  if binding == "enable_all":
3044
3050
  binding = "all"
3045
3051
  if binding in (
@@ -3184,7 +3190,7 @@ class MainTable(tk.Canvas):
3184
3190
  for binding in self.PAR.ops[bindings_key]:
3185
3191
  widget.bind(binding, func)
3186
3192
 
3187
- def _disable_binding(self, binding: str) -> None:
3193
+ def _disable_binding(self, binding: Binding) -> None:
3188
3194
  if binding == "disable_all":
3189
3195
  binding = "all"
3190
3196
  if binding in (
@@ -3323,14 +3329,14 @@ class MainTable(tk.Canvas):
3323
3329
  self.CH.rsz_w = None
3324
3330
  self.CH.rsz_h = None
3325
3331
 
3326
- def mouse_motion(self, event: object):
3332
+ def mouse_motion(self, event: Any) -> None:
3327
3333
  self.reset_mouse_motion_creations()
3328
3334
  try_binding(self.extra_motion_func, event)
3329
3335
 
3330
3336
  def not_currently_resizing(self) -> bool:
3331
3337
  return all(v is None for v in (self.RI.rsz_h, self.RI.rsz_w, self.CH.rsz_h, self.CH.rsz_w))
3332
3338
 
3333
- def rc(self, event=None):
3339
+ def rc(self, event: Any = None) -> None:
3334
3340
  self.mouseclick_outside_editor_or_dropdown_all_canvases()
3335
3341
  self.focus_set()
3336
3342
  popup_menu = None
@@ -3363,7 +3369,7 @@ class MainTable(tk.Canvas):
3363
3369
  if popup_menu:
3364
3370
  popup_menu.tk_popup(event.x_root, event.y_root)
3365
3371
 
3366
- def b1_press(self, event=None):
3372
+ def b1_press(self, event: Any = None) -> None:
3367
3373
  self.closed_dropdown = self.mouseclick_outside_editor_or_dropdown_all_canvases()
3368
3374
  self.focus_set()
3369
3375
  if (
@@ -3385,7 +3391,9 @@ class MainTable(tk.Canvas):
3385
3391
  self.b1_pressed_loc = (r, c)
3386
3392
  try_binding(self.extra_b1_press_func, event)
3387
3393
 
3388
- def create_resize_line(self, x1, y1, x2, y2, width, fill, tag):
3394
+ def create_resize_line(
3395
+ self, x1: int, y1: int, x2: int, y2: int, width: int, fill: str, tag: str | tuple[str]
3396
+ ) -> None:
3389
3397
  if self.hidd_resize_lines:
3390
3398
  t, sh = self.hidd_resize_lines.popitem()
3391
3399
  self.coords(t, x1, y1, x2, y2)
@@ -3398,7 +3406,7 @@ class MainTable(tk.Canvas):
3398
3406
  t = self.create_line(x1, y1, x2, y2, width=width, fill=fill, tags=tag)
3399
3407
  self.disp_resize_lines[t] = True
3400
3408
 
3401
- def delete_resize_lines(self):
3409
+ def delete_resize_lines(self) -> None:
3402
3410
  self.hidd_resize_lines.update(self.disp_resize_lines)
3403
3411
  self.disp_resize_lines = {}
3404
3412
  for t, sh in self.hidd_resize_lines.items():
@@ -3406,7 +3414,7 @@ class MainTable(tk.Canvas):
3406
3414
  self.itemconfig(t, state="hidden")
3407
3415
  self.hidd_resize_lines[t] = False
3408
3416
 
3409
- def ctrl_b1_press(self, event=None):
3417
+ def ctrl_b1_press(self, event: Any = None) -> None:
3410
3418
  self.mouseclick_outside_editor_or_dropdown_all_canvases()
3411
3419
  self.focus_set()
3412
3420
  self.ctrl_b1_pressed = True
@@ -3424,7 +3432,7 @@ class MainTable(tk.Canvas):
3424
3432
  elif not self.ctrl_select_enabled:
3425
3433
  self.b1_press(event)
3426
3434
 
3427
- def ctrl_shift_b1_press(self, event=None):
3435
+ def ctrl_shift_b1_press(self, event: Any = None) -> None:
3428
3436
  self.mouseclick_outside_editor_or_dropdown_all_canvases()
3429
3437
  self.focus_set()
3430
3438
  self.ctrl_b1_pressed = True
@@ -3452,7 +3460,7 @@ class MainTable(tk.Canvas):
3452
3460
  elif not self.ctrl_select_enabled:
3453
3461
  self.shift_b1_press(event)
3454
3462
 
3455
- def shift_b1_press(self, event=None):
3463
+ def shift_b1_press(self, event: Any = None) -> None:
3456
3464
  self.mouseclick_outside_editor_or_dropdown_all_canvases()
3457
3465
  self.focus_set()
3458
3466
  if self.drag_selection_enabled and self.not_currently_resizing():
@@ -3479,7 +3487,7 @@ class MainTable(tk.Canvas):
3479
3487
  try_binding(self.shift_selection_binding_func, sel_event)
3480
3488
  self.PAR.emit_event("<<SheetSelect>>", data=sel_event)
3481
3489
 
3482
- def get_shift_select_box(self, min_r: int, rowsel: int, min_c: int, colsel: int):
3490
+ def get_shift_select_box(self, min_r: int, rowsel: int, min_c: int, colsel: int) -> tuple[int, int, int, int]:
3483
3491
  if rowsel >= min_r and colsel >= min_c:
3484
3492
  return min_r, min_c, rowsel + 1, colsel + 1
3485
3493
  elif rowsel >= min_r and min_c >= colsel:
@@ -3489,7 +3497,13 @@ class MainTable(tk.Canvas):
3489
3497
  elif min_r >= rowsel and min_c >= colsel:
3490
3498
  return rowsel, colsel, min_r + 1, min_c + 1
3491
3499
 
3492
- def get_b1_motion_box(self, start_row: int, start_col: int, end_row: int, end_col: int):
3500
+ def get_b1_motion_box(
3501
+ self,
3502
+ start_row: int,
3503
+ start_col: int,
3504
+ end_row: int,
3505
+ end_col: int,
3506
+ ) -> tuple[int, int, int, int, Literal["cells"]]:
3493
3507
  if end_row >= start_row and end_col >= start_col and (end_row - start_row or end_col - start_col):
3494
3508
  return start_row, start_col, end_row + 1, end_col + 1, "cells"
3495
3509
  elif end_row >= start_row and end_col < start_col and (end_row - start_row or start_col - end_col):
@@ -3501,7 +3515,7 @@ class MainTable(tk.Canvas):
3501
3515
  else:
3502
3516
  return start_row, start_col, start_row + 1, start_col + 1, "cells"
3503
3517
 
3504
- def b1_motion(self, event: object):
3518
+ def b1_motion(self, event: Any) -> None:
3505
3519
  if self.drag_selection_enabled and all(
3506
3520
  v is None
3507
3521
  for v in (
@@ -3549,7 +3563,7 @@ class MainTable(tk.Canvas):
3549
3563
  self.main_table_redraw_grid_and_text(redraw_header=True, redraw_row_index=True, redraw_table=True)
3550
3564
  try_binding(self.extra_b1_motion_func, event)
3551
3565
 
3552
- def ctrl_b1_motion(self, event: object):
3566
+ def ctrl_b1_motion(self, event: Any) -> None:
3553
3567
  if self.ctrl_select_enabled and self.drag_selection_enabled and self.not_currently_resizing():
3554
3568
  need_redraw = False
3555
3569
  end_row = self.identify_row(y=event.y)
@@ -3592,7 +3606,7 @@ class MainTable(tk.Canvas):
3592
3606
  elif not self.ctrl_select_enabled:
3593
3607
  self.b1_motion(event)
3594
3608
 
3595
- def b1_release(self, event=None):
3609
+ def b1_release(self, event: Any = None) -> None:
3596
3610
  to_hide = self.being_drawn_item
3597
3611
  if self.being_drawn_item is not None and (to_sel := self.coords_and_type(self.being_drawn_item)):
3598
3612
  r_to_sel, c_to_sel = self.selected.row, self.selected.column
@@ -3642,7 +3656,7 @@ class MainTable(tk.Canvas):
3642
3656
  self.closed_dropdown = None
3643
3657
  try_binding(self.extra_b1_release_func, event)
3644
3658
 
3645
- def double_b1(self, event=None):
3659
+ def double_b1(self, event: Any = None) -> None:
3646
3660
  self.mouseclick_outside_editor_or_dropdown_all_canvases()
3647
3661
  self.focus_set()
3648
3662
  if (
@@ -3666,7 +3680,7 @@ class MainTable(tk.Canvas):
3666
3680
  self.open_cell(event)
3667
3681
  try_binding(self.extra_double_b1_func, event)
3668
3682
 
3669
- def identify_row(self, event=None, y=None, allow_end=True):
3683
+ def identify_row(self, event: Any = None, y: int | None = None, allow_end: bool = True) -> int | None:
3670
3684
  if event is None:
3671
3685
  y2 = self.canvasy(y)
3672
3686
  elif y is None:
@@ -3678,7 +3692,7 @@ class MainTable(tk.Canvas):
3678
3692
  return None
3679
3693
  return r
3680
3694
 
3681
- def identify_col(self, event=None, x=None, allow_end=True):
3695
+ def identify_col(self, event: Any = None, x: int | None = None, allow_end: bool = True) -> int | None:
3682
3696
  if event is None:
3683
3697
  x2 = self.canvasx(x)
3684
3698
  elif x is None:
@@ -3710,7 +3724,7 @@ class MainTable(tk.Canvas):
3710
3724
  if self.show_index:
3711
3725
  self.RI.yview("moveto", 1)
3712
3726
 
3713
- def scroll_if_event_offscreen(self, event: object) -> bool:
3727
+ def scroll_if_event_offscreen(self, event: Any) -> bool:
3714
3728
  need_redraw = False
3715
3729
  if self.data:
3716
3730
  xcheck = self.xview()
@@ -3749,7 +3763,7 @@ class MainTable(tk.Canvas):
3749
3763
  self.y_move_synced_scrolls("moveto", self.yview()[0])
3750
3764
  return need_redraw
3751
3765
 
3752
- def x_move_synced_scrolls(self, *args, redraw: bool = True, use_scrollbar: bool = False):
3766
+ def x_move_synced_scrolls(self, *args: Any, redraw: bool = True, use_scrollbar: bool = False) -> None:
3753
3767
  for widget in self.synced_scrolls:
3754
3768
  # try:
3755
3769
  if hasattr(widget, "MT"):
@@ -3762,7 +3776,7 @@ class MainTable(tk.Canvas):
3762
3776
  # except Exception:
3763
3777
  # continue
3764
3778
 
3765
- def y_move_synced_scrolls(self, *args, redraw: bool = True, use_scrollbar: bool = False):
3779
+ def y_move_synced_scrolls(self, *args: Any, redraw: bool = True, use_scrollbar: bool = False) -> None:
3766
3780
  for widget in self.synced_scrolls:
3767
3781
  # try:
3768
3782
  if hasattr(widget, "MT"):
@@ -3775,7 +3789,7 @@ class MainTable(tk.Canvas):
3775
3789
  # except Exception:
3776
3790
  # continue
3777
3791
 
3778
- def _xscrollbar(self, *args, move_synced: bool = True):
3792
+ def _xscrollbar(self, *args: Any, move_synced: bool = True) -> None:
3779
3793
  self.xview(*args)
3780
3794
  if self.show_header:
3781
3795
  self.CH.xview(*args)
@@ -3783,7 +3797,7 @@ class MainTable(tk.Canvas):
3783
3797
  if move_synced:
3784
3798
  self.x_move_synced_scrolls(*args, use_scrollbar=True)
3785
3799
 
3786
- def _yscrollbar(self, *args, move_synced: bool = True):
3800
+ def _yscrollbar(self, *args: Any, move_synced: bool = True) -> None:
3787
3801
  self.yview(*args)
3788
3802
  if self.show_index:
3789
3803
  self.RI.yview(*args)
@@ -3793,7 +3807,7 @@ class MainTable(tk.Canvas):
3793
3807
 
3794
3808
  def set_xviews(
3795
3809
  self,
3796
- *args,
3810
+ *args: Any,
3797
3811
  move_synced: bool = True,
3798
3812
  redraw: bool = True,
3799
3813
  ) -> None:
@@ -3813,7 +3827,7 @@ class MainTable(tk.Canvas):
3813
3827
 
3814
3828
  def set_yviews(
3815
3829
  self,
3816
- *args,
3830
+ *args: Any,
3817
3831
  move_synced: bool = True,
3818
3832
  redraw: bool = True,
3819
3833
  ) -> None:
@@ -3835,7 +3849,7 @@ class MainTable(tk.Canvas):
3835
3849
  self.set_xviews(*x_args)
3836
3850
  self.set_yviews(*y_args)
3837
3851
 
3838
- def mousewheel(self, event: object) -> None:
3852
+ def mousewheel(self, event: Any) -> None:
3839
3853
  if event.delta < 0 or event.num == 5:
3840
3854
  self.yview_scroll(1, "units")
3841
3855
  self.RI.yview_scroll(1, "units")
@@ -3848,7 +3862,7 @@ class MainTable(tk.Canvas):
3848
3862
  self.y_move_synced_scrolls("moveto", self.yview()[0])
3849
3863
  self.main_table_redraw_grid_and_text(redraw_header=True, redraw_row_index=True)
3850
3864
 
3851
- def shift_mousewheel(self, event: object) -> None:
3865
+ def shift_mousewheel(self, event: Any) -> None:
3852
3866
  if event.delta < 0 or event.num == 5:
3853
3867
  self.xview_scroll(1, "units")
3854
3868
  self.CH.xview_scroll(1, "units")
@@ -3861,13 +3875,13 @@ class MainTable(tk.Canvas):
3861
3875
  self.x_move_synced_scrolls("moveto", self.xview()[0])
3862
3876
  self.main_table_redraw_grid_and_text(redraw_header=True, redraw_row_index=True)
3863
3877
 
3864
- def ctrl_mousewheel(self, event):
3878
+ def ctrl_mousewheel(self, event: Any) -> None:
3865
3879
  if event.delta < 0 or event.num == 5:
3866
3880
  self.zoom_out()
3867
3881
  elif event.delta >= 0 or event.num == 4:
3868
3882
  self.zoom_in()
3869
3883
 
3870
- def zoom_in(self, event=None):
3884
+ def zoom_in(self, event: Any = None) -> None:
3871
3885
  self.zoom_font(
3872
3886
  (self.PAR.ops.table_font[0], self.PAR.ops.table_font[1] + 1, self.PAR.ops.table_font[2]),
3873
3887
  (self.PAR.ops.index_font[0], self.PAR.ops.index_font[1] + 1, self.PAR.ops.index_font[2]),
@@ -3875,7 +3889,7 @@ class MainTable(tk.Canvas):
3875
3889
  "in",
3876
3890
  )
3877
3891
 
3878
- def zoom_out(self, event=None):
3892
+ def zoom_out(self, event: Any = None) -> None:
3879
3893
  if self.PAR.ops.table_font[1] < 2 or self.PAR.ops.index_font[1] < 2 or self.PAR.ops.header_font[1] < 2:
3880
3894
  return
3881
3895
  self.zoom_font(
@@ -3885,7 +3899,13 @@ class MainTable(tk.Canvas):
3885
3899
  "out",
3886
3900
  )
3887
3901
 
3888
- def zoom_font(self, table_font: tuple, index_font: tuple, header_font: tuple, zoom: Literal["in", "out"]) -> None:
3902
+ def zoom_font(
3903
+ self,
3904
+ table_font: FontTuple,
3905
+ index_font: FontTuple,
3906
+ header_font: FontTuple,
3907
+ zoom: Literal["in", "out"],
3908
+ ) -> None:
3889
3909
  self.saved_column_widths = {}
3890
3910
  self.saved_row_heights = {}
3891
3911
  # should record position prior to change and then see after change
@@ -4040,7 +4060,7 @@ class MainTable(tk.Canvas):
4040
4060
  self.recreate_all_selection_boxes()
4041
4061
  return self.PAR.ops.index_font
4042
4062
 
4043
- def set_index_font_help(self):
4063
+ def set_index_font_help(self) -> None:
4044
4064
  self.RI.index_font = self.PAR.ops.index_font
4045
4065
  if self.PAR.ops.index_font not in self.char_widths:
4046
4066
  self.char_widths[self.PAR.ops.index_font] = {}
@@ -4080,7 +4100,7 @@ class MainTable(tk.Canvas):
4080
4100
  self.recreate_all_selection_boxes()
4081
4101
  return self.PAR.ops.header_font
4082
4102
 
4083
- def set_header_font_help(self):
4103
+ def set_header_font_help(self) -> None:
4084
4104
  self.CH.header_font = self.PAR.ops.header_font
4085
4105
  if self.PAR.ops.header_font not in self.char_widths:
4086
4106
  self.char_widths[self.PAR.ops.header_font] = {}
@@ -4094,11 +4114,11 @@ class MainTable(tk.Canvas):
4094
4114
  self.PAR.ops.default_header_height = int(self.min_header_height)
4095
4115
  self.CH.set_height(self.get_default_header_height(), set_TL=True)
4096
4116
 
4097
- def purge_undo_and_redo_stack(self):
4117
+ def purge_undo_and_redo_stack(self) -> None:
4098
4118
  self.undo_stack = deque(maxlen=self.PAR.ops.max_undos)
4099
4119
  self.redo_stack = deque(maxlen=self.PAR.ops.max_undos)
4100
4120
 
4101
- def purge_redo_stack(self):
4121
+ def purge_redo_stack(self) -> None:
4102
4122
  self.redo_stack = deque(maxlen=self.PAR.ops.max_undos)
4103
4123
 
4104
4124
  def data_reference(
@@ -4109,7 +4129,7 @@ class MainTable(tk.Canvas):
4109
4129
  redraw: bool = False,
4110
4130
  return_id: bool = True,
4111
4131
  keep_formatting: bool = True,
4112
- ) -> object:
4132
+ ) -> Any:
4113
4133
  if isinstance(newdataref, (list, tuple)):
4114
4134
  self.hide_dropdown_editor_all_canvases()
4115
4135
  self.data = newdataref
@@ -4129,7 +4149,7 @@ class MainTable(tk.Canvas):
4129
4149
  else:
4130
4150
  return self.data
4131
4151
 
4132
- def get_cell_dimensions(self, datarn, datacn):
4152
+ def get_cell_dimensions(self, datarn: int, datacn: int) -> tuple[int, int]:
4133
4153
  txt = self.get_valid_cell_data_as_str(datarn, datacn, get_displayed=True)
4134
4154
  if txt:
4135
4155
  self.txt_measure_canvas.itemconfig(self.txt_measure_canvas_text, text=txt, font=self.PAR.ops.table_font)
@@ -4143,7 +4163,9 @@ class MainTable(tk.Canvas):
4143
4163
  return w + self.table_txt_height, h
4144
4164
  return w, h
4145
4165
 
4146
- def set_cell_size_to_text(self, r, c, only_if_too_small=False, redraw: bool = True, run_binding=False):
4166
+ def set_cell_size_to_text(
4167
+ self, r: int, c: int, only_if_too_small: bool = False, redraw: bool = True, run_binding: bool = False
4168
+ ) -> bool:
4147
4169
  min_column_width = self.PAR.ops.min_column_width
4148
4170
  min_rh = self.min_row_height
4149
4171
  w = min_column_width
@@ -4214,6 +4236,7 @@ class MainTable(tk.Canvas):
4214
4236
  return True
4215
4237
  else:
4216
4238
  return False
4239
+ return False
4217
4240
 
4218
4241
  def get_cell_max_width(self, datarn: int, dispcn: int) -> int:
4219
4242
  datacn = self.datacn(dispcn)
@@ -4364,7 +4387,7 @@ class MainTable(tk.Canvas):
4364
4387
  else:
4365
4388
  self.set_row_positions(itr=repeat(height, len(self.displayed_rows)))
4366
4389
 
4367
- def del_col_position(self, idx: int, deselect_all: bool = False):
4390
+ def del_col_position(self, idx: int, deselect_all: bool = False) -> None:
4368
4391
  if deselect_all:
4369
4392
  self.deselect("all", redraw=False)
4370
4393
  if idx == "end" or len(self.col_positions) <= idx + 1:
@@ -4375,7 +4398,7 @@ class MainTable(tk.Canvas):
4375
4398
  del self.col_positions[idx]
4376
4399
  self.col_positions[idx:] = [e - w for e in islice(self.col_positions, idx, len(self.col_positions))]
4377
4400
 
4378
- def del_row_position(self, idx: int, deselect_all: bool = False):
4401
+ def del_row_position(self, idx: int, deselect_all: bool = False) -> None:
4379
4402
  if deselect_all:
4380
4403
  self.deselect("all", redraw=False)
4381
4404
  if idx == "end" or len(self.row_positions) <= idx + 1:
@@ -4386,7 +4409,7 @@ class MainTable(tk.Canvas):
4386
4409
  del self.row_positions[idx]
4387
4410
  self.row_positions[idx:] = [e - w for e in islice(self.row_positions, idx, len(self.row_positions))]
4388
4411
 
4389
- def del_col_positions(self, idxs: AnyIter[int] | None = None):
4412
+ def del_col_positions(self, idxs: AnyIter[int] | None = None) -> None:
4390
4413
  if idxs is None:
4391
4414
  del self.col_positions[-1]
4392
4415
  else:
@@ -4394,7 +4417,7 @@ class MainTable(tk.Canvas):
4394
4417
  idxs = set(idxs)
4395
4418
  self.set_col_positions(itr=(w for i, w in enumerate(self.gen_column_widths()) if i not in idxs))
4396
4419
 
4397
- def del_row_positions(self, idxs: AnyIter[int] | None = None):
4420
+ def del_row_positions(self, idxs: AnyIter[int] | None = None) -> None:
4398
4421
  if idxs is None:
4399
4422
  del self.row_positions[-1]
4400
4423
  else:
@@ -4617,9 +4640,9 @@ class MainTable(tk.Canvas):
4617
4640
 
4618
4641
  def adjust_options_post_delete_columns(
4619
4642
  self,
4620
- to_del: None | set = None,
4621
- to_bis: None | list = None,
4622
- named_spans: None | set = None,
4643
+ to_del: None | set[int] = None,
4644
+ to_bis: None | list[int] = None,
4645
+ named_spans: None | set[str] = None,
4623
4646
  ) -> list[int]:
4624
4647
  if to_del is None:
4625
4648
  to_del = set()
@@ -4675,7 +4698,7 @@ class MainTable(tk.Canvas):
4675
4698
 
4676
4699
  def del_columns_from_named_spans(
4677
4700
  self,
4678
- to_del: set,
4701
+ to_del: set[int],
4679
4702
  to_bis: list,
4680
4703
  named_spans: None | set = None,
4681
4704
  ) -> None:
@@ -4691,10 +4714,7 @@ class MainTable(tk.Canvas):
4691
4714
  if isinstance(span["upto_c"], int) and span["upto_c"] > c:
4692
4715
  span["upto_c"] -= 1
4693
4716
 
4694
- def get_spans_to_del_from_cols(
4695
- self,
4696
- cols: set,
4697
- ) -> set:
4717
+ def get_spans_to_del_from_cols(self, cols: set[int]) -> set[str]:
4698
4718
  total = self.total_data_cols()
4699
4719
  return {
4700
4720
  nm
@@ -4705,9 +4725,9 @@ class MainTable(tk.Canvas):
4705
4725
 
4706
4726
  def adjust_options_post_delete_rows(
4707
4727
  self,
4708
- to_del: None | set = None,
4709
- to_bis: None | list = None,
4710
- named_spans: None | set = None,
4728
+ to_del: None | set[int] = None,
4729
+ to_bis: None | list[int] = None,
4730
+ named_spans: None | set[str] = None,
4711
4731
  ) -> list[int]:
4712
4732
  if to_del is None:
4713
4733
  to_del = set()
@@ -4770,7 +4790,7 @@ class MainTable(tk.Canvas):
4770
4790
  self,
4771
4791
  to_del: set,
4772
4792
  to_bis: list,
4773
- named_spans: None | set = None,
4793
+ named_spans: None | set[str] = None,
4774
4794
  ) -> None:
4775
4795
  if named_spans is None:
4776
4796
  named_spans = self.get_spans_to_del_from_rows(rows=to_del)
@@ -4784,10 +4804,7 @@ class MainTable(tk.Canvas):
4784
4804
  if isinstance(span["upto_r"], int) and span["upto_r"] > r:
4785
4805
  span["upto_r"] -= 1
4786
4806
 
4787
- def get_spans_to_del_from_rows(
4788
- self,
4789
- rows: set,
4790
- ) -> set:
4807
+ def get_spans_to_del_from_rows(self, rows: set[int]) -> set[str]:
4791
4808
  total = self.total_data_rows()
4792
4809
  return {
4793
4810
  nm
@@ -4881,7 +4898,7 @@ class MainTable(tk.Canvas):
4881
4898
  try_binding(self.extra_end_insert_cols_rc_func, event_data, "end_add_columns")
4882
4899
  return event_data
4883
4900
 
4884
- def rc_add_columns(self, event: object = None) -> None:
4901
+ def rc_add_columns(self, event: Any = None) -> None:
4885
4902
  rowlen = self.equalize_data_row_lengths()
4886
4903
  selcols = sorted(self.get_selected_cols())
4887
4904
  if (
@@ -4930,8 +4947,8 @@ class MainTable(tk.Canvas):
4930
4947
 
4931
4948
  def add_rows(
4932
4949
  self,
4933
- rows: dict[int, list[object]],
4934
- index: dict[int, object],
4950
+ rows: dict[int, list[Any]],
4951
+ index: dict[int, Any],
4935
4952
  row_heights: dict[int, float | int],
4936
4953
  event_data: EventDataDict,
4937
4954
  create_ops: bool = True,
@@ -5015,7 +5032,7 @@ class MainTable(tk.Canvas):
5015
5032
  try_binding(self.extra_end_insert_rows_rc_func, event_data, "end_add_rows")
5016
5033
  return event_data
5017
5034
 
5018
- def rc_add_rows(self, event: object = None) -> None:
5035
+ def rc_add_rows(self, event: Any = None) -> None:
5019
5036
  total_data_rows = self.total_data_rows()
5020
5037
  selrows = sorted(self.get_selected_rows())
5021
5038
  if (
@@ -5067,7 +5084,7 @@ class MainTable(tk.Canvas):
5067
5084
  data_ins_col: int,
5068
5085
  displayed_ins_col: int,
5069
5086
  numcols: int,
5070
- columns: list[list[object]] | None = None,
5087
+ columns: list[list[Any]] | None = None,
5071
5088
  widths: list[int] | tuple[int] | None = None,
5072
5089
  headers: bool = False,
5073
5090
  ) -> tuple[dict, dict, dict]:
@@ -5111,7 +5128,7 @@ class MainTable(tk.Canvas):
5111
5128
  data_ins_row: int,
5112
5129
  displayed_ins_row: int,
5113
5130
  numrows: int,
5114
- rows: list[list[object]] | None = None,
5131
+ rows: list[list[Any]] | None = None,
5115
5132
  heights: list[int] | tuple[int] | None = None,
5116
5133
  row_index: bool = False,
5117
5134
  total_data_cols: int | None = None,
@@ -5235,7 +5252,7 @@ class MainTable(tk.Canvas):
5235
5252
 
5236
5253
  def delete_columns(
5237
5254
  self,
5238
- event: object = None,
5255
+ event: Any = None,
5239
5256
  columns: list[int] | None = None,
5240
5257
  data_indexes: bool = False,
5241
5258
  undo: bool = True,
@@ -5321,7 +5338,7 @@ class MainTable(tk.Canvas):
5321
5338
 
5322
5339
  def delete_rows(
5323
5340
  self,
5324
- event: object = None,
5341
+ event: Any = None,
5325
5342
  rows: list[int] | None = None,
5326
5343
  data_indexes: bool = False,
5327
5344
  undo: bool = True,
@@ -5459,12 +5476,12 @@ class MainTable(tk.Canvas):
5459
5476
 
5460
5477
  def headers(
5461
5478
  self,
5462
- newheaders: object = None,
5479
+ newheaders: Any = None,
5463
5480
  index: int | None = None,
5464
5481
  reset_col_positions: bool = False,
5465
5482
  show_headers_if_not_sheet: bool = True,
5466
5483
  redraw: bool = False,
5467
- ) -> object:
5484
+ ) -> Any:
5468
5485
  if newheaders is not None:
5469
5486
  if isinstance(newheaders, (list, tuple)):
5470
5487
  self._headers = list(newheaders) if isinstance(newheaders, tuple) else newheaders
@@ -5506,12 +5523,12 @@ class MainTable(tk.Canvas):
5506
5523
 
5507
5524
  def row_index(
5508
5525
  self,
5509
- newindex: object = None,
5526
+ newindex: Any = None,
5510
5527
  index: int | None = None,
5511
5528
  reset_row_positions: bool = False,
5512
5529
  show_index_if_not_sheet: bool = True,
5513
5530
  redraw: bool = False,
5514
- ) -> object:
5531
+ ) -> Any:
5515
5532
  if newindex is not None:
5516
5533
  if not self._row_index and not isinstance(self._row_index, int):
5517
5534
  self.RI.set_width(self.PAR.ops.default_row_index_width, set_TL=True)
@@ -7080,7 +7097,7 @@ class MainTable(tk.Canvas):
7080
7097
 
7081
7098
  def open_cell(
7082
7099
  self,
7083
- event: object = None,
7100
+ event: Any = None,
7084
7101
  ignore_existing_editor: bool = False,
7085
7102
  ) -> None:
7086
7103
  if not self.anything_selected() or (not ignore_existing_editor and self.text_editor.open):
@@ -7115,7 +7132,7 @@ class MainTable(tk.Canvas):
7115
7132
  # displayed indexes
7116
7133
  def open_text_editor(
7117
7134
  self,
7118
- event: object = None,
7135
+ event: Any = None,
7119
7136
  r: int = 0,
7120
7137
  c: int = 0,
7121
7138
  text: str | None = None,
@@ -7214,7 +7231,7 @@ class MainTable(tk.Canvas):
7214
7231
  # displayed indexes
7215
7232
  def text_editor_newline_binding(
7216
7233
  self,
7217
- event: object = None,
7234
+ event: Any = None,
7218
7235
  check_lines: bool = True,
7219
7236
  ) -> None:
7220
7237
  r, c = self.text_editor.coords
@@ -7413,7 +7430,7 @@ class MainTable(tk.Canvas):
7413
7430
  self.select_cell(r + 1 if r < len(self.row_positions) - 2 else r, c)
7414
7431
  self.see(r + 1 if r < len(self.row_positions) - 2 else r, c)
7415
7432
 
7416
- def tab_key(self, event: object = None) -> str:
7433
+ def tab_key(self, event: Any = None) -> str:
7417
7434
  if not self.selected:
7418
7435
  return
7419
7436
  r, c = self.selected.row, self.selected.column
@@ -7511,7 +7528,7 @@ class MainTable(tk.Canvas):
7511
7528
  self,
7512
7529
  r: int,
7513
7530
  c: int,
7514
- event: object = None,
7531
+ event: Any = None,
7515
7532
  ) -> None:
7516
7533
  self.hide_text_editor()
7517
7534
  datarn = self.datarn(r)
@@ -7592,7 +7609,7 @@ class MainTable(tk.Canvas):
7592
7609
  self,
7593
7610
  r: int | None = None,
7594
7611
  c: int | None = None,
7595
- selection: object = None,
7612
+ selection: Any = None,
7596
7613
  redraw: bool = True,
7597
7614
  ) -> None:
7598
7615
  if r is not None and c is not None and selection is not None:
@@ -7737,7 +7754,7 @@ class MainTable(tk.Canvas):
7737
7754
  self,
7738
7755
  datarn: int,
7739
7756
  datacn: int,
7740
- value: object,
7757
+ value: Any,
7741
7758
  kwargs: dict | None = None,
7742
7759
  expand_sheet: bool = True,
7743
7760
  ) -> None:
@@ -7763,7 +7780,7 @@ class MainTable(tk.Canvas):
7763
7780
  else:
7764
7781
  self.data[datarn][datacn] = value
7765
7782
 
7766
- def get_value_for_empty_cell(self, datarn: int, datacn: int, r_ops: bool = True, c_ops: bool = True) -> object:
7783
+ def get_value_for_empty_cell(self, datarn: int, datacn: int, r_ops: bool = True, c_ops: bool = True) -> Any:
7767
7784
  kwargs = self.get_cell_kwargs(
7768
7785
  datarn,
7769
7786
  datacn,
@@ -7786,7 +7803,7 @@ class MainTable(tk.Canvas):
7786
7803
  start: int = 0,
7787
7804
  r_ops: bool = True,
7788
7805
  c_ops: bool = True,
7789
- ) -> list[object]:
7806
+ ) -> list[Any]:
7790
7807
  return [self.get_value_for_empty_cell(datarn, datacn, r_ops=r_ops, c_ops=c_ops) for datacn in range(start, end)]
7791
7808
 
7792
7809
  def fix_row_len(self, datarn: int, datacn: int) -> None:
@@ -7908,7 +7925,7 @@ class MainTable(tk.Canvas):
7908
7925
  none_to_empty_str: bool = False,
7909
7926
  fmt_kw: dict | None = None,
7910
7927
  **kwargs,
7911
- ) -> object:
7928
+ ) -> Any:
7912
7929
  if get_displayed:
7913
7930
  return self.get_valid_cell_data_as_str(datarn, datacn, get_displayed=True)
7914
7931
  value = (
@@ -7927,7 +7944,7 @@ class MainTable(tk.Canvas):
7927
7944
  self,
7928
7945
  datarn: int,
7929
7946
  datacn: int,
7930
- value: object,
7947
+ value: Any,
7931
7948
  check_readonly: bool = True,
7932
7949
  ignore_empty: bool = False,
7933
7950
  ) -> bool:
@@ -7945,7 +7962,7 @@ class MainTable(tk.Canvas):
7945
7962
  else:
7946
7963
  return True
7947
7964
 
7948
- def cell_equal_to(self, datarn: int, datacn: int, value: object, ignore_empty: bool = False, **kwargs) -> bool:
7965
+ def cell_equal_to(self, datarn: int, datacn: int, value: Any, ignore_empty: bool = False, **kwargs) -> bool:
7949
7966
  v = self.get_cell_data(datarn, datacn)
7950
7967
  kwargs = self.get_cell_kwargs(datarn, datacn, key="format")
7951
7968
  if kwargs and kwargs["formatter"] is None:
@@ -7983,16 +8000,30 @@ class MainTable(tk.Canvas):
7983
8000
  row: bool = True,
7984
8001
  column: bool = True,
7985
8002
  ) -> dict:
7986
- if cell and (datarn, datacn) in self.cell_options:
7987
- return (
7988
- self.cell_options[(datarn, datacn)] if key is None else self.cell_options[(datarn, datacn)].get(key, {})
7989
- )
7990
- elif row and datarn in self.row_options:
7991
- return self.row_options[datarn] if key is None else self.row_options[datarn].get(key, {})
7992
- elif column and datacn in self.col_options:
7993
- return self.col_options[datacn] if key is None else self.col_options[datacn].get(key, {})
8003
+ if key is None:
8004
+ if cell and (datarn, datacn) in self.cell_options:
8005
+ return self.cell_options[(datarn, datacn)]
8006
+
8007
+ elif row and datarn in self.row_options:
8008
+ return self.row_options[datarn]
8009
+
8010
+ elif column and datacn in self.col_options:
8011
+ return self.col_options[datacn]
8012
+
8013
+ else:
8014
+ return {}
7994
8015
  else:
7995
- return {}
8016
+ if cell and (datarn, datacn) in self.cell_options and key in self.cell_options[(datarn, datacn)]:
8017
+ return self.cell_options[(datarn, datacn)][key]
8018
+
8019
+ elif row and datarn in self.row_options and key in self.row_options[datarn]:
8020
+ return self.row_options[datarn][key]
8021
+
8022
+ elif column and datacn in self.col_options and key in self.col_options[datacn]:
8023
+ return self.col_options[datacn][key]
8024
+
8025
+ else:
8026
+ return {}
7996
8027
 
7997
8028
  def datacn(self, c: int) -> int:
7998
8029
  return c if self.all_columns_displayed else self.displayed_columns[c]