pub struct FixtureDatabase {
pub definitions: Arc<DashMap<String, Vec<FixtureDefinition>>>,
pub usages: Arc<DashMap<PathBuf, Vec<FixtureUsage>>>,
pub file_cache: Arc<DashMap<PathBuf, Arc<String>>>,
pub undeclared_fixtures: Arc<DashMap<PathBuf, Vec<UndeclaredFixture>>>,
pub imports: Arc<DashMap<PathBuf, HashSet<String>>>,
pub canonical_path_cache: Arc<DashMap<PathBuf, PathBuf>>,
pub line_index_cache: Arc<DashMap<PathBuf, (u64, Arc<Vec<usize>>)>>,
}Expand description
The central database for fixture definitions and usages.
Uses DashMap for lock-free concurrent access during workspace scanning.
Fields§
§definitions: Arc<DashMap<String, Vec<FixtureDefinition>>>Map from fixture name to all its definitions (can be in multiple conftest.py files).
usages: Arc<DashMap<PathBuf, Vec<FixtureUsage>>>Map from file path to fixtures used in that file.
file_cache: Arc<DashMap<PathBuf, Arc<String>>>Cache of file contents for analyzed files (uses Arc for efficient sharing).
undeclared_fixtures: Arc<DashMap<PathBuf, Vec<UndeclaredFixture>>>Map from file path to undeclared fixtures used in function bodies.
imports: Arc<DashMap<PathBuf, HashSet<String>>>Map from file path to imported names in that file.
canonical_path_cache: Arc<DashMap<PathBuf, PathBuf>>Cache of canonical paths to avoid repeated filesystem calls.
line_index_cache: Arc<DashMap<PathBuf, (u64, Arc<Vec<usize>>)>>Cache of line indices (byte offsets) for files to avoid recomputation. Stores (content_hash, line_index) to invalidate when content changes.
Implementations§
Source§impl FixtureDatabase
impl FixtureDatabase
Sourcepub fn analyze_file(&self, file_path: PathBuf, content: &str)
pub fn analyze_file(&self, file_path: PathBuf, content: &str)
Analyze a Python file for fixtures and usages. This is the public API - it cleans up previous definitions before analyzing.
Source§impl FixtureDatabase
impl FixtureDatabase
Sourcepub fn print_fixtures_tree(
&self,
root_path: &Path,
skip_unused: bool,
only_unused: bool,
)
pub fn print_fixtures_tree( &self, root_path: &Path, skip_unused: bool, only_unused: bool, )
Print fixtures as a tree structure
Source§impl FixtureDatabase
impl FixtureDatabase
Sourcepub fn find_fixture_definition(
&self,
file_path: &Path,
line: u32,
character: u32,
) -> Option<FixtureDefinition>
pub fn find_fixture_definition( &self, file_path: &Path, line: u32, character: u32, ) -> Option<FixtureDefinition>
Find fixture definition for a given position in a file
Sourcepub fn get_definition_at_line(
&self,
file_path: &Path,
line: usize,
fixture_name: &str,
) -> Option<FixtureDefinition>
pub fn get_definition_at_line( &self, file_path: &Path, line: usize, fixture_name: &str, ) -> Option<FixtureDefinition>
Public method to get the fixture definition at a specific line and name
Sourcepub fn find_fixture_at_position(
&self,
file_path: &Path,
line: u32,
character: u32,
) -> Option<String>
pub fn find_fixture_at_position( &self, file_path: &Path, line: u32, character: u32, ) -> Option<String>
Find the fixture name at a given position (either definition or usage)
Sourcepub fn extract_word_at_position(
&self,
line: &str,
character: usize,
) -> Option<String>
pub fn extract_word_at_position( &self, line: &str, character: usize, ) -> Option<String>
Extract the word at a given character position in a line
Sourcepub fn find_fixture_references(&self, fixture_name: &str) -> Vec<FixtureUsage>
pub fn find_fixture_references(&self, fixture_name: &str) -> Vec<FixtureUsage>
Find all references (usages) of a fixture by name
Sourcepub fn find_references_for_definition(
&self,
definition: &FixtureDefinition,
) -> Vec<FixtureUsage>
pub fn find_references_for_definition( &self, definition: &FixtureDefinition, ) -> Vec<FixtureUsage>
Find all references that resolve to a specific fixture definition
Sourcepub fn get_undeclared_fixtures(
&self,
file_path: &Path,
) -> Vec<UndeclaredFixture>
pub fn get_undeclared_fixtures( &self, file_path: &Path, ) -> Vec<UndeclaredFixture>
Get all undeclared fixture usages for a file
Sourcepub fn get_available_fixtures(&self, file_path: &Path) -> Vec<FixtureDefinition>
pub fn get_available_fixtures(&self, file_path: &Path) -> Vec<FixtureDefinition>
Get all available fixtures for a given file
Sourcepub fn get_completion_context(
&self,
file_path: &Path,
line: u32,
character: u32,
) -> Option<CompletionContext>
pub fn get_completion_context( &self, file_path: &Path, line: u32, character: u32, ) -> Option<CompletionContext>
Get the completion context for a given position
Sourcepub fn get_function_param_insertion_info(
&self,
file_path: &Path,
function_line: usize,
) -> Option<ParamInsertionInfo>
pub fn get_function_param_insertion_info( &self, file_path: &Path, function_line: usize, ) -> Option<ParamInsertionInfo>
Get information about where to insert a new parameter in a function signature
Source§impl FixtureDatabase
impl FixtureDatabase
Sourcepub fn scan_workspace(&self, root_path: &Path)
pub fn scan_workspace(&self, root_path: &Path)
Scan a workspace directory for test files and conftest.py files.
Trait Implementations§
Source§impl Debug for FixtureDatabase
impl Debug for FixtureDatabase
Auto Trait Implementations§
impl Freeze for FixtureDatabase
impl !RefUnwindSafe for FixtureDatabase
impl Send for FixtureDatabase
impl Sync for FixtureDatabase
impl Unpin for FixtureDatabase
impl !UnwindSafe for FixtureDatabase
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more