@@ -46,7 +46,7 @@ def _patched_adapter_accessor(config: t.Any) -> t.Any:
4646from dbt .contracts .graph .nodes import ManifestNode , SourceDefinition
4747from dbt .flags import set_from_args
4848from dbt .parser .manifest import ManifestLoader , process_node
49- from dbt .parser .read_files import FileDiff , InputFile
49+ from dbt .parser .read_files import FileDiff , InputFile , ReadFilesFromFileSystem
5050from dbt .parser .sql import SqlBlockParser , SqlMacroParser
5151from dbt .task .sql import SqlCompileRunner
5252from dbt .tracking import disable_tracking
@@ -62,7 +62,13 @@ def _patched_adapter_accessor(config: t.Any) -> t.Any:
6262
6363
6464disable_tracking ()
65- set_invocation_context (get_env ())
65+
66+
67+ def _set_invocation_context () -> None :
68+ set_invocation_context (get_env ())
69+
70+
71+ _set_invocation_context ()
6672
6773logger = logging .getLogger (__name__ )
6874logger .setLevel (logging .DEBUG )
@@ -267,6 +273,8 @@ def __repr__(self) -> str: # pyright: ignore[reportImplicitOverride]
267273 """Return a string representation of the DbtProject instance."""
268274 return f"DbtProject(name={ self .project_name } , root={ self .project_root } , last_parsed_at={ self ._last_parsed_at } )"
269275
276+ set_invocation_context = staticmethod (_set_invocation_context )
277+
270278 @classmethod
271279 def from_config (cls , config : DbtConfiguration ) -> DbtProject :
272280 """Create project from configuration."""
@@ -417,6 +425,14 @@ def create_adapter(
417425
418426 return self ._adapter
419427
428+ def create_reader (self ) -> ReadFilesFromFileSystem :
429+ """Create a file reader for the project."""
430+ return ReadFilesFromFileSystem (
431+ all_projects = self .runtime_config .load_dependencies (),
432+ files = {},
433+ saved_files = self .manifest .files ,
434+ )
435+
420436 def parse_project (
421437 self , write_manifest : bool = False , reparse_configuration : bool = False
422438 ) -> None :
0 commit comments