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

# Keep sorted.
fusesoc
gitpython
hjson
isort
livereload
mako
meson
mistletoe>=0.7.2
pyftdi
pygments
pytest
pytest-timeout
pyyaml
yapf

# Develpment version to get around YAML parser warning triggered by fusesoc
# Upstream tracking: https://github.com/olofk/ipyxact/issues/19
git+https://github.com/olofk/ipyxact.git@master

# Development version of edalize until all our changes are upstream
git+https://github.com/lowRISC/edalize.git@ot
