#
# This file is autogenerated by pip-compile with Python 3.11
# by the following command:
#
#    pip-compile --allow-unsafe --output-file=constraints.txt --strip-extras requirements.all.txt
#
anytree==2.8.0
    # via -r requirements.memory.txt
appdirs==1.4.4
    # via -r requirements.all.txt
appnope==0.1.3
    # via -r requirements.all.txt
asttokens==2.2.1
    # via stack-data
attrs==22.2.0
    # via jsonschema
backcall==0.2.0
    # via ipython
bitstring==3.1.9
    # via
    #   -r requirements.esp32.txt
    #   esptool
build==0.8.0
    # via
    #   -r requirements.all.txt
    #   pip-tools
cachecontrol==0.12.11
    # via idf-component-manager
cbor==1.0.0
    # via -r requirements.zephyr.txt
cbor2==5.4.6
    # via -r requirements.zephyr.txt
certifi==2022.12.7
    # via requests
charset-normalizer==3.0.1
    # via requests
click==8.1.3
    # via
    #   -r requirements.build.txt
    #   -r requirements.esp32.txt
    #   idf-component-manager
    #   pip-tools
colorama==0.4.6
    # via
    #   -r requirements.all.txt
    #   idf-component-manager
    #   west
coloredlogs==15.0.1
    # via -r requirements.all.txt
construct==2.10.70
    # via
    #   -r requirements.esp32.txt
    #   esp-coredump
contextlib2==21.6.0
    # via
    #   idf-component-manager
    #   schema
cryptography==39.0.2
    # via
    #   -c constraints.esp32.txt
    #   -r requirements.all.txt
    #   esptool
cxxfilt==0.3.0
    # via -r requirements.memory.txt
decorator==5.1.1
    # via ipython
diskcache==5.4.0
    # via -r requirements.all.txt
distlib==0.3.6
    # via virtualenv
docopt==0.6.2
    # via pykwalify
ecdsa==0.18.0
    # via
    #   -r requirements.esp32.txt
    #   esptool
esp-coredump==1.7.0
    # via esp-idf-monitor
esp-idf-kconfig==1.2.0
    # via -r requirements.esp32.txt
esp-idf-monitor==1.1.1
    # via -r requirements.esp32.txt
esptool==4.6.2
    # via esp-coredump
executing==1.2.0
    # via stack-data
fastcore==1.5.28
    # via ghapi
filelock==3.9.0
    # via virtualenv
future==0.18.3
    # via
    #   -r requirements.esp32.txt
    #   idf-component-manager
ghapi==1.0.3
    # via -r requirements.memory.txt
humanfriendly==10.0
    # via coloredlogs
idf-component-manager==1.5.2
    # via -r requirements.esp32.txt
idna==3.4
    # via requests
intelhex==2.3.0
    # via -r requirements.zephyr.txt
ipython==8.11.0
    # via -r requirements.all.txt
jedi==0.18.2
    # via ipython
jinja2==3.0.3
    # via -r requirements.build.txt
jsonschema==4.17.3
    # via -r requirements.zephyr.txt
kconfiglib==13.7.1
    # via esp-idf-kconfig
lark==1.1.5
    # via
    #   -r requirements.all.txt
    #   -r requirements.build.txt
lockfile==0.12.2
    # via cachecontrol
markupsafe==2.1.2
    # via jinja2
matplotlib-inline==0.1.6
    # via ipython
mobly==1.12.1
    # via -r requirements.all.txt
msgpack==1.0.4
    # via cachecontrol
mypy==1.10.1
    # via -r requirements.all.txt
mypy-extensions==1.0.0
    # via mypy
mypy-protobuf==3.5.0
    # via -r requirements.all.txt
numpy==1.26.4
    # via pandas
packaging==23.0
    # via
    #   build
    #   fastcore
    #   ghapi
    #   idf-component-manager
    #   west
pandas==2.1.4 ; platform_machine != "aarch64" and platform_machine != "arm64"
    # via -r requirements.memory.txt
parso==0.8.3
    # via jedi
pep517==0.13.0
    # via build
pexpect==4.8.0
    # via ipython
pgi==0.0.11.2 ; sys_platform == "linux"
    # via -r requirements.all.txt
pickleshare==0.7.5
    # via ipython
pip-tools==7.0.0
    # via -r requirements.all.txt
platformdirs==3.0.0
    # via virtualenv
portpicker==1.5.2
    # via
    #   -r requirements.all.txt
    #   mobly
prompt-toolkit==3.0.43
    # via ipython
protobuf==4.24.4
    # via
    #   -r requirements.all.txt
    #   mypy-protobuf
psutil==5.9.4
    # via portpicker
ptyprocess==0.7.0
    # via pexpect
pure-eval==0.2.2
    # via stack-data
pycparser==2.21
    # via cffi
pyelftools==0.30
    # via
    #   -c constraints.esp32.txt
    #   esp-idf-monitor
pygdbmi==0.9.0.2
    # via
    #   -r requirements.esp32.txt
    #   esp-coredump
pygments==2.14.0
    # via ipython
pykwalify==1.8.0
    # via west
pyparsing==3.0.9
    # via -r requirements.esp32.txt
pyrsistent==0.19.3
    # via jsonschema
pyserial==3.5
    # via
    #   -c constraints.esp32.txt
    #   esp-idf-monitor
    #   esptool
python-dateutil==2.8.2
    # via
    #   pandas
    #   pykwalify
python-engineio==3.14.2
    # via python-socketio
python-socketio==4.6.1
    # via -r requirements.esp32.txt
pytz==2022.7.1
    # via pandas
pyyaml==6.0.1
    # via
    #   esptool
    #   idf-component-manager
    #   mobly
    #   west
reedsolo==1.5.4
    # via
    #   -r requirements.esp32.txt
    #   esptool
requests==2.28.2
    # via
    #   -r requirements.cirque.txt
    #   cachecontrol
    #   idf-component-manager
    #   requests-file
    #   requests-toolbelt
requests-file==1.5.1
    # via idf-component-manager
requests-toolbelt==0.10.1
    # via idf-component-manager
ruamel-yaml==0.17.21
    # via pykwalify
schema==0.7.5
    # via idf-component-manager
six==1.16.0
    # via
    #   anytree
    #   asttokens
    #   ecdsa
    #   idf-component-manager
    #   python-dateutil
    #   python-engineio
    #   python-socketio
    #   requests-file
stack-data==0.6.2
    # via ipython
tabulate==0.9.0
    # via -r requirements.memory.txt
tornado==6.2
    # via -r requirements.all.txt
tqdm==4.64.1
    # via idf-component-manager
traitlets==5.9.0
    # via
    #   ipython
    #   matplotlib-inline
types-protobuf==4.24.0.2
    # via
    #   -r requirements.all.txt
    #   mypy-protobuf
typing-extensions==4.6.0
    # via mypy
urllib3==1.26.14
    # via requests
virtualenv==20.20.0
    # via -r requirements.all.txt
watchdog==2.3.1
    # via -r requirements.all.txt
wcwidth==0.2.6
    # via prompt-toolkit
websockets==10.4
    # via -r requirements.all.txt
west==1.2.0
    # via -r requirements.zephyr.txt
wheel==0.38.4 ; sys_platform == "linux"
    # via
    #   -r requirements.all.txt
    #   pip-tools

# The following packages are considered to be unsafe in a requirements file:
pip==23.2.1
    # via
    #   fastcore
    #   ghapi
    #   pip-tools
setuptools==68.0.0
    # via
    #   pip-tools
    #   west

# Manual edits:

# Higher versions depend on proto-plus, which break
# nanopb code generation (due to name conflict of the 'proto' module)
google-api-core==2.17.0
