#
# 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
    #   mbed-os-tools
    #   virtualenv
appnope==0.1.2
    # via -r requirements.txt
attrs==21.2.0
    # via pytest
backcall==0.2.0
    # via ipython
beautifulsoup4==4.10.0
    # 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==7.1.2
    # via
    #   -r requirements.esp32.txt
    #   -r requirements.txt
    #   flask
    #   mbed-tools
    #   pip-tools
colorama==0.4.4
    # via
    #   mbed-os-tools
    #   west
coloredlogs==15.0.1
    # via -r requirements.txt
construct==2.10.54
    # via -r requirements.esp32.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
fastcore==1.3.26
    # via ghapi
fasteners==0.16.3
    # via mbed-os-tools
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
    #   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.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
iniconfig==1.1.1
    # via pytest
intelhex==2.3.0
    # via
    #   -r requirements.txt
    #   mbed-os-tools
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
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
lockfile==0.12.2
    # via
    #   -r requirements.txt
    #   mbed-os-tools
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-ls==1.8.11 ; platform_machine != "aarch64" and sys_platform == "linux"
    # via -r requirements.mbed.txt
mbed-os-tools==1.8.11
    # via mbed-ls
mbed-tools==7.49.1 ; platform_machine != "aarch64" and sys_platform == "linux"
    # via -r requirements.mbed.txt
mobly==1.10.1
    # via -r requirements.txt
numpy==1.20.3
    # via pandas
packaging==20.9
    # via
    #   fastcore
    #   ghapi
    #   pytest
    #   west
pandas==1.2.4 ; platform_machine != "aarch64" and platform_machine != "arm64"
    # 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
pluggy==1.0.0
    # via pytest
portpicker==1.4.0
    # via
    #   -r requirements.txt
    #   mobly
prettytable==2.2.1
    # 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
    #   mbed-tools
    #   mobly
ptyprocess==0.7.0
    # via pexpect
py==1.10.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
pyserial==3.5
    # via
    #   -r requirements.esp32.txt
    #   mbed-os-tools
    #   mbed-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.17.1
    # via mbed-tools
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.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-os-tools
    #   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
    #   fasteners
    #   junit-xml
    #   mbed-os-tools
    #   protobuf
    #   python-dateutil
    #   python-engineio
    #   python-socketio
    #   pyudev
    #   virtualenv
smmap==4.0.0
    # via gitdb
soupsieve==2.2.1
    # via beautifulsoup4
tabulate==0.8.9
    # via mbed-tools
timeout-decorator==0.5.0
    # via mobly
toml==0.10.2
    # via
    #   pep517
    #   pytest
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
    #   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
