-
Notifications
You must be signed in to change notification settings - Fork 2.8k
/
setup.py
124 lines (107 loc) · 4.36 KB
/
setup.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# Copyright 2018 The JAX Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import importlib
import os
from setuptools import setup, find_packages
project_name = 'jax'
_current_jaxlib_version = '0.4.35'
# The following should be updated after each new jaxlib release.
_latest_jaxlib_version_on_pypi = '0.4.35'
_libtpu_version = '0.0.2'
_libtpu_nightly_terminal_version = '0.1.dev20241010+nightly.cleanup'
def load_version_module(pkg_path):
spec = importlib.util.spec_from_file_location(
'version', os.path.join(pkg_path, 'version.py'))
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)
return module
_version_module = load_version_module(project_name)
__version__ = _version_module._get_version_for_build()
_jax_version = _version_module._version # JAX version, with no .dev suffix.
_cmdclass = _version_module._get_cmdclass(project_name)
_minimum_jaxlib_version = _version_module._minimum_jaxlib_version
with open('README.md', encoding='utf-8') as f:
_long_description = f.read()
setup(
name=project_name,
version=__version__,
cmdclass=_cmdclass,
description='Differentiate, compile, and transform Numpy code.',
long_description=_long_description,
long_description_content_type='text/markdown',
author='JAX team',
author_email='[email protected]',
packages=find_packages(exclude=["examples", "jax/src/internal_test_util"]),
package_data={'jax': ['py.typed', "*.pyi", "**/*.pyi"]},
python_requires='>=3.10',
install_requires=[
f'jaxlib >={_minimum_jaxlib_version}, <={_jax_version}',
'ml_dtypes>=0.4.0',
'numpy>=1.24',
"numpy>=1.26.0; python_version>='3.12'",
'opt_einsum',
'scipy>=1.10',
"scipy>=1.11.1; python_version>='3.12'",
],
extras_require={
# Minimum jaxlib version; used in testing.
'minimum-jaxlib': [f'jaxlib=={_minimum_jaxlib_version}'],
# A CPU-only jax doesn't require any extras, but we keep this extra
# around for compatibility.
'cpu': [],
# Used only for CI builds that install JAX from github HEAD.
'ci': [f'jaxlib=={_latest_jaxlib_version_on_pypi}'],
# Cloud TPU VM jaxlib can be installed via:
# $ pip install jax[tpu] -f https://storage.googleapis.com/jax-releases/libtpu_releases.html
'tpu': [
f'jaxlib>={_current_jaxlib_version},<={_jax_version}',
# TODO(phawkins): remove the libtpu-nightly dependency in Q1 2025.
f'libtpu-nightly=={_libtpu_nightly_terminal_version}',
f'libtpu=={_libtpu_version}',
'requests', # necessary for jax.distributed.initialize
],
'cuda': [
f"jaxlib=={_current_jaxlib_version}",
f"jax-cuda12-plugin[with_cuda]>={_current_jaxlib_version},<={_jax_version}",
],
'cuda12': [
f"jaxlib=={_current_jaxlib_version}",
f"jax-cuda12-plugin[with_cuda]>={_current_jaxlib_version},<={_jax_version}",
],
# Deprecated alias for cuda12, kept to avoid breaking users who wrote
# cuda12_pip in their CI.
'cuda12_pip': [
f"jaxlib=={_current_jaxlib_version}",
f"jax-cuda12-plugin[with_cuda]>={_current_jaxlib_version},<={_jax_version}",
],
# Target that does not depend on the CUDA pip wheels, for those who want
# to use a preinstalled CUDA.
'cuda12_local': [
f"jaxlib=={_current_jaxlib_version}",
f"jax-cuda12-plugin=={_current_jaxlib_version}",
],
# For automatic bootstrapping distributed jobs in Kubernetes
'k8s': [
'kubernetes',
],
},
url='https://github.com/jax-ml/jax',
license='Apache-2.0',
classifiers=[
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
],
zip_safe=False,
)