@@ -221,12 +221,17 @@ private predicate transitively_imported_from_entry_point(File file) {
221
221
)
222
222
}
223
223
224
+ /**
225
+ * Holds if the folder `f` is a regular Python package,
226
+ * containing an `__init__.py` file.
227
+ */
224
228
private predicate isRegularPackage ( Folder f , string name ) {
225
229
legalShortName ( name ) and
226
230
name = f .getStem ( ) and
227
231
exists ( f .getFile ( "__init__.py" ) )
228
232
}
229
233
234
+ /** Holds if the file `f` could be resolved to a module named `name`. */
230
235
private predicate isPotentialModuleFile ( File file , string name ) {
231
236
legalShortName ( name ) and
232
237
name = file .getStem ( ) and
@@ -239,7 +244,12 @@ private predicate isPotentialModuleFile(File file, string name) {
239
244
name != ""
240
245
}
241
246
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
+ */
243
253
private predicate isNameSpacePackage ( Folder f , string name ) {
244
254
legalShortName ( name ) and
245
255
name = f .getStem ( ) and
@@ -259,22 +269,34 @@ private predicate isNameSpacePackage(Folder f, string name) {
259
269
)
260
270
}
261
271
272
+ /**
273
+ * Holds if the folder `f` is a package (either a regular package
274
+ * or a namespace package) named `name`.
275
+ */
262
276
private predicate isPackage ( Folder f , string name ) {
263
277
isRegularPackage ( f , name )
264
278
or
265
279
isNameSpacePackage ( f , name )
266
280
}
267
281
282
+ /**
283
+ * Holds if the file `f` is a module named `name`.
284
+ */
268
285
private predicate isModuleFile ( File file , string name ) {
269
286
isPotentialModuleFile ( file , name ) and
270
287
not isPackage ( file .getParent ( ) , _)
271
288
}
272
289
290
+ /**
291
+ * Holds if the folder `f` is a package named `name`
292
+ * and does reside inside another package.
293
+ */
273
294
private predicate isOutermostPackage ( Folder f , string name ) {
274
295
isPackage ( f , name ) and
275
296
not isPackage ( f .getParent ( ) , _)
276
297
}
277
298
299
+ /** Gets the name of the module that `c` resolves to, if any. */
278
300
cached
279
301
string moduleNameFromFile ( Container c ) {
280
302
// package
0 commit comments