#
# 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
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
    #   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
    #   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
