@@ -775,20 +775,37 @@ def build_graph(self):
775
775
s += se
776
776
777
777
for st in self .states .values ():
778
- for n in st .atmt_origfunc .__code__ .co_names + st .atmt_origfunc .__code__ .co_consts : # noqa: E501
778
+ names = list (
779
+ st .atmt_origfunc .__code__ .co_names +
780
+ st .atmt_origfunc .__code__ .co_consts
781
+ )
782
+ while names :
783
+ n = names .pop ()
779
784
if n in self .states :
780
- s += '\t "%s" -> "%s" [ color=green ];\n ' % (st .atmt_state , n ) # noqa: E501
785
+ s += '\t "%s" -> "%s" [ color=green ];\n ' % (st .atmt_state , n )
786
+ elif n in self .__dict__ :
787
+ # function indirection
788
+ if callable (self .__dict__ [n ]):
789
+ names .extend (self .__dict__ [n ].__code__ .co_names )
790
+ names .extend (self .__dict__ [n ].__code__ .co_consts )
781
791
782
792
for c , k , v in ([("purple" , k , v ) for k , v in self .conditions .items ()] + # noqa: E501
783
793
[("red" , k , v ) for k , v in self .recv_conditions .items ()] + # noqa: E501
784
794
[("orange" , k , v ) for k , v in self .ioevents .items ()]):
785
795
for f in v :
786
- for n in f .__code__ .co_names + f .__code__ .co_consts :
796
+ names = list (f .__code__ .co_names + f .__code__ .co_consts )
797
+ while names :
798
+ n = names .pop ()
787
799
if n in self .states :
788
800
line = f .atmt_condname
789
801
for x in self .actions [f .atmt_condname ]:
790
802
line += "\\ l>[%s]" % x .__name__
791
803
s += '\t "%s" -> "%s" [label="%s", color=%s];\n ' % (k , n , line , c ) # noqa: E501
804
+ elif n in self .__dict__ :
805
+ # function indirection
806
+ if callable (self .__dict__ [n ]):
807
+ names .extend (self .__dict__ [n ].__code__ .co_names )
808
+ names .extend (self .__dict__ [n ].__code__ .co_consts )
792
809
for k , timers in self .timeout .items ():
793
810
for timer in timers :
794
811
for n in (timer ._func .__code__ .co_names +
0 commit comments