@@ -68,6 +68,13 @@ def __init__(self, start_line, end_line, file_end):
6868 self .lines = []
6969 self .disabled_headers = set ()
7070
71+ @property
72+ def file_disabled (self ):
73+ """Check if file is disabled. Whole file is only disabled if the first line contains one line disabler."""
74+ if not self .lines :
75+ return False
76+ return self .lines [0 ] == (1 , 1 )
77+
7178 def add_disabler (self , start_line , end_line ):
7279 self .lines .append ((start_line , end_line ))
7380
@@ -128,9 +135,9 @@ def visit_File(self, node): # noqa
128135 self .disablers = DisabledLines (self .start_line , self .end_line , node .end_lineno )
129136 self .disablers .parse_global_disablers ()
130137 self .stack = []
131- self .file_disabled = False
132138 self .generic_visit (node )
133139 self .disablers .sort_disablers ()
140+ self .file_disabled = self .disablers .file_disabled
134141
135142 def visit_SectionHeader (self , node ): # noqa
136143 for comment in node .get_tokens (Token .COMMENT ):
@@ -143,26 +150,20 @@ def visit_SectionHeader(self, node): # noqa
143150 def visit_TestCase (self , node ): # noqa
144151 self .stack .append (0 )
145152 self .generic_visit (node )
146- if self .file_disabled : # stop visiting if whole file is disabled
147- return
148153 self .close_disabler (node .end_lineno )
149154
150155 def visit_Try (self , node ): # noqa
151156 self .generic_visit (node .header )
152157 self .stack .append (0 )
153158 for statement in node .body :
154159 self .visit (statement )
155- if self .file_disabled : # stop visiting if whole file is disabled
156- return
157160 self .close_disabler (node .end_lineno )
158161 tail = node
159162 while tail .next :
160163 self .generic_visit (tail .header )
161164 self .stack .append (0 )
162165 for statement in tail .body :
163166 self .visit (statement )
164- if self .file_disabled : # stop visiting if whole file is disabled
165- return
166167 end_line = tail .next .lineno - 1 if tail .next else tail .end_lineno
167168 self .close_disabler (end_line = end_line )
168169 tail = tail .next
@@ -181,11 +182,8 @@ def visit_Statement(self, node): # noqa
181182 return
182183 self .disablers .add_disabler (self .stack [index ], node .lineno )
183184 self .stack [index ] = 0
184- else :
185- if node .lineno == 1 and index == 0 :
186- self .file_disabled = True
187- elif not self .stack [index ]:
188- self .stack [index ] = node .lineno
185+ elif not self .stack [index ]:
186+ self .stack [index ] = node .lineno
189187 else :
190188 # inline disabler
191189 if self .any_disabler_open ():
0 commit comments