1
1
import os
2
2
import ast
3
3
4
- def files_importing_pandas (root_dir ):
5
- pandas_files = set ()
4
+ # List of packages from dependencies in pyproject.toml
5
+ packages = [
6
+ 'click' ,
7
+ 'joblib' ,
8
+ 'networkx' ,
9
+ 'yaml' , # PyYAML
10
+ 'sklearn' ,
11
+ 'scipy' ,
12
+ ]
13
+
14
+ def files_importing_package (root_dir , package ):
15
+ package_files = set ()
6
16
for dirpath , dirnames , filenames in os .walk (root_dir ):
7
17
for fn in filenames :
8
18
if not fn .endswith ('.py' ):
@@ -14,21 +24,28 @@ def files_importing_pandas(root_dir):
14
24
except (SyntaxError , UnicodeDecodeError ):
15
25
continue
16
26
for node in ast .walk (tree ):
17
- # catch “ import pandas” or “ import pandas as pd”
27
+ # catch " import package" or " import package as alias"
18
28
if isinstance (node , ast .Import ):
19
29
for alias in node .names :
20
- if alias .name == 'pandas' or alias .name .startswith ('pandas .' ):
21
- pandas_files .add (path )
30
+ if alias .name == package or alias .name .startswith (package + ' .' ):
31
+ package_files .add (path )
22
32
break
23
- # catch “ from pandas import …” or “ from pandas.core import …”
33
+ # catch " from package import …" or " from package.module import …"
24
34
elif isinstance (node , ast .ImportFrom ):
25
- if node .module and node .module .startswith ('pandas' ):
26
- pandas_files .add (path )
35
+ if node .module and node .module .startswith (package ):
36
+ package_files .add (path )
27
37
break
28
- return pandas_files
38
+ return package_files
29
39
30
40
if __name__ == '__main__' :
31
41
project_root = os .path .dirname (os .path .dirname (os .path .dirname (__file__ ))) # or replace with your path
32
42
print (f"Project root: { project_root } " )
33
- for f in sorted (files_importing_pandas (project_root )):
34
- print (f )
43
+
44
+ for package in packages :
45
+ print (f"\n === Files importing { package } ===" )
46
+ files = files_importing_package (project_root , package )
47
+ if files :
48
+ for f in sorted (files ):
49
+ print (f )
50
+ else :
51
+ print (f"No files found importing { package } " )
0 commit comments