44use std:: {
55 fs,
66 path:: PathBuf ,
7- sync:: {
8- atomic:: { AtomicBool , Ordering } ,
9- Arc , Mutex ,
10- } ,
7+ sync:: { Arc , Mutex } ,
118 thread,
129} ;
1310
1411use env_variables:: EnvVariables ;
1512use environments:: { get_generic_python_environment, get_virtual_env_environment} ;
13+ use log:: trace;
1614use manager:: PyEnvInfo ;
1715use pet_conda:: { utils:: is_conda_env, CondaLocator } ;
1816use pet_core:: {
@@ -33,7 +31,6 @@ mod manager;
3331pub struct PyEnv {
3432 pub env_vars : EnvVariables ,
3533 pub conda_locator : Arc < dyn CondaLocator > ,
36- found_pyenv : AtomicBool ,
3734 manager : Arc < Mutex < Option < EnvManager > > > ,
3835 versions_dir : Arc < Mutex < Option < PathBuf > > > ,
3936}
@@ -44,24 +41,22 @@ impl PyEnv {
4441 conda_locator : Arc < dyn CondaLocator > ,
4542 ) -> impl Locator {
4643 PyEnv {
47- found_pyenv : AtomicBool :: new ( false ) ,
4844 env_vars : EnvVariables :: from ( environment) ,
4945 conda_locator,
5046 manager : Arc :: new ( Mutex :: new ( None ) ) ,
5147 versions_dir : Arc :: new ( Mutex :: new ( None ) ) ,
5248 }
5349 }
5450 fn clear ( & self ) {
55- self . found_pyenv
56- . store ( false , std:: sync:: atomic:: Ordering :: Relaxed ) ;
5751 self . manager . lock ( ) . unwrap ( ) . take ( ) ;
5852 self . versions_dir . lock ( ) . unwrap ( ) . take ( ) ;
5953 }
6054 fn get_manager_versions_dir ( & self ) -> ( Option < EnvManager > , Option < PathBuf > ) {
6155 let mut managers = self . manager . lock ( ) . unwrap ( ) ;
6256 let mut versions = self . versions_dir . lock ( ) . unwrap ( ) ;
63- if ! self . found_pyenv . load ( Ordering :: Relaxed ) && ( managers. is_none ( ) || versions. is_none ( ) ) {
57+ if managers. is_none ( ) || versions. is_none ( ) {
6458 let pyenv_info = PyEnvInfo :: from ( & self . env_vars ) ;
59+ trace ! ( "PyEnv Info {:?}" , pyenv_info) ;
6560 if let Some ( ref exe) = pyenv_info. exe {
6661 let version = pyenv_info. version . clone ( ) ;
6762 let manager = EnvManager :: new ( exe. clone ( ) , EnvManagerType :: Pyenv , version) ;
@@ -74,9 +69,7 @@ impl PyEnv {
7469 } else {
7570 versions. take ( ) ;
7671 }
77- self . found_pyenv . store ( true , Ordering :: Relaxed ) ;
7872 }
79-
8073 ( managers. clone ( ) , versions. clone ( ) )
8174 }
8275}
@@ -164,6 +157,8 @@ impl Locator for PyEnv {
164157 }
165158 }
166159 } ) ;
160+ } else {
161+ trace ! ( "PyEnv versions directory not found" ) ;
167162 }
168163 }
169164}
0 commit comments