private ModulePath?FindModuleInSearchPath(IReadOnlyList <string> searchPaths, IReadOnlyDictionary <string, string> packages, string name) { if (searchPaths == null || searchPaths.Count == 0) { return(null); } var i = name.IndexOf('.'); var firstBit = i < 0 ? name : name.Remove(i); ModulePath mp; Func <string, bool> isPackage = IsPackage; if (firstBit.EndsWithOrdinal("-stubs", ignoreCase: true)) { isPackage = _fs.DirectoryExists; } var requireInitPy = ModulePath.PythonVersionRequiresInitPyFiles(Configuration.Version); if (packages != null && packages.TryGetValue(firstBit, out var searchPath) && !string.IsNullOrEmpty(searchPath)) { if (ModulePath.FromBasePathAndName_NoThrow(searchPath, name, isPackage, null, requireInitPy, out mp, out _, out _, out _)) { return(mp); } } if (searchPaths.MaybeEnumerate() .Any(sp => ModulePath.FromBasePathAndName_NoThrow(sp, name, isPackage, null, requireInitPy, out mp, out _, out _, out _))) { return(mp); } return(null); }
private ModulePath?FindModuleInSearchPath( IEnumerable <PythonLibraryPath> searchPaths, IReadOnlyDictionary <string, string> packages, string name ) { if (searchPaths == null || packages == null) { return(null); } int i = name.IndexOf('.'); var firstBit = i < 0 ? name : name.Remove(i); string searchPath; ModulePath mp; if (packages.TryGetValue(firstBit, out searchPath) && !string.IsNullOrEmpty(searchPath)) { if (ModulePath.FromBasePathAndName_NoThrow(searchPath, name, out mp)) { return(mp); } } foreach (var sp in searchPaths.MaybeEnumerate()) { if (ModulePath.FromBasePathAndName_NoThrow(sp.Path, name, out mp)) { return(mp); } } return(null); }
protected virtual ModulePath?FindModuleInSearchPath(IReadOnlyList <string> searchPaths, IReadOnlyDictionary <string, string> packages, string name) { _log?.Log(TraceLevel.Verbose, "FindModule", name, "system", string.Join(", ", searchPaths)); if (searchPaths == null) { return(null); } int i = name.IndexOf('.'); var firstBit = i < 0 ? name : name.Remove(i); string searchPath; ModulePath mp; if (packages != null && packages.TryGetValue(firstBit, out searchPath) && !string.IsNullOrEmpty(searchPath)) { if (ModulePath.FromBasePathAndName_NoThrow(searchPath, name, out mp)) { return(mp); } } foreach (var sp in searchPaths.MaybeEnumerate()) { if (ModulePath.FromBasePathAndName_NoThrow(sp, name, out mp)) { return(mp); } } return(null); }
private async Task <ModulePath?> FindModuleInUserSearchPathAsync(string name, CancellationToken cancel) { var searchPaths = _userSearchPaths; if (searchPaths == null || searchPaths.Count == 0) { return(null); } var packages = await GetUserSearchPathPackagesAsync(cancel); var i = name.IndexOf('.'); var firstBit = i < 0 ? name : name.Remove(i); string searchPath; ModulePath mp; Func <string, bool> isPackage = _factory.IsPackage; if (firstBit.EndsWithOrdinal("-stubs", ignoreCase: true)) { isPackage = Directory.Exists; } var requireInitPy = ModulePath.PythonVersionRequiresInitPyFiles(_factory.Configuration.Version); if (packages != null && packages.TryGetValue(firstBit, out searchPath) && !string.IsNullOrEmpty(searchPath)) { if (ModulePath.FromBasePathAndName_NoThrow(searchPath, name, isPackage, null, requireInitPy, out mp, out _, out _, out _)) { ImportedFromUserSearchPath(name); return(mp); } } foreach (var sp in searchPaths.MaybeEnumerate()) { if (ModulePath.FromBasePathAndName_NoThrow(sp, name, isPackage, null, requireInitPy, out mp, out _, out _, out _)) { ImportedFromUserSearchPath(name); return(mp); } } return(null); }
private ModulePath?FindModuleInSearchPath(IReadOnlyList <string> searchPaths, IReadOnlyDictionary <string, string> packages, string name) { if (searchPaths == null || searchPaths.Count == 0) { return(null); } _log?.Log(TraceLevel.Verbose, "FindModule", name, "system", string.Join(", ", searchPaths)); int i = name.IndexOf('.'); var firstBit = i < 0 ? name : name.Remove(i); string searchPath; ModulePath mp; Func <string, bool> isPackage = IsPackage; if (firstBit.EndsWithOrdinal("-stubs", ignoreCase: true)) { isPackage = Directory.Exists; } var requireInitPy = ModulePath.PythonVersionRequiresInitPyFiles(_configuration.Version); if (packages != null && packages.TryGetValue(firstBit, out searchPath) && !string.IsNullOrEmpty(searchPath)) { if (ModulePath.FromBasePathAndName_NoThrow(searchPath, name, isPackage, null, requireInitPy, out mp, out _, out _, out _)) { return(mp); } } foreach (var sp in searchPaths.MaybeEnumerate()) { if (ModulePath.FromBasePathAndName_NoThrow(sp, name, isPackage, null, requireInitPy, out mp, out _, out _, out _)) { return(mp); } } return(null); }
private ModulePath?FindModuleInSearchPath( IEnumerable <string> searchPaths, IReadOnlyDictionary <string, string> packages, string name ) { if (searchPaths == null) { return(null); } try { int i = name.IndexOf('.'); var firstBit = i < 0 ? name : name.Remove(i); string searchPath; ModulePath mp; if (packages != null && packages.TryGetValue(firstBit, out searchPath) && !string.IsNullOrEmpty(searchPath)) { if (ModulePath.FromBasePathAndName_NoThrow(searchPath, name, out mp)) { return(mp); } } foreach (var sp in searchPaths.MaybeEnumerate()) { if (ModulePath.FromBasePathAndName_NoThrow(sp, name, out mp)) { return(mp); } } } catch (Exception ex) { _log?.Log(TraceLevel.Error, "Exception", ex.ToString()); _log?.Flush(); } return(null); }
protected virtual async Task <ModulePath?> FindModuleInSearchPathAsync(string name) { var searchPaths = await GetSearchPathsAsync().ConfigureAwait(false); var packages = await GetImportableModulesAsync().ConfigureAwait(false); _log?.Log(TraceLevel.Verbose, "FindModule", name, "system", string.Join(", ", searchPaths)); if (searchPaths == null) { return(null); } int i = name.IndexOf('.'); var firstBit = i < 0 ? name : name.Remove(i); string searchPath; ModulePath mp; if (packages != null && packages.TryGetValue(firstBit, out searchPath) && !string.IsNullOrEmpty(searchPath)) { if (ModulePath.FromBasePathAndName_NoThrow(searchPath, name, out mp)) { return(mp); } } foreach (var sp in searchPaths.MaybeEnumerate()) { if (ModulePath.FromBasePathAndName_NoThrow(sp, name, out mp)) { return(mp); } } return(null); }
private async Task <ModulePath?> FindModuleInUserSearchPathAsync(string name) { var searchPaths = _userSearchPaths; var packages = await GetUserSearchPathPackagesAsync(); if (searchPaths == null) { return(null); } int i = name.IndexOf('.'); var firstBit = i < 0 ? name : name.Remove(i); string searchPath; ModulePath mp; if (packages != null && packages.TryGetValue(firstBit, out searchPath) && !string.IsNullOrEmpty(searchPath)) { if (ModulePath.FromBasePathAndName_NoThrow(searchPath, name, out mp)) { ImportedFromUserSearchPath(name); return(mp); } } foreach (var sp in searchPaths.MaybeEnumerate()) { if (ModulePath.FromBasePathAndName_NoThrow(sp, name, out mp)) { ImportedFromUserSearchPath(name); return(mp); } } return(null); }