# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0

# Keep sorted.
hjson==3.1.0
jsonschema==4.17.3; python_version >= "3.7"
# Need to pin to 0.4.9 to be compatible with python3.11
libcst==0.4.9
mako==1.1.6
pluralizer==1.2.0
pycryptodome==3.15.0
pyelftools==0.29
pytest==7.0.1
pytest-timeout==2.1.0
rich==12.5.1
pyyaml==6.0
tabulate==0.8.10
typer==0.6.1

# Dependencies: gen-flash-img.py
pyfinite==1.9.1

# Dependencies: dv_sim
enlighten==1.10.2
mistletoe==0.9.0
# Premailer 3.9.0 broke the API by introducing an allow_loading_external_files
# argument that is now mandatory, but didn't exist in previous versions.
# To relax the constraint we either need to do a runtime detection, or switch all
# users to a newer version.
premailer==3.8.0

# Dependencies: check_dif_statuses.py
pydriller==2.1
termcolor==1.1.0

# Linters
flake8==5.0.4
isort==5.10.1
mypy==0.971
yapf==0.32.0

# Type stubs for mypy checking.
# types-dataclasses is only needed for Python <= 3.6.
types-dataclasses==0.6.6
types-pkg_resources==0.1.3
types-pyyaml==6.0.11
types-tabulate==0.8.11

# Dependency of sw/host/vendor/google_verible_verilog_syntax_py
anytree==2.8.0

# Development version with OT-specific changes
# The version is different from upstream OT because ot-0.3 builds HW twice
# somehow and doubles the build time.
git+https://github.com/lowRISC/fusesoc.git@ot-0.1

# Development version with OT-specific changes
# The version is different from upstream OT because v0.4.0 builds HW twice
# somehow and doubles the build time.
git+https://github.com/lowRISC/edalize.git@ot-0.1

# Development version of minimal ChipWhisperer toolchain with latest features
# and bug fixes. We fix the version for improved stability and manually update
# if necessary.
git+https://github.com/newaetech/chipwhisperer-minimal.git@2643131b71e528791446ee1bab7359120288f4ab#egg=chipwhisperer

# Dependencies: @matcha//util/image_to_c.py
Pillow == 9.3.0

# Dependencies: @matcha//util/run_live_cam.py
pyserial == 3.5

# Working version for CentOS 7
urllib3==1.26.15
