@@ -29,76 +29,76 @@ def get_value(self, name: Optional[str] = None, role: Optional[str] = None,
2929 app_name : Optional [str ] = None ,
3030 automation_id : Optional [str ] = None ) -> Optional [str ]:
3131 """Return the matched control's value text, or None if not found."""
32- self ._unsupported ("get_value" )
32+ self ._unsupported ("get_value" , name , role , app_name , automation_id )
3333
3434 def set_value (self , value : str , name : Optional [str ] = None ,
3535 role : Optional [str ] = None , app_name : Optional [str ] = None ,
3636 automation_id : Optional [str ] = None ) -> bool :
3737 """Set the matched control's value; return True on success."""
38- self ._unsupported ("set_value" )
38+ self ._unsupported ("set_value" , value , name , role , app_name , automation_id )
3939
4040 def invoke (self , name : Optional [str ] = None , role : Optional [str ] = None ,
4141 app_name : Optional [str ] = None ,
4242 automation_id : Optional [str ] = None ) -> bool :
4343 """Invoke the matched control (e.g. press a button)."""
44- self ._unsupported ("invoke" )
44+ self ._unsupported ("invoke" , name , role , app_name , automation_id )
4545
4646 def toggle (self , name : Optional [str ] = None , role : Optional [str ] = None ,
4747 app_name : Optional [str ] = None ,
4848 automation_id : Optional [str ] = None ) -> bool :
4949 """Toggle the matched control (e.g. a checkbox)."""
50- self ._unsupported ("toggle" )
50+ self ._unsupported ("toggle" , name , role , app_name , automation_id )
5151
5252 def read_table (self , name : Optional [str ] = None , role : Optional [str ] = None ,
5353 app_name : Optional [str ] = None ,
5454 automation_id : Optional [str ] = None ,
5555 ) -> List [List [str ]]:
5656 """Read a grid/table/list control as rows of cell strings."""
57- self ._unsupported ("read_table" )
57+ self ._unsupported ("read_table" , name , role , app_name , automation_id )
5858
5959 # --- extended control patterns (Expand / Selection / Range / Scroll) ----
6060
6161 def expand (self , name : Optional [str ] = None , role : Optional [str ] = None ,
6262 app_name : Optional [str ] = None ,
6363 automation_id : Optional [str ] = None ) -> bool :
6464 """Expand the matched control (ExpandCollapsePattern); True on success."""
65- self ._unsupported ("expand" )
65+ self ._unsupported ("expand" , name , role , app_name , automation_id )
6666
6767 def collapse (self , name : Optional [str ] = None , role : Optional [str ] = None ,
6868 app_name : Optional [str ] = None ,
6969 automation_id : Optional [str ] = None ) -> bool :
7070 """Collapse the matched control (ExpandCollapsePattern); True on success."""
71- self ._unsupported ("collapse" )
71+ self ._unsupported ("collapse" , name , role , app_name , automation_id )
7272
7373 def expand_state (self , name : Optional [str ] = None , role : Optional [str ] = None ,
7474 app_name : Optional [str ] = None ,
7575 automation_id : Optional [str ] = None ) -> Optional [str ]:
7676 """Return ``expanded`` / ``collapsed`` / ``partial`` / ``leaf``, or None."""
77- self ._unsupported ("expand_state" )
77+ self ._unsupported ("expand_state" , name , role , app_name , automation_id )
7878
7979 def select_item (self , name : Optional [str ] = None , role : Optional [str ] = None ,
8080 app_name : Optional [str ] = None ,
8181 automation_id : Optional [str ] = None ) -> bool :
8282 """Select the matched item (SelectionItemPattern); True on success."""
83- self ._unsupported ("select_item" )
83+ self ._unsupported ("select_item" , name , role , app_name , automation_id )
8484
8585 def get_range (self , name : Optional [str ] = None , role : Optional [str ] = None ,
8686 app_name : Optional [str ] = None ,
8787 automation_id : Optional [str ] = None ) -> Optional [Dict [str , Any ]]:
8888 """Return ``{value, minimum, maximum}`` (RangeValuePattern), or None."""
89- self ._unsupported ("get_range" )
89+ self ._unsupported ("get_range" , name , role , app_name , automation_id )
9090
9191 def set_range_value (self , value : float , name : Optional [str ] = None ,
9292 role : Optional [str ] = None , app_name : Optional [str ] = None ,
9393 automation_id : Optional [str ] = None ) -> bool :
9494 """Set a slider / progress value (RangeValuePattern); True on success."""
95- self ._unsupported ("set_range_value" )
95+ self ._unsupported ("set_range_value" , value , name , role , app_name , automation_id )
9696
9797 def scroll_into_view (self , name : Optional [str ] = None ,
9898 role : Optional [str ] = None , app_name : Optional [str ] = None ,
9999 automation_id : Optional [str ] = None ) -> bool :
100100 """Scroll the matched control into view (ScrollItemPattern); True on success."""
101- self ._unsupported ("scroll_into_view" )
101+ self ._unsupported ("scroll_into_view" , name , role , app_name , automation_id )
102102
103103 # --- text patterns (TextPattern reads) ---------------------------------
104104
@@ -109,49 +109,49 @@ def document_text(self, name: Optional[str] = None, role: Optional[str] = None,
109109
110110 Reads multiline / document controls where ValuePattern returns ``""``.
111111 """
112- self ._unsupported ("document_text" )
112+ self ._unsupported ("document_text" , name , role , app_name , automation_id )
113113
114114 def selected_text (self , name : Optional [str ] = None , role : Optional [str ] = None ,
115115 app_name : Optional [str ] = None ,
116116 automation_id : Optional [str ] = None ) -> Optional [str ]:
117117 """Return the control's currently selected text (TextPattern), or None."""
118- self ._unsupported ("selected_text" )
118+ self ._unsupported ("selected_text" , name , role , app_name , automation_id )
119119
120120 def visible_text (self , name : Optional [str ] = None , role : Optional [str ] = None ,
121121 app_name : Optional [str ] = None ,
122122 automation_id : Optional [str ] = None ) -> Optional [str ]:
123123 """Return only the on-screen text of the control (TextPattern), or None."""
124- self ._unsupported ("visible_text" )
124+ self ._unsupported ("visible_text" , name , role , app_name , automation_id )
125125
126126 def find_text (self , text : str = "" , ignore_case : bool = True ,
127127 name : Optional [str ] = None , role : Optional [str ] = None ,
128128 app_name : Optional [str ] = None ,
129129 automation_id : Optional [str ] = None ) -> bool :
130130 """Return whether ``text`` occurs in the control (TextPattern.FindText)."""
131- self ._unsupported ("find_text" )
131+ self ._unsupported ("find_text" , text , ignore_case , name , role , app_name , automation_id )
132132
133133 def select_text (self , text : str = "" , ignore_case : bool = True ,
134134 name : Optional [str ] = None , role : Optional [str ] = None ,
135135 app_name : Optional [str ] = None ,
136136 automation_id : Optional [str ] = None ) -> bool :
137137 """Find ``text`` and select its range (TextPattern.FindText + Select)."""
138- self ._unsupported ("select_text" )
138+ self ._unsupported ("select_text" , text , ignore_case , name , role , app_name , automation_id )
139139
140140 def text_attributes (self , name : Optional [str ] = None ,
141141 role : Optional [str ] = None , app_name : Optional [str ] = None ,
142142 automation_id : Optional [str ] = None ,
143143 ) -> Optional [Dict [str , Any ]]:
144144 """Return formatting of the control's selection — ``{font_name, font_size,
145145 bold, italic, foreground_color}`` (TextPattern attributes), or None."""
146- self ._unsupported ("text_attributes" )
146+ self ._unsupported ("text_attributes" , name , role , app_name , automation_id )
147147
148148 # --- keyboard focus ----------------------------------------------------
149149
150150 def set_focus (self , name : Optional [str ] = None , role : Optional [str ] = None ,
151151 app_name : Optional [str ] = None ,
152152 automation_id : Optional [str ] = None ) -> bool :
153153 """Set keyboard focus on the matched control (SetFocus); True on success."""
154- self ._unsupported ("set_focus" )
154+ self ._unsupported ("set_focus" , name , role , app_name , automation_id )
155155
156156 # --- virtualized items (realize off-screen list / grid items) -----------
157157
@@ -168,7 +168,7 @@ def find_virtual_item(self, item_name: Optional[str] = None, by: str = "name",
168168 (``VirtualizedItemPattern``) so it exists as a real element. Returns the
169169 realized element, or None if the container or item isn't found.
170170 """
171- self ._unsupported ("find_virtual_item" )
171+ self ._unsupported ("find_virtual_item" , item_name , by , container_name , container_role , app_name , automation_id )
172172
173173 # --- rich element properties -------------------------------------------
174174
@@ -182,7 +182,7 @@ def get_properties(self, name: Optional[str] = None,
182182 ``enabled`` / ``offscreen`` / ``help_text`` / ``item_status`` /
183183 ``accelerator_key`` / ``access_key`` / ``orientation``.
184184 """
185- self ._unsupported ("get_properties" )
185+ self ._unsupported ("get_properties" , name , role , app_name , automation_id )
186186
187187 # --- table headers + cell addressing (TablePattern / GridItemPattern) ---
188188
@@ -192,7 +192,7 @@ def get_table_headers(self, name: Optional[str] = None,
192192 automation_id : Optional [str ] = None ,
193193 ) -> Optional [Dict [str , Any ]]:
194194 """Return a table's header labels as ``{columns: [...], rows: [...]}``."""
195- self ._unsupported ("get_table_headers" )
195+ self ._unsupported ("get_table_headers" , name , role , app_name , automation_id )
196196
197197 def get_grid_cell (self , row : int = 0 , column : int = 0 ,
198198 name : Optional [str ] = None , role : Optional [str ] = None ,
@@ -201,7 +201,7 @@ def get_grid_cell(self, row: int = 0, column: int = 0,
201201 ) -> Optional [Dict [str , Any ]]:
202202 """Return the cell at ``(row, column)`` as ``{value, row, column,
203203 row_span, column_span}`` (GridPattern.GetItem + GridItemPattern)."""
204- self ._unsupported ("get_grid_cell" )
204+ self ._unsupported ("get_grid_cell" , row , column , name , role , app_name , automation_id )
205205
206206 # --- transform + window patterns (UIA-element-level) --------------------
207207
@@ -210,21 +210,21 @@ def move_element(self, x: float = 0.0, y: float = 0.0,
210210 app_name : Optional [str ] = None ,
211211 automation_id : Optional [str ] = None ) -> bool :
212212 """Move the matched element to ``(x, y)`` (TransformPattern); True on success."""
213- self ._unsupported ("move_element" )
213+ self ._unsupported ("move_element" , x , y , name , role , app_name , automation_id )
214214
215215 def resize_element (self , width : float = 0.0 , height : float = 0.0 ,
216216 name : Optional [str ] = None , role : Optional [str ] = None ,
217217 app_name : Optional [str ] = None ,
218218 automation_id : Optional [str ] = None ) -> bool :
219219 """Resize the matched element (TransformPattern); True on success."""
220- self ._unsupported ("resize_element" )
220+ self ._unsupported ("resize_element" , width , height , name , role , app_name , automation_id )
221221
222222 def set_window_state (self , state : str = "normal" ,
223223 name : Optional [str ] = None , role : Optional [str ] = None ,
224224 app_name : Optional [str ] = None ,
225225 automation_id : Optional [str ] = None ) -> bool :
226226 """Set a window's visual state ``normal`` / ``maximized`` / ``minimized``."""
227- self ._unsupported ("set_window_state" )
227+ self ._unsupported ("set_window_state" , state , name , role , app_name , automation_id )
228228
229229 def window_interaction_state (self , name : Optional [str ] = None ,
230230 role : Optional [str ] = None ,
@@ -233,7 +233,7 @@ def window_interaction_state(self, name: Optional[str] = None,
233233 ) -> Optional [str ]:
234234 """Return a window's interaction state — ``ready`` / ``blocked_by_modal`` /
235235 ``not_responding`` / ``running`` / ``closing`` (WindowPattern), or None."""
236- self ._unsupported ("window_interaction_state" )
236+ self ._unsupported ("window_interaction_state" , name , role , app_name , automation_id )
237237
238238 # --- MSAA bridge (LegacyIAccessiblePattern) ----------------------------
239239
@@ -247,15 +247,15 @@ def legacy_info(self, name: Optional[str] = None, role: Optional[str] = None,
247247 last-resort read for legacy Win32 controls that expose nothing useful via
248248 the modern UIA patterns.
249249 """
250- self ._unsupported ("legacy_info" )
250+ self ._unsupported ("legacy_info" , name , role , app_name , automation_id )
251251
252252 def legacy_default_action (self , name : Optional [str ] = None ,
253253 role : Optional [str ] = None ,
254254 app_name : Optional [str ] = None ,
255255 automation_id : Optional [str ] = None ) -> bool :
256256 """Fire an old control's MSAA default action (DoDefaultAction); True on
257257 success — the fallback when Value / Invoke / Toggle all do nothing."""
258- self ._unsupported ("legacy_default_action" )
258+ self ._unsupported ("legacy_default_action" , name , role , app_name , automation_id )
259259
260260 # --- container selection + views (Selection / MultipleView patterns) ----
261261
@@ -265,21 +265,21 @@ def get_selection(self, name: Optional[str] = None, role: Optional[str] = None,
265265 ) -> Optional [Dict [str , Any ]]:
266266 """Return a container's selection state — ``{items, can_select_multiple,
267267 is_required}`` (SelectionPattern), or None."""
268- self ._unsupported ("get_selection" )
268+ self ._unsupported ("get_selection" , name , role , app_name , automation_id )
269269
270270 def list_views (self , name : Optional [str ] = None , role : Optional [str ] = None ,
271271 app_name : Optional [str ] = None ,
272272 automation_id : Optional [str ] = None ,
273273 ) -> Optional [Dict [str , Any ]]:
274274 """Return a control's selectable views — ``{current, views: [...]}``
275275 (MultipleViewPattern: list / details / tile / …), or None."""
276- self ._unsupported ("list_views" )
276+ self ._unsupported ("list_views" , name , role , app_name , automation_id )
277277
278278 def set_view (self , view : str = "" , name : Optional [str ] = None ,
279279 role : Optional [str ] = None , app_name : Optional [str ] = None ,
280280 automation_id : Optional [str ] = None ) -> bool :
281281 """Switch a control to the named view (MultipleViewPattern); True on success."""
282- self ._unsupported ("set_view" )
282+ self ._unsupported ("set_view" , view , name , role , app_name , automation_id )
283283
284284 # --- reactive events (UIA event subscription) --------------------------
285285
@@ -291,9 +291,9 @@ def wait_for_focus_change(self, timeout: float = 5.0,
291291 A zero-latency native wait (UIA AddFocusChangedEventHandler) — unlike the
292292 polling recorder, it can't miss a fast focus transition.
293293 """
294- self ._unsupported ("wait_for_focus_change" )
294+ self ._unsupported ("wait_for_focus_change" , timeout )
295295
296- def _unsupported (self , operation : str ):
296+ def _unsupported (self , operation : str , * context : Any ):
297297 """Raise a clear error for an action this backend can't perform."""
298298 raise AccessibilityNotAvailableError (
299299 f"{ operation } is not supported by the { self .name } backend" ,
0 commit comments