Skip to content

Commit d9854eb

Browse files
committed
Python: Add QLDoc
1 parent 1d4832c commit d9854eb

File tree

1 file changed

+23
-1
lines changed

1 file changed

+23
-1
lines changed

python/ql/lib/semmle/python/Module.qll

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,12 +221,17 @@ private predicate transitively_imported_from_entry_point(File file) {
221221
)
222222
}
223223

224+
/**
225+
* Holds if the folder `f` is a regular Python package,
226+
* containing an `__init__.py` file.
227+
*/
224228
private predicate isRegularPackage(Folder f, string name) {
225229
legalShortName(name) and
226230
name = f.getStem() and
227231
exists(f.getFile("__init__.py"))
228232
}
229233

234+
/** Holds if the file `f` could be resolved to a module named `name`. */
230235
private predicate isPotentialModuleFile(File file, string name) {
231236
legalShortName(name) and
232237
name = file.getStem() and
@@ -239,7 +244,12 @@ private predicate isPotentialModuleFile(File file, string name) {
239244
name != ""
240245
}
241246

242-
// See https://peps.python.org/pep-0420/#specification
247+
/**
248+
* Holds if the folder `f` is a namespace package named `name`.
249+
*
250+
* See https://peps.python.org/pep-0420/#specification
251+
* for details on namespace packages.
252+
*/
243253
private predicate isNameSpacePackage(Folder f, string name) {
244254
legalShortName(name) and
245255
name = f.getStem() and
@@ -259,22 +269,34 @@ private predicate isNameSpacePackage(Folder f, string name) {
259269
)
260270
}
261271

272+
/**
273+
* Holds if the folder `f` is a package (either a regular package
274+
* or a namespace package) named `name`.
275+
*/
262276
private predicate isPackage(Folder f, string name) {
263277
isRegularPackage(f, name)
264278
or
265279
isNameSpacePackage(f, name)
266280
}
267281

282+
/**
283+
* Holds if the file `f` is a module named `name`.
284+
*/
268285
private predicate isModuleFile(File file, string name) {
269286
isPotentialModuleFile(file, name) and
270287
not isPackage(file.getParent(), _)
271288
}
272289

290+
/**
291+
* Holds if the folder `f` is a package named `name`
292+
* and does reside inside another package.
293+
*/
273294
private predicate isOutermostPackage(Folder f, string name) {
274295
isPackage(f, name) and
275296
not isPackage(f.getParent(), _)
276297
}
277298

299+
/** Gets the name of the module that `c` resolves to, if any. */
278300
cached
279301
string moduleNameFromFile(Container c) {
280302
// package

0 commit comments

Comments
 (0)