99from augmenta .utils .get_hash import get_hash
1010from .manager import CacheManager
1111
12- def handle_process_resumption (
13- config_data : Dict [str , Any ],
14- config_path : Path ,
15- csv_path : Path ,
16- no_cache : bool = False ,
17- resume : Optional [str ] = None ,
18- no_auto_resume : bool = False ,
19- cache_manager : Optional [Any ] = None
20- ) -> Optional [str ]:
21- """Handle process resumption logic."""
22- if resume or no_cache or no_auto_resume :
23- return resume
24-
25- if cache_manager is None :
26- cache_manager = CacheManager ()
27-
28- config_hash = get_hash (config_data )
29- csv_hash = get_hash (csv_path )
30- combined_hash = get_hash ({'config' : config_hash , 'csv' : csv_hash })
31-
32- if unfinished_process := cache_manager .find_unfinished_process (combined_hash ):
33- summary = cache_manager .get_process_summary (unfinished_process )
34- click .echo (summary )
35- if click .confirm ("Would you like to resume this process?" ):
36- return unfinished_process .process_id
37-
38- return None
12+ def get_cache_manager () -> CacheManager :
13+ """Get the singleton cache manager instance."""
14+ return CacheManager ()
3915
40- def setup_caching (
16+ def setup_cache_handling (
4117 config_data : Dict [str , Any ],
42- csv_path : Path ,
18+ config_path : Path ,
4319 cache_enabled : bool ,
44- df_length : int ,
45- process_id : Optional [str ] = None ,
46- cache_manager : Optional [Any ] = None
47- ) -> Tuple [Optional [Any ], Optional [str ], Dict ]:
48- """Set up caching for a process."""
20+ process_id : Optional [str ],
21+ auto_resume : bool ,
22+ df : pd .DataFrame
23+ ) -> Tuple [Optional [str ], Optional [CacheManager ], Dict [int , Any ]]:
24+ """Set up caching configuration.
25+
26+ Args:
27+ config_data: Configuration dictionary
28+ config_path: Path to configuration file
29+ cache_enabled: Whether caching is enabled
30+ process_id: Optional process ID for resuming
31+ auto_resume: Whether to auto-resume previous processes
32+ df: Loaded DataFrame
33+
34+ Returns:
35+ Tuple of (process ID, cache manager, cached results)
36+ """
4937 if not cache_enabled :
5038 return None , None , {}
5139
52- if cache_manager is None :
53- cache_manager = CacheManager ()
40+ # Initialize cache manager once
41+ cache_manager = get_cache_manager ()
42+
43+ # Skip resumption if explicitly provided or disabled
44+ if not process_id and auto_resume :
45+ # Generate hash for config and input data
46+ config_hash = get_hash (config_data )
47+ csv_hash = get_hash (config_data ["input_csv" ])
48+ combined_hash = get_hash ({'config' : config_hash , 'csv' : csv_hash })
5449
55- config_hash = get_hash (config_data )
56- csv_hash = get_hash (csv_path )
57- combined_hash = get_hash ({'config' : config_hash , 'csv' : csv_hash })
50+ # Check for unfinished process
51+ if unfinished_process := cache_manager .find_unfinished_process (combined_hash ):
52+ summary = cache_manager .get_process_summary (unfinished_process )
53+ click .echo (summary )
54+ if click .confirm ("Would you like to resume this process?" ):
55+ process_id = unfinished_process .process_id
5856
57+ # Set up or resume process
5958 if not process_id :
60- process_id = cache_manager .start_process (combined_hash , df_length )
59+ # Start new process
60+ config_hash = get_hash (config_data )
61+ csv_hash = get_hash (config_data ["input_csv" ])
62+ combined_hash = get_hash ({'config' : config_hash , 'csv' : csv_hash })
63+ process_id = cache_manager .start_process (combined_hash , len (df ))
6164 else :
65+ # Update existing process
6266 with cache_manager .db .get_connection () as conn :
6367 conn .execute (
6468 "UPDATE processes SET status = 'running', last_updated = ? WHERE process_id = ?" ,
6569 (datetime .now (), process_id )
6670 )
67-
71+
72+ # Get cached results
6873 cached_results = cache_manager .get_cached_results (process_id )
69- return cache_manager , process_id , cached_results
74+
75+ return process_id , cache_manager , cached_results
7076
7177def apply_cached_results (
7278 df : pd .DataFrame ,
7379 process_id : str ,
74- cache_manager : Optional [Any ] = None
80+ cache_manager : Optional [CacheManager ] = None
7581) -> pd .DataFrame :
7682 """Apply cached results to a DataFrame."""
7783 if cache_manager is None :
78- cache_manager = CacheManager ()
84+ cache_manager = get_cache_manager ()
7985
8086 cached_results = cache_manager .get_cached_results (process_id )
8187 for row_index , result in cached_results .items ():
@@ -86,7 +92,7 @@ def apply_cached_results(
8692def handle_cache_cleanup (cache_manager : Optional [Any ] = None ) -> None :
8793 """Clean up cache by removing the cache database file."""
8894 if cache_manager is None :
89- cache_manager = CacheManager ()
95+ cache_manager = get_cache_manager ()
9096
9197 try :
9298 # Ensure all pending writes are processed
0 commit comments