[build-system] requires = ["setuptools", "setuptools-scm"] build-backend = "setuptools.build_meta" [project] name = "peakrdl-busdecoder" version = "0.5.0" requires-python = ">=3.10" dependencies = ["jinja2>=3.1.6", "systemrdl-compiler~=1.30.1"] authors = [{ name = "Arnav Sacheti" }] description = "Generate a SystemVerilog bus decoder from SystemRDL for splitting CPU interfaces to multiple sub-address spaces" readme = "README.md" license = { text = "LGPLv3" } keywords = [ "SystemRDL", "PeakRDL", "bus decoder", "address decoder", "hierarchical addressing", "compiler", "tool", "registers", "generator", "Verilog", "SystemVerilog", "register abstraction layer", "FPGA", "ASIC", ] classifiers = [ "Development Status :: 5 - Production/Stable", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only", "Intended Audience :: Developers", "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", "Operating System :: OS Independent", "Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)", ] [project.optional-dependencies] cli = ["peakrdl-cli >= 1.2.3"] [project.urls] Source = "https://github.com/arnavsacheti/PeakRDL-BusDecoder" Tracker = "https://github.com/arnavsacheti/PeakRDL-BusDecoder/issues" Changelog = "https://github.com/arnavsacheti/PeakRDL-BusDecoder/releases" Documentation = "https://peakrdl-busdecoder.readthedocs.io/" [dependency-groups] docs = [ "pygments-systemrdl>=1.3.0", "sphinx-book-theme>=1.1.4", "sphinxcontrib-wavedrom>=3.0.4", ] test = [ "parameterized>=0.9.0", "pytest>=7.4.4", "pytest-cov>=4.1.0", "pytest-xdist>=3.5.0", "cocotb>=1.8.0", "cocotb-bus>=0.2.1", ] tools = ["pyrefly>=0.37.0", "ruff>=0.14.0"] [project.entry-points."peakrdl.exporters"] busdecoder = "peakrdl_busdecoder.__peakrdl__:Exporter" # ---------------------- RUFF ---------------------- [tool.ruff] line-length = 110 target-version = "py310" extend-exclude = ["CVS", "parser", "docs", "tests"] [tool.ruff.lint] select = [ "E", # pycodestyle "F", # pyflakes "I", # isort "B", # bugbear "UP", # pyupgrade "RUF", # ruff-specific "ANN", # flake8-annotations (require type annotations) ] ignore = [ "F841", # unused-variable "UP032", # consider-using-f-string "E501", # line-too-long ] # Make tests less strict for annotations. # [tool.ruff.lint.per-file-ignores] # "tests/**/*" = ["ANN*"] [tool.ruff.format] quote-style = "double" indent-style = "space" # ---------------------- PYREFLY ---------------------- [tool.pyrefly] python-version = "3.10" # Default behavior: check bodies of untyped defs & infer return types. untyped-def-behavior = "check-and-infer-return-type" project-includes = ["src/**/*"] project-excludes = ["**/__pycache__", "**/*venv/**/*"] # ---------------------- PYTEST ---------------------- [tool.pytest.ini_options] python_files = ["test_*.py", "*_test.py"] markers = [ "simulation: marks tests as requiring cocotb simulation (deselect with '-m \"not simulation\"')", "verilator: marks tests as requiring verilator simulator (deselect with '-m \"not verilator\"')", ] filterwarnings = ["error", "ignore::UserWarning"]