#
# 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 ; 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
mypy==0.971
    # via -r requirements.txt
mypy-extensions==0.4.3
    # via mypy
mypy-protobuf==3.2.0
    # 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.20.1
    # via
    #   -r requirements.txt
    #   mypy-protobuf
psutil==5.9.1
    # via -r requirements.txt
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
    #   pytest-json-report
    #   pytest-metadata
pytest-json-report==1.5.0
    # via -r requirements.openiotsdk.txt
pytest-metadata==2.0.2
    # via pytest-json-report
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
    #   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
tomli==2.0.1
    # via mypy
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
types-protobuf==3.19.22
    # via
    #   -r requirements.txt
    #   mypy-protobuf
typing-extensions==4.3.0 ; platform_machine != "aarch64" and sys_platform == "linux"
    # via
    #   -r requirements.mbed.txt
    #   mobly
    #   mypy
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
