1+ mod caching;
12pub mod errors;
23pub mod exceptions;
34mod filesystem;
@@ -7,16 +8,18 @@ mod import_scanning;
78pub mod module_expressions;
89mod module_finding;
910
11+ use crate :: caching:: read_cache_data_map_file;
1012use crate :: errors:: { GrimpError , GrimpResult } ;
11- use crate :: exceptions:: { InvalidModuleExpression , ModuleNotPresent , NoSuchContainer , ParseError } ;
13+ use crate :: exceptions:: {
14+ CorruptCache , InvalidModuleExpression , ModuleNotPresent , NoSuchContainer , ParseError ,
15+ } ;
1216use crate :: filesystem:: { PyFakeBasicFileSystem , PyRealBasicFileSystem } ;
1317use crate :: graph:: higher_order_queries:: Level ;
1418use crate :: graph:: { Graph , Module , ModuleIterator , ModuleTokenIterator } ;
15- use crate :: import_scanning:: {
16- get_file_system_boxed, py_found_packages_to_rust, scan_for_imports_no_py, to_py_direct_imports,
17- } ;
19+ use crate :: import_scanning:: { py_found_packages_to_rust, scan_for_imports_no_py} ;
1820use crate :: module_expressions:: ModuleExpression ;
1921use derive_new:: new;
22+ use filesystem:: get_file_system_boxed;
2023use itertools:: Itertools ;
2124use pyo3:: IntoPyObjectExt ;
2225use pyo3:: exceptions:: PyValueError ;
@@ -29,6 +32,7 @@ use std::collections::HashSet;
2932#[ pymodule]
3033fn _rustgrimp ( py : Python < ' _ > , m : & Bound < ' _ , PyModule > ) -> PyResult < ( ) > {
3134 m. add_wrapped ( wrap_pyfunction ! ( scan_for_imports) ) ?;
35+ m. add_wrapped ( wrap_pyfunction ! ( read_cache_data_map_file) ) ?;
3236 m. add_class :: < GraphWrapper > ( ) ?;
3337 m. add_class :: < PyRealBasicFileSystem > ( ) ?;
3438 m. add_class :: < PyFakeBasicFileSystem > ( ) ?;
@@ -39,6 +43,7 @@ fn _rustgrimp(py: Python<'_>, m: &Bound<'_, PyModule>) -> PyResult<()> {
3943 py. get_type :: < InvalidModuleExpression > ( ) ,
4044 ) ?;
4145 m. add ( "ParseError" , py. get_type :: < ParseError > ( ) ) ?;
46+ m. add ( "CorruptCache" , py. get_type :: < CorruptCache > ( ) ) ?;
4247 Ok ( ( ) )
4348}
4449
@@ -65,8 +70,6 @@ fn scan_for_imports<'py>(
6570 exclude_type_checking_imports : bool ,
6671 file_system : Bound < ' py , PyAny > ,
6772) -> PyResult < Bound < ' py , PyDict > > {
68- let valueobjects_pymodule = PyModule :: import ( py, "grimp.domain.valueobjects" ) . unwrap ( ) ;
69- let py_module_class = valueobjects_pymodule. getattr ( "Module" ) . unwrap ( ) ;
7073 let file_system_boxed = get_file_system_boxed ( & file_system) ?;
7174 let found_packages_rust = py_found_packages_to_rust ( & found_packages) ;
7275 let modules_rust: HashSet < module_finding:: Module > = module_files
@@ -112,14 +115,7 @@ fn scan_for_imports<'py>(
112115 }
113116 let imports_by_module = imports_by_module_result. unwrap ( ) ;
114117
115- let imports_by_module_py = PyDict :: new ( py) ;
116- for ( module, imports) in imports_by_module. iter ( ) {
117- let py_module_instance = py_module_class. call1 ( ( module. name . clone ( ) , ) ) . unwrap ( ) ;
118- let py_imports = to_py_direct_imports ( py, imports) ;
119- imports_by_module_py
120- . set_item ( py_module_instance, py_imports)
121- . unwrap ( ) ;
122- }
118+ let imports_by_module_py = import_scanning:: imports_by_module_to_py ( py, imports_by_module) ;
123119
124120 Ok ( imports_by_module_py)
125121}
0 commit comments