#!/usr/bin/env python3
# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved
import os
from pytext.utils.file_io import PathManager
[docs]def get_pytext_home():
internal_home = os.path.realpath(os.path.join(__file__, "../../"))
oss_home = os.path.realpath(os.path.join(__file__, "../../../"))
default_home = ""
# use tests as anchor which will always in PYTEXT_HOME/tests
if PathManager.exists(os.path.join(internal_home, "tests")):
default_home = internal_home
elif PathManager.exists(os.path.join(oss_home, "tests")):
default_home = oss_home
else:
# when PyText is used as a module and packed as part of a single file X
# __file__ will be path of X instead of path.py
# in these case, PYTEXT_HOME will be the parent folder of X
default_home = os.path.dirname(__file__)
pytext_home = os.environ.get("PYTEXT_HOME", default_home)
return pytext_home
# relateive path in PyText is either based on PYTEXT_HOME or current work directory
PYTEXT_HOME = get_pytext_home()
[docs]def get_absolute_path(file_path: str) -> str:
if os.path.isabs(file_path):
return file_path
absolute_path = os.path.realpath(os.path.join(PYTEXT_HOME, file_path))
if PathManager.exists(absolute_path):
return absolute_path
return file_path
[docs]def is_absolute_path(file_path: str) -> bool:
if file_path:
return file_path.startswith("/") or file_path.startswith("manifold://")
else:
return False