#
# This file is autogenerated by pip-compile with python 3.10
# To update, run:
#
#    pip-compile --output-file=constraints.txt requirements.txt
#
anytree==2.8.0
    # via -r requirements.txt
appdirs==1.4.4
    # via
    #   -r requirements.txt
    #   mbed-os-tools
    #   virtualenv
appnope==0.1.2
    # via -r requirements.txt
attrs==21.2.0
    # via
    #   jsonschema
    #   pytest
backcall==0.2.0
    # via ipython
beautifulsoup4==4.11.1
    # via mbed-os-tools
bitstring==3.1.7
    # via -r requirements.esp32.txt
brotli==1.0.9
    # via flask-compress
cbor==1.0.0
    # via -r requirements.txt
cbor2==5.4.0
    # via -r requirements.txt
certifi==2021.5.30
    # via requests
cffi==1.14.5
    # via cryptography
chardet==4.0.0
    # via requests
click==8.1.3
    # via
    #   -r requirements.esp32.txt
    #   -r requirements.txt
    #   flask
    #   idf-component-manager
    #   pip-tools
colorama==0.4.4
    # via
    #   -r requirements.txt
    #   idf-component-manager
    #   mbed-os-tools
    #   west
coloredlogs==15.0.1
    # via -r requirements.txt
construct==2.10.54
    # via -r requirements.esp32.txt
contextlib2==21.6.0
    # via
    #   idf-component-manager
    #   schema
cryptography==3.4.7
    # via
    #   -r requirements.esp32.txt
    #   -r requirements.txt
cxxfilt==0.2.2
    # via -r requirements.txt
dbus-python==1.2.16 ; sys_platform == "linux"
    # via -r requirements.txt
decorator==5.0.9
    # via ipython
distlib==0.3.2
    # via virtualenv
docopt==0.6.2
    # via pykwalify
ecdsa==0.17.0
    # via -r requirements.esp32.txt
fastcore==1.3.26
    # via ghapi
fasteners==0.17.3
    # via mbed-os-tools
filelock==3.0.12
    # via virtualenv
flask==0.12.5
    # via
    #   flask-compress
    #   flask-socketio
    #   gdbgui
flask-compress==1.10.0
    # via gdbgui
flask-socketio==2.9.6
    # via gdbgui
future==0.18.2
    # via
    #   -r requirements.esp32.txt
    #   idf-component-manager
    #   mbed-os-tools
    #   mobly
gdbgui==0.13.2.0
    # via -r requirements.esp32.txt
gevent==1.5.0
    # via gdbgui
ghapi==0.1.19
    # via -r requirements.txt
gitdb==4.0.9
    # via gitpython
gitpython==3.1.27 ; platform_machine != "aarch64" and sys_platform == "linux"
    # via -r requirements.mbed.txt
greenlet==1.1.0
    # via gevent
humanfriendly==9.2
    # via coloredlogs
idf-component-manager==1.1.4
    # via -r requirements.esp32.txt
idna==2.10
    # via requests
iniconfig==1.1.1
    # via pytest
intelhex==2.3.0
    # via
    #   -r requirements.txt
    #   mbed-os-tools
ipython==7.24.1
    # via -r requirements.txt
ipython-genutils==0.2.0
    # via traitlets
itsdangerous==2.0.1
    # via flask
jedi==0.18.0
    # via ipython
jinja2==3.0.1
    # via flask
jsonschema==4.4.0
    # via -r requirements.txt
junit-xml==1.9
    # via mbed-os-tools
kconfiglib==13.7.1
    # via -r requirements.esp32.txt
lark==1.1.2
    # via -r requirements.txt
lockfile==0.12.2
    # via
    #   -r requirements.txt
    #   mbed-os-tools
mako==1.2.1
    # via pdoc3
markdown==3.3.7
    # via pdoc3
markupsafe==2.0.1
    # via
    #   jinja2
    #   mako
matplotlib-inline==0.1.2
    # via ipython
mbed-ls==1.8.11 ; platform_machine != "aarch64" and sys_platform == "linux"
    # via -r requirements.mbed.txt
mbed-os-tools==1.8.13
    # via mbed-ls
mobly==1.10.1
    # via -r requirements.txt
numpy==1.23.0
    # via pandas
packaging==20.9
    # via
    #   fastcore
    #   ghapi
    #   pytest
    #   west
pandas==1.4.3 ; platform_machine != "aarch64" and platform_machine != "arm64"
    # via -r requirements.txt
parso==0.8.2
    # via jedi
pdoc3==0.10.0 ; platform_machine != "aarch64" and sys_platform == "linux"
    # via -r requirements.mbed.txt
pep517==0.10.0
    # via pip-tools
pexpect==4.8.0
    # via ipython
pgi==0.0.11.2 ; sys_platform == "linux"
    # via -r requirements.txt
pickleshare==0.7.5
    # via ipython
pip-tools==6.1.0
    # via -r requirements.txt
pluggy==1.0.0
    # via pytest
portpicker==1.4.0
    # via
    #   -r requirements.txt
    #   mobly
prettytable==2.5.0
    # via
    #   mbed-ls
    #   mbed-os-tools
prompt-toolkit==3.0.26
    # via ipython
protobuf==3.17.3
    # via -r requirements.txt
psutil==5.8.0
    # via
    #   -r requirements.txt
    #   mobly
ptyprocess==0.7.0
    # via pexpect
py==1.11.0
    # via pytest
pycparser==2.20
    # via cffi
pyelftools==0.27
    # via -r requirements.esp32.txt
pygdbmi==0.9.0.2
    # via
    #   -r requirements.esp32.txt
    #   gdbgui
pygments==2.9.0
    # via
    #   gdbgui
    #   ipython
pykwalify==1.8.0
    # via west
pyparsing==2.3.1
    # via
    #   -r requirements.esp32.txt
    #   packaging
pyrsistent==0.18.1
    # via jsonschema
pyserial==3.5
    # via
    #   -r requirements.esp32.txt
    #   mbed-os-tools
    #   mobly
pytest==6.2.5 ; platform_machine != "aarch64" and sys_platform == "linux"
    # via -r requirements.mbed.txt
python-dateutil==2.8.1
    # via
    #   pandas
    #   pykwalify
python-dotenv==0.20.0 ; platform_machine != "aarch64" and sys_platform == "linux"
    # via -r requirements.mbed.txt
python-engineio==3.14.2
    # via python-socketio
python-socketio==4.6.1
    # via
    #   -r requirements.esp32.txt
    #   flask-socketio
pytz==2021.1
    # via pandas
pyudev==0.23.2 ; platform_machine != "aarch64" and sys_platform == "linux"
    # via -r requirements.mbed.txt
pyyaml==5.4.1
    # via
    #   idf-component-manager
    #   mobly
    #   west
reedsolo==1.5.4
    # via -r requirements.esp32.txt
requests==2.25.1
    # via
    #   -r requirements.txt
    #   idf-component-manager
    #   mbed-os-tools
    #   requests-toolbelt
requests-toolbelt==0.9.1
    # via idf-component-manager
ruamel-yaml==0.17.9
    # via pykwalify
schema==0.7.5
    # via idf-component-manager
six==1.16.0
    # via
    #   anytree
    #   ecdsa
    #   idf-component-manager
    #   junit-xml
    #   mbed-os-tools
    #   protobuf
    #   python-dateutil
    #   python-engineio
    #   python-socketio
    #   pyudev
    #   virtualenv
smmap==5.0.0
    # via gitdb
soupsieve==2.3.2.post1
    # via beautifulsoup4
stringcase==1.2.0
    # via -r requirements.txt
tabulate==0.8.10
    # via -r requirements.txt
timeout-decorator==0.5.0
    # via mobly
toml==0.10.2
    # via
    #   pep517
    #   pytest
tornado==6.1
    # via -r requirements.txt
tqdm==4.61.1
    # via idf-component-manager
traitlets==5.0.5
    # via
    #   ipython
    #   matplotlib-inline
typing-extensions==4.3.0 ; platform_machine != "aarch64" and sys_platform == "linux"
    # via -r requirements.mbed.txt
urllib3==1.26.5
    # via requests
virtualenv==20.4.7
    # via -r requirements.txt
watchdog==2.1.2
    # via -r requirements.txt
wcwidth==0.2.5
    # via
    #   prettytable
    #   prompt-toolkit
werkzeug==0.16.1
    # via flask
west==0.12.0
    # via -r requirements.txt
wheel==0.36.2
    # via -r requirements.txt

# The following packages are considered to be unsafe in a requirements file:
# pip
# setuptools
