Reject manifest metadata as storage paths
This commit is contained in:
@@ -143,18 +143,37 @@ def _iter_strings(value: Any) -> Iterable[str]:
|
||||
yield from _iter_strings(nested)
|
||||
|
||||
|
||||
def _manifest_key_is_path(key: str) -> bool:
|
||||
exact = {
|
||||
"path",
|
||||
"paths",
|
||||
"file",
|
||||
"files",
|
||||
"filename",
|
||||
"filenames",
|
||||
"artifact",
|
||||
"artifacts",
|
||||
"manifest",
|
||||
"manifests",
|
||||
"storage_path",
|
||||
"source_tile_path",
|
||||
"mask_path",
|
||||
"output_path",
|
||||
}
|
||||
return key in exact or key.endswith(("_path", "_paths", "_file", "_files", "_filename", "_filenames"))
|
||||
|
||||
|
||||
def _iter_manifest_path_values(value: Any, parent_key: str = "") -> Iterable[str]:
|
||||
path_tokens = ("path", "file", "artifact", "manifest", "output")
|
||||
if isinstance(value, dict):
|
||||
for key, nested in value.items():
|
||||
normalized_key = str(key).strip().lower()
|
||||
if isinstance(nested, str) and any(token in normalized_key for token in path_tokens):
|
||||
if isinstance(nested, str) and _manifest_key_is_path(normalized_key):
|
||||
yield nested
|
||||
else:
|
||||
yield from _iter_manifest_path_values(nested, normalized_key)
|
||||
elif isinstance(value, (list, tuple)):
|
||||
for nested in value:
|
||||
if isinstance(nested, str) and any(token in parent_key for token in path_tokens):
|
||||
if isinstance(nested, str) and _manifest_key_is_path(parent_key):
|
||||
yield nested
|
||||
else:
|
||||
yield from _iter_manifest_path_values(nested, parent_key)
|
||||
|
||||
Reference in New Issue
Block a user