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

Skip to content

Commit 875fa0b

Browse files
tausbnRasmusWL
authored andcommitted
Python: Add Peewee model
1 parent 5e3bdb8 commit 875fa0b

2 files changed

Lines changed: 14 additions & 2 deletions

File tree

python/ql/lib/semmle/python/frameworks/Peewee.qll

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,17 @@ private import semmle.python.dataflow.new.TaintTracking
1111
private import semmle.python.Concepts
1212
private import semmle.python.ApiGraphs
1313
private import semmle.python.frameworks.PEP249
14+
private import semmle.python.frameworks.data.ModelsAsData
1415

1516
/**
17+
* INTERNAL: Do not use.
18+
*
1619
* Provides models for the `peewee` PyPI package.
1720
* See
1821
* - https://pypi.org/project/peewee/
1922
* - https://docs.peewee-orm.com/en/latest/index.html
2023
*/
21-
private module Peewee {
24+
module Peewee {
2225
/** Provides models for the `peewee.Database` class and subclasses. */
2326
module Database {
2427
/** Gets a reference to the `peewee.Database` class or any subclass. */
@@ -31,7 +34,7 @@ private module Peewee {
3134
.getMember(["SqliteDatabase", "MySQLDatabase", "PostgresqlDatabase"])
3235
.getASubclass*()
3336
or
34-
// Ohter known subclasses, semi auto generated by using
37+
// Other known subclasses, semi auto generated by using
3538
// ```ql
3639
// class DBClass extends Class, SelfRefMixin {
3740
// DBClass() {
@@ -153,6 +156,8 @@ private module Peewee {
153156
.getMember("sqliteq")
154157
.getMember("SqliteQueueDatabase")
155158
.getASubclass*()
159+
or
160+
result = ModelOutput::getATypeNode("peewee.Database~Subclass").getASubclass*()
156161
}
157162

158163
/** Gets a reference to an instance of `peewee.Database` or any subclass. */

python/ql/src/meta/ClassHierarchy/Find.ql

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ private import semmle.python.frameworks.SqlAlchemy
2828
private import semmle.python.frameworks.Tornado
2929
private import semmle.python.frameworks.Urllib3
3030
private import semmle.python.frameworks.Pydantic
31+
private import semmle.python.frameworks.Peewee
3132
import semmle.python.frameworks.data.internal.ApiGraphModelsExtensions as Extensions
3233

3334
class FlaskViewClasses extends FindSubclassesSpec {
@@ -417,6 +418,12 @@ class PydanticBaseModel extends FindSubclassesSpec {
417418
override API::Node getAlreadyModeledClass() { result = Pydantic::BaseModel::subclassRef() }
418419
}
419420

421+
class PeeweeDatabase extends FindSubclassesSpec {
422+
PeeweeDatabase() { this = "peewee.Database~Subclass" }
423+
424+
override API::Node getAlreadyModeledClass() { result = Peewee::Database::subclassRef() }
425+
}
426+
420427
bindingset[fullyQualified]
421428
predicate fullyQualifiedToYamlFormat(string fullyQualified, string type2, string path) {
422429
exists(int firstDot | firstDot = fullyQualified.indexOf(".", 0, 0) |

0 commit comments

Comments
 (0)