| # pylint: disable=too-few-public-methods, unnecessary-lambda-assignment |
| """check for scope problems""" |
| |
| |
| class Well: |
| """well""" |
| attr = 42 |
| get_attr = lambda arg=attr: arg * 24 |
| # +1: [undefined-variable, used-before-assignment] |
| get_attr_bad = lambda arg=revattr: revattr * 42 |
| revattr = 24 |
| bad_lambda = lambda: get_attr_bad # [undefined-variable] |
| bad_gen = list(attr + i for i in range(10)) # [undefined-variable] |
| |
| class Data: |
| """base hidden class""" |
| class Sub(Data): |
| """whaou, is Data found???""" |
| attr = Data() # [undefined-variable] |
| def func(self): |
| """check Sub is not defined here""" |
| return Sub(), self # [undefined-variable] |
| |
| |
| class Right: |
| """right""" |
| class Result1: |
| """result one""" |
| OK = 0 |
| def work(self) -> Result1: |
| """good type hint""" |
| return self.Result1.OK |
| |
| |
| class Wrong: |
| """wrong""" |
| class Result2: |
| """result two""" |
| OK = 0 |
| def work(self) -> self.Result2: # [undefined-variable] |
| """bad type hint""" |
| return self.Result2.OK |