#
# 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
cffi==1.15.1
    # via cryptography
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==0.971
    # via -r requirements.all.txt
mypy-extensions==1.0.0
    # via mypy
mypy-protobuf==3.5.0
    # via -r requirements.all.txt
numpy==1.24.2
    # via pandas
packaging==23.0
    # via
    #   build
    #   fastcore
    #   ghapi
    #   idf-component-manager
    #   west
pandas==1.5.3 ; 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
stringcase==1.2.0
    # via -r requirements.build.txt
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.5.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.0.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
