#
# 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.3
    # via -r requirements.txt
certifi==2021.5.30
    # via requests
cffi==1.15.1
    # via cryptography
chardet==4.0.0
    # via requests
click==8.1.3
    # via
    #   -r requirements.esp32.txt
    #   -r requirements.txt
    #   flask
    #   idf-component-manager
    #   mbed-tools
    #   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
    #   -c constraints.esp32.txt
    #   -r requirements.txt
cxxfilt==0.2.2
    # via -r requirements.txt
dbus-python==1.2.18 ; 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
    #   mbed-tools
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
    #   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
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
mbed-tools==7.55.1.dev1 ; platform_machine != "aarch64" and sys_platform == "linux"
    # via -r requirements.mbed.txt
mobly==1.11.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.9.1
    # via
    #   -r requirements.txt
    #   mobly
    #   mbed-tools
ptyprocess==0.7.0
    # via pexpect
py==1.11.0
    # via pytest
pycparser==2.20
    # via cffi
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
    #   -c constraints.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.20.0 ; platform_machine != "aarch64" and sys_platform == "linux"
    # via
    #   -r requirements.mbed.txt
    #   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.23.2 ; platform_machine != "aarch64" and sys_platform == "linux"
    # via
    #   -r requirements.mbed.txt
    #   mbed-tools
pyyaml==6.0
    # 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
    #   mbed-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
    #   mbed-tools
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
    #   mbed-tools
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
    #   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
