[BE]: Add PEP621 project section to pyproject.toml (#153055)

Follow up to @ezyang's PR #153020 , but better uses PEP621 to reduce redundant fields and pass through metadata better to uv, setuptools, poetry and other tooling.

* Enables modern tooling like uv sync and better support for tools like poetry.
* Also allows us to set project wide settings that are respected by linters and IDE (in this example we are able centralize the minimum supported python version).
* Currently most of the values are dynamically fetched from setuptools, eventually we can migrate all the statically defined values to pyproject.toml and they will be autopopulated in the setuptool arguments.
* This controls what additional metadata shows up on PyPi . Special URL Names are listed here for rendering on pypi: https://packaging.python.org/en/latest/specifications/well-known-project-urls/#well-known-labels

These also clearly shows us what fields will need to be migrated to pyproject.toml over time from setup.py per #152276. Static fields be fairly easy to migrate, the dynamically built ones like requirements are a bit more challenging.

Without this, `uv sync` complains:
```
error: No `project` table found in: `pytorch/pyproject.toml`
```

Pull Request resolved: https://github.com/pytorch/pytorch/pull/153055
Approved by: https://github.com/ezyang
This commit is contained in:
Aaron Gokaslan 2025-05-12 02:16:04 +00:00 committed by PyTorch MergeBot
parent ceb009baee
commit 032ef48725
4 changed files with 37 additions and 6 deletions

View File

@ -1,3 +1,27 @@
[project]
name = "torch"
requires-python = ">=3.9"
license = {text = "BSD-3-Clause"}
dynamic = [
"authors",
"classifiers",
"entry-points",
"dependencies",
"description",
"keywords",
"optional-dependencies",
"readme",
"scripts",
"version",
]
[project.urls]
Homepage = "https://pytorch.org/"
Documentation = "https://pytorch.org/docs/"
Source = "https://github.com/pytorch/pytorch"
Forum = "https://discuss.pytorch.org/"
[build-system] [build-system]
requires = [ requires = [
# After 75.8.2 dropped dep disttools API. Please fix # After 75.8.2 dropped dep disttools API. Please fix
@ -18,8 +42,6 @@ build-backend = "setuptools.build_meta:__legacy__"
[tool.black] [tool.black]
line-length = 88 line-length = 88
target-version = ["py38"]
[tool.isort] [tool.isort]
src_paths = ["caffe2", "torch", "torchgen", "functorch", "test"] src_paths = ["caffe2", "torch", "torchgen", "functorch", "test"]
@ -42,7 +64,6 @@ standard_library = ["typing_extensions"]
[tool.ruff] [tool.ruff]
target-version = "py39"
line-length = 88 line-length = 88
src = ["caffe2", "torch", "torchgen", "functorch", "test"] src = ["caffe2", "torch", "torchgen", "functorch", "test"]

View File

@ -1296,6 +1296,8 @@ def main():
install_requires=install_requires, install_requires=install_requires,
extras_require=extras_require, extras_require=extras_require,
package_data=package_data, package_data=package_data,
# TODO fix later Manifest.IN file was previously ignored
include_package_data=False, # defaults to True with pyproject.toml file
url="https://pytorch.org/", url="https://pytorch.org/",
download_url="https://github.com/pytorch/pytorch/tags", download_url="https://github.com/pytorch/pytorch/tags",
author="PyTorch Team", author="PyTorch Team",

View File

@ -2352,6 +2352,11 @@ class TestImports(TestCase):
"torch.onnx._internal", # depends on onnx-script "torch.onnx._internal", # depends on onnx-script
"torch._inductor.runtime.triton_helpers", # depends on triton "torch._inductor.runtime.triton_helpers", # depends on triton
"torch._inductor.codegen.cuda", # depends on cutlass "torch._inductor.codegen.cuda", # depends on cutlass
"torch.distributed.benchmarks", # depends on RPC and DDP Optim
"torch.distributed.examples", # requires CUDA and torchvision
"torch.distributed.tensor.examples", # example scripts
"torch.csrc", # files here are devtools, not part of torch
"torch.include", # torch include files after install
] ]
if IS_WINDOWS or IS_MACOS or IS_JETSON: if IS_WINDOWS or IS_MACOS or IS_JETSON:
# Distributed should be importable on Windows(except nn.api.), but not on Mac # Distributed should be importable on Windows(except nn.api.), but not on Mac

View File

@ -1,6 +1,4 @@
# mypy: allow-untyped-defs # mypy: allow-untyped-defs
import torchvision
import torch import torch
from torch.distributed._tools import MemoryTracker from torch.distributed._tools import MemoryTracker
@ -30,4 +28,9 @@ def run_one_model(net: torch.nn.Module, input: torch.Tensor):
mem_tracker.show_traces() mem_tracker.show_traces()
run_one_model(torchvision.models.resnet34(), torch.rand(32, 3, 224, 224, device="cuda")) if __name__ == "__main__":
import torchvision
run_one_model(
torchvision.models.resnet34(), torch.rand(32, 3, 224, 224, device="cuda")
)