Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit af2d783

Browse files
committed
Python: More examples of things to handle in find-subclass
1 parent fa6aec7 commit af2d783

2 files changed

Lines changed: 38 additions & 0 deletions

File tree

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
1+
| flask.MethodView~Subclass | find_subclass_test | Member[MethodView] |
2+
| flask.MethodView~Subclass | find_subclass_test | Member[clash] |
13
| flask.View~Subclass | find_subclass_test | Member[A] |
24
| flask.View~Subclass | find_subclass_test | Member[B] |
5+
| flask.View~Subclass | find_subclass_test | Member[ViewAliasInExcept] |
6+
| flask.View~Subclass | find_subclass_test | Member[ViewAliasInTry] |
37
| flask.View~Subclass | find_subclass_test | Member[ViewAlias] |
48
| flask.View~Subclass | find_subclass_test | Member[View] |
9+
| flask.View~Subclass | find_subclass_test | Member[clash3] |
10+
| flask.View~Subclass | find_subclass_test | Member[complete_module_alias] |

python/ql/test/experimental/library-tests/FindSubclass/find_subclass_test.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,35 @@ class B(A):
88

99

1010
ViewAlias = View
11+
12+
try:
13+
from flask.views import View as ViewAliasInTry
14+
except:
15+
from flask.views import View as ViewAliasInExcept
16+
17+
18+
if cond:
19+
from flask.views import View as clash # $ MISSING
20+
else:
21+
from flask.views import MethodView as clash # $ SPURIOUS: MethodView
22+
23+
if cond:
24+
from flask.views import View as clash2 # $ MISSING
25+
else:
26+
from flask.views import MethodView as clash2 # $ MISSING
27+
print(clash2)
28+
29+
if cond:
30+
from flask.views import View as clash3
31+
else:
32+
from flask.views import MethodView as clash3 # $ MISSING
33+
print(clash3)
34+
35+
import flask.views as containing_module_alias # $ MISSING
36+
# now `find_subclass_test.containing_module_alias.View` is an alias of flask.views.View
37+
38+
# NOTE: this is not valid code, since View is not a module... but it could be in some cases, like for xml.etree.ElementTree, which is actually not a class but a module 😕
39+
import flask.views.View as complete_module_alias
40+
41+
def wrapper():
42+
return View # $ MISSING

0 commit comments

Comments
 (0)