in o2a/utils/el_utils.py [0:0]
def normalize_path(url: str, props: PropertySet, allow_no_schema=False, translated=False) -> str:
"""
Transforms url by replacing EL-expression with equivalent jinja templates
and returns only the path part of the url. If schema validation is
required then props should include proper name-node. If translated is set to True
then passed url is supposed to be a valid jinja expression.
For example:
input: '{$nameNode}/users/{$userName}/dir
url_with_var: `{{nameNode}}/users/{{userName}}/dir
In this case to validate url schema props should contain `nameNode` value.
"""
url_with_var = url if translated else el_parser.translate(url)
name_node, shift = _resolve_name_node(url_with_var, props)
if name_node:
url_parts = urlparse(name_node)
output = url_with_var[shift:]
else:
url_parts = urlparse(url_with_var)
output = url_parts.path
allowed_schemas = {"hdfs", ""} if allow_no_schema else {"hdfs"}
if url_parts.scheme not in allowed_schemas:
raise ParseException(
f"Unknown path format. The URL should be provided in the following format: "
f"hdfs://localhost:9200/path. Current value: {url_with_var}"
)
return output