ty_module_resolver/
lib.rs1use std::hash::BuildHasherDefault;
2use std::iter::FusedIterator;
3
4use ruff_db::system::SystemPath;
5use rustc_hash::FxHasher;
6
7pub use db::Db;
8pub use environment::{ResolverEnvironment, ResolverFile};
9pub use module::KnownModule;
10pub use module::Module;
11pub use module_name::{ImportingFile, ModuleName, ModuleNameResolutionError};
12pub use path::{SearchPath, SearchPathError};
13pub use resolve::{
14 SearchPaths, file_to_module, resolve_module, resolve_module_confident,
15 resolve_module_for_import_from, resolve_real_module, resolve_real_module_confident,
16 resolve_real_shadowable_module,
17};
18pub use settings::{SearchPathSettings, SearchPathSettingsError};
19pub use strategy::{FallibleStrategy, MisconfigurationStrategy, UseDefaultStrategy};
20pub use typeshed::{PyVersionRange, TypeshedVersions, TypeshedVersionsParseError};
21
22pub use list::{all_modules, list_modules};
23pub use module_glob::{ModuleGlobError, ModuleGlobSet, ModuleGlobSetBuilder, ModuleNameMatch};
24pub use resolve::{ModuleResolveMode, SearchPathIterator, search_paths};
25
26mod db;
27mod environment;
28mod list;
29mod module;
30mod module_glob;
31mod module_name;
32mod path;
33mod resolve;
34mod settings;
35mod strategy;
36mod typeshed;
37
38type FxOrderMap<K, V> = ordermap::map::OrderMap<K, V, BuildHasherDefault<FxHasher>>;
39
40#[cfg(test)]
41mod testing;
42
43pub fn system_module_search_paths<'db>(
45 db: &'db dyn Db,
46 resolver_environment: ResolverEnvironment<'db>,
47) -> SystemModuleSearchPathsIter<'db> {
48 SystemModuleSearchPathsIter {
49 inner: search_paths(db, resolver_environment, ModuleResolveMode::Typing),
52 }
53}
54
55pub struct SystemModuleSearchPathsIter<'db> {
56 inner: SearchPathIterator<'db>,
57}
58
59impl<'db> Iterator for SystemModuleSearchPathsIter<'db> {
60 type Item = &'db SystemPath;
61
62 fn next(&mut self) -> Option<Self::Item> {
63 loop {
64 let next = self.inner.next()?;
65
66 if let Some(system_path) = next.as_system_path() {
67 return Some(system_path);
68 }
69 }
70 }
71}
72
73impl FusedIterator for SystemModuleSearchPathsIter<'_> {}