mirror of
https://github.com/github/codeql.git
synced 2026-04-28 02:05:14 +02:00
Python: Add Pydantic model
This commit is contained in:
committed by
Rasmus Wriedt Larsen
parent
9d93afe128
commit
5e3bdb8701
@@ -11,6 +11,7 @@ private import semmle.python.dataflow.new.DataFlow
|
||||
private import semmle.python.dataflow.new.TaintTracking
|
||||
private import semmle.python.Concepts
|
||||
private import semmle.python.ApiGraphs
|
||||
private import semmle.python.frameworks.data.ModelsAsData
|
||||
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
@@ -31,6 +32,8 @@ module Pydantic {
|
||||
/** Gets a reference to a `pydantic.BaseModel` subclass (a pydantic model). */
|
||||
API::Node subclassRef() {
|
||||
result = API::moduleImport("pydantic").getMember("BaseModel").getASubclass+()
|
||||
or
|
||||
result = ModelOutput::getATypeNode("pydantic.BaseModel~Subclass").getASubclass*()
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -27,6 +27,7 @@ private import semmle.python.frameworks.RestFramework
|
||||
private import semmle.python.frameworks.SqlAlchemy
|
||||
private import semmle.python.frameworks.Tornado
|
||||
private import semmle.python.frameworks.Urllib3
|
||||
private import semmle.python.frameworks.Pydantic
|
||||
import semmle.python.frameworks.data.internal.ApiGraphModelsExtensions as Extensions
|
||||
|
||||
class FlaskViewClasses extends FindSubclassesSpec {
|
||||
@@ -410,6 +411,12 @@ class StdlibLogger extends FindSubclassesSpec {
|
||||
override API::Node getAlreadyModeledClass() { result = Stdlib::Logger::subclassRef() }
|
||||
}
|
||||
|
||||
class PydanticBaseModel extends FindSubclassesSpec {
|
||||
PydanticBaseModel() { this = "pydantic.BaseModel~Subclass" }
|
||||
|
||||
override API::Node getAlreadyModeledClass() { result = Pydantic::BaseModel::subclassRef() }
|
||||
}
|
||||
|
||||
bindingset[fullyQualified]
|
||||
predicate fullyQualifiedToYamlFormat(string fullyQualified, string type2, string path) {
|
||||
exists(int firstDot | firstDot = fullyQualified.indexOf(".", 0, 0) |
|
||||
|
||||
Reference in New Issue
Block a user