Python: Add invoke model

This commit is contained in:
Taus
2023-10-10 14:15:26 +00:00
committed by Rasmus Wriedt Larsen
parent 699b6b8bef
commit cdb0ac524d
2 changed files with 15 additions and 1 deletions

View File

@@ -7,12 +7,15 @@ private import python
private import semmle.python.dataflow.new.DataFlow private import semmle.python.dataflow.new.DataFlow
private import semmle.python.Concepts private import semmle.python.Concepts
private import semmle.python.ApiGraphs private import semmle.python.ApiGraphs
private import semmle.python.frameworks.data.ModelsAsData
/** /**
* INTERNAL: Do not use.
*
* Provides models for the `invoke` PyPI package. * Provides models for the `invoke` PyPI package.
* See https://www.pyinvoke.org/. * See https://www.pyinvoke.org/.
*/ */
private module Invoke { module Invoke {
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// invoke // invoke
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
@@ -30,6 +33,8 @@ private module Invoke {
result = API::moduleImport("invoke").getMember("context").getMember("Context") result = API::moduleImport("invoke").getMember("context").getMember("Context")
or or
result = API::moduleImport("invoke").getMember("Context") result = API::moduleImport("invoke").getMember("Context")
or
result = ModelOutput::getATypeNode("invoke.context.Context~Subclass").getASubclass*()
} }
/** Gets a reference to an instance of `invoke.context.Context`. */ /** Gets a reference to an instance of `invoke.context.Context`. */

View File

@@ -19,6 +19,7 @@ private import semmle.python.frameworks.ClickhouseDriver
private import semmle.python.frameworks.Aiohttp private import semmle.python.frameworks.Aiohttp
private import semmle.python.frameworks.Fabric private import semmle.python.frameworks.Fabric
private import semmle.python.frameworks.Httpx private import semmle.python.frameworks.Httpx
private import semmle.python.frameworks.Invoke
import semmle.python.frameworks.data.internal.ApiGraphModelsExtensions as Extensions import semmle.python.frameworks.data.internal.ApiGraphModelsExtensions as Extensions
class FlaskViewClasses extends FindSubclassesSpec { class FlaskViewClasses extends FindSubclassesSpec {
@@ -294,6 +295,14 @@ class HttpxClient extends FindSubclassesSpec {
override API::Node getAlreadyModeledClass() { result = HttpxModel::Client::classRef() } override API::Node getAlreadyModeledClass() { result = HttpxModel::Client::classRef() }
} }
class InvokeContext extends FindSubclassesSpec {
InvokeContext() { this = "invoke.context.Context~Subclass" }
override API::Node getAlreadyModeledClass() {
result = Invoke::InvokeModule::Context::ContextClass::classRef()
}
}
bindingset[fullyQualified] bindingset[fullyQualified]
predicate fullyQualifiedToYamlFormat(string fullyQualified, string type2, string path) { predicate fullyQualifiedToYamlFormat(string fullyQualified, string type2, string path) {
exists(int firstDot | firstDot = fullyQualified.indexOf(".", 0, 0) | exists(int firstDot | firstDot = fullyQualified.indexOf(".", 0, 0) |