Compare commits

...

45 Commits

Author SHA1 Message Date
Rasmus Wriedt Larsen
629f32a609 Python: Fix problem if import is used
I fixed it in both predicates... I think we might still be able to remove
`newDirectAlias` -- but with it being better, it will allow us to better test if `newImportAlias` actually cover everything we need!
2023-10-20 13:33:54 +02:00
Rasmus Wriedt Larsen
a3bc16cea8 Python: Add test highlight problem is import is used :O 2023-10-20 13:31:26 +02:00
Rasmus Wriedt Larsen
be9ed1d90d Python: Fix underlying problem of not using Alias 2023-10-20 11:13:48 +02:00
Rasmus Wriedt Larsen
208c1b9df4 Python: Use django View instead of MethodView
Due to the 'only model most specific spec' logic highlighted in previous
commit, I'm changing away from MethodView/View, and use Django view instead.

In practice this shouldn't matter at all, but for writing tests it would
have been a nice fix to only have the "same name but more specific"
logic apply when it's the same _definition_ location. We used to have
this information available, but right now we don't... so instead of
spending a lot of time rewriting the core library, I simply used a
different class :D :O :(
2023-10-20 11:01:15 +02:00
Rasmus Wriedt Larsen
3d5d4ca983 Python: Explain the funky logic in Find.ql 2023-10-20 10:55:23 +02:00
Rasmus Wriedt Larsen
0236d8ea69 Python: Ensure no deps visible in FindSubclass tests 2023-10-20 10:25:57 +02:00
Rasmus Wriedt Larsen
b8bd653c6b Python: More examples of things to handle in find-subclass 2023-10-20 10:24:39 +02:00
Rasmus Wriedt Larsen
eb9ee33adc Python: Workaround for module level items from import * not being LocalSourceNodes 2023-10-10 17:11:10 +02:00
Rasmus Wriedt Larsen
60903a48e7 Python: Also capture alias with new name 2023-10-09 17:54:24 +02:00
Rasmus Wriedt Larsen
ce5fc60c8f Python: Add test of find-subclass code 2023-10-09 17:53:29 +02:00
Rasmus Wriedt Larsen
2e4d7447a9 Python: Improve speed of process-mrva-results.py
Same trick as 'generate-code-scanning-query-list.py'
2023-10-09 17:53:22 +02:00
Rasmus Wriedt Larsen
c90bbb07ea Python: auto model 2023-09-20 17:12:25 +02:00
Rasmus Wriedt Larsen
2610c13053 Python: Enable auto-model for Django Model 2023-09-20 17:11:54 +02:00
Rasmus Wriedt Larsen
6d210c5fe8 Python: auto model 2023-09-18 20:34:41 +02:00
Rasmus Wriedt Larsen
9249b529d7 Python: auto model 2023-09-18 17:31:15 +02:00
Rasmus Wriedt Larsen
ce2fd928f5 Python: Enable auto-model for cgi.FieldStorage 2023-09-18 17:01:34 +02:00
Rasmus Wriedt Larsen
a27c2e0603 Python: auto model 2023-09-18 16:37:56 +02:00
Rasmus Wriedt Larsen
db6509e3ac Python: auto model 2023-09-18 16:25:38 +02:00
Rasmus Wriedt Larsen
244346bc1c Python: auto model 2023-09-18 14:35:28 +02:00
Rasmus Wriedt Larsen
48cb075b3b Python: More import fixes
:thinkies: turns out that .getASubclass*() had to be applied everywhere...
2023-09-18 14:25:04 +02:00
Rasmus Wriedt Larsen
ec32de59a6 Python: More auto-modeling 2023-09-18 14:24:03 +02:00
Rasmus Wriedt Larsen
b93d470364 Python: Enable auto-model BaseHttpRequestHandler 2023-09-18 13:48:24 +02:00
Rasmus Wriedt Larsen
6d4b4d6838 Python: Modernize modeling of BaseHTTPRequestHandler 2023-09-18 13:40:41 +02:00
Rasmus Wriedt Larsen
af9b1e73f8 Python: Improve auto-model from better import alias handling 2023-09-18 12:11:10 +02:00
Rasmus Wriedt Larsen
ff069f345d Python: Improve SelfRefMixin
This is important to model mixins correctly, for example when they help
handle incoming requests, and therefore need to know that `self.kwargs`
contains data controlled by a user.
2023-09-18 12:05:40 +02:00
Rasmus Wriedt Larsen
6877697837 Python: Allow any results.bqrs file 2023-09-18 11:36:12 +02:00
Rasmus Wriedt Larsen
3abfcc59ca Python: Improve import * handling 2023-09-18 11:32:29 +02:00
Rasmus Wriedt Larsen
b1cfe27d17 Python: More automatic modeling 2023-09-15 15:27:10 +02:00
Rasmus Wriedt Larsen
0bf1ca7550 Python: Automodel for WSGIServer 2023-09-15 14:58:42 +02:00
Rasmus Wriedt Larsen
1328bfd7d0 Python: Automodel for tornado 2023-09-15 14:58:23 +02:00
Rasmus Wriedt Larsen
8b82732040 Python: Make Django use auto-modeling
Ooops
2023-09-15 14:57:32 +02:00
Rasmus Wriedt Larsen
ab0313828c Python: Remove manual MaD modeling
Everything is covered now 👍
2023-09-14 11:52:41 +02:00
Rasmus Wriedt Larsen
975ed47c53 Python: Add more auto-generated models
This time using old set of projects
2023-09-14 11:52:41 +02:00
Rasmus Wriedt Larsen
523f7e2ed4 Python: Sort MaD rows
(makes future diffing much easier)
2023-09-14 11:52:41 +02:00
Rasmus Wriedt Larsen
38911e63d2 FIXME already fixed 2023-09-14 11:52:41 +02:00
Rasmus Wriedt Larsen
0f1b120a03 Python: Add manual modeling still missing from auto modeling 2023-09-14 11:52:41 +02:00
Rasmus Wriedt Larsen
68985db3f6 Python: Add auto-modeling from current venv in MRVA top 1000 projects 2023-09-14 11:52:41 +02:00
Rasmus Wriedt Larsen
e96e67cdb9 Python: Add script to process results from MRVA (bqrs files)
Also makes `empty.model.yml` empty once again
2023-09-14 11:52:41 +02:00
Rasmus Wriedt Larsen
6024ca0167 Python: Remove query predicate annotation 2023-09-14 11:52:41 +02:00
Rasmus Wriedt Larsen
e5aae0d7e7 Python: Add query metadata 2023-09-14 11:52:41 +02:00
Rasmus Wriedt Larsen
fb63e73142 Python: Streamline what modules to allow for now 2023-09-14 11:52:41 +02:00
Rasmus Wriedt Larsen
f29e8894bf Python: Adjust test-code predicate 2023-09-14 11:52:41 +02:00
Rasmus Wriedt Larsen
b980b82d59 Python: Improve docs/names around already modeled classes 2023-09-14 11:52:41 +02:00
Rasmus Wriedt Larsen
562d9c63b4 WIP rest of modeling done so far 2023-09-14 11:52:40 +02:00
Rasmus Wriedt Larsen
8e9636a6d8 WIP: Flask View class modeling for restplus
Based on some DBs I had that contained dependencies
2023-09-14 11:52:40 +02:00
97 changed files with 4643 additions and 133 deletions

View File

@@ -11,6 +11,7 @@ import DataFlowPublic
private import DataFlowPrivate
private import semmle.python.internal.CachedStages
private import semmle.python.internal.Awaited
private import semmle.python.dataflow.new.internal.ImportStar
/**
* A data flow node that is a source of local flow. This includes things like
@@ -39,6 +40,22 @@ class LocalSourceNode extends Node {
this instanceof ExprNode and
not simpleLocalFlowStepForTypetracking(_, this)
or
// For `from foo import *; foo_function()`, we want to let the variables we think
// could originate in `foo` (such as `foo_function`) to be available in the API
// graph. This requires them to be local sources. They would not be from the code
// just above, since the CFG node has flow going into it from its corresponding
// `GlobalSsaVariable`. (a different work-around is to change API graphs to not rely
// as heavily on LocalSourceNode; I initially tried this, but it relied on a lot of
// copy-pasted code, and it requires some non-trivial deprecation for downgrading
// the result type of `.asSource()` to DataFlow::Node, so we've opted for this
// approach instead).
//
// Note: This is only needed at the module level -- uses inside functions appear as
// LocalSourceNodes as we expect.
//
// TODO: When rewriting SSA, we should be able to remove this workaround
ImportStar::namePossiblyDefinedInImportStar(this.(ExprNode).getNode(), _, any(Module m))
or
// We include all module variable nodes, as these act as stepping stones between writes and
// reads of global variables. Without them, type tracking based on `LocalSourceNode`s would be
// unable to track across global variables.

View File

@@ -15,6 +15,7 @@ private import semmle.python.regex
private import semmle.python.frameworks.internal.PoorMansFunctionResolution
private import semmle.python.frameworks.internal.SelfRefMixin
private import semmle.python.frameworks.internal.InstanceTaintStepsHelper
private import semmle.python.frameworks.data.ModelsAsData
/**
* INTERNAL: Do not use.
@@ -84,6 +85,10 @@ module Django {
}
}
private class MaDSubclass extends ModeledSubclass {
MaDSubclass() { this = ModelOutput::getATypeNode("Django.Views.View~Subclass") }
}
/** Gets a reference to the `django.views.generic.View` class or any subclass. */
API::Node subclassRef() { result = any(ModeledSubclass subclass).getASubclass*() }
}
@@ -184,6 +189,10 @@ module Django {
}
}
private class MaDSubclass extends ModeledSubclass {
MaDSubclass() { this = ModelOutput::getATypeNode("django.forms.BaseForm~Subclass") }
}
/** Gets a reference to the `django.forms.forms.BaseForm` class or any subclass. */
API::Node subclassRef() { result = any(ModeledSubclass subclass).getASubclass*() }
}
@@ -289,6 +298,10 @@ module Django {
}
}
private class MaDSubclass extends ModeledSubclass {
MaDSubclass() { this = ModelOutput::getATypeNode("Django.Forms.Field~Subclass") }
}
/** Gets a reference to the `django.forms.fields.Field` class or any subclass. */
API::Node subclassRef() { result = any(ModeledSubclass subclass).getASubclass*() }
}
@@ -595,6 +608,8 @@ module PrivateDjango {
.getMember("models")
.getMember("PolymorphicModel")
.getASubclass*()
or
result = ModelOutput::getATypeNode("Django.db.models.Model~Subclass").getASubclass*()
}
/**

View File

@@ -11,18 +11,21 @@ private import semmle.python.Concepts
private import semmle.python.ApiGraphs
private import semmle.python.frameworks.Pydantic
private import semmle.python.frameworks.Starlette
private import semmle.python.frameworks.data.ModelsAsData
/**
* Provides models for the `fastapi` PyPI package.
* See https://fastapi.tiangolo.com/.
*/
private module FastApi {
module FastApi {
/**
* Provides models for FastAPI applications (an instance of `fastapi.FastAPI`).
*/
module App {
API::Node cls() { result = API::moduleImport("fastapi").getMember("FastAPI") }
/** Gets a reference to a FastAPI application (an instance of `fastapi.FastAPI`). */
API::Node instance() { result = API::moduleImport("fastapi").getMember("FastAPI").getReturn() }
API::Node instance() { result = cls().getReturn() }
}
/**
@@ -31,10 +34,14 @@ private module FastApi {
* See https://fastapi.tiangolo.com/tutorial/bigger-applications/.
*/
module ApiRouter {
/** Gets a reference to an instance of `fastapi.ApiRouter`. */
API::Node instance() {
result = API::moduleImport("fastapi").getMember("APIRouter").getASubclass*().getReturn()
API::Node cls() {
result = API::moduleImport("fastapi").getMember("APIRouter").getASubclass*()
or
result = ModelOutput::getATypeNode("fastapi.APIRouter~Subclass").getASubclass*()
}
/** Gets a reference to an instance of `fastapi.ApiRouter`. */
API::Node instance() { result = cls().getReturn() }
}
// ---------------------------------------------------------------------------

View File

@@ -14,6 +14,7 @@ private import semmle.python.ApiGraphs
private import semmle.python.frameworks.internal.InstanceTaintStepsHelper
private import semmle.python.security.dataflow.PathInjectionCustomizations
private import semmle.python.dataflow.new.FlowSummary
private import semmle.python.frameworks.data.ModelsAsData
/**
* Provides models for the `flask` PyPI package.
@@ -39,6 +40,10 @@ module Flask {
"MethodView"
])
.getASubclass*()
or
result = ModelOutput::getATypeNode("flask.View~Subclass").getASubclass*()
or
result = ModelOutput::getATypeNode("flask.MethodView~Subclass").getASubclass*()
}
}
@@ -52,6 +57,8 @@ module Flask {
API::Node subclassRef() {
result =
API::moduleImport("flask").getMember("views").getMember("MethodView").getASubclass*()
or
result = ModelOutput::getATypeNode("flask.MethodView~Subclass").getASubclass*()
}
}
}

View File

@@ -17,6 +17,7 @@ private import semmle.python.frameworks.internal.InstanceTaintStepsHelper
// modeling split over multiple files to keep this file from becoming too big
private import semmle.python.frameworks.Stdlib.Urllib
private import semmle.python.frameworks.Stdlib.Urllib2
private import semmle.python.frameworks.data.ModelsAsData
/** Provides models for the Python standard library. */
module Stdlib {
@@ -298,7 +299,7 @@ module Stdlib {
* policy, and the code is not in a polished enough state that we want to do so -- at
* least not without having convincing use-cases for it :)
*/
private module StdlibPrivate {
module StdlibPrivate {
// ---------------------------------------------------------------------------
// os
// ---------------------------------------------------------------------------
@@ -1709,8 +1710,21 @@ private module StdlibPrivate {
* See https://docs.python.org/3/library/cgi.html.
*/
module FieldStorage {
/** Gets a reference to the `cgi.FieldStorage` class. */
API::Node classRef() { result = cgi().getMember("FieldStorage") }
/**
* DEPRECATED: Use `subclassRef` predicate instead.
*
* Gets a reference to the `cgi.FieldStorage` class.
*/
deprecated API::Node classRef() {
result = API::moduleImport("cgi").getMember("FieldStorage")
}
/** Gets a reference to the `cgi.FieldStorage` class or any subclass. */
API::Node subclassRef() {
result = API::moduleImport("cgi").getMember("FieldStorage").getASubclass*()
or
result = ModelOutput::getATypeNode("cgi.FieldStorage~Subclass").getASubclass*()
}
/**
* A source of instances of `cgi.FieldStorage`, extend this class to model new instances.
@@ -1733,13 +1747,13 @@ private module StdlibPrivate {
private class ClassInstantiation extends InstanceSource, RemoteFlowSource::Range,
DataFlow::CallCfgNode
{
ClassInstantiation() { this = classRef().getACall() }
ClassInstantiation() { this = subclassRef().getACall() }
override string getSourceType() { result = "cgi.FieldStorage" }
}
/** Gets a reference to an instance of `cgi.FieldStorage`. */
API::Node instance() { result = classRef().getReturn() }
API::Node instance() { result = subclassRef().getReturn() }
/** Gets a reference to the `getvalue` method on a `cgi.FieldStorage` instance. */
API::Node getvalueRef() { result = instance().getMember("getvalue") }
@@ -1815,51 +1829,95 @@ private module StdlibPrivate {
// ---------------------------------------------------------------------------
// BaseHTTPServer (Python 2 only)
// ---------------------------------------------------------------------------
/** Gets a reference to the `BaseHttpServer` module. */
API::Node baseHttpServer() { result = API::moduleImport("BaseHTTPServer") }
/**
* DEPRECATED: Use API-graphs directly instead.
*
* Gets a reference to the `BaseHttpServer` module.
*/
deprecated API::Node baseHttpServer() { result = API::moduleImport("BaseHTTPServer") }
/** Provides models for the `BaseHttpServer` module. */
module BaseHttpServer {
/**
* DEPRECATED: Use API-graphs directly instead.
*
* Provides models for the `BaseHttpServer` module.
*/
deprecated module BaseHttpServer {
/**
* DEPRECATED: Use API-graphs directly instead.
*
* Provides models for the `BaseHTTPServer.BaseHTTPRequestHandler` class (Python 2 only).
*/
module BaseHttpRequestHandler {
/** Gets a reference to the `BaseHttpServer.BaseHttpRequestHandler` class. */
API::Node classRef() { result = baseHttpServer().getMember("BaseHTTPRequestHandler") }
deprecated module BaseHttpRequestHandler {
/**
* DEPRECATED: Use API-graphs directly instead.
*
* Gets a reference to the `BaseHttpServer.BaseHttpRequestHandler` class.
*/
deprecated API::Node classRef() {
result = baseHttpServer().getMember("BaseHTTPRequestHandler")
}
}
}
// ---------------------------------------------------------------------------
// SimpleHTTPServer (Python 2 only)
// ---------------------------------------------------------------------------
/** Gets a reference to the `SimpleHttpServer` module. */
API::Node simpleHttpServer() { result = API::moduleImport("SimpleHTTPServer") }
/**
* DEPRECATED: Use API-graphs directly instead.
*
* Gets a reference to the `SimpleHttpServer` module.
*/
deprecated API::Node simpleHttpServer() { result = API::moduleImport("SimpleHTTPServer") }
/** Provides models for the `SimpleHttpServer` module. */
module SimpleHttpServer {
/**
* DEPRECATED: Use API-graphs directly instead.
*
* Provides models for the `SimpleHttpServer` module.
*/
deprecated module SimpleHttpServer {
/**
* DEPRECATED: Use API-graphs directly instead.
*
* Provides models for the `SimpleHTTPServer.SimpleHTTPRequestHandler` class (Python 2 only).
*/
module SimpleHttpRequestHandler {
/** Gets a reference to the `SimpleHttpServer.SimpleHttpRequestHandler` class. */
API::Node classRef() { result = simpleHttpServer().getMember("SimpleHTTPRequestHandler") }
deprecated module SimpleHttpRequestHandler {
/**
* DEPRECATED: Use API-graphs directly instead.
*
* Gets a reference to the `SimpleHttpServer.SimpleHttpRequestHandler` class.
*/
deprecated API::Node classRef() {
result = simpleHttpServer().getMember("SimpleHTTPRequestHandler")
}
}
}
// ---------------------------------------------------------------------------
// CGIHTTPServer (Python 2 only)
// ---------------------------------------------------------------------------
/** Gets a reference to the `CGIHTTPServer` module. */
API::Node cgiHttpServer() { result = API::moduleImport("CGIHTTPServer") }
/**
* DEPRECATED: Use API-graphs directly instead.
*
* Gets a reference to the `CGIHTTPServer` module.
*/
deprecated API::Node cgiHttpServer() { result = API::moduleImport("CGIHTTPServer") }
/** Provides models for the `CGIHTTPServer` module. */
module CgiHttpServer {
deprecated module CgiHttpServer {
/**
* DEPRECATED: Use API-graphs directly instead.
*
* Provides models for the `CGIHTTPServer.CGIHTTPRequestHandler` class (Python 2 only).
*/
module CgiHttpRequestHandler {
/** Gets a reference to the `CGIHTTPServer.CgiHttpRequestHandler` class. */
API::Node classRef() { result = cgiHttpServer().getMember("CGIHTTPRequestHandler") }
deprecated module CgiHttpRequestHandler {
/**
* DEPRECATED: Use API-graphs directly instead.
*
* Gets a reference to the `CGIHTTPServer.CgiHttpRequestHandler` class.
*/
deprecated API::Node classRef() {
result = cgiHttpServer().getMember("CGIHTTPRequestHandler")
}
}
/** DEPRECATED: Alias for CgiHttpRequestHandler */
@@ -1872,47 +1930,69 @@ private module StdlibPrivate {
// ---------------------------------------------------------------------------
// http (Python 3 only)
// ---------------------------------------------------------------------------
/** Gets a reference to the `http` module. */
API::Node http() { result = API::moduleImport("http") }
/**
* DEPRECATED: Use API-graphs directly instead.
*
* Gets a reference to the `http` module.
*/
deprecated API::Node http() { result = API::moduleImport("http") }
/** Provides models for the `http` module. */
module StdlibHttp {
deprecated module StdlibHttp {
// -------------------------------------------------------------------------
// http.server
// -------------------------------------------------------------------------
/** Gets a reference to the `http.server` module. */
API::Node server() { result = http().getMember("server") }
/**
* DEPRECATED: Use API-graphs directly instead.
*
* Gets a reference to the `http.server` module.
*/
deprecated API::Node server() { result = http().getMember("server") }
/** Provides models for the `http.server` module */
module Server {
/**
* DEPRECATED: Use API-graphs directly instead.
*
* Provides models for the `http.server` module
*/
deprecated module Server {
/**
* DEPRECATED: Use API-graphs directly instead.
*
* Provides models for the `http.server.BaseHTTPRequestHandler` class (Python 3 only).
*
* See https://docs.python.org/3.9/library/http.server.html#http.server.BaseHTTPRequestHandler.
*/
module BaseHttpRequestHandler {
deprecated module BaseHttpRequestHandler {
/** Gets a reference to the `http.server.BaseHttpRequestHandler` class. */
API::Node classRef() { result = server().getMember("BaseHTTPRequestHandler") }
deprecated API::Node classRef() { result = server().getMember("BaseHTTPRequestHandler") }
}
/**
* DEPRECATED: Use API-graphs directly instead.
*
* Provides models for the `http.server.SimpleHTTPRequestHandler` class (Python 3 only).
*
* See https://docs.python.org/3.9/library/http.server.html#http.server.SimpleHTTPRequestHandler.
*/
module SimpleHttpRequestHandler {
deprecated module SimpleHttpRequestHandler {
/** Gets a reference to the `http.server.SimpleHttpRequestHandler` class. */
API::Node classRef() { result = server().getMember("SimpleHTTPRequestHandler") }
deprecated API::Node classRef() { result = server().getMember("SimpleHTTPRequestHandler") }
}
/**
* DEPRECATED: Use API-graphs directly instead.
*
* Provides models for the `http.server.CGIHTTPRequestHandler` class (Python 3 only).
*
* See https://docs.python.org/3.9/library/http.server.html#http.server.CGIHTTPRequestHandler.
*/
module CgiHttpRequestHandler {
/** Gets a reference to the `http.server.CGIHTTPRequestHandler` class. */
API::Node classRef() { result = server().getMember("CGIHTTPRequestHandler") }
deprecated module CgiHttpRequestHandler {
/**
* DEPRECATED: Use API-graphs directly instead.
*
* Gets a reference to the `http.server.CGIHTTPRequestHandler` class.
*/
deprecated API::Node classRef() { result = server().getMember("CGIHTTPRequestHandler") }
}
/** DEPRECATED: Alias for CgiHttpRequestHandler */
@@ -1927,20 +2007,23 @@ private module StdlibPrivate {
* - https://docs.python.org/3.9/library/http.server.html#http.server.BaseHTTPRequestHandler
* - https://docs.python.org/2.7/library/basehttpserver.html#BaseHTTPServer.BaseHTTPRequestHandler
*/
private module HttpRequestHandler {
module BaseHttpRequestHandler {
/** Gets a reference to the `BaseHttpRequestHandler` class or any subclass. */
API::Node subclassRef() {
result =
[
// Python 2
BaseHttpServer::BaseHttpRequestHandler::classRef(),
SimpleHttpServer::SimpleHttpRequestHandler::classRef(),
CgiHttpServer::CgiHttpRequestHandler::classRef(),
API::moduleImport("BaseHTTPServer").getMember("BaseHTTPRequestHandler"),
API::moduleImport("SimpleHTTPServer").getMember("SimpleHTTPRequestHandler"),
API::moduleImport("CGIHTTPServer").getMember("CGIHTTPRequestHandler"),
// Python 3
StdlibHttp::Server::BaseHttpRequestHandler::classRef(),
StdlibHttp::Server::SimpleHttpRequestHandler::classRef(),
StdlibHttp::Server::CgiHttpRequestHandler::classRef()
API::moduleImport("http").getMember("server").getMember("BaseHTTPRequestHandler"),
API::moduleImport("http").getMember("server").getMember("SimpleHTTPRequestHandler"),
API::moduleImport("http").getMember("server").getMember("CGIHTTPRequestHandler"),
].getASubclass*()
or
result =
ModelOutput::getATypeNode("http.server.BaseHTTPRequestHandler~Subclass").getASubclass*()
}
/** A HttpRequestHandler class definition (most likely in project code). */
@@ -2035,17 +2118,20 @@ private module StdlibPrivate {
// wsgiref.simple_server
// ---------------------------------------------------------------------------
/** Provides models for the `wsgiref.simple_server` module. */
private module WsgirefSimpleServer {
module WsgirefSimpleServer {
API::Node subclassRef() {
result =
API::moduleImport("wsgiref")
.getMember("simple_server")
.getMember("WSGIServer")
.getASubclass*()
or
result =
ModelOutput::getATypeNode("wsgiref.simple_server.WSGIServer~Subclass").getASubclass*()
}
class WsgiServerSubclass extends Class, SelfRefMixin {
WsgiServerSubclass() {
this.getParent() =
API::moduleImport("wsgiref")
.getMember("simple_server")
.getMember("WSGIServer")
.getASubclass*()
.asSource()
.asExpr()
}
WsgiServerSubclass() { this.getParent() = subclassRef().asSource().asExpr() }
}
/**
@@ -2062,13 +2148,7 @@ private module StdlibPrivate {
exists(DataFlow::Node appArg, DataFlow::CallCfgNode setAppCall |
(
setAppCall =
API::moduleImport("wsgiref")
.getMember("simple_server")
.getMember("WSGIServer")
.getASubclass*()
.getReturn()
.getMember("set_app")
.getACall()
WsgirefSimpleServer::subclassRef().getReturn().getMember("set_app").getACall()
or
setAppCall
.(DataFlow::MethodCallNode)

View File

@@ -12,6 +12,7 @@ private import semmle.python.ApiGraphs
private import semmle.python.regex
private import semmle.python.frameworks.Stdlib
private import semmle.python.frameworks.internal.InstanceTaintStepsHelper
private import semmle.python.frameworks.data.ModelsAsData
/**
* INTERNAL: Do not use.
@@ -87,7 +88,11 @@ module Tornado {
*/
module RequestHandler {
/** Gets a reference to the `tornado.web.RequestHandler` class or any subclass. */
API::Node subclassRef() { result = web().getMember("RequestHandler").getASubclass*() }
API::Node subclassRef() {
result = web().getMember("RequestHandler").getASubclass*()
or
result = ModelOutput::getATypeNode("tornado.web.RequestHandler~Subclass").getASubclass*()
}
/** A RequestHandler class (most likely in project code). */
class RequestHandlerClass extends Class {

View File

@@ -0,0 +1,150 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Forms.Field~Subclass
- allauth
- Member[account].Member[forms].Member[PasswordField]
- - Django.Forms.Field~Subclass
- allauth
- Member[account].Member[forms].Member[SetPasswordField]
- - Django.Views.View~Subclass
- allauth
- Member[account].Member[views].Member[AccountInactiveView]
- - Django.Views.View~Subclass
- allauth
- Member[account].Member[views].Member[ConfirmEmailView]
- - Django.Views.View~Subclass
- allauth
- Member[account].Member[views].Member[EmailVerificationSentView]
- - Django.Views.View~Subclass
- allauth
- Member[account].Member[views].Member[EmailView]
- - Django.Views.View~Subclass
- allauth
- Member[account].Member[views].Member[FormView]
- - Django.Views.View~Subclass
- allauth
- Member[account].Member[views].Member[LoginView]
- - Django.Views.View~Subclass
- allauth
- Member[account].Member[views].Member[LogoutView]
- - Django.Views.View~Subclass
- allauth
- Member[account].Member[views].Member[PasswordChangeView]
- - Django.Views.View~Subclass
- allauth
- Member[account].Member[views].Member[PasswordResetDoneView]
- - Django.Views.View~Subclass
- allauth
- Member[account].Member[views].Member[PasswordResetFromKeyDoneView]
- - Django.Views.View~Subclass
- allauth
- Member[account].Member[views].Member[PasswordResetFromKeyView]
- - Django.Views.View~Subclass
- allauth
- Member[account].Member[views].Member[PasswordResetView]
- - Django.Views.View~Subclass
- allauth
- Member[account].Member[views].Member[PasswordSetView]
- - Django.Views.View~Subclass
- allauth
- Member[account].Member[views].Member[SignupView]
- - Django.Views.View~Subclass
- allauth
- Member[account].Member[views].Member[TemplateView]
- - Django.Views.View~Subclass
- allauth
- Member[account].Member[views].Member[View]
- - Django.db.models.Model~Subclass
- allauth
- Member[account].Member[adapter].Member[AbstractUser]
- - Django.db.models.Model~Subclass
- allauth
- Member[account].Member[forms].Member[EmailAddress]
- - Django.db.models.Model~Subclass
- allauth
- Member[account].Member[models].Member[EmailAddress]
- - Django.db.models.Model~Subclass
- allauth
- Member[account].Member[models].Member[EmailConfirmation]
- - Django.db.models.Model~Subclass
- allauth
- Member[account].Member[views].Member[EmailAddress]
- - Django.db.models.Model~Subclass
- allauth
- Member[account].Member[views].Member[EmailConfirmation]
- - Django.db.models.Model~Subclass
- allauth
- Member[socialaccount].Member[adapter].Member[EmailAddress]
- - django.forms.BaseForm~Subclass
- allauth
- Member[account].Member[forms].Member[AddEmailForm]
- - django.forms.BaseForm~Subclass
- allauth
- Member[account].Member[forms].Member[BaseSignupForm]
- - django.forms.BaseForm~Subclass
- allauth
- Member[account].Member[forms].Member[ChangePasswordForm]
- - django.forms.BaseForm~Subclass
- allauth
- Member[account].Member[forms].Member[LoginForm]
- - django.forms.BaseForm~Subclass
- allauth
- Member[account].Member[forms].Member[ResetPasswordForm]
- - django.forms.BaseForm~Subclass
- allauth
- Member[account].Member[forms].Member[ResetPasswordKeyForm]
- - django.forms.BaseForm~Subclass
- allauth
- Member[account].Member[forms].Member[SetPasswordForm]
- - django.forms.BaseForm~Subclass
- allauth
- Member[account].Member[forms].Member[SignupForm]
- - django.forms.BaseForm~Subclass
- allauth
- Member[account].Member[forms].Member[UserForm]
- - django.forms.BaseForm~Subclass
- allauth
- Member[account].Member[forms].Member[UserTokenForm]
- - django.forms.BaseForm~Subclass
- allauth
- Member[account].Member[forms].Member[_DummyCustomSignupForm]
- - django.forms.BaseForm~Subclass
- allauth
- Member[account].Member[views].Member[AddEmailForm]
- - django.forms.BaseForm~Subclass
- allauth
- Member[account].Member[views].Member[ChangePasswordForm]
- - django.forms.BaseForm~Subclass
- allauth
- Member[account].Member[views].Member[LoginForm]
- - django.forms.BaseForm~Subclass
- allauth
- Member[account].Member[views].Member[ResetPasswordForm]
- - django.forms.BaseForm~Subclass
- allauth
- Member[account].Member[views].Member[ResetPasswordKeyForm]
- - django.forms.BaseForm~Subclass
- allauth
- Member[account].Member[views].Member[SetPasswordForm]
- - django.forms.BaseForm~Subclass
- allauth
- Member[account].Member[views].Member[SignupForm]
- - django.forms.BaseForm~Subclass
- allauth
- Member[account].Member[views].Member[UserTokenForm]
- - django.forms.BaseForm~Subclass
- allauth
- Member[socialaccount].Member[admin].Member[SocialAppForm]
- - django.forms.BaseForm~Subclass
- allauth
- Member[socialaccount].Member[forms].Member[BaseSignupForm]
- - django.forms.BaseForm~Subclass
- allauth
- Member[socialaccount].Member[forms].Member[DisconnectForm]
- - django.forms.BaseForm~Subclass
- allauth
- Member[socialaccount].Member[forms].Member[SignupForm]

View File

@@ -0,0 +1,12 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Views.View~Subclass
- aplus_auth
- Member[auth].Member[django].Member[RemoteAuthenticator]
- - Django.Views.View~Subclass
- aplus_auth
- Member[auth].Member[django].Member[View]

View File

@@ -0,0 +1,12 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - http.server.BaseHTTPRequestHandler~Subclass
- azure
- Member[identity].Member[_internal].Member[auth_code_redirect_handler].Member[AuthCodeRedirectHandler]
- - http.server.BaseHTTPRequestHandler~Subclass
- azure
- Member[identity].Member[_internal].Member[auth_code_redirect_handler].Member[BaseHTTPRequestHandler]

View File

@@ -0,0 +1,9 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - django.forms.BaseForm~Subclass
- bootstrap3
- Member[renderers].Member[BaseForm]

View File

@@ -0,0 +1,9 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Forms.Field~Subclass
- captcha
- Member[fields].Member[ReCaptchaField]

View File

@@ -0,0 +1,12 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Forms.Field~Subclass
- colorful
- Member[forms].Member[RGBColorField]
- - Django.Forms.Field~Subclass
- colorful
- Member[forms].Member[RegexField]

View File

@@ -0,0 +1,57 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Forms.Field~Subclass
- dal
- Member[autocomplete].Member[GM2MQuerySetSequenceField]
- - Django.Forms.Field~Subclass
- dal
- Member[autocomplete].Member[GenericForeignKeyModelField]
- - Django.Forms.Field~Subclass
- dal
- Member[autocomplete].Member[GenericM2MQuerySetSequenceField]
- - Django.Forms.Field~Subclass
- dal
- Member[autocomplete].Member[QuerySetSequenceModelField]
- - Django.Forms.Field~Subclass
- dal
- Member[autocomplete].Member[QuerySetSequenceModelMultipleField]
- - Django.Forms.Field~Subclass
- dal
- Member[autocomplete].Member[Select2GenericForeignKeyModelField]
- - Django.Forms.Field~Subclass
- dal
- Member[autocomplete].Member[Select2ListChoiceField]
- - Django.Forms.Field~Subclass
- dal
- Member[autocomplete].Member[Select2ListCreateChoiceField]
- - Django.Views.View~Subclass
- dal
- Member[autocomplete].Member[BaseQuerySetSequenceView]
- - Django.Views.View~Subclass
- dal
- Member[autocomplete].Member[Select2GroupListView]
- - Django.Views.View~Subclass
- dal
- Member[autocomplete].Member[Select2ListView]
- - Django.Views.View~Subclass
- dal
- Member[autocomplete].Member[Select2QuerySetSequenceView]
- - Django.Views.View~Subclass
- dal
- Member[autocomplete].Member[Select2QuerySetView]
- - Django.Views.View~Subclass
- dal
- Member[views].Member[BaseListView]
- - Django.Views.View~Subclass
- dal
- Member[views].Member[BaseQuerySetView]
- - django.forms.BaseForm~Subclass
- dal
- Member[autocomplete].Member[FutureModelForm]
- - django.forms.BaseForm~Subclass
- dal
- Member[forms].Member[FutureModelForm]

View File

@@ -0,0 +1,12 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Forms.Field~Subclass
- dal_genericm2m_queryset_sequence
- Member[fields].Member[GenericM2MQuerySetSequenceField]
- - Django.Forms.Field~Subclass
- dal_genericm2m_queryset_sequence
- Member[fields].Member[QuerySetSequenceModelMultipleField]

View File

@@ -0,0 +1,12 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Forms.Field~Subclass
- dal_gm2m_queryset_sequence
- Member[fields].Member[GM2MQuerySetSequenceField]
- - Django.Forms.Field~Subclass
- dal_gm2m_queryset_sequence
- Member[fields].Member[QuerySetSequenceModelMultipleField]

View File

@@ -0,0 +1,21 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Forms.Field~Subclass
- dal_queryset_sequence
- Member[fields].Member[GenericForeignKeyModelField]
- - Django.Forms.Field~Subclass
- dal_queryset_sequence
- Member[fields].Member[QuerySetSequenceModelField]
- - Django.Forms.Field~Subclass
- dal_queryset_sequence
- Member[fields].Member[QuerySetSequenceModelMultipleField]
- - Django.Views.View~Subclass
- dal_queryset_sequence
- Member[views].Member[BaseQuerySetSequenceView]
- - Django.Views.View~Subclass
- dal_queryset_sequence
- Member[views].Member[BaseQuerySetView]

View File

@@ -0,0 +1,30 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Forms.Field~Subclass
- dal_select2
- Member[fields].Member[ChoiceField]
- - Django.Forms.Field~Subclass
- dal_select2
- Member[fields].Member[Select2ListChoiceField]
- - Django.Forms.Field~Subclass
- dal_select2
- Member[fields].Member[Select2ListCreateChoiceField]
- - Django.Views.View~Subclass
- dal_select2
- Member[views].Member[BaseQuerySetView]
- - Django.Views.View~Subclass
- dal_select2
- Member[views].Member[Select2GroupListView]
- - Django.Views.View~Subclass
- dal_select2
- Member[views].Member[Select2ListView]
- - Django.Views.View~Subclass
- dal_select2
- Member[views].Member[Select2QuerySetView]
- - Django.Views.View~Subclass
- dal_select2
- Member[views].Member[View]

View File

@@ -0,0 +1,24 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Forms.Field~Subclass
- dal_select2_queryset_sequence
- Member[fields].Member[QuerySetSequenceModelField]
- - Django.Forms.Field~Subclass
- dal_select2_queryset_sequence
- Member[fields].Member[Select2GenericForeignKeyModelField]
- - Django.Views.View~Subclass
- dal_select2_queryset_sequence
- Member[fields].Member[Select2QuerySetSequenceAutoView]
- - Django.Views.View~Subclass
- dal_select2_queryset_sequence
- Member[views].Member[BaseQuerySetSequenceView]
- - Django.Views.View~Subclass
- dal_select2_queryset_sequence
- Member[views].Member[Select2QuerySetSequenceAutoView]
- - Django.Views.View~Subclass
- dal_select2_queryset_sequence
- Member[views].Member[Select2QuerySetSequenceView]

View File

@@ -0,0 +1,465 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[auth].Member[forms].Member[ReadOnlyPasswordHashField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[auth].Member[forms].Member[UsernameField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[gis].Member[forms].Member[ChoiceField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[gis].Member[forms].Member[FileField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[gis].Member[forms].Member[FilePathField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[gis].Member[forms].Member[GeometryCollectionField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[gis].Member[forms].Member[GeometryField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[gis].Member[forms].Member[ImageField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[gis].Member[forms].Member[JSONField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[gis].Member[forms].Member[LineStringField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[gis].Member[forms].Member[MultiLineStringField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[gis].Member[forms].Member[MultiPointField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[gis].Member[forms].Member[MultiPolygonField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[gis].Member[forms].Member[PointField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[gis].Member[forms].Member[PolygonField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[gis].Member[forms].Member[RegexField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[gis].Member[forms].Member[URLField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[gis].Member[forms].Member[fields].Member[GeometryCollectionField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[gis].Member[forms].Member[fields].Member[GeometryField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[gis].Member[forms].Member[fields].Member[LineStringField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[gis].Member[forms].Member[fields].Member[MultiLineStringField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[gis].Member[forms].Member[fields].Member[MultiPointField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[gis].Member[forms].Member[fields].Member[MultiPolygonField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[gis].Member[forms].Member[fields].Member[PointField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[gis].Member[forms].Member[fields].Member[PolygonField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[postgres].Member[forms].Member[DateRangeField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[postgres].Member[forms].Member[DateTimeRangeField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[postgres].Member[forms].Member[DecimalRangeField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[postgres].Member[forms].Member[HStoreField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[postgres].Member[forms].Member[IntegerRangeField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[postgres].Member[forms].Member[JSONField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[postgres].Member[forms].Member[SimpleArrayField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[postgres].Member[forms].Member[SplitArrayField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[postgres].Member[forms].Member[array].Member[SimpleArrayField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[postgres].Member[forms].Member[array].Member[SplitArrayField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[postgres].Member[forms].Member[hstore].Member[HStoreField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[postgres].Member[forms].Member[jsonb].Member[JSONField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[postgres].Member[forms].Member[ranges].Member[BaseRangeField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[postgres].Member[forms].Member[ranges].Member[DateRangeField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[postgres].Member[forms].Member[ranges].Member[DateTimeRangeField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[postgres].Member[forms].Member[ranges].Member[DecimalRangeField]
- - Django.Forms.Field~Subclass
- django
- Member[contrib].Member[postgres].Member[forms].Member[ranges].Member[IntegerRangeField]
- - Django.Forms.Field~Subclass
- django
- Member[forms].Member[models].Member[InlineForeignKeyField]
- - Django.Forms.Field~Subclass
- django
- Member[forms].Member[models].Member[ModelChoiceField]
- - Django.Forms.Field~Subclass
- django
- Member[forms].Member[models].Member[ModelMultipleChoiceField]
- - Django.Views.View~Subclass
- django
- Member[contrib].Member[admin].Member[options].Member[AutocompleteJsonView]
- - Django.Views.View~Subclass
- django
- Member[contrib].Member[admin].Member[options].Member[RedirectView]
- - Django.Views.View~Subclass
- django
- Member[contrib].Member[admin].Member[sites].Member[AutocompleteJsonView]
- - Django.Views.View~Subclass
- django
- Member[contrib].Member[admin].Member[sites].Member[JavaScriptCatalog]
- - Django.Views.View~Subclass
- django
- Member[contrib].Member[admin].Member[views].Member[autocomplete].Member[AutocompleteJsonView]
- - Django.Views.View~Subclass
- django
- Member[contrib].Member[admin].Member[views].Member[autocomplete].Member[BaseListView]
- - Django.Views.View~Subclass
- django
- Member[contrib].Member[admindocs].Member[views].Member[BaseAdminDocsView]
- - Django.Views.View~Subclass
- django
- Member[contrib].Member[admindocs].Member[views].Member[BookmarkletsView]
- - Django.Views.View~Subclass
- django
- Member[contrib].Member[admindocs].Member[views].Member[ModelDetailView]
- - Django.Views.View~Subclass
- django
- Member[contrib].Member[admindocs].Member[views].Member[ModelIndexView]
- - Django.Views.View~Subclass
- django
- Member[contrib].Member[admindocs].Member[views].Member[TemplateDetailView]
- - Django.Views.View~Subclass
- django
- Member[contrib].Member[admindocs].Member[views].Member[TemplateFilterIndexView]
- - Django.Views.View~Subclass
- django
- Member[contrib].Member[admindocs].Member[views].Member[TemplateTagIndexView]
- - Django.Views.View~Subclass
- django
- Member[contrib].Member[admindocs].Member[views].Member[TemplateView]
- - Django.Views.View~Subclass
- django
- Member[contrib].Member[admindocs].Member[views].Member[ViewDetailView]
- - Django.Views.View~Subclass
- django
- Member[contrib].Member[admindocs].Member[views].Member[ViewIndexView]
- - Django.Views.View~Subclass
- django
- Member[contrib].Member[auth].Member[views].Member[FormView]
- - Django.Views.View~Subclass
- django
- Member[contrib].Member[auth].Member[views].Member[LoginView]
- - Django.Views.View~Subclass
- django
- Member[contrib].Member[auth].Member[views].Member[LogoutView]
- - Django.Views.View~Subclass
- django
- Member[contrib].Member[auth].Member[views].Member[PasswordChangeDoneView]
- - Django.Views.View~Subclass
- django
- Member[contrib].Member[auth].Member[views].Member[PasswordChangeView]
- - Django.Views.View~Subclass
- django
- Member[contrib].Member[auth].Member[views].Member[PasswordResetCompleteView]
- - Django.Views.View~Subclass
- django
- Member[contrib].Member[auth].Member[views].Member[PasswordResetConfirmView]
- - Django.Views.View~Subclass
- django
- Member[contrib].Member[auth].Member[views].Member[PasswordResetDoneView]
- - Django.Views.View~Subclass
- django
- Member[contrib].Member[auth].Member[views].Member[PasswordResetView]
- - Django.Views.View~Subclass
- django
- Member[contrib].Member[auth].Member[views].Member[TemplateView]
- - Django.Views.View~Subclass
- django
- Member[views].Member[View]
- - Django.Views.View~Subclass
- django
- Member[views].Member[generic].Member[ArchiveIndexView]
- - Django.Views.View~Subclass
- django
- Member[views].Member[generic].Member[CreateView]
- - Django.Views.View~Subclass
- django
- Member[views].Member[generic].Member[DateDetailView]
- - Django.Views.View~Subclass
- django
- Member[views].Member[generic].Member[DayArchiveView]
- - Django.Views.View~Subclass
- django
- Member[views].Member[generic].Member[DeleteView]
- - Django.Views.View~Subclass
- django
- Member[views].Member[generic].Member[DetailView]
- - Django.Views.View~Subclass
- django
- Member[views].Member[generic].Member[FormView]
- - Django.Views.View~Subclass
- django
- Member[views].Member[generic].Member[ListView]
- - Django.Views.View~Subclass
- django
- Member[views].Member[generic].Member[MonthArchiveView]
- - Django.Views.View~Subclass
- django
- Member[views].Member[generic].Member[TemplateView]
- - Django.Views.View~Subclass
- django
- Member[views].Member[generic].Member[TodayArchiveView]
- - Django.Views.View~Subclass
- django
- Member[views].Member[generic].Member[UpdateView]
- - Django.Views.View~Subclass
- django
- Member[views].Member[generic].Member[WeekArchiveView]
- - Django.Views.View~Subclass
- django
- Member[views].Member[generic].Member[YearArchiveView]
- - Django.Views.View~Subclass
- django
- Member[views].Member[generic].Member[dates].Member[BaseArchiveIndexView]
- - Django.Views.View~Subclass
- django
- Member[views].Member[generic].Member[dates].Member[BaseDateDetailView]
- - Django.Views.View~Subclass
- django
- Member[views].Member[generic].Member[dates].Member[BaseDateListView]
- - Django.Views.View~Subclass
- django
- Member[views].Member[generic].Member[dates].Member[BaseDayArchiveView]
- - Django.Views.View~Subclass
- django
- Member[views].Member[generic].Member[dates].Member[BaseDetailView]
- - Django.Views.View~Subclass
- django
- Member[views].Member[generic].Member[dates].Member[BaseMonthArchiveView]
- - Django.Views.View~Subclass
- django
- Member[views].Member[generic].Member[dates].Member[BaseTodayArchiveView]
- - Django.Views.View~Subclass
- django
- Member[views].Member[generic].Member[dates].Member[BaseWeekArchiveView]
- - Django.Views.View~Subclass
- django
- Member[views].Member[generic].Member[dates].Member[BaseYearArchiveView]
- - Django.Views.View~Subclass
- django
- Member[views].Member[generic].Member[dates].Member[View]
- - Django.Views.View~Subclass
- django
- Member[views].Member[generic].Member[detail].Member[BaseDetailView]
- - Django.Views.View~Subclass
- django
- Member[views].Member[generic].Member[detail].Member[View]
- - Django.Views.View~Subclass
- django
- Member[views].Member[generic].Member[edit].Member[BaseCreateView]
- - Django.Views.View~Subclass
- django
- Member[views].Member[generic].Member[edit].Member[BaseDeleteView]
- - Django.Views.View~Subclass
- django
- Member[views].Member[generic].Member[edit].Member[BaseDetailView]
- - Django.Views.View~Subclass
- django
- Member[views].Member[generic].Member[edit].Member[BaseFormView]
- - Django.Views.View~Subclass
- django
- Member[views].Member[generic].Member[edit].Member[BaseUpdateView]
- - Django.Views.View~Subclass
- django
- Member[views].Member[generic].Member[edit].Member[ProcessFormView]
- - Django.Views.View~Subclass
- django
- Member[views].Member[generic].Member[edit].Member[View]
- - Django.Views.View~Subclass
- django
- Member[views].Member[generic].Member[list].Member[BaseListView]
- - Django.Views.View~Subclass
- django
- Member[views].Member[generic].Member[list].Member[View]
- - Django.Views.View~Subclass
- django
- Member[views].Member[i18n].Member[JSONCatalog]
- - Django.Views.View~Subclass
- django
- Member[views].Member[i18n].Member[JavaScriptCatalog]
- - Django.Views.View~Subclass
- django
- Member[views].Member[i18n].Member[View]
- - Django.db.models.Model~Subclass
- django
- Member[contrib].Member[auth].Member[backends].Member[Permission]
- - Django.db.models.Model~Subclass
- django
- Member[contrib].Member[auth].Member[base_user].Member[AbstractBaseUser]
- - Django.db.models.Model~Subclass
- django
- Member[contrib].Member[auth].Member[forms].Member[User]
- - Django.db.models.Model~Subclass
- django
- Member[contrib].Member[auth].Member[models].Member[AbstractBaseUser]
- - Django.db.models.Model~Subclass
- django
- Member[contrib].Member[auth].Member[models].Member[AbstractUser]
- - Django.db.models.Model~Subclass
- django
- Member[contrib].Member[auth].Member[models].Member[ContentType]
- - Django.db.models.Model~Subclass
- django
- Member[contrib].Member[auth].Member[models].Member[Group]
- - Django.db.models.Model~Subclass
- django
- Member[contrib].Member[auth].Member[models].Member[Permission]
- - Django.db.models.Model~Subclass
- django
- Member[contrib].Member[auth].Member[models].Member[PermissionsMixin]
- - Django.db.models.Model~Subclass
- django
- Member[contrib].Member[auth].Member[models].Member[User]
- - Django.db.models.Model~Subclass
- django
- Member[contrib].Member[contenttypes].Member[fields].Member[ContentType]
- - Django.db.models.Model~Subclass
- django
- Member[contrib].Member[contenttypes].Member[forms].Member[ContentType]
- - Django.db.models.Model~Subclass
- django
- Member[contrib].Member[contenttypes].Member[models].Member[ContentType]
- - Django.db.models.Model~Subclass
- django
- Member[contrib].Member[sites].Member[models].Member[Site]
- - django.forms.BaseForm~Subclass
- django
- Member[contrib].Member[admin].Member[checks].Member[BaseModelForm]
- - django.forms.BaseForm~Subclass
- django
- Member[contrib].Member[admin].Member[forms].Member[AuthenticationForm]
- - django.forms.BaseForm~Subclass
- django
- Member[contrib].Member[admin].Member[forms].Member[PasswordChangeForm]
- - django.forms.BaseForm~Subclass
- django
- Member[contrib].Member[admin].Member[views].Member[main].Member[ChangeListSearchForm]
- - django.forms.BaseForm~Subclass
- django
- Member[contrib].Member[auth].Member[admin].Member[AdminPasswordChangeForm]
- - django.forms.BaseForm~Subclass
- django
- Member[contrib].Member[auth].Member[admin].Member[UserChangeForm]
- - django.forms.BaseForm~Subclass
- django
- Member[contrib].Member[auth].Member[admin].Member[UserCreationForm]
- - django.forms.BaseForm~Subclass
- django
- Member[contrib].Member[auth].Member[forms].Member[AdminPasswordChangeForm]
- - django.forms.BaseForm~Subclass
- django
- Member[contrib].Member[auth].Member[forms].Member[BaseUserCreationForm]
- - django.forms.BaseForm~Subclass
- django
- Member[contrib].Member[auth].Member[forms].Member[UserChangeForm]
- - django.forms.BaseForm~Subclass
- django
- Member[contrib].Member[auth].Member[forms].Member[UserCreationForm]
- - django.forms.BaseForm~Subclass
- django
- Member[contrib].Member[auth].Member[views].Member[AuthenticationForm]
- - django.forms.BaseForm~Subclass
- django
- Member[contrib].Member[auth].Member[views].Member[PasswordChangeForm]
- - django.forms.BaseForm~Subclass
- django
- Member[contrib].Member[auth].Member[views].Member[PasswordResetForm]
- - django.forms.BaseForm~Subclass
- django
- Member[contrib].Member[auth].Member[views].Member[SetPasswordForm]
- - django.forms.BaseForm~Subclass
- django
- Member[contrib].Member[contenttypes].Member[forms].Member[ModelForm]
- - django.forms.BaseForm~Subclass
- django
- Member[contrib].Member[flatpages].Member[admin].Member[FlatpageForm]
- - django.forms.BaseForm~Subclass
- django
- Member[contrib].Member[gis].Member[forms].Member[BaseForm]
- - django.forms.BaseForm~Subclass
- django
- Member[contrib].Member[gis].Member[forms].Member[Form]
- - django.forms.BaseForm~Subclass
- django
- Member[contrib].Member[gis].Member[forms].Member[ModelForm]
- - django.forms.BaseForm~Subclass
- django
- Member[forms].Member[BaseForm]
- - django.forms.BaseForm~Subclass
- django
- Member[forms].Member[BaseModelForm]
- - django.forms.BaseForm~Subclass
- django
- Member[forms].Member[formsets].Member[ManagementForm]
- - django.forms.BaseForm~Subclass
- django
- Member[forms].Member[models].Member[ModelForm]
- - django.forms.BaseForm~Subclass
- django
- Member[views].Member[generic].Member[edit].Member[Form]
- - http.server.BaseHTTPRequestHandler~Subclass
- django
- Member[core].Member[servers].Member[basehttp].Member[WSGIRequestHandler]
- - http.server.BaseHTTPRequestHandler~Subclass
- django
- Member[test].Member[testcases].Member[QuietWSGIRequestHandler]
- - wsgiref.simple_server.WSGIServer~Subclass
- django
- Member[core].Member[servers].Member[basehttp].Member[ThreadedWSGIServer]
- - wsgiref.simple_server.WSGIServer~Subclass
- django
- Member[core].Member[servers].Member[basehttp].Member[WSGIServer]

View File

@@ -0,0 +1,9 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - django.forms.BaseForm~Subclass
- django_bootstrap5
- Member[renderers].Member[BaseForm]

View File

@@ -0,0 +1,9 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - django.forms.BaseForm~Subclass
- django_colortag
- Member[forms].Member[ColorTagForm]

View File

@@ -0,0 +1,12 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Forms.Field~Subclass
- django_countries
- Member[fields].Member[LazyTypedChoiceField]
- - Django.Forms.Field~Subclass
- django_countries
- Member[fields].Member[LazyTypedMultipleChoiceField]

View File

@@ -0,0 +1,12 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Forms.Field~Subclass
- django_date_extensions
- Member[fields].Member[ApproximateDateFormField]
- - Django.Forms.Field~Subclass
- django_date_extensions
- Member[fields].Member[PrettyDateField]

View File

@@ -0,0 +1,81 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Views.View~Subclass
- django_downloadview
- Member[api].Member[BaseDownloadView]
- - Django.Views.View~Subclass
- django_downloadview
- Member[api].Member[HTTPDownloadView]
- - Django.Views.View~Subclass
- django_downloadview
- Member[api].Member[ObjectDownloadView]
- - Django.Views.View~Subclass
- django_downloadview
- Member[api].Member[PathDownloadView]
- - Django.Views.View~Subclass
- django_downloadview
- Member[api].Member[StorageDownloadView]
- - Django.Views.View~Subclass
- django_downloadview
- Member[api].Member[VirtualDownloadView]
- - Django.Views.View~Subclass
- django_downloadview
- Member[shortcuts].Member[PathDownloadView]
- - Django.Views.View~Subclass
- django_downloadview
- Member[views].Member[BaseDownloadView]
- - Django.Views.View~Subclass
- django_downloadview
- Member[views].Member[HTTPDownloadView]
- - Django.Views.View~Subclass
- django_downloadview
- Member[views].Member[ObjectDownloadView]
- - Django.Views.View~Subclass
- django_downloadview
- Member[views].Member[PathDownloadView]
- - Django.Views.View~Subclass
- django_downloadview
- Member[views].Member[StorageDownloadView]
- - Django.Views.View~Subclass
- django_downloadview
- Member[views].Member[VirtualDownloadView]
- - Django.Views.View~Subclass
- django_downloadview
- Member[views].Member[base].Member[BaseDownloadView]
- - Django.Views.View~Subclass
- django_downloadview
- Member[views].Member[base].Member[View]
- - Django.Views.View~Subclass
- django_downloadview
- Member[views].Member[http].Member[BaseDownloadView]
- - Django.Views.View~Subclass
- django_downloadview
- Member[views].Member[http].Member[HTTPDownloadView]
- - Django.Views.View~Subclass
- django_downloadview
- Member[views].Member[object].Member[BaseDownloadView]
- - Django.Views.View~Subclass
- django_downloadview
- Member[views].Member[object].Member[ObjectDownloadView]
- - Django.Views.View~Subclass
- django_downloadview
- Member[views].Member[path].Member[BaseDownloadView]
- - Django.Views.View~Subclass
- django_downloadview
- Member[views].Member[path].Member[PathDownloadView]
- - Django.Views.View~Subclass
- django_downloadview
- Member[views].Member[storage].Member[PathDownloadView]
- - Django.Views.View~Subclass
- django_downloadview
- Member[views].Member[storage].Member[StorageDownloadView]
- - Django.Views.View~Subclass
- django_downloadview
- Member[views].Member[virtual].Member[BaseDownloadView]
- - Django.Views.View~Subclass
- django_downloadview
- Member[views].Member[virtual].Member[VirtualDownloadView]

View File

@@ -0,0 +1,12 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Forms.Field~Subclass
- django_enumfield
- Member[db].Member[fields].Member[EnumChoiceField]
- - Django.Forms.Field~Subclass
- django_enumfield
- Member[forms].Member[fields].Member[EnumChoiceField]

View File

@@ -0,0 +1,18 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.db.models.Model~Subclass
- django_extensions
- Member[db].Member[models].Member[ActivatorModel]
- - Django.db.models.Model~Subclass
- django_extensions
- Member[db].Member[models].Member[TimeStampedModel]
- - Django.db.models.Model~Subclass
- django_extensions
- Member[db].Member[models].Member[TitleDescriptionModel]
- - Django.db.models.Model~Subclass
- django_extensions
- Member[db].Member[models].Member[TitleSlugDescriptionModel]

View File

@@ -0,0 +1,27 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Forms.Field~Subclass
- django_file_form
- Member[fields].Member[FileField]
- - Django.Forms.Field~Subclass
- django_file_form
- Member[fields].Member[MultipleUploadedFileField]
- - Django.Forms.Field~Subclass
- django_file_form
- Member[fields].Member[UploadedFileField]
- - Django.Forms.Field~Subclass
- django_file_form
- Member[forms].Member[CharField]
- - Django.Forms.Field~Subclass
- django_file_form
- Member[forms].Member[MultipleUploadedFileField]
- - Django.Forms.Field~Subclass
- django_file_form
- Member[forms].Member[UploadedFileField]
- - django.forms.BaseForm~Subclass
- django_file_form
- Member[forms].Member[Form]

View File

@@ -0,0 +1,54 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Forms.Field~Subclass
- django_filters
- Member[fields].Member[BaseCSVField]
- - Django.Forms.Field~Subclass
- django_filters
- Member[fields].Member[BaseRangeField]
- - Django.Forms.Field~Subclass
- django_filters
- Member[fields].Member[ChoiceField]
- - Django.Forms.Field~Subclass
- django_filters
- Member[fields].Member[DateRangeField]
- - Django.Forms.Field~Subclass
- django_filters
- Member[fields].Member[DateTimeRangeField]
- - Django.Forms.Field~Subclass
- django_filters
- Member[fields].Member[IsoDateTimeField]
- - Django.Forms.Field~Subclass
- django_filters
- Member[fields].Member[IsoDateTimeRangeField]
- - Django.Forms.Field~Subclass
- django_filters
- Member[fields].Member[LookupChoiceField]
- - Django.Forms.Field~Subclass
- django_filters
- Member[fields].Member[ModelChoiceField]
- - Django.Forms.Field~Subclass
- django_filters
- Member[fields].Member[ModelMultipleChoiceField]
- - Django.Forms.Field~Subclass
- django_filters
- Member[fields].Member[MultipleChoiceField]
- - Django.Forms.Field~Subclass
- django_filters
- Member[fields].Member[RangeField]
- - Django.Forms.Field~Subclass
- django_filters
- Member[fields].Member[TimeRangeField]
- - Django.Views.View~Subclass
- django_filters
- Member[views].Member[BaseFilterView]
- - Django.Views.View~Subclass
- django_filters
- Member[views].Member[FilterView]
- - Django.Views.View~Subclass
- django_filters
- Member[views].Member[View]

View File

@@ -0,0 +1,9 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Forms.Field~Subclass
- django_ltree
- Member[fields].Member[PathFormField]

View File

@@ -0,0 +1,15 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - django.forms.BaseForm~Subclass
- django_otp
- Member[forms].Member[AuthenticationForm]
- - django.forms.BaseForm~Subclass
- django_otp
- Member[forms].Member[OTPAuthenticationForm]
- - django.forms.BaseForm~Subclass
- django_otp
- Member[forms].Member[OTPTokenForm]

View File

@@ -0,0 +1,12 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Views.View~Subclass
- django_select2
- Member[views].Member[AutoResponseView]
- - Django.Views.View~Subclass
- django_select2
- Member[views].Member[BaseListView]

View File

@@ -0,0 +1,33 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Views.View~Subclass
- django_summernote
- Member[urls].Member[SummernoteEditor]
- - Django.Views.View~Subclass
- django_summernote
- Member[urls].Member[SummernoteUploadAttachment]
- - Django.Views.View~Subclass
- django_summernote
- Member[views].Member[SummernoteEditor]
- - Django.Views.View~Subclass
- django_summernote
- Member[views].Member[SummernoteUploadAttachment]
- - Django.Views.View~Subclass
- django_summernote
- Member[views].Member[TemplateView]
- - Django.Views.View~Subclass
- django_summernote
- Member[views].Member[View]
- - django.forms.BaseForm~Subclass
- django_summernote
- Member[forms].Member[AttachmentAdminForm]
- - django.forms.BaseForm~Subclass
- django_summernote
- Member[forms].Member[UploadForm]
- - django.forms.BaseForm~Subclass
- django_summernote
- Member[views].Member[UploadForm]

View File

@@ -0,0 +1,15 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Views.View~Subclass
- django_tables2
- Member[SingleTableView]
- - Django.Views.View~Subclass
- django_tables2
- Member[views].Member[ListView]
- - Django.Views.View~Subclass
- django_tables2
- Member[views].Member[SingleTableView]

View File

@@ -0,0 +1,48 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Views.View~Subclass
- drf_spectacular
- Member[extensions].Member[APIView]
- - Django.Views.View~Subclass
- drf_spectacular
- Member[openapi].Member[APIView]
- - Django.Views.View~Subclass
- drf_spectacular
- Member[openapi].Member[CreateAPIView]
- - Django.Views.View~Subclass
- drf_spectacular
- Member[openapi].Member[GenericAPIView]
- - Django.Views.View~Subclass
- drf_spectacular
- Member[openapi].Member[ListCreateAPIView]
- - Django.Views.View~Subclass
- drf_spectacular
- Member[views].Member[APIView]
- - Django.Views.View~Subclass
- drf_spectacular
- Member[views].Member[RedirectView]
- - Django.Views.View~Subclass
- drf_spectacular
- Member[views].Member[SpectacularAPIView]
- - Django.Views.View~Subclass
- drf_spectacular
- Member[views].Member[SpectacularJSONAPIView]
- - Django.Views.View~Subclass
- drf_spectacular
- Member[views].Member[SpectacularRedocView]
- - Django.Views.View~Subclass
- drf_spectacular
- Member[views].Member[SpectacularSwaggerOauthRedirectView]
- - Django.Views.View~Subclass
- drf_spectacular
- Member[views].Member[SpectacularSwaggerSplitView]
- - Django.Views.View~Subclass
- drf_spectacular
- Member[views].Member[SpectacularSwaggerView]
- - Django.Views.View~Subclass
- drf_spectacular
- Member[views].Member[SpectacularYAMLAPIView]

View File

@@ -0,0 +1,12 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Views.View~Subclass
- drf_yasg
- Member[utils].Member[APIView]
- - Django.Views.View~Subclass
- drf_yasg
- Member[views].Member[APIView]

View File

@@ -0,0 +1,9 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Views.View~Subclass
- dynamic_rest
- Member[viewsets].Member[DynamicModelViewSet]

View File

@@ -0,0 +1,9 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Forms.Field~Subclass
- embed_video
- Member[fields].Member[EmbedVideoFormField]

View File

@@ -0,0 +1,15 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - fastapi.APIRouter~Subclass
- fastapi_utils
- Member[cbv].Member[APIRouter]
- - fastapi.APIRouter~Subclass
- fastapi_utils
- Member[inferring_router].Member[APIRouter]
- - fastapi.APIRouter~Subclass
- fastapi_utils
- Member[inferring_router].Member[InferringRouter]

View File

@@ -0,0 +1,33 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - flask.MethodView~Subclass
- flasgger
- Member[SwaggerView]
- - flask.MethodView~Subclass
- flasgger
- Member[base].Member[APIDocsView]
- - flask.MethodView~Subclass
- flasgger
- Member[base].Member[APISpecsView]
- - flask.MethodView~Subclass
- flasgger
- Member[base].Member[MethodView]
- - flask.MethodView~Subclass
- flasgger
- Member[base].Member[OAuthRedirect]
- - flask.MethodView~Subclass
- flasgger
- Member[marshmallow_apispec].Member[MethodView]
- - flask.MethodView~Subclass
- flasgger
- Member[marshmallow_apispec].Member[SwaggerView]
- - flask.MethodView~Subclass
- flasgger
- Member[utils].Member[MethodView]
- - flask.MethodView~Subclass
- flasgger
- Member[utils].Member[SwaggerView]

View File

@@ -0,0 +1,9 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - flask.MethodView~Subclass
- flask_restful
- Member[Resource]

View File

@@ -0,0 +1,12 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - flask.MethodView~Subclass
- flask_restful_swagger_2
- Member[Resource]
- - flask.MethodView~Subclass
- flask_restful_swagger_2
- Member[swagger].Member[Resource]

View File

@@ -0,0 +1,21 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - flask.MethodView~Subclass
- flask_restplus
- Member[Resource]
- - flask.MethodView~Subclass
- flask_restplus
- Member[api].Member[Resource]
- - flask.MethodView~Subclass
- flask_restplus
- Member[api].Member[SwaggerView]
- - flask.MethodView~Subclass
- flask_restplus
- Member[resource].Member[MethodView]
- - flask.MethodView~Subclass
- flask_restplus
- Member[resource].Member[Resource]

View File

@@ -0,0 +1,21 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - flask.MethodView~Subclass
- flask_restx
- Member[Resource]
- - flask.MethodView~Subclass
- flask_restx
- Member[api].Member[Resource]
- - flask.MethodView~Subclass
- flask_restx
- Member[api].Member[SwaggerView]
- - flask.MethodView~Subclass
- flask_restx
- Member[resource].Member[MethodView]
- - flask.MethodView~Subclass
- flask_restx
- Member[resource].Member[Resource]

View File

@@ -0,0 +1,18 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - django.forms.BaseForm~Subclass
- form_utils
- Member[forms].Member[BetterForm]
- - django.forms.BaseForm~Subclass
- form_utils
- Member[forms].Member[BetterModelForm]
- - django.forms.BaseForm~Subclass
- form_utils
- Member[forms].Member[PreviewForm]
- - django.forms.BaseForm~Subclass
- form_utils
- Member[forms].Member[PreviewModelForm]

View File

@@ -0,0 +1,33 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Views.View~Subclass
- formtools
- Member[wizard].Member[views].Member[CookieWizardView]
- - Django.Views.View~Subclass
- formtools
- Member[wizard].Member[views].Member[NamedUrlCookieWizardView]
- - Django.Views.View~Subclass
- formtools
- Member[wizard].Member[views].Member[NamedUrlSessionWizardView]
- - Django.Views.View~Subclass
- formtools
- Member[wizard].Member[views].Member[NamedUrlWizardView]
- - Django.Views.View~Subclass
- formtools
- Member[wizard].Member[views].Member[SessionWizardView]
- - Django.Views.View~Subclass
- formtools
- Member[wizard].Member[views].Member[TemplateView]
- - Django.Views.View~Subclass
- formtools
- Member[wizard].Member[views].Member[WizardView]
- - django.forms.BaseForm~Subclass
- formtools
- Member[wizard].Member[forms].Member[ManagementForm]
- - django.forms.BaseForm~Subclass
- formtools
- Member[wizard].Member[views].Member[ManagementForm]

View File

@@ -0,0 +1,33 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - django.forms.BaseForm~Subclass
- guardian
- Member[admin].Member[AdminGroupObjectPermissionsForm]
- - django.forms.BaseForm~Subclass
- guardian
- Member[admin].Member[AdminUserObjectPermissionsForm]
- - django.forms.BaseForm~Subclass
- guardian
- Member[admin].Member[GroupManage]
- - django.forms.BaseForm~Subclass
- guardian
- Member[admin].Member[GroupObjectPermissionsForm]
- - django.forms.BaseForm~Subclass
- guardian
- Member[admin].Member[UserManage]
- - django.forms.BaseForm~Subclass
- guardian
- Member[admin].Member[UserObjectPermissionsForm]
- - django.forms.BaseForm~Subclass
- guardian
- Member[forms].Member[BaseObjectPermissionsForm]
- - django.forms.BaseForm~Subclass
- guardian
- Member[forms].Member[GroupObjectPermissionsForm]
- - django.forms.BaseForm~Subclass
- guardian
- Member[forms].Member[UserObjectPermissionsForm]

View File

@@ -0,0 +1,30 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - django.forms.BaseForm~Subclass
- haystack
- Member[forms].Member[FacetedModelSearchForm]
- - django.forms.BaseForm~Subclass
- haystack
- Member[forms].Member[FacetedSearchForm]
- - django.forms.BaseForm~Subclass
- haystack
- Member[forms].Member[HighlightedModelSearchForm]
- - django.forms.BaseForm~Subclass
- haystack
- Member[forms].Member[HighlightedSearchForm]
- - django.forms.BaseForm~Subclass
- haystack
- Member[forms].Member[ModelSearchForm]
- - django.forms.BaseForm~Subclass
- haystack
- Member[forms].Member[SearchForm]
- - django.forms.BaseForm~Subclass
- haystack
- Member[views].Member[FacetedSearchForm]
- - django.forms.BaseForm~Subclass
- haystack
- Member[views].Member[ModelSearchForm]

View File

@@ -0,0 +1,12 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Views.View~Subclass
- health_check
- Member[views].Member[MainView]
- - Django.Views.View~Subclass
- health_check
- Member[views].Member[TemplateView]

View File

@@ -0,0 +1,15 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Views.View~Subclass
- hijack
- Member[views].Member[AcquireUserView]
- - Django.Views.View~Subclass
- hijack
- Member[views].Member[ReleaseUserView]
- - Django.Views.View~Subclass
- hijack
- Member[views].Member[View]

View File

@@ -0,0 +1,42 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Views.View~Subclass
- import_export
- Member[mixins].Member[ExportViewFormMixin]
- - Django.Views.View~Subclass
- import_export
- Member[mixins].Member[FormView]
- - django.forms.BaseForm~Subclass
- import_export
- Member[admin].Member[ConfirmImportForm]
- - django.forms.BaseForm~Subclass
- import_export
- Member[admin].Member[ExportForm]
- - django.forms.BaseForm~Subclass
- import_export
- Member[admin].Member[ImportExportFormBase]
- - django.forms.BaseForm~Subclass
- import_export
- Member[admin].Member[ImportForm]
- - django.forms.BaseForm~Subclass
- import_export
- Member[forms].Member[ActionForm]
- - django.forms.BaseForm~Subclass
- import_export
- Member[forms].Member[ConfirmImportForm]
- - django.forms.BaseForm~Subclass
- import_export
- Member[forms].Member[ExportForm]
- - django.forms.BaseForm~Subclass
- import_export
- Member[forms].Member[ImportExportFormBase]
- - django.forms.BaseForm~Subclass
- import_export
- Member[forms].Member[ImportForm]
- - django.forms.BaseForm~Subclass
- import_export
- Member[mixins].Member[ExportForm]

View File

@@ -0,0 +1,30 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Views.View~Subclass
- invitations
- Member[views].Member[AcceptInvite]
- - Django.Views.View~Subclass
- invitations
- Member[views].Member[FormView]
- - Django.Views.View~Subclass
- invitations
- Member[views].Member[SendInvite]
- - Django.Views.View~Subclass
- invitations
- Member[views].Member[SendJSONInvite]
- - Django.Views.View~Subclass
- invitations
- Member[views].Member[View]
- - django.forms.BaseForm~Subclass
- invitations
- Member[forms].Member[InvitationAdminAddForm]
- - django.forms.BaseForm~Subclass
- invitations
- Member[forms].Member[InvitationAdminChangeForm]
- - django.forms.BaseForm~Subclass
- invitations
- Member[forms].Member[InviteForm]

View File

@@ -0,0 +1,9 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Forms.Field~Subclass
- jsonfield
- Member[forms].Member[JSONField]

View File

@@ -0,0 +1,15 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Forms.Field~Subclass
- markdownfield
- Member[forms].Member[CharField]
- - Django.Forms.Field~Subclass
- markdownfield
- Member[forms].Member[MarkdownFormField]
- - Django.Forms.Field~Subclass
- markdownfield
- Member[models].Member[MarkdownFormField]

View File

@@ -0,0 +1,9 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Forms.Field~Subclass
- mdeditor
- Member[fields].Member[MDTextFormField]

View File

@@ -0,0 +1,24 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.db.models.Model~Subclass
- model_utils
- Member[models].Member[SaveSignalHandlingModel]
- - Django.db.models.Model~Subclass
- model_utils
- Member[models].Member[SoftDeletableModel]
- - Django.db.models.Model~Subclass
- model_utils
- Member[models].Member[StatusModel]
- - Django.db.models.Model~Subclass
- model_utils
- Member[models].Member[TimeFramedModel]
- - Django.db.models.Model~Subclass
- model_utils
- Member[models].Member[TimeStampedModel]
- - Django.db.models.Model~Subclass
- model_utils
- Member[models].Member[UUIDModel]

View File

@@ -0,0 +1,12 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - django.forms.BaseForm~Subclass
- modelcluster
- Member[forms].Member[ClusterForm]
- - django.forms.BaseForm~Subclass
- modelcluster
- Member[forms].Member[ModelForm]

View File

@@ -0,0 +1,15 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Forms.Field~Subclass
- modeltranslation
- Member[forms].Member[NullCharField]
- - Django.Forms.Field~Subclass
- modeltranslation
- Member[forms].Member[NullableField]
- - django.forms.BaseForm~Subclass
- modeltranslation
- Member[forms].Member[TranslationModelForm]

View File

@@ -0,0 +1,18 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Views.View~Subclass
- mozilla_django_oidc
- Member[views].Member[OIDCAuthenticationCallbackView]
- - Django.Views.View~Subclass
- mozilla_django_oidc
- Member[views].Member[OIDCAuthenticationRequestView]
- - Django.Views.View~Subclass
- mozilla_django_oidc
- Member[views].Member[OIDCLogoutView]
- - Django.Views.View~Subclass
- mozilla_django_oidc
- Member[views].Member[View]

View File

@@ -0,0 +1,21 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Forms.Field~Subclass
- mptt
- Member[forms].Member[TreeNodeChoiceField]
- - Django.Forms.Field~Subclass
- mptt
- Member[forms].Member[TreeNodeMultipleChoiceField]
- - Django.Forms.Field~Subclass
- mptt
- Member[forms].Member[TreeNodePositionField]
- - django.forms.BaseForm~Subclass
- mptt
- Member[forms].Member[MPTTAdminForm]
- - django.forms.BaseForm~Subclass
- mptt
- Member[forms].Member[MoveNodeForm]

View File

@@ -0,0 +1,12 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - http.server.BaseHTTPRequestHandler~Subclass
- msal
- Member[oauth2cli].Member[authcode].Member[BaseHTTPRequestHandler]
- - http.server.BaseHTTPRequestHandler~Subclass
- msal
- Member[oauth2cli].Member[authcode].Member[_AuthCodeHandler]

View File

@@ -0,0 +1,39 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - tornado.web.RequestHandler~Subclass
- notebook
- Member[base].Member[handlers].Member[APIHandler]
- - tornado.web.RequestHandler~Subclass
- notebook
- Member[base].Member[handlers].Member[APIVersionHandler]
- - tornado.web.RequestHandler~Subclass
- notebook
- Member[base].Member[handlers].Member[AuthenticatedFileHandler]
- - tornado.web.RequestHandler~Subclass
- notebook
- Member[base].Member[handlers].Member[AuthenticatedHandler]
- - tornado.web.RequestHandler~Subclass
- notebook
- Member[base].Member[handlers].Member[FileFindHandler]
- - tornado.web.RequestHandler~Subclass
- notebook
- Member[base].Member[handlers].Member[FilesRedirectHandler]
- - tornado.web.RequestHandler~Subclass
- notebook
- Member[base].Member[handlers].Member[IPythonHandler]
- - tornado.web.RequestHandler~Subclass
- notebook
- Member[base].Member[handlers].Member[PrometheusMetricsHandler]
- - tornado.web.RequestHandler~Subclass
- notebook
- Member[base].Member[handlers].Member[RedirectWithParams]
- - tornado.web.RequestHandler~Subclass
- notebook
- Member[base].Member[handlers].Member[Template404]
- - tornado.web.RequestHandler~Subclass
- notebook
- Member[base].Member[handlers].Member[TrailingSlashHandler]

View File

@@ -0,0 +1,165 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[ApplicationDelete]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[ApplicationDetail]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[ApplicationList]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[ApplicationRegistration]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[ApplicationUpdate]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[AuthorizationView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[AuthorizedTokenDeleteView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[AuthorizedTokensListView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[ClientProtectedResourceView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[ClientProtectedScopedResourceView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[ConnectDiscoveryInfoView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[IntrospectTokenView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[JwksInfoView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[ProtectedResourceView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[ReadWriteScopedResourceView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[RevokeTokenView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[ScopedProtectedResourceView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[TokenView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[UserInfoView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[application].Member[ApplicationDelete]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[application].Member[ApplicationDetail]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[application].Member[ApplicationList]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[application].Member[ApplicationRegistration]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[application].Member[ApplicationUpdate]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[application].Member[CreateView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[application].Member[DeleteView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[application].Member[DetailView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[application].Member[ListView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[application].Member[UpdateView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[base].Member[AuthorizationView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[base].Member[BaseAuthorizationView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[base].Member[FormView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[base].Member[RevokeTokenView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[base].Member[TokenView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[base].Member[View]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[generic].Member[ClientProtectedResourceView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[generic].Member[ClientProtectedScopedResourceView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[generic].Member[ProtectedResourceView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[generic].Member[ReadWriteScopedResourceView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[generic].Member[ScopedProtectedResourceView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[generic].Member[View]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[introspect].Member[ClientProtectedScopedResourceView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[introspect].Member[IntrospectTokenView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[oidc].Member[ConnectDiscoveryInfoView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[oidc].Member[JwksInfoView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[oidc].Member[UserInfoView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[oidc].Member[View]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[token].Member[AuthorizedTokenDeleteView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[token].Member[AuthorizedTokensListView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[token].Member[DeleteView]
- - Django.Views.View~Subclass
- oauth2_provider
- Member[views].Member[token].Member[ListView]
- - django.forms.BaseForm~Subclass
- oauth2_provider
- Member[forms].Member[AllowForm]
- - django.forms.BaseForm~Subclass
- oauth2_provider
- Member[views].Member[base].Member[AllowForm]

View File

@@ -0,0 +1,15 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - django.forms.BaseForm~Subclass
- permissionedforms
- Member[PermissionedModelForm]
- - django.forms.BaseForm~Subclass
- permissionedforms
- Member[forms].Member[PermissionedForm]
- - django.forms.BaseForm~Subclass
- permissionedforms
- Member[forms].Member[PermissionedModelForm]

View File

@@ -0,0 +1,12 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Forms.Field~Subclass
- phonenumber_field
- Member[formfields].Member[CharField]
- - Django.Forms.Field~Subclass
- phonenumber_field
- Member[formfields].Member[PhoneNumberField]

View File

@@ -0,0 +1,12 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Views.View~Subclass
- pinax
- Member[ratings].Member[views].Member[RateView]
- - Django.Views.View~Subclass
- pinax
- Member[ratings].Member[views].Member[View]

View File

@@ -0,0 +1,9 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - http.server.BaseHTTPRequestHandler~Subclass
- plotly
- Member[io].Member[_base_renderers].Member[BaseHTTPRequestHandler]

View File

@@ -0,0 +1,522 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Forms.Field~Subclass
- pulpcore
- Member[filters].Member[ExpressionFilterField]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[urls].Member[APIRootView]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[urls].Member[ListRepositoryVersionViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[urls].Member[OrphansCleanupViewset]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[urls].Member[OrphansView]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[urls].Member[PulpAPIRootView]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[urls].Member[PulpImporterImportCheckView]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[urls].Member[ReclaimSpaceViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[urls].Member[RepairView]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[urls].Member[SpectacularJSONAPIView]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[urls].Member[SpectacularRedocView]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[urls].Member[SpectacularSwaggerView]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[urls].Member[SpectacularYAMLAPIView]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[urls].Member[StatusView]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[views].Member[OrphansView]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[views].Member[PulpImporterImportCheckView]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[views].Member[RepairView]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[views].Member[StatusView]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[views].Member[importer].Member[APIView]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[views].Member[importer].Member[PulpImporterImportCheckView]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[views].Member[orphans].Member[APIView]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[views].Member[orphans].Member[OrphansView]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[views].Member[repair].Member[APIView]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[views].Member[repair].Member[RepairView]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[views].Member[status].Member[APIView]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[views].Member[status].Member[StatusView]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[AccessPolicyViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[AlternateContentSourceViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[ArtifactDistributionViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[ArtifactViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[ContentGuardViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[ContentRedirectContentGuardViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[ContentViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[DistributionViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[DomainViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[ExportViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[ExporterViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[FilesystemExportViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[FilesystemExporterViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[GroupRoleViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[GroupUserViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[GroupViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[ImmutableRepositoryViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[ImportViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[ImporterViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[ListContentGuardViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[ListContentViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[ListDistributionViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[ListPublicationViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[ListRemoteViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[ListRepositoryVersionViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[ListRepositoryViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[NamedModelViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[OrphansCleanupViewset]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[PublicationViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[PulpExportViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[PulpExporterViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[PulpImportViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[PulpImporterViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[RBACContentGuardViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[ReadOnlyContentViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[ReadOnlyRepositoryViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[ReclaimSpaceViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[RemoteViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[RepositoryVersionViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[RepositoryViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[RoleViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[SigningServiceViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[TaskGroupViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[TaskScheduleViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[TaskViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[UploadViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[UpstreamPulpViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[UserRoleViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[UserViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[WorkerViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[access_policy].Member[AccessPolicyViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[access_policy].Member[NamedModelViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[acs].Member[AlternateContentSourceViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[acs].Member[NamedModelViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[base].Member[NamedModelViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[content].Member[ArtifactViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[content].Member[BaseContentViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[content].Member[ContentViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[content].Member[ListContentViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[content].Member[NamedModelViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[content].Member[ReadOnlyContentViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[content].Member[SigningServiceViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[custom_filters].Member[NamedModelViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[domain].Member[DomainViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[domain].Member[NamedModelViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[exporter].Member[ExportViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[exporter].Member[ExporterViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[exporter].Member[FilesystemExportViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[exporter].Member[FilesystemExporterViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[exporter].Member[NamedModelViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[exporter].Member[PulpExportViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[exporter].Member[PulpExporterViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[importer].Member[ImportViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[importer].Member[ImporterViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[importer].Member[NamedModelViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[importer].Member[PulpImportViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[importer].Member[PulpImporterViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[orphans].Member[OrphansCleanupViewset]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[orphans].Member[ViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[publication].Member[ArtifactDistributionViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[publication].Member[BaseContentGuardViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[publication].Member[BaseDistributionViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[publication].Member[BasePublicationViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[publication].Member[ContentGuardViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[publication].Member[ContentRedirectContentGuardViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[publication].Member[DistributionViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[publication].Member[ListContentGuardViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[publication].Member[ListDistributionViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[publication].Member[ListPublicationViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[publication].Member[NamedModelViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[publication].Member[PublicationViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[publication].Member[RBACContentGuardViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[publication].Member[ReadOnlyDistributionViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[reclaim].Member[ReclaimSpaceViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[reclaim].Member[ViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[replica].Member[NamedModelViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[replica].Member[UpstreamPulpViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[repository].Member[BaseRepositoryViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[repository].Member[GenericViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[repository].Member[ImmutableRepositoryViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[repository].Member[ListRemoteViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[repository].Member[ListRepositoryVersionViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[repository].Member[ListRepositoryViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[repository].Member[NamedModelViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[repository].Member[ReadOnlyRepositoryViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[repository].Member[RemoteViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[repository].Member[RepositoryVersionViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[repository].Member[RepositoryViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[task].Member[NamedModelViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[task].Member[TaskGroupViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[task].Member[TaskScheduleViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[task].Member[TaskViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[task].Member[WorkerViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[upload].Member[NamedModelViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[upload].Member[UploadViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[user].Member[GroupRoleViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[user].Member[GroupUserViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[user].Member[GroupViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[user].Member[NamedModelViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[user].Member[RoleViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[user].Member[UserRoleViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[app].Member[viewsets].Member[user].Member[UserViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[content].Member[authentication].Member[APIView]
- - Django.Views.View~Subclass
- pulpcore
- Member[plugin].Member[viewsets].Member[AlternateContentSourceViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[plugin].Member[viewsets].Member[ContentGuardViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[plugin].Member[viewsets].Member[ContentViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[plugin].Member[viewsets].Member[DistributionViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[plugin].Member[viewsets].Member[ExportViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[plugin].Member[viewsets].Member[ExporterViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[plugin].Member[viewsets].Member[ImmutableRepositoryViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[plugin].Member[viewsets].Member[ImportViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[plugin].Member[viewsets].Member[ImporterViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[plugin].Member[viewsets].Member[NamedModelViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[plugin].Member[viewsets].Member[NoArtifactContentUploadViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[plugin].Member[viewsets].Member[PublicationViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[plugin].Member[viewsets].Member[ReadOnlyContentViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[plugin].Member[viewsets].Member[ReadOnlyRepositoryViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[plugin].Member[viewsets].Member[RemoteViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[plugin].Member[viewsets].Member[RepositoryVersionViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[plugin].Member[viewsets].Member[RepositoryViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[plugin].Member[viewsets].Member[SingleArtifactContentUploadViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[plugin].Member[viewsets].Member[TaskGroupViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[plugin].Member[viewsets].Member[TaskViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[plugin].Member[viewsets].Member[content].Member[ContentViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[plugin].Member[viewsets].Member[content].Member[NoArtifactContentUploadViewSet]
- - Django.Views.View~Subclass
- pulpcore
- Member[plugin].Member[viewsets].Member[content].Member[SingleArtifactContentUploadViewSet]

View File

@@ -0,0 +1,9 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Views.View~Subclass
- rest_flex_fields
- Member[views].Member[FlexFieldsModelViewSet]

View File

@@ -0,0 +1,81 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Forms.Field~Subclass
- rest_framework
- Member[fields].Member[FilePathField]
- - Django.Forms.Field~Subclass
- rest_framework
- Member[fields].Member[ImageField]
- - Django.Forms.Field~Subclass
- rest_framework
- Member[serializers].Member[FilePathField]
- - Django.Forms.Field~Subclass
- rest_framework
- Member[serializers].Member[ImageField]
- - Django.Views.View~Subclass
- rest_framework
- Member[authtoken].Member[views].Member[APIView]
- - Django.Views.View~Subclass
- rest_framework
- Member[compat].Member[View]
- - Django.Views.View~Subclass
- rest_framework
- Member[decorators].Member[APIView]
- - Django.Views.View~Subclass
- rest_framework
- Member[generics].Member[CreateAPIView]
- - Django.Views.View~Subclass
- rest_framework
- Member[generics].Member[DestroyAPIView]
- - Django.Views.View~Subclass
- rest_framework
- Member[generics].Member[ListAPIView]
- - Django.Views.View~Subclass
- rest_framework
- Member[generics].Member[ListCreateAPIView]
- - Django.Views.View~Subclass
- rest_framework
- Member[generics].Member[RetrieveAPIView]
- - Django.Views.View~Subclass
- rest_framework
- Member[generics].Member[RetrieveDestroyAPIView]
- - Django.Views.View~Subclass
- rest_framework
- Member[generics].Member[RetrieveUpdateAPIView]
- - Django.Views.View~Subclass
- rest_framework
- Member[generics].Member[RetrieveUpdateDestroyAPIView]
- - Django.Views.View~Subclass
- rest_framework
- Member[generics].Member[UpdateAPIView]
- - Django.Views.View~Subclass
- rest_framework
- Member[routers].Member[APIRootView]
- - Django.Views.View~Subclass
- rest_framework
- Member[routers].Member[SchemaView]
- - Django.Views.View~Subclass
- rest_framework
- Member[schemas].Member[views].Member[APIView]
- - Django.Views.View~Subclass
- rest_framework
- Member[schemas].Member[views].Member[SchemaView]
- - Django.Views.View~Subclass
- rest_framework
- Member[views].Member[View]
- - Django.Views.View~Subclass
- rest_framework
- Member[viewsets].Member[GenericViewSet]
- - Django.Views.View~Subclass
- rest_framework
- Member[viewsets].Member[ModelViewSet]
- - Django.Views.View~Subclass
- rest_framework
- Member[viewsets].Member[ReadOnlyModelViewSet]
- - Django.Views.View~Subclass
- rest_framework
- Member[viewsets].Member[ViewSet]

View File

@@ -0,0 +1,66 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Views.View~Subclass
- rest_framework_bulk
- Member[BulkCreateAPIView]
- - Django.Views.View~Subclass
- rest_framework_bulk
- Member[BulkDestroyAPIView]
- - Django.Views.View~Subclass
- rest_framework_bulk
- Member[BulkModelViewSet]
- - Django.Views.View~Subclass
- rest_framework_bulk
- Member[BulkUpdateAPIView]
- - Django.Views.View~Subclass
- rest_framework_bulk
- Member[ListBulkCreateAPIView]
- - Django.Views.View~Subclass
- rest_framework_bulk
- Member[ListBulkCreateDestroyAPIView]
- - Django.Views.View~Subclass
- rest_framework_bulk
- Member[ListBulkCreateUpdateAPIView]
- - Django.Views.View~Subclass
- rest_framework_bulk
- Member[ListBulkCreateUpdateDestroyAPIView]
- - Django.Views.View~Subclass
- rest_framework_bulk
- Member[ListCreateBulkUpdateAPIView]
- - Django.Views.View~Subclass
- rest_framework_bulk
- Member[ListCreateBulkUpdateDestroyAPIView]
- - Django.Views.View~Subclass
- rest_framework_bulk
- Member[generics].Member[BulkCreateAPIView]
- - Django.Views.View~Subclass
- rest_framework_bulk
- Member[generics].Member[BulkDestroyAPIView]
- - Django.Views.View~Subclass
- rest_framework_bulk
- Member[generics].Member[BulkModelViewSet]
- - Django.Views.View~Subclass
- rest_framework_bulk
- Member[generics].Member[BulkUpdateAPIView]
- - Django.Views.View~Subclass
- rest_framework_bulk
- Member[generics].Member[ListBulkCreateAPIView]
- - Django.Views.View~Subclass
- rest_framework_bulk
- Member[generics].Member[ListBulkCreateDestroyAPIView]
- - Django.Views.View~Subclass
- rest_framework_bulk
- Member[generics].Member[ListBulkCreateUpdateAPIView]
- - Django.Views.View~Subclass
- rest_framework_bulk
- Member[generics].Member[ListBulkCreateUpdateDestroyAPIView]
- - Django.Views.View~Subclass
- rest_framework_bulk
- Member[generics].Member[ListCreateBulkUpdateAPIView]
- - Django.Views.View~Subclass
- rest_framework_bulk
- Member[generics].Member[ListCreateBulkUpdateDestroyAPIView]

View File

@@ -0,0 +1,27 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Views.View~Subclass
- rest_framework_simplejwt
- Member[views].Member[TokenBlacklistView]
- - Django.Views.View~Subclass
- rest_framework_simplejwt
- Member[views].Member[TokenObtainPairView]
- - Django.Views.View~Subclass
- rest_framework_simplejwt
- Member[views].Member[TokenObtainSlidingView]
- - Django.Views.View~Subclass
- rest_framework_simplejwt
- Member[views].Member[TokenRefreshSlidingView]
- - Django.Views.View~Subclass
- rest_framework_simplejwt
- Member[views].Member[TokenRefreshView]
- - Django.Views.View~Subclass
- rest_framework_simplejwt
- Member[views].Member[TokenVerifyView]
- - Django.Views.View~Subclass
- rest_framework_simplejwt
- Member[views].Member[TokenViewBase]

View File

@@ -0,0 +1,9 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - http.server.BaseHTTPRequestHandler~Subclass
- seleniumrequests
- Member[request].Member[HTTPRequestHandler]

View File

@@ -0,0 +1,9 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - flask.MethodView~Subclass
- shakenfist_utilities
- Member[api].Member[Resource]

View File

@@ -0,0 +1,9 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Forms.Field~Subclass
- sorl
- Member[thumbnail].Member[fields].Member[ImageFormField]

View File

@@ -0,0 +1,9 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Forms.Field~Subclass
- sorl_thumbnail_serializer
- Member[fields].Member[HyperlinkedSorlImageField]

View File

@@ -0,0 +1,12 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Forms.Field~Subclass
- sortedm2m
- Member[fields].Member[SortedMultipleChoiceField]
- - Django.Forms.Field~Subclass
- sortedm2m
- Member[forms].Member[SortedMultipleChoiceField]

View File

@@ -0,0 +1,12 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Forms.Field~Subclass
- taggit
- Member[forms].Member[TagField]
- - Django.Forms.Field~Subclass
- taggit
- Member[managers].Member[TagField]

View File

@@ -0,0 +1,9 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - django.forms.BaseForm~Subclass
- tastypie
- Member[validation].Member[ModelForm]

View File

@@ -0,0 +1,12 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Forms.Field~Subclass
- timezone_field
- Member[TimeZoneFormField]
- - Django.Forms.Field~Subclass
- timezone_field
- Member[forms].Member[TimeZoneFormField]

View File

@@ -0,0 +1,9 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - tornado.web.RequestHandler~Subclass
- tornado
- Member[websocket].Member[WebSocketHandler]

View File

@@ -0,0 +1,18 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - tornado.web.RequestHandler~Subclass
- tornado_proxy_handlers
- Member[ProxyHandler]
- - tornado.web.RequestHandler~Subclass
- tornado_proxy_handlers
- Member[ProxyWSHandler]
- - tornado.web.RequestHandler~Subclass
- tornado_proxy_handlers
- Member[handlers].Member[ProxyHandler]
- - tornado.web.RequestHandler~Subclass
- tornado_proxy_handlers
- Member[handlers].Member[ProxyWSHandler]

View File

@@ -0,0 +1,9 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - django.forms.BaseForm~Subclass
- treebeard
- Member[forms].Member[MoveNodeForm]

View File

@@ -0,0 +1,168 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Views.View~Subclass
- two_factor
- Member[plugins].Member[phonenumber].Member[views].Member[DeleteView]
- - Django.Views.View~Subclass
- two_factor
- Member[plugins].Member[phonenumber].Member[views].Member[IdempotentSessionWizardView]
- - Django.Views.View~Subclass
- two_factor
- Member[plugins].Member[phonenumber].Member[views].Member[PhoneDeleteView]
- - Django.Views.View~Subclass
- two_factor
- Member[plugins].Member[phonenumber].Member[views].Member[PhoneSetupView]
- - Django.Views.View~Subclass
- two_factor
- Member[urls].Member[BackupTokensView]
- - Django.Views.View~Subclass
- two_factor
- Member[urls].Member[DisableView]
- - Django.Views.View~Subclass
- two_factor
- Member[urls].Member[LoginView]
- - Django.Views.View~Subclass
- two_factor
- Member[urls].Member[PhoneDeleteView]
- - Django.Views.View~Subclass
- two_factor
- Member[urls].Member[PhoneSetupView]
- - Django.Views.View~Subclass
- two_factor
- Member[urls].Member[ProfileView]
- - Django.Views.View~Subclass
- two_factor
- Member[urls].Member[QRGeneratorView]
- - Django.Views.View~Subclass
- two_factor
- Member[urls].Member[SetupCompleteView]
- - Django.Views.View~Subclass
- two_factor
- Member[urls].Member[SetupView]
- - Django.Views.View~Subclass
- two_factor
- Member[views].Member[BackupTokensView]
- - Django.Views.View~Subclass
- two_factor
- Member[views].Member[DisableView]
- - Django.Views.View~Subclass
- two_factor
- Member[views].Member[LoginView]
- - Django.Views.View~Subclass
- two_factor
- Member[views].Member[ProfileView]
- - Django.Views.View~Subclass
- two_factor
- Member[views].Member[QRGeneratorView]
- - Django.Views.View~Subclass
- two_factor
- Member[views].Member[SetupCompleteView]
- - Django.Views.View~Subclass
- two_factor
- Member[views].Member[SetupView]
- - Django.Views.View~Subclass
- two_factor
- Member[views].Member[core].Member[BackupTokensView]
- - Django.Views.View~Subclass
- two_factor
- Member[views].Member[core].Member[FormView]
- - Django.Views.View~Subclass
- two_factor
- Member[views].Member[core].Member[IdempotentSessionWizardView]
- - Django.Views.View~Subclass
- two_factor
- Member[views].Member[core].Member[LoginView]
- - Django.Views.View~Subclass
- two_factor
- Member[views].Member[core].Member[QRGeneratorView]
- - Django.Views.View~Subclass
- two_factor
- Member[views].Member[core].Member[SetupCompleteView]
- - Django.Views.View~Subclass
- two_factor
- Member[views].Member[core].Member[SetupView]
- - Django.Views.View~Subclass
- two_factor
- Member[views].Member[core].Member[TemplateView]
- - Django.Views.View~Subclass
- two_factor
- Member[views].Member[core].Member[View]
- - Django.Views.View~Subclass
- two_factor
- Member[views].Member[profile].Member[DisableView]
- - Django.Views.View~Subclass
- two_factor
- Member[views].Member[profile].Member[FormView]
- - Django.Views.View~Subclass
- two_factor
- Member[views].Member[profile].Member[ProfileView]
- - Django.Views.View~Subclass
- two_factor
- Member[views].Member[profile].Member[TemplateView]
- - Django.Views.View~Subclass
- two_factor
- Member[views].Member[utils].Member[IdempotentSessionWizardView]
- - Django.Views.View~Subclass
- two_factor
- Member[views].Member[utils].Member[SessionWizardView]
- - django.forms.BaseForm~Subclass
- two_factor
- Member[forms].Member[AuthenticationTokenForm]
- - django.forms.BaseForm~Subclass
- two_factor
- Member[forms].Member[BackupTokenForm]
- - django.forms.BaseForm~Subclass
- two_factor
- Member[forms].Member[DeviceValidationForm]
- - django.forms.BaseForm~Subclass
- two_factor
- Member[forms].Member[DisableForm]
- - django.forms.BaseForm~Subclass
- two_factor
- Member[forms].Member[MethodForm]
- - django.forms.BaseForm~Subclass
- two_factor
- Member[forms].Member[TOTPDeviceForm]
- - django.forms.BaseForm~Subclass
- two_factor
- Member[plugins].Member[phonenumber].Member[forms].Member[PhoneNumberForm]
- - django.forms.BaseForm~Subclass
- two_factor
- Member[plugins].Member[phonenumber].Member[forms].Member[PhoneNumberMethodForm]
- - django.forms.BaseForm~Subclass
- two_factor
- Member[plugins].Member[phonenumber].Member[views].Member[DeviceValidationForm]
- - django.forms.BaseForm~Subclass
- two_factor
- Member[plugins].Member[phonenumber].Member[views].Member[PhoneNumberMethodForm]
- - django.forms.BaseForm~Subclass
- two_factor
- Member[views].Member[core].Member[AuthenticationForm]
- - django.forms.BaseForm~Subclass
- two_factor
- Member[views].Member[core].Member[AuthenticationTokenForm]
- - django.forms.BaseForm~Subclass
- two_factor
- Member[views].Member[core].Member[BackupTokenForm]
- - django.forms.BaseForm~Subclass
- two_factor
- Member[views].Member[core].Member[DeviceValidationForm]
- - django.forms.BaseForm~Subclass
- two_factor
- Member[views].Member[core].Member[Form]
- - django.forms.BaseForm~Subclass
- two_factor
- Member[views].Member[core].Member[MethodForm]
- - django.forms.BaseForm~Subclass
- two_factor
- Member[views].Member[core].Member[TOTPDeviceForm]
- - django.forms.BaseForm~Subclass
- two_factor
- Member[views].Member[profile].Member[DisableForm]
- - django.forms.BaseForm~Subclass
- two_factor
- Member[views].Member[utils].Member[ManagementForm]

View File

@@ -0,0 +1,15 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - Django.Forms.Field~Subclass
- url_or_relative_url_field
- Member[fields].Member[URLOrRelativeURLFormField]
- - Django.Forms.Field~Subclass
- url_or_relative_url_field
- Member[forms].Member[URLField]
- - Django.Forms.Field~Subclass
- url_or_relative_url_field
- Member[forms].Member[URLOrRelativeURLFormField]

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,12 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - cgi.FieldStorage~Subclass
- webob
- Member[compat].Member[FieldStorage]
- - cgi.FieldStorage~Subclass
- webob
- Member[compat].Member[cgi_FieldStorage]

View File

@@ -0,0 +1,12 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - http.server.BaseHTTPRequestHandler~Subclass
- werkzeug
- Member[serving].Member[BaseHTTPRequestHandler]
- - http.server.BaseHTTPRequestHandler~Subclass
- werkzeug
- Member[serving].Member[WSGIRequestHandler]

View File

@@ -0,0 +1,9 @@
# process-mrva-results 0.0.1
extensions:
- addsTo:
extensible: typeModel
pack: codeql/python-all
data:
- - django.forms.BaseForm~Subclass
- wiki
- Member[core].Member[plugins].Member[base].Member[PluginSidebarFormMixin]

View File

@@ -6,6 +6,7 @@
private import python
private import semmle.python.dataflow.new.DataFlow
private import semmle.python.dataflow.new.internal.DataFlowDispatch
/**
* INTERNAL: Do not use.
@@ -16,13 +17,16 @@ abstract class SelfRefMixin extends Class {
/**
* Gets a reference to instances of this class, originating from a self parameter of
* a method defined on this class.
*
* Note: TODO: This doesn't take MRO into account
* Note: TODO: This doesn't take staticmethod/classmethod into account
*/
private DataFlow::TypeTrackingNode getASelfRef(DataFlow::TypeTracker t) {
t.start() and
result.(DataFlow::ParameterNode).getParameter() = this.getAMethod().getArg(0)
exists(Class cls, Function meth |
cls = getADirectSuperclass*(this) and
meth = cls.getAMethod() and
not isStaticmethod(meth) and
not isClassmethod(meth) and
result.(DataFlow::ParameterNode).getParameter() = meth.getArg(0)
)
or
exists(DataFlow::TypeTracker t2 | result = this.getASelfRef(t2).track(t2, t))
}
@@ -30,9 +34,6 @@ abstract class SelfRefMixin extends Class {
/**
* Gets a reference to instances of this class, originating from a self parameter of
* a method defined on this class.
*
* Note: TODO: This doesn't take MRO into account
* Note: TODO: This doesn't take staticmethod/classmethod into account
*/
DataFlow::Node getASelfRef() { this.getASelfRef(DataFlow::TypeTracker::end()).flowsTo(result) }
}

View File

@@ -7,32 +7,22 @@
private import python
private import semmle.python.dataflow.new.DataFlow
private import semmle.python.dataflow.new.internal.ImportResolution
private import semmle.python.ApiGraphs
private import semmle.python.filters.Tests
// very much inspired by the draft at https://github.com/github/codeql/pull/5632
private module NotExposed {
module NotExposed {
// Instructions:
// This needs to be automated better, but for this prototype, here are some rough instructions:
// 0) get a database of the library you are about to model
// 1) fill out the `getAlreadyModeledClass` body below
// 2) quick-eval the `quickEvalMe` predicate below, and copy the output to your modeling predicate
class MySpec extends FindSubclassesSpec {
MySpec() { this = "MySpec" }
override API::Node getAlreadyModeledClass() {
// FILL ME OUT ! (but don't commit with any changes)
none()
// for example
// result = API::moduleImport("rest_framework").getMember("views").getMember("APIView")
}
}
predicate quickEvalMe(string newImport) {
newImport =
"// imports generated by python/frameworks/internal/SubclassFinder.qll\n" + "this = API::" +
concat(string newModelFullyQualified |
newModel(any(MySpec spec), newModelFullyQualified, _, _, _)
newModel(any(FindSubclassesSpec spec), newModelFullyQualified, _, _, _)
|
fullyQualifiedToApiGraphPath(newModelFullyQualified), " or this = API::"
)
@@ -78,14 +68,20 @@ private module NotExposed {
bindingset[this]
abstract class FindSubclassesSpec extends string {
/**
* Gets an API node for a class that has already been modeled. You can include
* `.getASubclass*()` without causing problems, but it is not needed.
*/
abstract API::Node getAlreadyModeledClass();
FindSubclassesSpec getSuperClass() { none() }
}
/**
* Holds if `newModelFullyQualified` describes either a new subclass, or a new alias, belonging to `spec` that we should include in our automated modeling.
* This new element is defined by `ast`, which is defined at `loc` in the module `mod`.
*/
query predicate newModel(
predicate newModel(
FindSubclassesSpec spec, string newModelFullyQualified, AstNode ast, Module mod, Location loc
) {
(
@@ -93,7 +89,8 @@ private module NotExposed {
or
newDirectAlias(spec, newModelFullyQualified, ast, mod, loc)
or
newImportStar(spec, newModelFullyQualified, ast, mod, _, _, loc)
newImportAlias(spec, newModelFullyQualified, mod, _, _, loc) and
ast = mod
)
}
@@ -106,15 +103,30 @@ private module NotExposed {
)
}
/**
* Holds if `fullyQualifiedName` is already explicitly modeled in the `spec`.
*
* For specs that do `.getASubclass*()`, items found by following a `.getASubclass`
* edge will not be considered explicitly modeled.
*/
bindingset[fullyQualifiedName]
predicate alreadyModeled(FindSubclassesSpec spec, string fullyQualifiedName) {
predicate alreadyExplicitlyModeled(FindSubclassesSpec spec, string fullyQualifiedName) {
fullyQualifiedToApiGraphPath(fullyQualifiedName) = spec.getAlreadyModeledClass().getPath()
}
predicate isNonTestProjectCode(AstNode ast) {
not ast.getScope*() instanceof TestScope and
not ast.getLocation().getFile().getRelativePath().matches("tests/%") and
exists(ast.getLocation().getFile().getRelativePath())
predicate isAllowedModule(Module mod) {
// for now, we only want to model things in site-packages (since we know these are
// libraries used by real code)
mod.getFile().getAbsolutePath().matches("%/site-packages/%")
or
// for CI testing
mod.getFile().getRelativePath().matches("%/find_subclass_test.py")
}
predicate isTestCode(AstNode ast) {
ast.getScope*() instanceof TestScope
or
ast.getLocation().getFile().getRelativePath().matches("tests/%")
}
predicate hasAllStatement(Module mod) {
@@ -147,40 +159,51 @@ private module NotExposed {
* ```
*/
predicate newDirectAlias(
FindSubclassesSpec spec, string newAliasFullyQualified, ImportMember importMember, Module mod,
Location loc
FindSubclassesSpec spec, string newAliasFullyQualified, Expr value, Module mod, Location loc
) {
importMember = newOrExistingModeling(spec).getAValueReachableFromSource().asExpr() and
importMember.getScope() = mod and
loc = importMember.getLocation() and
(
mod.isPackageInit() and
newAliasFullyQualified = mod.getPackageName() + "." + importMember.getName()
or
not mod.isPackageInit() and
newAliasFullyQualified = mod.getName() + "." + importMember.getName()
) and
(
not hasAllStatement(mod)
or
mod.declaredInAll(importMember.getName())
) and
not alreadyModeled(spec, newAliasFullyQualified) and
isNonTestProjectCode(importMember)
exists(Alias alias | value = alias.getValue() |
value = newOrExistingModeling(spec).getASubclass*().getAValueReachableFromSource().asExpr() and
value.getScope() = mod and
loc = value.getLocation() and
exists(string base |
mod.isPackageInit() and base = mod.getPackageName()
or
not mod.isPackageInit() and base = mod.getName()
|
newAliasFullyQualified = base + "." + alias.getAsname().(Name).getId()
) and
(
not hasAllStatement(mod)
or
mod.declaredInAll(alias.getAsname().(Name).getId())
) and
not alreadyExplicitlyModeled(spec, newAliasFullyQualified) and
not isTestCode(value) and
isAllowedModule(mod)
)
}
/** same as `newDirectAlias` predicate, but handling `from <module> import *`, considering all `<member>`, where `<module>.<member>` belongs to `spec`. */
predicate newImportStar(
FindSubclassesSpec spec, string newAliasFullyQualified, ImportStar importStar, Module mod,
API::Node relevantClass, string relevantName, Location loc
/**
* same as `newDirectAlias` predicate, but written in a generic way to handle any import (also import *).
*
* it might be safe to delete `newDirectAlias` with this in place, but have not done the testing yet.
*/
predicate newImportAlias(
FindSubclassesSpec spec, string newAliasFullyQualified, Module mod, DataFlow::Node def,
string relevantName, Location loc
) {
relevantClass = newOrExistingModeling(spec) and
loc = importStar.getLocation() and
importStar.getScope() = mod and
// WHAT A HACK :D :D
relevantClass.getPath() =
relevantClass.getAPredecessor().getPath() + ".getMember(\"" + relevantName + "\")" and
relevantClass.getAPredecessor().getAValueReachableFromSource().asExpr() = importStar.getModule() and
loc = mod.getLocation() and
exists(API::Node relevantClass, ControlFlowNode value |
relevantClass = newOrExistingModeling(spec).getASubclass*() and
ImportResolution::module_export(mod, relevantName, def) and
value = relevantClass.getAValueReachableFromSource().asCfgNode() and
(
value = def.asVar().getDefinition().(AssignmentDefinition).getValue()
or
value = def.asCfgNode()
)
// value could be a ClassExpr if a new class is defined, or a Name if defining an alias
) and
(
mod.isPackageInit() and
newAliasFullyQualified = mod.getPackageName() + "." + relevantName
@@ -193,8 +216,9 @@ private module NotExposed {
or
mod.declaredInAll(relevantName)
) and
not alreadyModeled(spec, newAliasFullyQualified) and
isNonTestProjectCode(importStar)
not alreadyExplicitlyModeled(spec, newAliasFullyQualified) and
not isTestCode(mod) and
isAllowedModule(mod)
}
/** Holds if `classExpr` defines a new subclass that belongs to `spec`, which has the fully qualified name `newSubclassQualified`. */
@@ -206,7 +230,8 @@ private module NotExposed {
classExpr.getScope() = mod and
newSubclassQualified = mod.getName() + "." + classExpr.getName() and
loc = classExpr.getLocation() and
not alreadyModeled(spec, newSubclassQualified) and
isNonTestProjectCode(classExpr)
not alreadyExplicitlyModeled(spec, newSubclassQualified) and
not isTestCode(classExpr) and
isAllowedModule(mod)
}
}

View File

@@ -0,0 +1,134 @@
/**
* @name Find new subclasses to model
* @id py/meta/find-subclasses-to-model
* @kind table
*/
import python
import semmle.python.dataflow.new.DataFlow
private import semmle.python.ApiGraphs
import semmle.python.frameworks.internal.SubclassFinder::NotExposed
private import semmle.python.frameworks.Flask
private import semmle.python.frameworks.FastApi
private import semmle.python.frameworks.Django
private import semmle.python.frameworks.Tornado
private import semmle.python.frameworks.Stdlib
import semmle.python.frameworks.data.internal.ApiGraphModelsExtensions as Extensions
class FlaskViewClasses extends FindSubclassesSpec {
FlaskViewClasses() { this = "flask.View~Subclass" }
override API::Node getAlreadyModeledClass() { result = Flask::Views::View::subclassRef() }
}
class FlaskMethodViewClasses extends FindSubclassesSpec {
FlaskMethodViewClasses() { this = "flask.MethodView~Subclass" }
override API::Node getAlreadyModeledClass() { result = Flask::Views::MethodView::subclassRef() }
override FlaskViewClasses getSuperClass() { any() }
}
class FastApiRouter extends FindSubclassesSpec {
FastApiRouter() { this = "fastapi.APIRouter~Subclass" }
override API::Node getAlreadyModeledClass() { result = FastApi::ApiRouter::cls() }
}
class DjangoForms extends FindSubclassesSpec {
DjangoForms() { this = "django.forms.BaseForm~Subclass" }
override API::Node getAlreadyModeledClass() {
result = any(Django::Forms::Form::ModeledSubclass subclass)
}
}
class DjangoView extends FindSubclassesSpec {
DjangoView() { this = "Django.Views.View~Subclass" }
override API::Node getAlreadyModeledClass() {
result = any(Django::Views::View::ModeledSubclass subclass)
}
}
class DjangoField extends FindSubclassesSpec {
DjangoField() { this = "Django.Forms.Field~Subclass" }
override API::Node getAlreadyModeledClass() {
result = any(Django::Forms::Field::ModeledSubclass subclass)
}
}
class DjangoModel extends FindSubclassesSpec {
DjangoModel() { this = "Django.db.models.Model~Subclass" }
override API::Node getAlreadyModeledClass() {
result = PrivateDjango::DjangoImpl::DB::Models::Model::subclassRef()
}
}
class TornadoRequestHandler extends FindSubclassesSpec {
TornadoRequestHandler() { this = "tornado.web.RequestHandler~Subclass" }
override API::Node getAlreadyModeledClass() {
result = Tornado::TornadoModule::Web::RequestHandler::subclassRef()
}
}
class WSGIServer extends FindSubclassesSpec {
WSGIServer() { this = "wsgiref.simple_server.WSGIServer~Subclass" }
override API::Node getAlreadyModeledClass() {
result = StdlibPrivate::WsgirefSimpleServer::subclassRef()
}
}
class StdlibBaseHttpRequestHandler extends FindSubclassesSpec {
StdlibBaseHttpRequestHandler() { this = "http.server.BaseHTTPRequestHandler~Subclass" }
override API::Node getAlreadyModeledClass() {
result = StdlibPrivate::BaseHttpRequestHandler::subclassRef()
}
}
class StdlibCgiFieldStorage extends FindSubclassesSpec {
StdlibCgiFieldStorage() { this = "cgi.FieldStorage~Subclass" }
override API::Node getAlreadyModeledClass() {
result = StdlibPrivate::Cgi::FieldStorage::subclassRef()
}
}
bindingset[fullyQualified]
predicate fullyQualifiedToYamlFormat(string fullyQualified, string type2, string path) {
exists(int firstDot | firstDot = fullyQualified.indexOf(".", 0, 0) |
type2 = fullyQualified.prefix(firstDot) and
path =
("Member[" + fullyQualified.suffix(firstDot + 1).replaceAll(".", "].Member[") + "]")
.replaceAll(".Member[__init__].", "")
.replaceAll("Member[__init__].", "")
)
}
from FindSubclassesSpec spec, string newModelFullyQualified, string type2, string path, Module mod
where
newModel(spec, newModelFullyQualified, _, mod, _) and
// Since a class C which is a subclass for flask.MethodView is always a subclass of
// flask.View, and we chose to care about this distinction, in a naive approach we
// would always record rows for _both_ specs... that's just wasteful, so instead we
// only record the row for the more specific spec -- this is captured by the
// .getSuperClass() method on a spec, which can links specs together in this way.
// However, if the definition actually depends on some logic, like below, we should
// still record both rows
// ```
// if <cond>:
// class C(flask.View): ...
// else:
// class C(flask.MethodView): ...
// ```
not exists(FindSubclassesSpec subclass | subclass.getSuperClass() = spec |
newModel(subclass, newModelFullyQualified, _, mod, _)
) and
fullyQualifiedToYamlFormat(newModelFullyQualified, type2, path) and
not Extensions::typeModel(spec, type2, path)
select spec.(string), type2, path

View File

@@ -0,0 +1,119 @@
#!/usr/bin/env python3
import sys
import glob
from pathlib import Path
import json
import subprocess
from collections import defaultdict
import yaml
import shutil
import os
VERSION = "process-mrva-results 0.0.1"
mad_path = Path(__file__).parent.parent.parent.parent / "lib/semmle/python/frameworks/data/internal/"
assert mad_path.exists(), mad_path
package_data = defaultdict(set)
# process data
class CodeQL:
def __init__(self):
pass
def __enter__(self):
self.proc = subprocess.Popen(['codeql', 'execute','cli-server'],
executable=shutil.which('codeql'),
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=sys.stderr,
env=os.environ.copy(),
)
return self
def __exit__(self, type, value, tb):
self.proc.stdin.write(b'["shutdown"]\0')
self.proc.stdin.close()
try:
self.proc.wait(5)
except:
self.proc.kill()
def command(self, args):
data = json.dumps(args)
data_bytes = data.encode('utf-8')
self.proc.stdin.write(data_bytes)
self.proc.stdin.write(b'\0')
self.proc.stdin.flush()
res = b''
while True:
b = self.proc.stdout.read(1)
if b == b'\0':
return res.decode('utf-8')
res += b
def wrap_in_template(data):
return {
"extensions": [
{
"addsTo": {
"pack": "codeql/python-all",
"extensible": "typeModel",
},
"data": data,
}
]
}
def parse_from_file(path: Path) -> set:
if not path.exists():
return set()
text = path.read_text()
assert text.startswith(f"# {VERSION}\n"), f"{path}: {text[:100]}"
raw_data = yaml.safe_load(text)
assert len(raw_data["extensions"]) == 1, path
assert raw_data["extensions"][0]["addsTo"]["extensible"] == "typeModel", path
return set(tuple(x) for x in raw_data["extensions"][0]["data"])
def gather_from_bqrs_results():
with CodeQL() as codeql:
for f in glob.glob(f"{sys.argv[1]}/**/results.bqrs", recursive=True):
print(f"Processing {f}")
json_data = codeql.command(["bqrs", "decode", "--format=json", f])
select = json.loads(json_data)
for t in select["#select"]["tuples"]:
pkg = t[1]
package_data[pkg].add(tuple(t))
def gather_from_existing():
for f in glob.glob(f"{mad_path}/auto-*.model.yml", recursive=True):
print(f"Processing {f}")
all_data = parse_from_file(Path(f))
pkg = f.split("/")[-1].split(".")[0][5:]
package_data[pkg].update(all_data)
gather_from_bqrs_results()
for pkg in package_data:
pkg_path = mad_path / f"auto-{pkg}.model.yml"
print(f"Writing {pkg_path}")
all_data = parse_from_file(pkg_path)
all_data.update(package_data[pkg])
as_lists = [list(t) for t in all_data]
as_lists.sort()
data_for_yaml = wrap_in_template(as_lists)
pkg_path.write_text(f"# {VERSION}\n" + yaml.dump(data_for_yaml, indent=2))

View File

@@ -0,0 +1,16 @@
| Django.Views.View~Subclass | find_subclass_test | Member[clash2] |
| Django.Views.View~Subclass | find_subclass_test | Member[clash3] |
| Django.Views.View~Subclass | find_subclass_test | Member[clash] |
| flask.MethodView~Subclass | find_subclass_test | Member[C] |
| flask.View~Subclass | find_subclass_test | Member[A] |
| flask.View~Subclass | find_subclass_test | Member[B] |
| flask.View~Subclass | find_subclass_test | Member[ViewAliasInExcept] |
| flask.View~Subclass | find_subclass_test | Member[ViewAliasInTry] |
| flask.View~Subclass | find_subclass_test | Member[ViewAlias] |
| flask.View~Subclass | find_subclass_test | Member[ViewAlias_no_use] |
| flask.View~Subclass | find_subclass_test | Member[View] |
| flask.View~Subclass | find_subclass_test | Member[clash2] |
| flask.View~Subclass | find_subclass_test | Member[clash3] |
| flask.View~Subclass | find_subclass_test | Member[clash] |
| flask.View~Subclass | find_subclass_test | Member[complete_module_alias] |
| flask.View~Subclass | find_subclass_test | Member[complete_module_alias_no_use] |

View File

@@ -0,0 +1 @@
meta/ClassHierarchy/Find.ql

View File

@@ -0,0 +1,53 @@
from flask.views import View
import flask.views
class A(View):
pass
class B(A):
pass
class C(flask.views.MethodView):
pass
ViewAlias = View
print(ViewAlias)
ViewAlias_no_use = View
try:
from flask.views import View as ViewAliasInTry
except:
from flask.views import View as ViewAliasInExcept
if cond:
from flask.views import View as clash
else:
from django.views.generic import View as clash
if cond:
from flask.views import View as clash2
else:
from django.views.generic import View as clash2
print(clash2)
if cond:
from flask.views import View as clash3
else:
from django.views.generic import View as clash3
print(clash3)
import flask.views as containing_module_alias # $ MISSING
# now `find_subclass_test.containing_module_alias.View` is an alias of flask.views.View
# 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 😕
import flask.views.View as complete_module_alias
print(complete_module_alias)
import flask.views.View as complete_module_alias_no_use
def wrapper():
return View # $ MISSING

View File

@@ -0,0 +1 @@
semmle-extractor-options: --max-import-depth=0

View File

@@ -2,9 +2,9 @@
from unknown import * #$ use=moduleImport("unknown")
# Currently missing, as we do not consider `hello` to be a `LocalSourceNode`, since it has flow
# going into it from its corresponding `GlobalSsaVariable`.
hello() #$ MISSING: use=moduleImport("unknown").getMember("hello").getReturn()
# This used to be missing, as we did not consider `hello` to be a `LocalSourceNode`,
# since it has flow going into it from its corresponding `GlobalSsaVariable`.
hello() #$ use=moduleImport("unknown").getMember("hello").getReturn()
# We don't want our analysis to think that either `non_module_member` or `outer_bar` can
# come from `from unknown import *`