#
# This file is autogenerated by pip-compile with Python 3.11
# by the following command:
#
#    pip-compile
#
absl-py==1.0.0
    # via
    #   -r requirements.in
    #   chex
    #   google-vizier
    #   optax
    #   orbax-checkpoint
    #   tensorboard
    #   tensorflow
    #   tensorflow-probability
astunparse==1.6.3
    # via tensorflow
attrs==21.4.0
    # via google-vizier
cachetools==5.3.2
    # via google-auth
certifi==2023.11.17
    # via requests
charset-normalizer==3.3.2
    # via requests
chex==0.1.85
    # via optax
cloudpickle==3.0.0
    # via tensorflow-probability
decorator==5.1.1
    # via tensorflow-probability
dm-tree==0.1.8
    # via tensorflow-probability
equinox==0.11.3
    # via -r requirements.in
etils[epath,epy]==1.5.2
    # via
    #   -r requirements.in
    #   orbax-checkpoint
flatbuffers==23.5.26
    # via tensorflow
flax==0.8.0
    # via -r requirements.in
fsspec==2024.2.0
    # via etils
gast==0.5.4
    # via
    #   tensorflow
    #   tensorflow-probability
google-api-core==2.15.0
    # via -r requirements.in
google-auth==2.26.2
    # via
    #   google-api-core
    #   google-auth-oauthlib
    #   tensorboard
google-auth-oauthlib==1.2.0
    # via tensorboard
google-pasta==0.2.0
    # via tensorflow
google-vizier==0.1.6
    # via -r requirements.in
googleapis-common-protos==1.56.4
    # via
    #   -r requirements.in
    #   google-api-core
    #   google-vizier
greenlet==3.0.3
    # via sqlalchemy
grpcio==1.60.0
    # via
    #   google-vizier
    #   grpcio-tools
    #   tensorboard
    #   tensorflow
grpcio-tools==1.60.0
    # via google-vizier
h5py==3.10.0
    # via tensorflow
idna==3.7
    # via requests
importlib-metadata==7.0.1
    # via -r requirements.in
importlib-resources==6.1.1
    # via etils
jax==0.4.23
    # via
    #   -r requirements.in
    #   chex
    #   equinox
    #   flax
    #   jaxopt
    #   optax
    #   orbax-checkpoint
jaxlib==0.4.23
    # via
    #   -r requirements.in
    #   chex
    #   jaxopt
    #   optax
    #   orbax-checkpoint
jaxopt==0.8.3
    # via -r requirements.in
jaxtyping==0.2.25
    # via equinox
keras==2.15.0
    # via tensorflow
libclang==16.0.6
    # via tensorflow
markdown==3.5.2
    # via tensorboard
markdown-it-py==3.0.0
    # via rich
markupsafe==2.1.3
    # via werkzeug
mdurl==0.1.2
    # via markdown-it-py
ml-dtypes==0.2.0
    # via
    #   jax
    #   jaxlib
    #   tensorflow
msgpack==1.0.7
    # via
    #   flax
    #   orbax-checkpoint
nest-asyncio==1.6.0
    # via orbax-checkpoint
numpy==1.26.3
    # via
    #   -r requirements.in
    #   chex
    #   flax
    #   google-vizier
    #   h5py
    #   jax
    #   jaxlib
    #   jaxopt
    #   jaxtyping
    #   ml-dtypes
    #   opt-einsum
    #   optax
    #   orbax-checkpoint
    #   scipy
    #   tensorboard
    #   tensorflow
    #   tensorflow-probability
    #   tensorstore
oauthlib==3.2.2
    # via requests-oauthlib
opt-einsum==3.3.0
    # via
    #   jax
    #   tensorflow
optax==0.1.9
    # via flax
orbax-checkpoint==0.4.4
    # via flax
packaging==22.0
    # via tensorflow
pipeline-dp
    # via -r requirements.in
portpicker==1.6.0
    # via google-vizier
protobuf==4.23.4
    # via
    #   google-api-core
    #   google-vizier
    #   googleapis-common-protos
    #   grpcio-tools
    #   orbax-checkpoint
    #   tensorboard
    #   tensorflow
psutil==5.9.7
    # via portpicker
pyasn1==0.5.1
    # via
    #   pyasn1-modules
    #   rsa
python-dp
    # via -r requirements.in
pyasn1-modules==0.3.0
    # via google-auth
pygments==2.17.2
    # via rich
pysqlite3==0.5.2
    # via -r requirements.in
pyyaml==6.0.1
    # via
    #   flax
    #   orbax-checkpoint
requests==2.31.0
    # via
    #   google-api-core
    #   requests-oauthlib
    #   tensorboard
requests-oauthlib==1.3.1
    # via google-auth-oauthlib
rich==13.7.0
    # via flax
rsa==4.9
    # via google-auth
scipy==1.11.4
    # via
    #   -r requirements.in
    #   jax
    #   jaxlib
    #   jaxopt
six==1.16.0
    # via
    #   absl-py
    #   astunparse
    #   google-pasta
    #   tensorboard
    #   tensorflow
    #   tensorflow-probability
sqlalchemy==1.4.0
    # via google-vizier
tensorboard==2.15.1
    # via tensorflow
tensorboard-data-server==0.7.2
    # via tensorboard
tensorflow==2.15.0
    # via -r requirements.in
tensorflow-estimator==2.15.0
    # via tensorflow
tensorflow-io-gcs-filesystem==0.36.0
    # via
    #   -r requirements.in
    #   tensorflow
tensorflow-probability==0.23.0
    # via -r requirements.in
tensorstore==0.1.45
    # via
    #   flax
    #   orbax-checkpoint
termcolor==2.4.0
    # via tensorflow
toolz==0.12.1
    # via chex
typeguard==2.13.3
    # via jaxtyping
typing-extensions==4.9.0
    # via
    #   -r requirements.in
    #   chex
    #   equinox
    #   etils
    #   flax
    #   jaxtyping
    #   orbax-checkpoint
    #   tensorflow
urllib3==1.26.18
    # via
    #   -r requirements.in
    #   requests
werkzeug==3.0.1
    # via tensorboard
wheel==0.42.0
    # via astunparse
wrapt==1.14.1
    # via tensorflow
zipp==3.17.0
    # via
    #   etils
    #   importlib-metadata

# The following packages are considered to be unsafe in a requirements file:
setuptools~=69.0.3
