We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
pip install failed and got UnicodeDecodeError for jax>=0.3.15 on Windows, Python 3.9.13
### Description

I got `UnicodeDecodeError` when running pip install for jax `0.3.15` on Windows 10:
```cmd
PS C:\tensorflow> pip install --no-cache-dir jax==0.3.15
Collecting jax==0.3.15
  Downloading jax-0.3.15.tar.gz (1.0 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.0/1.0 MB 3.5 MB/s eta 0:00:00
  Preparing metadata (setup.py) ... error
  error: subprocess-exited-with-error

  × python setup.py egg_info did not run successfully.
  │ exit code: 1
  ╰─> [6 lines of output]
      Traceback (most recent call last):
        File "<string>", line 2, in <module>
        File "<pip-setuptools-caller>", line 34, in <module>
        File "C:\Users\Jason Wu\AppData\Local\Temp\pip-install-5rpko2f6\jax_4375f8ec13e046228768476f1ee3a194\setup.py", line 33, in <module>
          _long_description = f.read()
      UnicodeDecodeError: 'cp950' codec can't decode byte 0xe2 in position 1304: illegal multibyte sequence
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.
```

Also I tried `0.4.1` and `0.3.25`, both got the same error:
```cmd
PS C:\tensorflow> pip install --no-cache-dir jax==0.4.1
Collecting jax==0.4.1
  Downloading jax-0.4.1.tar.gz (1.2 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB 3.6 MB/s eta 0:00:00
  Preparing metadata (setup.py) ... error
  error: subprocess-exited-with-error

  × python setup.py egg_info did not run successfully.
  │ exit code: 1
  ╰─> [6 lines of output]
      Traceback (most recent call last):
        File "<string>", line 2, in <module>
        File "<pip-setuptools-caller>", line 34, in <module>
        File "C:\Users\Jason Wu\AppData\Local\Temp\pip-install-trctdimm\jax_3d064f6acc4d4a0b91bcebef44bb0eb7\setup.py", line 38, in <module>
          _long_description = f.read()
      UnicodeDecodeError: 'cp950' codec can't decode byte 0xe2 in position 1301: illegal multibyte sequence
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.
```
```cmd
PS C:\tensorflow> pip install --no-cache-dir jax==0.3.25
Collecting jax==0.3.25
  Downloading jax-0.3.25.tar.gz (1.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.1/1.1 MB 4.2 MB/s eta 0:00:00
  Preparing metadata (setup.py) ... error
  error: subprocess-exited-with-error

  × python setup.py egg_info did not run successfully.
  │ exit code: 1
  ╰─> [6 lines of output]
      Traceback (most recent call last):
        File "<string>", line 2, in <module>
        File "<pip-setuptools-caller>", line 34, in <module>
        File "C:\Users\Jason Wu\AppData\Local\Temp\pip-install-h_ymbbfo\jax_9f7e4365d3a24fb4bb4e74d1b86678e6\setup.py", line 38, in <module>
          _long_description = f.read()
      UnicodeDecodeError: 'cp950' codec can't decode byte 0xe2 in position 1304: illegal multibyte sequence
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.
```

It's worth noting that `0.3.14` installed without issue:
```cmd
PS C:\tensorflow> pip install --no-cache-dir jax==0.3.14
Collecting jax==0.3.14
  Downloading jax-0.3.14.tar.gz (990 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 990.1/990.1 kB 2.6 MB/s eta 0:00:00
  Preparing metadata (setup.py) ... done
Requirement already satisfied: absl-py ...
...
Building wheels for collected packages: jax
  Building wheel for jax (setup.py) ... done
  Created wheel for jax: filename=jax-0.3.14-py3-none-any.whl size=1147576 sha256=ae0aadd2688c543930de9ba7e31e58b3363a8752ae25e4770941b53e1c3476d6
  Stored in directory: C:\Users\Jason Wu\AppData\Local\Temp\pip-ephem-wheel-cache-q92x7zxq\wheels\3d\22\cf\75c40ec058e8d0f9b8427cd35366e1fd618475451fc8fc6fd7
Successfully built jax
Installing collected packages: jax
Successfully installed jax-0.3.14
```

Since I'm building Tensorflow from source, it requires Jax > `0.3.15`.

Please let me know if there is any other information that needs to be provided. thanks!

### What jax/jaxlib version are you using?

jax v0.3.15

### Which accelerator(s) are you using?

CPU

### Additional system info

Python 3.9.13, pip 22.3.1, Windows 10, 

### NVIDIA GPU info

_No response_

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `setup.py`
Content:
```
1 # Copyright 2018 The JAX Authors.
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 #     https://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14 
15 from distutils import spawn
16 import subprocess
17 import os
18 import sys
19 
20 from setuptools import setup, find_packages
21 
22 _current_jaxlib_version = '0.4.1'
23 # The following should be updated with each new jaxlib release.
24 _latest_jaxlib_version_on_pypi = '0.4.1'
25 _available_cuda_versions = ['11']
26 _default_cuda_version = '11'
27 _available_cudnn_versions = ['82', '86']
28 _default_cudnn_version = '86'
29 _libtpu_version = '0.1.dev20221212'
30 
31 _dct = {}
32 with open('jax/version.py') as f:
33   exec(f.read(), _dct)
34 __version__ = _dct['__version__']
35 _minimum_jaxlib_version = _dct['_minimum_jaxlib_version']
36 
37 with open('README.md') as f:
38   _long_description = f.read()
39 
40 if 'PROTOC' in os.environ and os.path.exists(os.environ['PROTOC']):
41   protoc = os.environ['PROTOC']
42 else:
43   protoc = spawn.find_executable('protoc')
44 
45 def generate_proto(source):
46   if not protoc or not os.path.exists(source):
47     return
48   protoc_command = [protoc, '-I.', '--python_out=.', source]
49   if subprocess.call(protoc_command) != 0:
50     sys.exit(-1)
51 
52 generate_proto("jax/experimental/australis/executable.proto")
53 generate_proto("jax/experimental/australis/petri.proto")
54 
55 setup(
56     name='jax',
57     version=__version__,
58     description='Differentiate, compile, and transform Numpy code.',
59     long_description=_long_description,
60     long_description_content_type='text/markdown',
61     author='JAX team',
62     author_email='jax-dev@google.com',
63     packages=find_packages(exclude=["examples"]),
64     package_data={'jax': ['py.typed', "*.pyi", "**/*.pyi"]},
65     python_requires='>=3.8',
66     install_requires=[
67         'numpy>=1.20',
68         'opt_einsum',
69         'scipy>=1.5',
70     ],
71     extras_require={
72         # Minimum jaxlib version; used in testing.
73         'minimum-jaxlib': [f'jaxlib=={_minimum_jaxlib_version}'],
74 
75         # CPU-only jaxlib can be installed via:
76         # $ pip install jax[cpu]
77         'cpu': [f'jaxlib=={_current_jaxlib_version}'],
78 
79         # Used only for CI builds that install JAX from github HEAD.
80         'ci': [f'jaxlib=={_latest_jaxlib_version_on_pypi}'],
81 
82         # Cloud TPU VM jaxlib can be installed via:
83         # $ pip install jax[tpu] -f https://storage.googleapis.com/jax-releases/libtpu_releases.html
84         'tpu': [f'jaxlib=={_current_jaxlib_version}',
85                 f'libtpu-nightly=={_libtpu_version}',
86                 # Required by cloud_tpu_init.py
87                 'requests'],
88 
89         # $ pip install jax[australis]
90         'australis': ['protobuf>=3.13,<4'],
91 
92         # CUDA installations require adding jax releases URL; e.g.
93         # Cuda installation defaulting to a CUDA and Cudnn version defined above.
94         # $ pip install jax[cuda] -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
95         'cuda': [f"jaxlib=={_current_jaxlib_version}+cuda{_default_cuda_version}.cudnn{_default_cudnn_version}"],
96 
97         # CUDA installations require adding jax releases URL; e.g.
98         # $ pip install jax[cuda11_cudnn82] -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
99         # $ pip install jax[cuda11_cudnn86] -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
100         **{f'cuda{cuda_version}_cudnn{cudnn_version}': f"jaxlib=={_current_jaxlib_version}+cuda{cuda_version}.cudnn{cudnn_version}"
101            for cuda_version in _available_cuda_versions for cudnn_version in _available_cudnn_versions}
102     },
103     url='https://github.com/google/jax',
104     license='Apache-2.0',
105     classifiers=[
106         "Programming Language :: Python :: 3.8",
107         "Programming Language :: Python :: 3.9",
108         "Programming Language :: Python :: 3.10",
109         "Programming Language :: Python :: 3.11",
110     ],
111     zip_safe=False,
112 )
113
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -29,12 +29,12 @@
 _libtpu_version = '0.1.dev20221212'
 
 _dct = {}
-with open('jax/version.py') as f:
+with open('jax/version.py', encoding='utf-8') as f:
   exec(f.read(), _dct)
 __version__ = _dct['__version__']
 _minimum_jaxlib_version = _dct['_minimum_jaxlib_version']
 
-with open('README.md') as f:
+with open('README.md', encoding='utf-8') as f:
   _long_description = f.read()
 
 if 'PROTOC' in os.environ and os.path.exists(os.environ['PROTOC']):

{"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -29,12 +29,12 @@\n _libtpu_version = '0.1.dev20221212'\n \n _dct = {}\n-with open('jax/version.py') as f:\n+with open('jax/version.py', encoding='utf-8') as f:\n   exec(f.read(), _dct)\n __version__ = _dct['__version__']\n _minimum_jaxlib_version = _dct['_minimum_jaxlib_version']\n \n-with open('README.md') as f:\n+with open('README.md', encoding='utf-8') as f:\n   _long_description = f.read()\n \n if 'PROTOC' in os.environ and os.path.exists(os.environ['PROTOC']):\n", "issue": "pip install failed and got UnicodeDecodeError for jax>=0.3.15 on Windows, Python 3.9.13\n### Description\n\nI got `UnicodeDecodeError` when running pip install for jax `0.3.15` on Windows 10:\r\n```cmd\r\nPS C:\\tensorflow> pip install --no-cache-dir jax==0.3.15\r\nCollecting jax==0.3.15\r\n  Downloading jax-0.3.15.tar.gz (1.0 MB)\r\n     \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 1.0/1.0 MB 3.5 MB/s eta 0:00:00\r\n  Preparing metadata (setup.py) ... error\r\n  error: subprocess-exited-with-error\r\n\r\n  \u00d7 python setup.py egg_info did not run successfully.\r\n  \u2502 exit code: 1\r\n  \u2570\u2500> [6 lines of output]\r\n      Traceback (most recent call last):\r\n        File \"<string>\", line 2, in <module>\r\n        File \"<pip-setuptools-caller>\", line 34, in <module>\r\n        File \"C:\\Users\\Jason Wu\\AppData\\Local\\Temp\\pip-install-5rpko2f6\\jax_4375f8ec13e046228768476f1ee3a194\\setup.py\", line 33, in <module>\r\n          _long_description = f.read()\r\n      UnicodeDecodeError: 'cp950' codec can't decode byte 0xe2 in position 1304: illegal multibyte sequence\r\n      [end of output]\r\n\r\n  note: This error originates from a subprocess, and is likely not a problem with pip.\r\nerror: metadata-generation-failed\r\n\r\n\u00d7 Encountered error while generating package metadata.\r\n\u2570\u2500> See above for output.\r\n\r\nnote: This is an issue with the package mentioned above, not pip.\r\nhint: See above for details.\r\n```\r\n\r\nAlso I tried `0.4.1` and `0.3.25`, both got the same error:\r\n```cmd\r\nPS C:\\tensorflow> pip install --no-cache-dir jax==0.4.1\r\nCollecting jax==0.4.1\r\n  Downloading jax-0.4.1.tar.gz (1.2 MB)\r\n     \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 1.2/1.2 MB 3.6 MB/s eta 0:00:00\r\n  Preparing metadata (setup.py) ... error\r\n  error: subprocess-exited-with-error\r\n\r\n  \u00d7 python setup.py egg_info did not run successfully.\r\n  \u2502 exit code: 1\r\n  \u2570\u2500> [6 lines of output]\r\n      Traceback (most recent call last):\r\n        File \"<string>\", line 2, in <module>\r\n        File \"<pip-setuptools-caller>\", line 34, in <module>\r\n        File \"C:\\Users\\Jason Wu\\AppData\\Local\\Temp\\pip-install-trctdimm\\jax_3d064f6acc4d4a0b91bcebef44bb0eb7\\setup.py\", line 38, in <module>\r\n          _long_description = f.read()\r\n      UnicodeDecodeError: 'cp950' codec can't decode byte 0xe2 in position 1301: illegal multibyte sequence\r\n      [end of output]\r\n\r\n  note: This error originates from a subprocess, and is likely not a problem with pip.\r\nerror: metadata-generation-failed\r\n\r\n\u00d7 Encountered error while generating package metadata.\r\n\u2570\u2500> See above for output.\r\n\r\nnote: This is an issue with the package mentioned above, not pip.\r\nhint: See above for details.\r\n```\r\n```cmd\r\nPS C:\\tensorflow> pip install --no-cache-dir jax==0.3.25\r\nCollecting jax==0.3.25\r\n  Downloading jax-0.3.25.tar.gz (1.1 MB)\r\n     \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 1.1/1.1 MB 4.2 MB/s eta 0:00:00\r\n  Preparing metadata (setup.py) ... error\r\n  error: subprocess-exited-with-error\r\n\r\n  \u00d7 python setup.py egg_info did not run successfully.\r\n  \u2502 exit code: 1\r\n  \u2570\u2500> [6 lines of output]\r\n      Traceback (most recent call last):\r\n        File \"<string>\", line 2, in <module>\r\n        File \"<pip-setuptools-caller>\", line 34, in <module>\r\n        File \"C:\\Users\\Jason Wu\\AppData\\Local\\Temp\\pip-install-h_ymbbfo\\jax_9f7e4365d3a24fb4bb4e74d1b86678e6\\setup.py\", line 38, in <module>\r\n          _long_description = f.read()\r\n      UnicodeDecodeError: 'cp950' codec can't decode byte 0xe2 in position 1304: illegal multibyte sequence\r\n      [end of output]\r\n\r\n  note: This error originates from a subprocess, and is likely not a problem with pip.\r\nerror: metadata-generation-failed\r\n\r\n\u00d7 Encountered error while generating package metadata.\r\n\u2570\u2500> See above for output.\r\n\r\nnote: This is an issue with the package mentioned above, not pip.\r\nhint: See above for details.\r\n```\r\n\r\nIt's worth noting that `0.3.14` installed without issue:\r\n```cmd\r\nPS C:\\tensorflow> pip install --no-cache-dir jax==0.3.14\r\nCollecting jax==0.3.14\r\n  Downloading jax-0.3.14.tar.gz (990 kB)\r\n     \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 990.1/990.1 kB 2.6 MB/s eta 0:00:00\r\n  Preparing metadata (setup.py) ... done\r\nRequirement already satisfied: absl-py ...\r\n...\r\nBuilding wheels for collected packages: jax\r\n  Building wheel for jax (setup.py) ... done\r\n  Created wheel for jax: filename=jax-0.3.14-py3-none-any.whl size=1147576 sha256=ae0aadd2688c543930de9ba7e31e58b3363a8752ae25e4770941b53e1c3476d6\r\n  Stored in directory: C:\\Users\\Jason Wu\\AppData\\Local\\Temp\\pip-ephem-wheel-cache-q92x7zxq\\wheels\\3d\\22\\cf\\75c40ec058e8d0f9b8427cd35366e1fd618475451fc8fc6fd7\r\nSuccessfully built jax\r\nInstalling collected packages: jax\r\nSuccessfully installed jax-0.3.14\r\n```\r\n\r\nSince I'm building Tensorflow from source, it requires Jax > `0.3.15`.\r\n\r\nPlease let me know if there is any other information that needs to be provided. thanks!\n\n### What jax/jaxlib version are you using?\n\njax v0.3.15\n\n### Which accelerator(s) are you using?\n\nCPU\n\n### Additional system info\n\nPython 3.9.13, pip 22.3.1, Windows 10, \n\n### NVIDIA GPU info\n\n_No response_\n", "before_files": [{"content": "# Copyright 2018 The JAX Authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nfrom distutils import spawn\nimport subprocess\nimport os\nimport sys\n\nfrom setuptools import setup, find_packages\n\n_current_jaxlib_version = '0.4.1'\n# The following should be updated with each new jaxlib release.\n_latest_jaxlib_version_on_pypi = '0.4.1'\n_available_cuda_versions = ['11']\n_default_cuda_version = '11'\n_available_cudnn_versions = ['82', '86']\n_default_cudnn_version = '86'\n_libtpu_version = '0.1.dev20221212'\n\n_dct = {}\nwith open('jax/version.py') as f:\n  exec(f.read(), _dct)\n__version__ = _dct['__version__']\n_minimum_jaxlib_version = _dct['_minimum_jaxlib_version']\n\nwith open('README.md') as f:\n  _long_description = f.read()\n\nif 'PROTOC' in os.environ and os.path.exists(os.environ['PROTOC']):\n  protoc = os.environ['PROTOC']\nelse:\n  protoc = spawn.find_executable('protoc')\n\ndef generate_proto(source):\n  if not protoc or not os.path.exists(source):\n    return\n  protoc_command = [protoc, '-I.', '--python_out=.', source]\n  if subprocess.call(protoc_command) != 0:\n    sys.exit(-1)\n\ngenerate_proto(\"jax/experimental/australis/executable.proto\")\ngenerate_proto(\"jax/experimental/australis/petri.proto\")\n\nsetup(\n    name='jax',\n    version=__version__,\n    description='Differentiate, compile, and transform Numpy code.',\n    long_description=_long_description,\n    long_description_content_type='text/markdown',\n    author='JAX team',\n    author_email='jax-dev@google.com',\n    packages=find_packages(exclude=[\"examples\"]),\n    package_data={'jax': ['py.typed', \"*.pyi\", \"**/*.pyi\"]},\n    python_requires='>=3.8',\n    install_requires=[\n        'numpy>=1.20',\n        'opt_einsum',\n        'scipy>=1.5',\n    ],\n    extras_require={\n        # Minimum jaxlib version; used in testing.\n        'minimum-jaxlib': [f'jaxlib=={_minimum_jaxlib_version}'],\n\n        # CPU-only jaxlib can be installed via:\n        # $ pip install jax[cpu]\n        'cpu': [f'jaxlib=={_current_jaxlib_version}'],\n\n        # Used only for CI builds that install JAX from github HEAD.\n        'ci': [f'jaxlib=={_latest_jaxlib_version_on_pypi}'],\n\n        # Cloud TPU VM jaxlib can be installed via:\n        # $ pip install jax[tpu] -f https://storage.googleapis.com/jax-releases/libtpu_releases.html\n        'tpu': [f'jaxlib=={_current_jaxlib_version}',\n                f'libtpu-nightly=={_libtpu_version}',\n                # Required by cloud_tpu_init.py\n                'requests'],\n\n        # $ pip install jax[australis]\n        'australis': ['protobuf>=3.13,<4'],\n\n        # CUDA installations require adding jax releases URL; e.g.\n        # Cuda installation defaulting to a CUDA and Cudnn version defined above.\n        # $ pip install jax[cuda] -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html\n        'cuda': [f\"jaxlib=={_current_jaxlib_version}+cuda{_default_cuda_version}.cudnn{_default_cudnn_version}\"],\n\n        # CUDA installations require adding jax releases URL; e.g.\n        # $ pip install jax[cuda11_cudnn82] -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html\n        # $ pip install jax[cuda11_cudnn86] -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html\n        **{f'cuda{cuda_version}_cudnn{cudnn_version}': f\"jaxlib=={_current_jaxlib_version}+cuda{cuda_version}.cudnn{cudnn_version}\"\n           for cuda_version in _available_cuda_versions for cudnn_version in _available_cudnn_versions}\n    },\n    url='https://github.com/google/jax',\n    license='Apache-2.0',\n    classifiers=[\n        \"Programming Language :: Python :: 3.8\",\n        \"Programming Language :: Python :: 3.9\",\n        \"Programming Language :: Python :: 3.10\",\n        \"Programming Language :: Python :: 3.11\",\n    ],\n    zip_safe=False,\n)\n", "path": "setup.py"}], "after_files": [{"content": "# Copyright 2018 The JAX Authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nfrom distutils import spawn\nimport subprocess\nimport os\nimport sys\n\nfrom setuptools import setup, find_packages\n\n_current_jaxlib_version = '0.4.1'\n# The following should be updated with each new jaxlib release.\n_latest_jaxlib_version_on_pypi = '0.4.1'\n_available_cuda_versions = ['11']\n_default_cuda_version = '11'\n_available_cudnn_versions = ['82', '86']\n_default_cudnn_version = '86'\n_libtpu_version = '0.1.dev20221212'\n\n_dct = {}\nwith open('jax/version.py', encoding='utf-8') as f:\n  exec(f.read(), _dct)\n__version__ = _dct['__version__']\n_minimum_jaxlib_version = _dct['_minimum_jaxlib_version']\n\nwith open('README.md', encoding='utf-8') as f:\n  _long_description = f.read()\n\nif 'PROTOC' in os.environ and os.path.exists(os.environ['PROTOC']):\n  protoc = os.environ['PROTOC']\nelse:\n  protoc = spawn.find_executable('protoc')\n\ndef generate_proto(source):\n  if not protoc or not os.path.exists(source):\n    return\n  protoc_command = [protoc, '-I.', '--python_out=.', source]\n  if subprocess.call(protoc_command) != 0:\n    sys.exit(-1)\n\ngenerate_proto(\"jax/experimental/australis/executable.proto\")\ngenerate_proto(\"jax/experimental/australis/petri.proto\")\n\nsetup(\n    name='jax',\n    version=__version__,\n    description='Differentiate, compile, and transform Numpy code.',\n    long_description=_long_description,\n    long_description_content_type='text/markdown',\n    author='JAX team',\n    author_email='jax-dev@google.com',\n    packages=find_packages(exclude=[\"examples\"]),\n    package_data={'jax': ['py.typed', \"*.pyi\", \"**/*.pyi\"]},\n    python_requires='>=3.8',\n    install_requires=[\n        'numpy>=1.20',\n        'opt_einsum',\n        'scipy>=1.5',\n    ],\n    extras_require={\n        # Minimum jaxlib version; used in testing.\n        'minimum-jaxlib': [f'jaxlib=={_minimum_jaxlib_version}'],\n\n        # CPU-only jaxlib can be installed via:\n        # $ pip install jax[cpu]\n        'cpu': [f'jaxlib=={_current_jaxlib_version}'],\n\n        # Used only for CI builds that install JAX from github HEAD.\n        'ci': [f'jaxlib=={_latest_jaxlib_version_on_pypi}'],\n\n        # Cloud TPU VM jaxlib can be installed via:\n        # $ pip install jax[tpu] -f https://storage.googleapis.com/jax-releases/libtpu_releases.html\n        'tpu': [f'jaxlib=={_current_jaxlib_version}',\n                f'libtpu-nightly=={_libtpu_version}',\n                # Required by cloud_tpu_init.py\n                'requests'],\n\n        # $ pip install jax[australis]\n        'australis': ['protobuf>=3.13,<4'],\n\n        # CUDA installations require adding jax releases URL; e.g.\n        # Cuda installation defaulting to a CUDA and Cudnn version defined above.\n        # $ pip install jax[cuda] -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html\n        'cuda': [f\"jaxlib=={_current_jaxlib_version}+cuda{_default_cuda_version}.cudnn{_default_cudnn_version}\"],\n\n        # CUDA installations require adding jax releases URL; e.g.\n        # $ pip install jax[cuda11_cudnn82] -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html\n        # $ pip install jax[cuda11_cudnn86] -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html\n        **{f'cuda{cuda_version}_cudnn{cudnn_version}': f\"jaxlib=={_current_jaxlib_version}+cuda{cuda_version}.cudnn{cudnn_version}\"\n           for cuda_version in _available_cuda_versions for cudnn_version in _available_cudnn_versions}\n    },\n    url='https://github.com/google/jax',\n    license='Apache-2.0',\n    classifiers=[\n        \"Programming Language :: Python :: 3.8\",\n        \"Programming Language :: Python :: 3.9\",\n        \"Programming Language :: Python :: 3.10\",\n        \"Programming Language :: Python :: 3.11\",\n    ],\n    zip_safe=False,\n)\n", "path": "setup.py"}]}