1
1
from __future__ import annotations
2
2
3
3
from enum import Enum , auto
4
- from functools import cached_property
5
4
from typing import TYPE_CHECKING , Union
6
5
7
6
from textual .app import App
@@ -306,31 +305,23 @@ def __init__(
306
305
self ._kcfg_nodes = []
307
306
kcfg_show = KCFGShow (kprint )
308
307
self ._node_idx = {}
309
- seg = kcfg_show .pretty_segments (
310
- self ._kcfg , minimize = self ._minimize , node_printer = self ._node_printer
311
- )
308
+ seg = kcfg_show .pretty_segments (self ._kcfg , minimize = self ._minimize , node_printer = self ._node_printer )
312
309
for lseg_id , node_lines in seg :
313
310
self ._kcfg_nodes .append (GraphChunk (lseg_id , node_lines ))
314
311
315
312
def last_idx (self ) -> int :
316
313
return int (self ._selected_chunk .rsplit ('_' , 1 )[1 ])
317
314
318
315
def pos_of (self , kcfg_id : str ) -> int | None :
319
- # return any(node.id for node in self._kcfg_nodes if node.id == kcfg_id)
320
316
for i , node in enumerate (self ._kcfg_nodes ):
321
317
if node .id == kcfg_id :
322
318
return i
323
319
324
- # def pos_of(self, kcfg_id: str) -> int | None:
325
- # return next((i for i, node in enumerate(self._kcfg_nodes) if node.id == kcfg_id), None)
326
-
327
-
328
320
def next_node_from (self , i : int = 0 ) -> str | None :
329
- li : list [str ] = [node .id for node in self ._kcfg_nodes [(i + 1 ):] if not node .id .startswith (" unknown" )]
321
+ li : list [str ] = [node .id for node in self ._kcfg_nodes [(i + 1 ) :] if not node .id .startswith (' unknown' )]
330
322
try :
331
- # return next(li)
332
323
return li [0 ]
333
- except :
324
+ except StopIteration :
334
325
return None
335
326
336
327
def next_node (self ) -> str | None :
@@ -339,10 +330,10 @@ def next_node(self) -> str | None:
339
330
return self .next_node_from (pos )
340
331
341
332
def prev_node_from (self , i : int ) -> str | None :
342
- li = reversed (list ( node .id for node in self ._kcfg_nodes [:i ] if not node .id .startswith (" unknown" )) )
333
+ li = reversed ([ node .id for node in self ._kcfg_nodes [:i ] if not node .id .startswith (' unknown' )] )
343
334
try :
344
335
return next (li )
345
- except :
336
+ except StopIteration :
346
337
return None
347
338
348
339
def prev_node (self ) -> str | None :
@@ -367,23 +358,23 @@ def _resolve_any(self, kcfg_id: str) -> KCFGElem:
367
358
node , * _ = kcfg_id [5 :].split ('_' )
368
359
node_id = int (node )
369
360
return self ._kcfg .node (node_id )
370
- elif kcfg_id .startswith ('edge_' ):
361
+ elif kcfg_id .startswith ('edge_' ):
371
362
node , * _ = kcfg_id [5 :].split ('_' )
372
363
node_source , node_target , * _ = kcfg_id [5 :].split ('_' )
373
364
source_id = int (node_source )
374
365
target_id = int (node_target )
375
366
return single (self ._kcfg .edges (source_id = source_id , target_id = target_id ))
376
- elif kcfg_id .startswith ('cover_' ):
367
+ elif kcfg_id .startswith ('cover_' ):
377
368
node_source , node_target , * _ = kcfg_id [6 :].split ('_' )
378
369
source_id = int (node_source )
379
370
target_id = int (node_target )
380
371
return single (self ._kcfg .covers (source_id = source_id , target_id = target_id ))
381
- elif kcfg_id .startswith ('split_' ):
372
+ elif kcfg_id .startswith ('split_' ):
382
373
node_source , node_target , * _ = kcfg_id [6 :].split ('_' )
383
374
source_id = int (node_source )
384
375
target_id = int (node_target )
385
376
return single (self ._kcfg .splits (source_id = source_id , target_id = target_id ))
386
- elif kcfg_id .startswith ('ndbranch_' ):
377
+ elif kcfg_id .startswith ('ndbranch_' ):
387
378
node_source , node_target , * _ = kcfg_id [8 :].split ('_' )
388
379
source_id = int (node_source )
389
380
target_id = int (node_target )
@@ -398,20 +389,15 @@ def on_mount(self) -> None:
398
389
next_node = self .next_node_from (0 )
399
390
if next_node != None :
400
391
self ._selected_chunk = next_node
401
- self .query_one (f'#{ self ._selected_chunk } ' , GraphChunk ).set_styles (
402
- 'border-left: double red;'
403
- )
392
+ self .query_one (f'#{ self ._selected_chunk } ' , GraphChunk ).set_styles ('border-left: double red;' )
404
393
self .query_one ('#node-view' , NodeView ).update (self ._resolve_any (next_node ))
405
394
406
395
def on_graph_chunk_selected (self , message : GraphChunk .Selected ) -> None :
407
- try :
408
- self .query_one (f'#{ self ._selected_chunk } ' , GraphChunk ).set_styles ('border: none;' )
409
- kcfg_elem = self ._resolve_any (message .chunk_id )
410
- self ._selected_chunk = message .chunk_id
411
- self .query_one (f'#{ self ._selected_chunk } ' , GraphChunk ).set_styles ('border-left: double red;' )
412
- self .query_one ('#node-view' , NodeView ).update (kcfg_elem )
413
- except :
414
- pass
396
+ self .query_one (f'#{ self ._selected_chunk } ' , GraphChunk ).set_styles ('border: none;' )
397
+ kcfg_elem = self ._resolve_any (message .chunk_id )
398
+ self ._selected_chunk = message .chunk_id
399
+ self .query_one (f'#{ self ._selected_chunk } ' , GraphChunk ).set_styles ('border-left: double red;' )
400
+ self .query_one ('#node-view' , NodeView ).update (kcfg_elem )
415
401
416
402
BINDINGS = [
417
403
('f' , 'keystroke("f")' , 'Fold node' ),
@@ -590,7 +576,7 @@ async def action_keystroke(self, key: str) -> None:
590
576
elif key == 'q' :
591
577
await self .action_quit ()
592
578
593
- self ._buffer = list ()
579
+ self ._buffer = []
594
580
595
581
if key == 'change-window' :
596
582
self ._buffer .append (key )
0 commit comments