Revert "[BE][Easy] use pathlib.Path instead of dirname / ".." / pardir (#129374)"

This reverts commit 9e1f3ecaa7.

Reverted https://github.com/pytorch/pytorch/pull/129374 on behalf of https://github.com/huydhn due to Sorry for reverting your change but it is still failing with the same error ([comment](https://github.com/pytorch/pytorch/pull/129374#issuecomment-2197801405))
This commit is contained in:
PyTorch MergeBot 2024-06-29 00:47:14 +00:00
parent c0782e7c81
commit 3d96217891
55 changed files with 142 additions and 161 deletions

View File

@ -5,9 +5,8 @@ import sys
import yaml import yaml
# Need to import modules that lie on an upward-relative path # Need to import modules that lie on an upward-relative path
sys.path.append(os.path.dirname(sys.path[0])) sys.path.append(os.path.join(sys.path[0], ".."))
import cimodel.lib.miniyaml as miniyaml import cimodel.lib.miniyaml as miniyaml

View File

@ -9,7 +9,6 @@ from typing import Any, Callable, Dict, List, Set
from github_utils import gh_fetch_json_dict, gh_graphql from github_utils import gh_fetch_json_dict, gh_graphql
from gitutils import GitRepo from gitutils import GitRepo
SEC_IN_DAY = 24 * 60 * 60 SEC_IN_DAY = 24 * 60 * 60
CLOSED_PR_RETENTION = 30 * SEC_IN_DAY CLOSED_PR_RETENTION = 30 * SEC_IN_DAY
NO_PR_RETENTION = 1.5 * 365 * SEC_IN_DAY NO_PR_RETENTION = 1.5 * 365 * SEC_IN_DAY
@ -22,7 +21,7 @@ TOKEN = os.environ["GITHUB_TOKEN"]
if not TOKEN: if not TOKEN:
raise Exception("GITHUB_TOKEN is not set") # noqa: TRY002 raise Exception("GITHUB_TOKEN is not set") # noqa: TRY002
REPO_ROOT = Path(__file__).parents[2] REPO_ROOT = Path(__file__).parent.parent.parent
# Query for all PRs instead of just closed/merged because it's faster # Query for all PRs instead of just closed/merged because it's faster
GRAPHQL_ALL_PRS_BY_UPDATED_AT = """ GRAPHQL_ALL_PRS_BY_UPDATED_AT = """

View File

@ -1,12 +1,13 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
import sys import sys
from pathlib import Path from pathlib import Path
import yaml import yaml
REPO_ROOT = Path(__file__).resolve().parents[2] REPO_ROOT = Path(__file__).resolve().parent.parent.parent
WORKFLOWS = REPO_ROOT / ".github" / "workflows" WORKFLOWS = REPO_ROOT / ".github" / "workflows"
EXPECTED_GROUP_PREFIX = ( EXPECTED_GROUP_PREFIX = (
"${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}" "${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}"

View File

@ -13,7 +13,6 @@ architectures:
import os import os
from typing import Dict, List, Optional, Tuple from typing import Dict, List, Optional, Tuple
CUDA_ARCHES = ["11.8", "12.1", "12.4"] CUDA_ARCHES = ["11.8", "12.1", "12.4"]
@ -86,7 +85,7 @@ def get_nccl_submodule_version() -> str:
from pathlib import Path from pathlib import Path
nccl_version_mk = ( nccl_version_mk = (
Path(__file__).absolute().parents[2] Path(__file__).absolute().parent.parent.parent
/ "third_party" / "third_party"
/ "nccl" / "nccl"
/ "nccl" / "nccl"

View File

@ -19,7 +19,6 @@ from typing import (
Union, Union,
) )
T = TypeVar("T") T = TypeVar("T")
RE_GITHUB_URL_MATCH = re.compile("^https://.*@?github.com/(.+)/(.+)$") RE_GITHUB_URL_MATCH = re.compile("^https://.*@?github.com/(.+)/(.+)$")
@ -32,7 +31,7 @@ def get_git_remote_name() -> str:
def get_git_repo_dir() -> str: def get_git_repo_dir() -> str:
from pathlib import Path from pathlib import Path
return os.getenv("GIT_REPO_DIR", str(Path(__file__).resolve().parents[2])) return os.getenv("GIT_REPO_DIR", str(Path(__file__).resolve().parent.parent.parent))
def fuzzy_list_to_dict(items: List[Tuple[str, str]]) -> Dict[str, List[str]]: def fuzzy_list_to_dict(items: List[Tuple[str, str]]) -> Dict[str, List[str]]:

View File

@ -26,7 +26,7 @@ def fn(base: str) -> str:
return str(base / Path("aten/src/ATen/native/native_functions.yaml")) return str(base / Path("aten/src/ATen/native/native_functions.yaml"))
with open(Path(__file__).parents[2] / fn(".")) as f: with open(Path(__file__).parent.parent.parent / fn(".")) as f:
contents = f.read() contents = f.read()
yaml = ruamel.yaml.YAML() # type: ignore[attr-defined] yaml = ruamel.yaml.YAML() # type: ignore[attr-defined]

View File

@ -68,7 +68,7 @@ class TestRetriesDecorator(TestCase):
class TestGitRepo(TestCase): class TestGitRepo(TestCase):
def setUp(self) -> None: def setUp(self) -> None:
repo_dir = BASE_DIR.absolute().parent.parent repo_dir = BASE_DIR.parent.parent.absolute()
if not (repo_dir / ".git").is_dir(): if not (repo_dir / ".git").is_dir():
raise SkipTest( raise SkipTest(
"Can't find git directory, make sure to run this test on real repo checkout" "Can't find git directory, make sure to run this test on real repo checkout"

View File

@ -18,24 +18,23 @@ Known limitations:
import argparse import argparse
import json import json
import os import os
import pathlib
import subprocess import subprocess
import sys import sys
import urllib import urllib
from io import BytesIO from io import BytesIO
from itertools import product from itertools import product
from pathlib import Path
from urllib.request import urlopen from urllib.request import urlopen
from zipfile import ZipFile from zipfile import ZipFile
import pandas as pd import pandas as pd
import requests import requests
# Note: the public query url targets this rockset lambda: # Note: the public query url targets this rockset lambda:
# https://console.rockset.com/lambdas/details/commons.artifacts # https://console.rockset.com/lambdas/details/commons.artifacts
ARTIFACTS_QUERY_URL = "https://api.usw2a1.rockset.com/v1/public/shared_lambdas/4ca0033e-0117-41f5-b043-59cde19eff35" ARTIFACTS_QUERY_URL = "https://api.usw2a1.rockset.com/v1/public/shared_lambdas/4ca0033e-0117-41f5-b043-59cde19eff35"
CSV_LINTER = str( CSV_LINTER = str(
Path(__file__).absolute().parents[3] pathlib.Path(__file__).absolute().parent.parent.parent.parent
/ "tools/linter/adapters/no_merge_conflict_csv_linter.py" / "tools/linter/adapters/no_merge_conflict_csv_linter.py"
) )

View File

@ -4,12 +4,12 @@ from pathlib import Path
import torch import torch
import torch._prims as prims import torch._prims as prims
from torchgen.gen import parse_native_yaml from torchgen.gen import parse_native_yaml
ROOT = Path(__file__).absolute().parent.parent.parent.parent
ROOT = Path(__file__).absolute().parents[3] NATIVE_FUNCTION_YAML_PATH = ROOT / Path("aten/src/ATen/native/native_functions.yaml")
NATIVE_FUNCTION_YAML_PATH = ROOT / "aten/src/ATen/native/native_functions.yaml" TAGS_YAML_PATH = ROOT / Path("aten/src/ATen/native/tags.yaml")
TAGS_YAML_PATH = ROOT / "aten/src/ATen/native/tags.yaml"
BUILD_DIR = "build/ir" BUILD_DIR = "build/ir"
ATEN_OPS_CSV_FILE = "aten_ops.csv" ATEN_OPS_CSV_FILE = "aten_ops.csv"

View File

@ -15,7 +15,7 @@ from torch.ao.quantization.backend_config.utils import (
# Create a directory for the images, if it doesn't exist # Create a directory for the images, if it doesn't exist
QUANTIZATION_BACKEND_CONFIG_IMAGE_PATH = os.path.join( QUANTIZATION_BACKEND_CONFIG_IMAGE_PATH = os.path.join(
os.path.realpath(os.path.dirname(__file__)), "quantization_backend_configs" os.path.realpath(os.path.join(__file__, "..")), "quantization_backend_configs"
) )
if not os.path.exists(QUANTIZATION_BACKEND_CONFIG_IMAGE_PATH): if not os.path.exists(QUANTIZATION_BACKEND_CONFIG_IMAGE_PATH):

View File

@ -5,15 +5,16 @@ from pathlib import Path
import torch import torch
import torch._dynamo as torchdynamo import torch._dynamo as torchdynamo
from torch._export.db.case import ExportCase, normalize_inputs from torch._export.db.case import ExportCase, normalize_inputs
from torch._export.db.examples import all_examples from torch._export.db.examples import all_examples
from torch.export import export from torch.export import export
PWD = Path(__file__).absolute().parent PWD = Path(__file__).absolute().parent
ROOT = Path(__file__).absolute().parents[3] ROOT = Path(__file__).absolute().parent.parent.parent.parent
SOURCE = ROOT / "source" SOURCE = ROOT / Path("source")
EXPORTDB_SOURCE = SOURCE / "generated" / "exportdb" EXPORTDB_SOURCE = SOURCE / Path("generated") / Path("exportdb")
def generate_example_rst(example_case: ExportCase): def generate_example_rst(example_case: ExportCase):

View File

@ -1,8 +1,8 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
import argparse import argparse
import os import os
import pathlib
import subprocess import subprocess
from pathlib import Path
from common import ( from common import (
get_testcases, get_testcases,
@ -12,8 +12,8 @@ from common import (
key, key,
open_test_results, open_test_results,
) )
from download_reports import download_reports
from download_reports import download_reports
""" """
Usage: update_failures.py /path/to/dynamo_test_failures.py /path/to/test commit_sha Usage: update_failures.py /path/to/dynamo_test_failures.py /path/to/test commit_sha
@ -194,7 +194,7 @@ if __name__ == "__main__":
"filename", "filename",
nargs="?", nargs="?",
default=str( default=str(
Path(__file__).absolute().parents[2] pathlib.Path(__file__).absolute().parent.parent.parent
/ "torch/testing/_internal/dynamo_test_failures.py" / "torch/testing/_internal/dynamo_test_failures.py"
), ),
help="Optional path to dynamo_test_failures.py", help="Optional path to dynamo_test_failures.py",
@ -203,7 +203,7 @@ if __name__ == "__main__":
parser.add_argument( parser.add_argument(
"test_dir", "test_dir",
nargs="?", nargs="?",
default=str(Path(__file__).absolute().parents[2] / "test"), default=str(pathlib.Path(__file__).absolute().parent.parent.parent / "test"),
help="Optional path to test folder", help="Optional path to test folder",
) )
parser.add_argument( parser.add_argument(
@ -219,7 +219,7 @@ if __name__ == "__main__":
action="store_true", action="store_true",
) )
args = parser.parse_args() args = parser.parse_args()
assert Path(args.filename).exists(), args.filename assert pathlib.Path(args.filename).exists(), args.filename
assert Path(args.test_dir).exists(), args.test_dir assert pathlib.Path(args.test_dir).exists(), args.test_dir
dynamo38, dynamo311 = download_reports(args.commit, ("dynamo38", "dynamo311")) dynamo38, dynamo311 = download_reports(args.commit, ("dynamo38", "dynamo311"))
update(args.filename, args.test_dir, dynamo38, dynamo311, args.also_remove_skips) update(args.filename, args.test_dir, dynamo38, dynamo311, args.also_remove_skips)

View File

@ -5,13 +5,12 @@ import zipfile
from pathlib import Path from pathlib import Path
from typing import Set from typing import Set
import torch
# Use asterisk symbol so developer doesn't need to import here when they add tests for upgraders. # Use asterisk symbol so developer doesn't need to import here when they add tests for upgraders.
from test.jit.fixtures_srcs.fixtures_src import * # noqa: F403 from test.jit.fixtures_srcs.fixtures_src import * # noqa: F403
import torch
from torch.jit.mobile import _export_operator_list, _load_for_lite_interpreter from torch.jit.mobile import _export_operator_list, _load_for_lite_interpreter
logging.basicConfig(stream=sys.stdout, level=logging.INFO) logging.basicConfig(stream=sys.stdout, level=logging.INFO)
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG) logger.setLevel(logging.DEBUG)

View File

@ -9,7 +9,6 @@ import torch
import torch._C import torch._C
from torch.testing._internal.common_utils import IS_FBCODE, skipIfTorchDynamo from torch.testing._internal.common_utils import IS_FBCODE, skipIfTorchDynamo
# hacky way to skip these tests in fbcode: # hacky way to skip these tests in fbcode:
# during test execution in fbcode, test_nnapi is available during test discovery, # during test execution in fbcode, test_nnapi is available during test discovery,
# but not during test execution. So we can't try-catch here, otherwise it'll think # but not during test execution. So we can't try-catch here, otherwise it'll think
@ -41,7 +40,7 @@ Inherits most tests from TestNNAPI, which loads Android NNAPI models
without the delegate API. without the delegate API.
""" """
# First skip is needed for IS_WINDOWS or IS_MACOS to skip the tests. # First skip is needed for IS_WINDOWS or IS_MACOS to skip the tests.
torch_root = Path(__file__).resolve().parents[2] torch_root = Path(__file__).resolve().parent.parent.parent
lib_path = torch_root / "build" / "lib" / "libnnapi_backend.so" lib_path = torch_root / "build" / "lib" / "libnnapi_backend.so"

View File

@ -20,7 +20,6 @@ from torch.jit.mobile import (
) )
from torch.testing._internal.common_utils import run_tests, TestCase from torch.testing._internal.common_utils import run_tests, TestCase
pytorch_test_dir = Path(__file__).resolve().parents[1] pytorch_test_dir = Path(__file__).resolve().parents[1]
# script_module_v4.ptl and script_module_v5.ptl source code # script_module_v4.ptl and script_module_v5.ptl source code

View File

@ -6,8 +6,8 @@ from pathlib import Path
from torch.jit.generate_bytecode import generate_upgraders_bytecode from torch.jit.generate_bytecode import generate_upgraders_bytecode
from torch.testing._internal.common_utils import run_tests, TestCase from torch.testing._internal.common_utils import run_tests, TestCase
from torchgen.operator_versions.gen_mobile_upgraders import sort_upgrader, write_cpp
from torchgen.operator_versions.gen_mobile_upgraders import sort_upgrader, write_cpp
pytorch_caffe2_dir = Path(__file__).resolve().parents[2] pytorch_caffe2_dir = Path(__file__).resolve().parents[2]

View File

@ -6,10 +6,10 @@ from pathlib import Path
import torch import torch
import torch.utils.bundled_inputs import torch.utils.bundled_inputs
from torch.jit.mobile import _load_for_lite_interpreter from torch.jit.mobile import _load_for_lite_interpreter
from torch.testing._internal.common_utils import run_tests, TestCase from torch.testing._internal.common_utils import run_tests, TestCase
pytorch_test_dir = Path(__file__).resolve().parents[1] pytorch_test_dir = Path(__file__).resolve().parents[1]

View File

@ -3,6 +3,7 @@
from __future__ import annotations from __future__ import annotations
import contextlib import contextlib
import copy import copy
import dataclasses import dataclasses
import io import io
@ -25,6 +26,7 @@ from typing import (
) )
import numpy as np import numpy as np
import onnxruntime import onnxruntime
import pytest import pytest
import pytorch_test_common import pytorch_test_common
@ -38,7 +40,6 @@ from torch.testing._internal import common_utils
from torch.testing._internal.opinfo import core as opinfo_core from torch.testing._internal.opinfo import core as opinfo_core
from torch.types import Number from torch.types import Number
_NumericType = Union[Number, torch.Tensor, np.ndarray] _NumericType = Union[Number, torch.Tensor, np.ndarray]
_ModelType = Union[torch.nn.Module, Callable, torch_export.ExportedProgram] _ModelType = Union[torch.nn.Module, Callable, torch_export.ExportedProgram]
_InputArgsType = Optional[ _InputArgsType = Optional[
@ -47,7 +48,8 @@ _InputArgsType = Optional[
_OutputsType = Sequence[_NumericType] _OutputsType = Sequence[_NumericType]
onnx_model_dir = os.path.join( onnx_model_dir = os.path.join(
os.path.dirname(os.path.dirname(os.path.realpath(__file__))), os.path.dirname(os.path.realpath(__file__)),
os.pardir,
"repos", "repos",
"onnx", "onnx",
"onnx", "onnx",
@ -55,7 +57,11 @@ onnx_model_dir = os.path.join(
"test", "test",
"data", "data",
) )
pytorch_converted_dir = os.path.join(onnx_model_dir, "pytorch-converted") pytorch_converted_dir = os.path.join(onnx_model_dir, "pytorch-converted")
pytorch_operator_dir = os.path.join(onnx_model_dir, "pytorch-operator") pytorch_operator_dir = os.path.join(onnx_model_dir, "pytorch-operator")

View File

@ -50,7 +50,7 @@ class TestQuantizationDocs(QuantizationTestCase):
"been updated to have the correct relative path between " "been updated to have the correct relative path between "
"test_docs.py and the docs." "test_docs.py and the docs."
) )
pytorch_root = core_dir.parents[2] pytorch_root = core_dir.parent.parent.parent
return pytorch_root / path_from_pytorch return pytorch_root / path_from_pytorch
path_to_file = get_correct_path(path_from_pytorch) path_to_file = get_correct_path(path_from_pytorch)

View File

@ -5,6 +5,7 @@ import itertools
import os import os
import re import re
import shutil import shutil
import unittest import unittest
from collections import defaultdict from collections import defaultdict
from threading import Lock from threading import Lock
@ -17,7 +18,6 @@ from torch.testing._internal.common_utils import (
TestCase, TestCase,
) )
try: try:
from mypy import api from mypy import api
except ImportError: except ImportError:
@ -30,7 +30,7 @@ DATA_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), "typing"))
REVEAL_DIR = os.path.join(DATA_DIR, "reveal") REVEAL_DIR = os.path.join(DATA_DIR, "reveal")
PASS_DIR = os.path.join(DATA_DIR, "pass") PASS_DIR = os.path.join(DATA_DIR, "pass")
FAIL_DIR = os.path.join(DATA_DIR, "fail") FAIL_DIR = os.path.join(DATA_DIR, "fail")
MYPY_INI = os.path.join(os.path.dirname(os.path.dirname(DATA_DIR)), "mypy.ini") MYPY_INI = os.path.join(DATA_DIR, os.pardir, os.pardir, "mypy.ini")
CACHE_DIR = os.path.join(DATA_DIR, ".mypy_cache") CACHE_DIR = os.path.join(DATA_DIR, ".mypy_cache")

View File

@ -4,15 +4,17 @@
import argparse import argparse
import os import os
import sys import sys
from pathlib import Path
sys.path.append(
REPO_ROOT = Path(__file__).absolute().parents[2] os.path.realpath(
sys.path.append(str(REPO_ROOT / "torch" / "utils")) os.path.join(
__file__, os.path.pardir, os.path.pardir, os.path.pardir, "torch", "utils"
)
)
)
from hipify import hipify_python # type: ignore[import] from hipify import hipify_python # type: ignore[import]
parser = argparse.ArgumentParser( parser = argparse.ArgumentParser(
description="Top-level script for HIPifying, filling in most common parameters" description="Top-level script for HIPifying, filling in most common parameters"
) )
@ -50,7 +52,7 @@ parser.add_argument(
args = parser.parse_args() args = parser.parse_args()
amd_build_dir = os.path.dirname(os.path.realpath(__file__)) amd_build_dir = os.path.dirname(os.path.realpath(__file__))
proj_dir = os.path.dirname(os.path.dirname(amd_build_dir)) proj_dir = os.path.join(os.path.dirname(os.path.dirname(amd_build_dir)))
if args.project_directory: if args.project_directory:
proj_dir = args.project_directory proj_dir = args.project_directory

View File

@ -1,18 +1,16 @@
import argparse import argparse
import sys import sys
from pathlib import Path from os.path import abspath, dirname
# By appending pytorch_root to sys.path, this module can import other torch
# By appending REPO_ROOT to sys.path, this module can import other torch
# modules even when run as a standalone script. i.e., it's okay either you # modules even when run as a standalone script. i.e., it's okay either you
# do `python build_libtorch.py` or `python -m tools.build_libtorch`. # do `python build_libtorch.py` or `python -m tools.build_libtorch`.
REPO_ROOT = Path(__file__).absolute().parent.parent pytorch_root = dirname(dirname(abspath(__file__)))
sys.path.append(str(REPO_ROOT)) sys.path.append(pytorch_root)
from tools.build_pytorch_libs import build_caffe2 from tools.build_pytorch_libs import build_caffe2
from tools.setup_helpers.cmake import CMake from tools.setup_helpers.cmake import CMake
if __name__ == "__main__": if __name__ == "__main__":
# Placeholder for future interface. For now just gives a nice -h. # Placeholder for future interface. For now just gives a nice -h.
parser = argparse.ArgumentParser(description="Build libtorch") parser = argparse.ArgumentParser(description="Build libtorch")

View File

@ -42,7 +42,9 @@ def get_llvm_tool_path() -> str:
def get_pytorch_folder() -> str: def get_pytorch_folder() -> str:
# TOOLS_FOLDER in oss: pytorch/tools/code_coverage # TOOLS_FOLDER in oss: pytorch/tools/code_coverage
return os.path.abspath( return os.path.abspath(
os.environ.get("PYTORCH_FOLDER", os.path.dirname(os.path.dirname(TOOLS_FOLDER))) os.environ.get(
"PYTORCH_FOLDER", os.path.join(TOOLS_FOLDER, os.path.pardir, os.path.pardir)
)
) )

View File

@ -1,12 +1,13 @@
import os import os
from enum import Enum from enum import Enum
from pathlib import Path
from typing import Dict, List, Set from typing import Dict, List, Set
# <project folder> # <project folder>
HOME_DIR = os.environ["HOME"] HOME_DIR = os.environ["HOME"]
TOOLS_FOLDER = str(Path(__file__).resolve().parents[2]) TOOLS_FOLDER = os.path.join(
os.path.dirname(os.path.realpath(__file__)), os.path.pardir, os.path.pardir
)
# <profile folder> # <profile folder>

View File

@ -8,28 +8,24 @@ import glob
import io import io
import os import os
import re import re
import subprocess
import sys import sys
from itertools import product
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
import subprocess
import textwrap import textwrap
from dataclasses import dataclass from dataclasses import dataclass
from itertools import product
from pathlib import Path
from typing import Any, Dict, List, Optional, Set, Tuple, Union from typing import Any, Dict, List, Optional, Set, Tuple, Union
import yaml import yaml
from yaml.constructor import ConstructorError from yaml.constructor import ConstructorError
from yaml.nodes import MappingNode from yaml.nodes import MappingNode
try: try:
from yaml import CLoader as Loader from yaml import CLoader as Loader
except ImportError: except ImportError:
from yaml import Loader # type: ignore[assignment, misc] from yaml import Loader # type: ignore[assignment, misc]
REPO_ROOT = Path(__file__).absolute().parent.parent
sys.path.append(str(REPO_ROOT))
CPP_H_NAME = "spv.h" CPP_H_NAME = "spv.h"
CPP_SRC_NAME = "spv.cpp" CPP_SRC_NAME = "spv.cpp"

View File

@ -11,7 +11,6 @@ import urllib.error
import urllib.request import urllib.request
from pathlib import Path from pathlib import Path
# String representing the host platform (e.g. Linux, Darwin). # String representing the host platform (e.g. Linux, Darwin).
HOST_PLATFORM = platform.system() HOST_PLATFORM = platform.system()
HOST_PLATFORM_ARCH = platform.system() + "-" + platform.processor() HOST_PLATFORM_ARCH = platform.system() + "-" + platform.processor()
@ -26,7 +25,10 @@ try:
PYTORCH_ROOT = result.stdout.decode("utf-8").strip() PYTORCH_ROOT = result.stdout.decode("utf-8").strip()
except subprocess.CalledProcessError: except subprocess.CalledProcessError:
# If git is not installed, compute repo root as 3 folders up from this file # If git is not installed, compute repo root as 3 folders up from this file
PYTORCH_ROOT = str(Path(__file__).absolute().parents[3]) path_ = os.path.abspath(__file__)
for _ in range(4):
path_ = os.path.dirname(path_)
PYTORCH_ROOT = path_
DRY_RUN = False DRY_RUN = False

View File

@ -12,10 +12,10 @@ Run with no arguments.
import argparse import argparse
import datetime import datetime
import os import os
import pathlib
import re import re
import subprocess import subprocess
import sys import sys
from pathlib import Path
from subprocess import DEVNULL from subprocess import DEVNULL
from typing import Any from typing import Any
@ -30,7 +30,7 @@ def read_sub_write(path: str, prefix_pat: str, new_default: int) -> None:
def main(args: Any) -> None: def main(args: Any) -> None:
pytorch_dir = Path(__file__).parents[2].resolve() pytorch_dir = pathlib.Path(__file__).parent.parent.parent.resolve()
onnx_dir = pytorch_dir / "third_party" / "onnx" onnx_dir = pytorch_dir / "third_party" / "onnx"
os.chdir(onnx_dir) os.chdir(onnx_dir)

View File

@ -7,7 +7,6 @@ import platform
import sys import sys
import sysconfig import sysconfig
from distutils.version import LooseVersion from distutils.version import LooseVersion
from pathlib import Path
from subprocess import CalledProcessError, check_call, check_output from subprocess import CalledProcessError, check_call, check_output
from typing import Any, cast, Dict, List, Optional from typing import Any, cast, Dict, List, Optional
@ -173,7 +172,9 @@ class CMake:
toolset_expr = ",".join([f"{k}={v}" for k, v in toolset_dict.items()]) toolset_expr = ",".join([f"{k}={v}" for k, v in toolset_dict.items()])
args.append("-T" + toolset_expr) args.append("-T" + toolset_expr)
base_dir = str(Path(__file__).absolute().parents[2]) base_dir = os.path.dirname(
os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
)
install_dir = os.path.join(base_dir, "torch") install_dir = os.path.join(base_dir, "torch")
_mkdir_p(install_dir) _mkdir_p(install_dir)

View File

@ -1,13 +1,11 @@
# Little stub file to get BUILD.bazel to play along # Little stub file to get BUILD.bazel to play along
import os.path
import sys import sys
from pathlib import Path
root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
REPO_ROOT = Path(__file__).absolute().parents[2] sys.path.insert(0, root)
sys.path.insert(0, str(REPO_ROOT))
import torchgen.gen import torchgen.gen
torchgen.gen.main() torchgen.gen.main()

View File

@ -1,13 +1,11 @@
# Little stub file to get BUILD.bazel to play along # Little stub file to get BUILD.bazel to play along
import os.path
import sys import sys
from pathlib import Path
root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
REPO_ROOT = Path(__file__).absolute().parents[2] sys.path.insert(0, root)
sys.path.insert(0, str(REPO_ROOT))
import tools.jit.gen_unboxing import tools.jit.gen_unboxing
tools.jit.gen_unboxing.main(sys.argv[1:]) tools.jit.gen_unboxing.main(sys.argv[1:])

View File

@ -1,25 +1,23 @@
import argparse import argparse
import os import os
import pathlib
import sys import sys
from pathlib import Path
from typing import Any, cast, Optional from typing import Any, cast, Optional
import yaml import yaml
try: try:
# use faster C loader if available # use faster C loader if available
from yaml import CSafeLoader as YamlLoader from yaml import CSafeLoader as YamlLoader
except ImportError: except ImportError:
from yaml import SafeLoader as YamlLoader # type: ignore[assignment, misc] from yaml import SafeLoader as YamlLoader # type: ignore[assignment, misc]
NATIVE_FUNCTIONS_PATH = "aten/src/ATen/native/native_functions.yaml" NATIVE_FUNCTIONS_PATH = "aten/src/ATen/native/native_functions.yaml"
TAGS_PATH = "aten/src/ATen/native/tags.yaml" TAGS_PATH = "aten/src/ATen/native/tags.yaml"
def generate_code( def generate_code(
gen_dir: Path, gen_dir: pathlib.Path,
native_functions_path: Optional[str] = None, native_functions_path: Optional[str] = None,
tags_path: Optional[str] = None, tags_path: Optional[str] = None,
install_dir: Optional[str] = None, install_dir: Optional[str] = None,
@ -30,7 +28,6 @@ def generate_code(
) -> None: ) -> None:
from tools.autograd.gen_annotated_fn_args import gen_annotated from tools.autograd.gen_annotated_fn_args import gen_annotated
from tools.autograd.gen_autograd import gen_autograd, gen_autograd_python from tools.autograd.gen_autograd import gen_autograd, gen_autograd_python
from torchgen.selective_build.selector import SelectiveBuilder from torchgen.selective_build.selector import SelectiveBuilder
# Build ATen based Variable classes # Build ATen based Variable classes
@ -42,7 +39,7 @@ def generate_code(
autograd_gen_dir = os.path.join(install_dir, "autograd", "generated") autograd_gen_dir = os.path.join(install_dir, "autograd", "generated")
for d in (autograd_gen_dir, python_install_dir): for d in (autograd_gen_dir, python_install_dir):
os.makedirs(d, exist_ok=True) os.makedirs(d, exist_ok=True)
autograd_dir = os.fspath(Path(__file__).parent.parent / "autograd") autograd_dir = os.fspath(pathlib.Path(__file__).parent.parent / "autograd")
if subset == "pybindings" or not subset: if subset == "pybindings" or not subset:
gen_autograd_python( gen_autograd_python(
@ -109,9 +106,8 @@ def get_selector(
operators_yaml_path: Optional[str], operators_yaml_path: Optional[str],
) -> Any: ) -> Any:
# cwrap depends on pyyaml, so we can't import it earlier # cwrap depends on pyyaml, so we can't import it earlier
REPO_ROOT = Path(__file__).absolute().parents[2] root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
sys.path.insert(0, str(REPO_ROOT)) sys.path.insert(0, root)
from torchgen.selective_build.selector import SelectiveBuilder from torchgen.selective_build.selector import SelectiveBuilder
assert not ( assert not (
@ -135,8 +131,8 @@ def main() -> None:
parser.add_argument("--tags-path") parser.add_argument("--tags-path")
parser.add_argument( parser.add_argument(
"--gen-dir", "--gen-dir",
type=Path, type=pathlib.Path,
default=Path("."), default=pathlib.Path("."),
help="Root directory where to install files. Defaults to the current working directory.", help="Root directory where to install files. Defaults to the current working directory.",
) )
parser.add_argument( parser.add_argument(

View File

@ -1,10 +1,8 @@
import pathlib
import sys import sys
from pathlib import Path
REPO_ROOT = pathlib.Path(__file__).resolve().parent.parent.parent
REPO_ROOT = Path(__file__).resolve().parents[2]
sys.path.append(str(REPO_ROOT)) sys.path.append(str(REPO_ROOT))
from tools.stats.import_test_stats import get_test_class_times, get_test_times from tools.stats.import_test_stats import get_test_class_times, get_test_times

View File

@ -3,13 +3,12 @@
import datetime import datetime
import json import json
import os import os
import pathlib
import shutil import shutil
from pathlib import Path
from typing import Any, Callable, cast, Dict, List, Optional, Union from typing import Any, Callable, cast, Dict, List, Optional, Union
from urllib.request import urlopen from urllib.request import urlopen
REPO_ROOT = pathlib.Path(__file__).resolve().parent.parent.parent
REPO_ROOT = Path(__file__).resolve().parents[2]
def get_disabled_issues() -> List[str]: def get_disabled_issues() -> List[str]:
@ -21,7 +20,7 @@ def get_disabled_issues() -> List[str]:
SLOW_TESTS_FILE = ".pytorch-slow-tests.json" SLOW_TESTS_FILE = ".pytorch-slow-tests.json"
DISABLED_TESTS_FILE = ".pytorch-disabled-tests.json" DISABLED_TESTS_FILE = ".pytorch-disabled-tests.json"
ADDITIONAL_CI_FILES_FOLDER = Path(".additional_ci_files") ADDITIONAL_CI_FILES_FOLDER = pathlib.Path(".additional_ci_files")
TEST_TIMES_FILE = "test-times.json" TEST_TIMES_FILE = "test-times.json"
TEST_CLASS_TIMES_FILE = "test-class-times.json" TEST_CLASS_TIMES_FILE = "test-class-times.json"
TEST_FILE_RATINGS_FILE = "test-file-ratings.json" TEST_FILE_RATINGS_FILE = "test-file-ratings.json"
@ -35,7 +34,7 @@ FILE_CACHE_LIFESPAN_SECONDS = datetime.timedelta(hours=3).seconds
def fetch_and_cache( def fetch_and_cache(
dirpath: Union[str, Path], dirpath: Union[str, pathlib.Path],
name: str, name: str,
url: str, url: str,
process_fn: Callable[[Dict[str, Any]], Dict[str, Any]], process_fn: Callable[[Dict[str, Any]], Dict[str, Any]],
@ -43,7 +42,7 @@ def fetch_and_cache(
""" """
This fetch and cache utils allows sharing between different process. This fetch and cache utils allows sharing between different process.
""" """
Path(dirpath).mkdir(exist_ok=True) pathlib.Path(dirpath).mkdir(exist_ok=True)
path = os.path.join(dirpath, name) path = os.path.join(dirpath, name)
print(f"Downloading {url} to {path}") print(f"Downloading {url} to {path}")
@ -51,7 +50,7 @@ def fetch_and_cache(
def is_cached_file_valid() -> bool: def is_cached_file_valid() -> bool:
# Check if the file is new enough (see: FILE_CACHE_LIFESPAN_SECONDS). A real check # Check if the file is new enough (see: FILE_CACHE_LIFESPAN_SECONDS). A real check
# could make a HEAD request and check/store the file's ETag # could make a HEAD request and check/store the file's ETag
fname = Path(path) fname = pathlib.Path(path)
now = datetime.datetime.now() now = datetime.datetime.now()
mtime = datetime.datetime.fromtimestamp(fname.stat().st_mtime) mtime = datetime.datetime.fromtimestamp(fname.stat().st_mtime)
diff = now - mtime diff = now - mtime

View File

@ -1,16 +1,14 @@
# For testing specific heuristics # For testing specific heuristics
import io import io
import json import json
import pathlib
import sys import sys
import unittest import unittest
from pathlib import Path
from typing import Any, Dict, List, Set from typing import Any, Dict, List, Set
from unittest import mock from unittest import mock
REPO_ROOT = pathlib.Path(__file__).resolve().parent.parent.parent.parent
REPO_ROOT = Path(__file__).resolve().parents[3]
sys.path.append(str(REPO_ROOT)) sys.path.append(str(REPO_ROOT))
from tools.test.heuristics.test_interface import TestTD from tools.test.heuristics.test_interface import TestTD
from tools.testing.target_determination.determinator import TestPrioritizations from tools.testing.target_determination.determinator import TestPrioritizations
from tools.testing.target_determination.heuristics.filepath import ( from tools.testing.target_determination.heuristics.filepath import (
@ -25,7 +23,6 @@ from tools.testing.target_determination.heuristics.previously_failed_in_pr impor
) )
from tools.testing.test_run import TestRun from tools.testing.test_run import TestRun
sys.path.remove(str(REPO_ROOT)) sys.path.remove(str(REPO_ROOT))
HEURISTIC_CLASS = "tools.testing.target_determination.heuristics.historical_class_failure_correlation." HEURISTIC_CLASS = "tools.testing.target_determination.heuristics.historical_class_failure_correlation."

View File

@ -1,16 +1,13 @@
import pathlib
import sys import sys
import unittest import unittest
from pathlib import Path
from typing import Any, Dict, List from typing import Any, Dict, List
REPO_ROOT = pathlib.Path(__file__).resolve().parent.parent.parent.parent
REPO_ROOT = Path(__file__).resolve().parents[3]
sys.path.append(str(REPO_ROOT)) sys.path.append(str(REPO_ROOT))
import tools.testing.target_determination.heuristics.interface as interface import tools.testing.target_determination.heuristics.interface as interface
from tools.testing.test_run import TestRun from tools.testing.test_run import TestRun
sys.path.remove(str(REPO_ROOT)) sys.path.remove(str(REPO_ROOT))

View File

@ -1,16 +1,14 @@
import pathlib
import sys import sys
import unittest import unittest
from pathlib import Path
from typing import Any, Dict from typing import Any, Dict
REPO_ROOT = Path(__file__).resolve().parents[3] REPO_ROOT = pathlib.Path(__file__).resolve().parent.parent.parent.parent
sys.path.append(str(REPO_ROOT)) sys.path.append(str(REPO_ROOT))
import tools.testing.target_determination.heuristics.utils as utils import tools.testing.target_determination.heuristics.utils as utils
from tools.testing.test_run import TestRun from tools.testing.test_run import TestRun
sys.path.remove(str(REPO_ROOT)) sys.path.remove(str(REPO_ROOT))

View File

@ -1,5 +1,6 @@
# Owner(s): ["module: codegen"] # Owner(s): ["module: codegen"]
import os
import tempfile import tempfile
import unittest import unittest
from typing import Optional from typing import Optional
@ -7,8 +8,12 @@ from typing import Optional
import expecttest import expecttest
from torchgen.gen import _GLOBAL_PARSE_NATIVE_YAML_CACHE # noqa: F401 from torchgen.gen import _GLOBAL_PARSE_NATIVE_YAML_CACHE # noqa: F401
from torchgen.gen_backend_stubs import run from torchgen.gen_backend_stubs import run
path = os.path.dirname(os.path.realpath(__file__))
gen_backend_stubs_path = os.path.join(path, "../torchgen/gen_backend_stubs.py")
# gen_backend_stubs.py is an integration point that is called directly by external backends. # gen_backend_stubs.py is an integration point that is called directly by external backends.
# The tests here are to confirm that badly formed inputs result in reasonable error messages. # The tests here are to confirm that badly formed inputs result in reasonable error messages.

View File

@ -1,9 +1,8 @@
import pathlib
import sys import sys
import unittest import unittest
from pathlib import Path
REPO_ROOT = pathlib.Path(__file__).resolve().parent.parent.parent
REPO_ROOT = Path(__file__).resolve().parents[2]
try: try:
# using tools/ to optimize test run. # using tools/ to optimize test run.
sys.path.append(str(REPO_ROOT)) sys.path.append(str(REPO_ROOT))

View File

@ -1,13 +1,12 @@
import functools import functools
import pathlib
import random import random
import sys import sys
import unittest import unittest
from collections import defaultdict from collections import defaultdict
from pathlib import Path
from typing import Dict, List, Tuple from typing import Dict, List, Tuple
REPO_ROOT = pathlib.Path(__file__).resolve().parent.parent.parent
REPO_ROOT = Path(__file__).resolve().parents[2]
try: try:
# using tools/ to optimize test run. # using tools/ to optimize test run.
sys.path.append(str(REPO_ROOT)) sys.path.append(str(REPO_ROOT))

View File

@ -1,18 +1,16 @@
import decimal import decimal
import inspect import inspect
import pathlib
import sys import sys
import unittest import unittest
from pathlib import Path
from typing import Any, Dict from typing import Any, Dict
from unittest import mock from unittest import mock
REPO_ROOT = pathlib.Path(__file__).resolve().parent.parent.parent
REPO_ROOT = Path(__file__).resolve().parents[2]
sys.path.insert(0, str(REPO_ROOT)) sys.path.insert(0, str(REPO_ROOT))
from tools.stats.upload_metrics import add_global_metric, emit_metric from tools.stats.upload_metrics import add_global_metric, emit_metric
from tools.stats.upload_stats_lib import BATCH_SIZE, upload_to_rockset
from tools.stats.upload_stats_lib import BATCH_SIZE, upload_to_rockset
sys.path.remove(str(REPO_ROOT)) sys.path.remove(str(REPO_ROOT))

View File

@ -4,11 +4,10 @@ import sys
from pathlib import Path from pathlib import Path
from typing import List, Optional, Union from typing import List, Optional, Union
CPP_TEST_PREFIX = "cpp" CPP_TEST_PREFIX = "cpp"
CPP_TEST_PATH = "build/bin" CPP_TEST_PATH = "build/bin"
CPP_TESTS_DIR = os.path.abspath(os.getenv("CPP_TESTS_DIR", default=CPP_TEST_PATH)) CPP_TESTS_DIR = os.path.abspath(os.getenv("CPP_TESTS_DIR", default=CPP_TEST_PATH))
REPO_ROOT = Path(__file__).resolve().parents[2] REPO_ROOT = Path(__file__).resolve().parent.parent.parent
def parse_test_module(test: str) -> str: def parse_test_module(test: str) -> str:

View File

@ -1,10 +1,10 @@
import json import json
import os import os
import pathlib
import sys import sys
from pathlib import Path
REPO_ROOT = Path(__file__).resolve().parents[2] REPO_ROOT = pathlib.Path(__file__).resolve().parent.parent.parent
sys.path.insert(0, str(REPO_ROOT)) sys.path.insert(0, str(REPO_ROOT))
from tools.stats.import_test_stats import ( from tools.stats.import_test_stats import (
@ -18,6 +18,7 @@ from tools.stats.import_test_stats import (
get_test_times, get_test_times,
) )
from tools.stats.upload_metrics import emit_metric from tools.stats.upload_metrics import emit_metric
from tools.testing.discover_tests import TESTS from tools.testing.discover_tests import TESTS
from tools.testing.target_determination.determinator import ( from tools.testing.target_determination.determinator import (
AggregatedHeuristics, AggregatedHeuristics,
@ -25,7 +26,6 @@ from tools.testing.target_determination.determinator import (
TestPrioritizations, TestPrioritizations,
) )
sys.path.remove(str(REPO_ROOT)) sys.path.remove(str(REPO_ROOT))

View File

@ -2,15 +2,16 @@
import argparse import argparse
import fnmatch import fnmatch
import pathlib
import subprocess import subprocess
import textwrap import textwrap
from pathlib import Path
from typing import Any, Dict, List from typing import Any, Dict, List
import yaml import yaml
REPO_ROOT = Path(__file__).parents[2] REPO_ROOT = pathlib.Path(__file__).parent.parent.parent
CONFIG_YML = REPO_ROOT / ".circleci" / "config.yml" CONFIG_YML = REPO_ROOT / ".circleci" / "config.yml"
WORKFLOWS_DIR = REPO_ROOT / ".github" / "workflows" WORKFLOWS_DIR = REPO_ROOT / ".github" / "workflows"

View File

@ -1,12 +1,11 @@
import modulefinder import modulefinder
import os import os
import pathlib
import sys import sys
import warnings import warnings
from pathlib import Path
from typing import Any, Dict, List, Set from typing import Any, Dict, List, Set
REPO_ROOT = pathlib.Path(__file__).resolve().parent.parent.parent
REPO_ROOT = Path(__file__).resolve().parents[2]
# These tests are slow enough that it's worth calculating whether the patch # These tests are slow enough that it's worth calculating whether the patch
# touched any related files first. This list was manually generated, but for every # touched any related files first. This list was manually generated, but for every

View File

@ -1,10 +1,9 @@
import json import json
import os import os
from pathlib import Path import pathlib
from typing import Any, List from typing import Any, List
REPO_ROOT = pathlib.Path(__file__).resolve().parent.parent.parent.parent
REPO_ROOT = Path(__file__).resolve().parents[3]
def gen_ci_artifact(included: List[Any], excluded: List[Any]) -> None: def gen_ci_artifact(included: List[Any], excluded: List[Any]) -> None:

View File

@ -8,14 +8,14 @@ from tools.testing.target_determination.heuristics.interface import (
HeuristicInterface, HeuristicInterface,
TestPrioritizations, TestPrioritizations,
) )
from tools.testing.target_determination.heuristics.utils import ( from tools.testing.target_determination.heuristics.utils import (
normalize_ratings, normalize_ratings,
query_changed_files, query_changed_files,
) )
from tools.testing.test_run import TestRun from tools.testing.test_run import TestRun
REPO_ROOT = Path(__file__).parent.parent.parent.parent
REPO_ROOT = Path(__file__).parents[3]
keyword_synonyms: Dict[str, List[str]] = { keyword_synonyms: Dict[str, List[str]] = {
"amp": ["mixed_precision"], "amp": ["mixed_precision"],

View File

@ -14,7 +14,7 @@ from tools.testing.target_determination.heuristics.utils import normalize_rating
from tools.testing.test_run import TestRun from tools.testing.test_run import TestRun
REPO_ROOT = Path(__file__).resolve().parents[4] REPO_ROOT = Path(__file__).resolve().parent.parent.parent.parent.parent
class LLM(HeuristicInterface): class LLM(HeuristicInterface):

View File

@ -8,6 +8,7 @@ from tools.stats.import_test_stats import (
TD_HEURISTIC_PREVIOUSLY_FAILED, TD_HEURISTIC_PREVIOUSLY_FAILED,
TD_HEURISTIC_PREVIOUSLY_FAILED_ADDITIONAL, TD_HEURISTIC_PREVIOUSLY_FAILED_ADDITIONAL,
) )
from tools.testing.target_determination.heuristics.interface import ( from tools.testing.target_determination.heuristics.interface import (
HeuristicInterface, HeuristicInterface,
TestPrioritizations, TestPrioritizations,
@ -17,8 +18,7 @@ from tools.testing.target_determination.heuristics.utils import (
) )
from tools.testing.test_run import TestRun from tools.testing.test_run import TestRun
REPO_ROOT = Path(__file__).resolve().parent.parent.parent.parent.parent
REPO_ROOT = Path(__file__).resolve().parents[4]
class PreviouslyFailedInPR(HeuristicInterface): class PreviouslyFailedInPR(HeuristicInterface):

View File

@ -11,8 +11,7 @@ from warnings import warn
from tools.testing.test_run import TestRun from tools.testing.test_run import TestRun
REPO_ROOT = Path(__file__).resolve().parent.parent.parent.parent.parent
REPO_ROOT = Path(__file__).resolve().parents[4]
def python_test_file_to_test_name(tests: Set[str]) -> Set[str]: def python_test_file_to_test_name(tests: Set[str]) -> Set[str]:

View File

@ -2,13 +2,13 @@ import math
import os import os
import subprocess import subprocess
from pathlib import Path from pathlib import Path
from typing import Callable, Dict, FrozenSet, List, Optional, Sequence, Tuple from typing import Callable, Dict, FrozenSet, List, Optional, Sequence, Tuple
from tools.stats.import_test_stats import get_disabled_tests, get_slow_tests from tools.stats.import_test_stats import get_disabled_tests, get_slow_tests
from tools.testing.test_run import ShardedTest, TestRun from tools.testing.test_run import ShardedTest, TestRun
REPO_ROOT = Path(__file__).resolve().parent.parent.parent
REPO_ROOT = Path(__file__).resolve().parents[2]
IS_MEM_LEAK_CHECK = os.getenv("PYTORCH_TEST_CUDA_MEM_LEAK_CHECK", "0") == "1" IS_MEM_LEAK_CHECK = os.getenv("PYTORCH_TEST_CUDA_MEM_LEAK_CHECK", "0") == "1"
BUILD_ENVIRONMENT = os.getenv("BUILD_ENVIRONMENT", "") BUILD_ENVIRONMENT = os.getenv("BUILD_ENVIRONMENT", "")

View File

@ -2,7 +2,6 @@
from pathlib import Path from pathlib import Path
try: try:
# VS Code settings allow comments and trailing commas, which are not valid JSON. # VS Code settings allow comments and trailing commas, which are not valid JSON.
import json5 as json # type: ignore[import] import json5 as json # type: ignore[import]

View File

@ -5,7 +5,6 @@ import functools
import os import os
import sys import sys
import warnings import warnings
from pathlib import Path
from types import ModuleType from types import ModuleType
from typing import Any, Callable, Dict from typing import Any, Callable, Dict
@ -52,13 +51,15 @@ def _reload_python_module(key, path):
def _set_triton_ptxas_path() -> None: def _set_triton_ptxas_path() -> None:
if os.environ.get("TRITON_PTXAS_PATH") is not None: if os.environ.get("TRITON_PTXAS_PATH") is not None:
return return
ptxas = Path(__file__).absolute().parents[1] / "bin" / "ptxas" ptxas_path = os.path.abspath(
if not ptxas.exists(): os.path.join(os.path.dirname(__file__), "..", "bin", "ptxas")
)
if not os.path.exists(ptxas_path):
return return
if ptxas.is_file() and os.access(ptxas, os.X_OK): if os.path.isfile(ptxas_path) and os.access(ptxas_path, os.X_OK):
os.environ["TRITON_PTXAS_PATH"] = str(ptxas) os.environ["TRITON_PTXAS_PATH"] = ptxas_path
else: else:
warnings.warn(f"{ptxas} exists but is not an executable") warnings.warn(f"{ptxas_path} exists but is not an executable")
def _worker_compile_triton(load_kernel: Callable[[], Any], extra_env: Dict[str, str]): def _worker_compile_triton(load_kernel: Callable[[], Any], extra_env: Dict[str, str]):

View File

@ -4579,7 +4579,7 @@ def find_library_location(lib_name: str) -> Path:
path = torch_root / 'lib' / lib_name path = torch_root / 'lib' / lib_name
if os.path.exists(path): if os.path.exists(path):
return path return path
torch_root = Path(__file__).resolve().parents[2] torch_root = Path(__file__).resolve().parent.parent.parent
return torch_root / 'build' / 'lib' / lib_name return torch_root / 'build' / 'lib' / lib_name
def skip_but_pass_in_sandcastle(reason): def skip_but_pass_in_sandcastle(reason):

View File

@ -1,8 +1,8 @@
import argparse import argparse
import os import os
import pathlib
import re import re
from collections import Counter, defaultdict, namedtuple from collections import Counter, defaultdict, namedtuple
from pathlib import Path
from typing import Dict, List, Optional, Sequence, Set, Union from typing import Dict, List, Optional, Sequence, Set, Union
import yaml import yaml
@ -527,7 +527,7 @@ def run(
source_yaml: str, output_dir: str, dry_run: bool, impl_path: Optional[str] = None source_yaml: str, output_dir: str, dry_run: bool, impl_path: Optional[str] = None
) -> None: ) -> None:
# Assumes that this file lives at PYTORCH_ROOT/torchgen/gen_backend_stubs.py # Assumes that this file lives at PYTORCH_ROOT/torchgen/gen_backend_stubs.py
pytorch_root = Path(__file__).absolute().parent.parent pytorch_root = pathlib.Path(__file__).parent.parent.absolute()
template_dir = os.path.join(pytorch_root, "aten/src/ATen/templates") template_dir = os.path.join(pytorch_root, "aten/src/ATen/templates")
def make_file_manager(install_dir: str) -> FileManager: def make_file_manager(install_dir: str) -> FileManager:

View File

@ -1,7 +1,7 @@
import argparse import argparse
import os import os
import pathlib
from collections import namedtuple from collections import namedtuple
from pathlib import Path
from typing import ( from typing import (
Any, Any,
Callable, Callable,
@ -261,7 +261,7 @@ def main() -> None:
options = parser.parse_args() options = parser.parse_args()
# Assumes that this file lives at PYTORCH_ROOT/torchgen/gen_backend_stubs.py # Assumes that this file lives at PYTORCH_ROOT/torchgen/gen_backend_stubs.py
torch_root = Path(__file__).absolute().parents[2] torch_root = pathlib.Path(__file__).parent.parent.parent.absolute()
aten_path = str(torch_root / "aten" / "src" / "ATen") aten_path = str(torch_root / "aten" / "src" / "ATen")
lazy_ir_generator: Type[GenLazyIR] = default_args.lazy_ir_generator lazy_ir_generator: Type[GenLazyIR] = default_args.lazy_ir_generator
if options.gen_ts_lowerings: if options.gen_ts_lowerings: