Source code for latch_cli.services.cp.glob
import re
from typing import List
from latch_cli.services.cp.utils import _get_immediate_children_of_node
from latch_cli.utils import urljoins
[docs]def expand_pattern(remote_path: str) -> List[str]:
parent, pattern = tuple(remote_path.rsplit("/", 1))
if "*" not in pattern:
return [remote_path]
pattern_re = re.compile(re.escape(pattern).replace(r"\*", r".*"))
children = _get_immediate_children_of_node(parent)
res: List[str] = []
for child in children:
if not pattern_re.match(child):
continue
res.append(urljoins(parent, child))
return res