#
# 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.54
    # 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.2.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
    # 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
