MCPcopy
hub / github.com/encode/starlette / get_directories

Method get_directories

starlette/staticfiles.py:58–85  ·  view source on GitHub ↗

Given `directory` and `packages` arguments, return a list of all the directories that should be used for serving static files from.

(
        self,
        directory: PathLike | None = None,
        packages: list[str | tuple[str, str]] | None = None,
    )

Source from the content-addressed store, hash-verified

56 raise RuntimeError(f"Directory '{directory}' does not exist")
57
58 def get_directories(
59 self,
60 directory: PathLike | None = None,
61 packages: list[str | tuple[str, str]] | None = None,
62 ) -> list[PathLike]:
63 """
64 Given `directory` and `packages` arguments, return a list of all the
65 directories that should be used for serving static files from.
66 """
67 directories = []
68 if directory is not None:
69 directories.append(directory)
70
71 for package in packages or []:
72 if isinstance(package, tuple):
73 package, statics_dir = package
74 else:
75 statics_dir = "statics"
76 spec = importlib.util.find_spec(package)
77 assert spec is not None, f"Package {package!r} could not be found."
78 assert spec.origin is not None, f"Package {package!r} could not be found."
79 package_directory = os.path.normpath(os.path.join(spec.origin, "..", statics_dir))
80 assert os.path.isdir(package_directory), (
81 f"Directory '{statics_dir!r}' in package {package!r} could not be found."
82 )
83 directories.append(package_directory)
84
85 return directories
86
87 async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None:
88 """

Callers 1

__init__Method · 0.95

Calls 1

appendMethod · 0.45

Tested by

no test coverage detected