#
# This file is autogenerated by pip-compile
# 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
    #   virtualenv
appnope==0.1.2
    # via -r requirements.txt
backcall==0.2.0
    # via ipython
bidict==0.21.2
    # via python-socketio
bitstring==3.1.7
    # via -r requirements.esp32.txt
brotli==1.0.9
    # via flask-compress
certifi==2021.5.30
    # via requests
cffi==1.14.5
    # via cryptography
chardet==4.0.0
    # via requests
click==7.1.2
    # via
    #   -r requirements.esp32.txt
    #   flask
    #   mbed-tools
    #   pip-tools
colorama==0.4.4
    # via west
coloredlogs==15.0.1
    # via -r requirements.txt
cryptography==3.4.7
    # via -r requirements.esp32.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
filelock==3.0.12
    # via virtualenv
flask-compress==1.10.0
    # via gdbgui
flask-socketio==2.9.6
    # via gdbgui
flask==0.12.5
    # via
    #   flask-compress
    #   flask-socketio
    #   gdbgui
future==0.18.2
    # via
    #   -r requirements.esp32.txt
    #   mobly
gdbgui==0.13.2.0 ; platform_machine != "aarch64"
    # via -r requirements.esp32.txt
gevent==1.5.0
    # via gdbgui
gitdb==4.0.7
    # via gitpython
gitpython==3.1.14
    # via mbed-tools
greenlet==1.1.0
    # via gevent
humanfriendly==9.2
    # via coloredlogs
idna==2.10
    # via requests
intelhex==2.3.0
    # via -r requirements.txt
ipython-genutils==0.2.0
    # via traitlets
ipython==7.24.1
    # via -r requirements.txt
itsdangerous==2.0.1
    # via flask
jedi==0.18.0
    # via ipython
jinja2==3.0.1
    # via
    #   flask
    #   mbed-tools
lockfile==0.12.2
    # via -r requirements.txt
mako==1.1.4
    # via pdoc3
markdown==3.3.4
    # via pdoc3
markupsafe==2.0.1
    # via
    #   jinja2
    #   mako
matplotlib-inline==0.1.2
    # via ipython
mbed-tools==7.22.0
    # via -r requirements.mbed.txt
mobly==1.10.1
    # via -r requirements.txt
numpy==1.20.3
    # via pandas
packaging==20.9
    # via west
pandas==1.2.4 ; platform_machine != "aarch64"
    # via -r requirements.txt
parso==0.8.2
    # via jedi
pdoc3==0.9.2
    # via mbed-tools
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
portpicker==1.4.0
    # via
    #   -r requirements.txt
    #   mobly
prettytable==0.7.2
    # via -r requirements.mbed.txt
prompt-toolkit==3.0.20
    # via ipython
protobuf==3.17.3
    # via -r requirements.txt
psutil==5.8.0
    # via
    #   -r requirements.txt
    #   mbed-tools
    #   mobly
ptyprocess==0.7.0
    # via pexpect
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
pyserial==3.5
    # via
    #   -r requirements.esp32.txt
    #   mbed-tools
    #   mobly
python-dateutil==2.8.1
    # via
    #   pandas
    #   pykwalify
python-dotenv==0.17.1
    # via mbed-tools
python-engineio==4.2.0
    # via python-socketio
python-socketio<5
    # via flask-socketio
pytz==2021.1
    # via pandas
pyudev==0.22.0
    # via mbed-tools
pyyaml==5.4.1
    # via
    #   mobly
    #   west
reedsolo==1.5.4
    # via -r requirements.esp32.txt
requests==2.25.1
    # via
    #   -r requirements.txt
    #   mbed-tools
ruamel.yaml.clib==0.2.2
    # via ruamel.yaml
ruamel.yaml==0.17.9
    # via pykwalify
six==1.16.0
    # via
    #   anytree
    #   ecdsa
    #   protobuf
    #   python-dateutil
    #   pyudev
    #   virtualenv
smmap==4.0.0
    # via gitdb
tabulate==0.8.9
    # via mbed-tools
timeout-decorator==0.5.0
    # via mobly
toml==0.10.2
    # via pep517
tqdm==4.61.1
    # via mbed-tools
traitlets==5.0.5
    # via
    #   ipython
    #   matplotlib-inline
typing-extensions==3.10.0.0
    # via mbed-tools
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 prompt-toolkit
werkzeug==0.16.1
    # via flask
west==0.11.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
