xref: /aosp_15_r20/external/executorch/pyproject.toml (revision 523fa7a60841cd1ecfb9cc4201f1ca8b03ed023a)
1[build-system]
2requires = [
3  "cmake",  # For building binary targets in the wheel.
4  "pip>=23",  # For building the pip package.
5  "pyyaml",  # Imported by the kernel codegen tools.
6  "setuptools>=63",  # For building the pip package contents.
7  "tomli",  # Imported by extract_sources.py when using python < 3.11.
8  "wheel",  # For building the pip package archive.
9  "zstd",  # Imported by resolve_buck.py.
10]
11build-backend = "setuptools.build_meta"
12
13[project]
14name = "executorch"
15dynamic = [
16  # setup.py will set the version.
17  'version',
18]
19description = "On-device AI across mobile, embedded and edge for PyTorch"
20readme = "README-wheel.md"
21authors = [
22  {name="PyTorch Team", email="[email protected]"},
23]
24license = {file = "LICENSE"}
25keywords = ["pytorch", "machine learning"]
26# PyPI package information.
27classifiers = [
28    # How mature is this project? Common values are
29    #   3 - Alpha
30    #   4 - Beta
31    #   5 - Production/Stable
32    "Development Status :: 3 - Alpha",
33    "Intended Audience :: Developers",
34    "Intended Audience :: Education",
35    "Intended Audience :: Science/Research",
36    "License :: OSI Approved :: BSD License",
37    "Topic :: Scientific/Engineering",
38    "Topic :: Scientific/Engineering :: Mathematics",
39    "Topic :: Scientific/Engineering :: Artificial Intelligence",
40    "Topic :: Software Development",
41    "Topic :: Software Development :: Libraries",
42    "Topic :: Software Development :: Libraries :: Python Modules",
43    "Programming Language :: C++",
44    "Programming Language :: Python :: 3",
45    # Update this as we support more versions of python.
46    "Programming Language :: Python :: 3.10",
47    "Programming Language :: Python :: 3.11",
48    "Programming Language :: Python :: 3.12",
49]
50
51# Python dependencies required for use.
52requires-python = ">=3.10"
53dependencies=[
54  "expecttest",
55  "flatbuffers",
56  "hypothesis",
57  "mpmath==1.3.0",
58  "numpy==1.21.3; python_version == '3.10'",
59  "numpy==1.23.2; python_version == '3.11'",
60  "numpy; python_version >= '3.12'",
61  "packaging",
62  "pandas==2.0.3; python_version == '3.10'",
63  "pandas; python_version >= '3.11'",
64  "parameterized",
65  "pytest",
66  "pytest-xdist",
67  "pyyaml",
68  "ruamel.yaml",
69  "sympy",
70  "tabulate",
71  "torch==2.5.0",
72  "torchaudio==2.5.0",
73  "torchvision==0.20.0",
74  "typing-extensions",
75]
76
77[project.urls]
78# The keys are arbitrary but will be visible on PyPI.
79Homepage = "https://pytorch.org/executorch/"
80Repository = "https://github.com/pytorch/executorch"
81Issues = "https://github.com/pytorch/executorch/issues"
82Changelog = "https://github.com/pytorch/executorch/releases"
83
84# Tell setuptools to generate commandline wrappers for tools that we install
85# under data/bin in the pip package. This will put these commands on the user's
86# path.
87[project.scripts]
88flatc = "executorch.data.bin:flatc"
89
90[tool.setuptools.package-data]
91# TODO(dbort): Prune /test[s]/ dirs, /third-party/ dirs, yaml files that we
92# don't need.
93"*" = [
94  # Some backends like XNNPACK need their .fbs files.
95  "*.fbs",
96  # Some kernel libraries need their .yaml files.
97  "*.yaml",
98]
99
100[tool.setuptools.exclude-package-data]
101"*" = ["*.pyc"]
102
103[tool.usort]
104# Do not try to put "first-party" imports in their own section.
105first_party_detection = false
106
107[tool.black]
108# Emit syntax compatible with older versions of python instead of only the range
109# specified by `requires-python`. TODO: Remove this once we support these older
110# versions of python and can expand the `requires-python` range.
111target-version = ["py38", "py39", "py310", "py311", "py312"]
112