Metadata-Version: 2.1
Name: pyEDAA.Reports
Version: 0.5.2
Summary: Various report abstract data models and report format converters.
Home-page: https://GitHub.com/pyEDAA/pyEDAA.Reports
Author: Patrick Lehmann
Author-email: Paebbels@gmail.com
License: Apache-2.0
Project-URL: Documentation, https://pyEDAA.GitHub.io/pyEDAA.Reports
Project-URL: Source Code, https://GitHub.com/pyEDAA/pyEDAA.Reports
Project-URL: Issue Tracker, https://GitHub.com/pyEDAA/pyEDAA.Reports/issues
Keywords: Reports,Abstract Model,Data Model,Test Case,Test Suite,OSVVM,YAML,XML
Classifier: Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Development Status :: 2 - Pre-Alpha
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE.md
Requires-Dist: ruamel.yaml~=0.18.6
Requires-Dist: pyTooling~=6.1
Requires-Dist: lxml~=5.1
Provides-Extra: doc
Requires-Dist: setuptools~=69.5; extra == "doc"
Requires-Dist: sphinxcontrib-mermaid>=0.9.2; extra == "doc"
Requires-Dist: sphinx_autodoc_typehints~=2.1; extra == "doc"
Requires-Dist: sphinx_rtd_theme~=2.0.0; extra == "doc"
Requires-Dist: colorama>=0.4.6; extra == "doc"
Requires-Dist: sphinx_design>=0.5.0; extra == "doc"
Requires-Dist: sphinx-copybutton>=0.5.2; extra == "doc"
Requires-Dist: pyTooling~=6.1; extra == "doc"
Requires-Dist: sphinx_reports~=0.6; extra == "doc"
Requires-Dist: lxml~=5.1; extra == "doc"
Requires-Dist: ruamel.yaml~=0.18.6; extra == "doc"
Requires-Dist: docutils~=0.18.1; extra == "doc"
Requires-Dist: sphinx~=7.3; extra == "doc"
Requires-Dist: autoapi>=2.0.1; extra == "doc"
Provides-Extra: test
Requires-Dist: pytest-cov~=5.0; extra == "test"
Requires-Dist: pytest~=8.1; extra == "test"
Requires-Dist: Coverage~=7.5; extra == "test"
Requires-Dist: pyTooling~=6.1; extra == "test"
Requires-Dist: lxml~=5.1; extra == "test"
Requires-Dist: ruamel.yaml~=0.18.6; extra == "test"
Requires-Dist: mypy~=1.10; extra == "test"
Requires-Dist: typing_extensions~=4.11; extra == "test"
Provides-Extra: all
Requires-Dist: sphinx_design>=0.5.0; extra == "all"
Requires-Dist: sphinx-copybutton>=0.5.2; extra == "all"
Requires-Dist: lxml~=5.1; extra == "all"
Requires-Dist: ruamel.yaml~=0.18.6; extra == "all"
Requires-Dist: sphinx_reports~=0.6; extra == "all"
Requires-Dist: sphinx_autodoc_typehints~=2.1; extra == "all"
Requires-Dist: pytest~=8.1; extra == "all"
Requires-Dist: autoapi>=2.0.1; extra == "all"
Requires-Dist: mypy~=1.10; extra == "all"
Requires-Dist: typing_extensions~=4.11; extra == "all"
Requires-Dist: pyTooling~=6.1; extra == "all"
Requires-Dist: setuptools~=69.5; extra == "all"
Requires-Dist: sphinxcontrib-mermaid>=0.9.2; extra == "all"
Requires-Dist: sphinx_rtd_theme~=2.0.0; extra == "all"
Requires-Dist: colorama>=0.4.6; extra == "all"
Requires-Dist: Coverage~=7.5; extra == "all"
Requires-Dist: pytest-cov~=5.0; extra == "all"
Requires-Dist: docutils~=0.18.1; extra == "all"
Requires-Dist: sphinx~=7.3; extra == "all"

<p align="center">
  <a title="edaa-org.github.io/pyEDAA.Reports" href="https://edaa-org.github.io/pyEDAA.Reports"><img height="80px" src="doc/_static/logo.svg"/></a>
</p>

[![Sourcecode on GitHub](https://img.shields.io/badge/pyEDAA-Reports-29b6f6.svg?longCache=true&style=flat-square&logo=GitHub&labelColor=0277bd)](https://GitHub.com/edaa-org/pyEDAA.Reports)
[![Documentation](https://img.shields.io/website?longCache=true&style=flat-square&label=edaa-org.github.io%2FpyEDAA.Reports&logo=GitHub&logoColor=fff&up_color=blueviolet&up_message=Read%20now%20%E2%9E%9A&url=https%3A%2F%2Fedaa-org.github.io%2FpyEDAA.Reports%2Findex.html)](https://edaa-org.github.io/pyEDAA.Reports/)
[![Gitter](https://img.shields.io/badge/chat-on%20gitter-4db797.svg?longCache=true&style=flat-square&logo=gitter&logoColor=e8ecef)](https://gitter.im/hdl/community)  
[![GitHub Workflow - Build and Test Status](https://img.shields.io/github/workflow/status/edaa-org/pyEDAA.Reports/Pipeline/main?longCache=true&style=flat-square&label=Build%20and%20Test&logo=GitHub%20Actions&logoColor=FFFFFF)](https://GitHub.com/edaa-org/pyEDAA.Reports/actions/workflows/Pipeline.yml)
[![Codacy - Quality](https://img.shields.io/codacy/grade/f8142b422c1742bdba38e8ac1893870c?longCache=true&style=flat-square&logo=Codacy)](https://app.codacy.com/gh/edaa-org/pyEDAA.Reports)

<!--
[![Sourcecode License](https://img.shields.io/pypi/l/pyEDAA.Reports?longCache=true&style=flat-square&logo=Apache&label=code)](LICENSE.md)
[![Documentation License](https://img.shields.io/badge/doc-CC--BY%204.0-green?longCache=true&style=flat-square&logo=CreativeCommons&logoColor=fff)](LICENSE.md)

[![PyPI](https://img.shields.io/pypi/v/pyEDAA.Reports?longCache=true&style=flat-square&logo=PyPI&logoColor=FBE072)](https://pypi.org/project/pyEDAA.Reports/)
![PyPI - Status](https://img.shields.io/pypi/status/pyEDAA.Reports?longCache=true&style=flat-square&logo=PyPI&logoColor=FBE072)
![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pyEDAA.Reports?longCache=true&style=flat-square&logo=PyPI&logoColor=FBE072)

[![Libraries.io status for latest release](https://img.shields.io/librariesio/release/pypi/pyEDAA.Reports?longCache=true&style=flat-square&logo=Libraries.io&logoColor=fff)](https://libraries.io/github/edaa-org/pyEDAA.Reports)
[![Codacy - Coverage](https://img.shields.io/codacy/coverage/f8142b422c1742bdba38e8ac1893870c?longCache=true&style=flat-square&logo=Codacy)](https://app.codacy.com/gh/edaa-org/pyEDAA.Reports)
[![Codecov - Branch Coverage](https://img.shields.io/codecov/c/github/edaa-org/pyEDAA.Reports?longCache=true&style=flat-square&logo=Codecov)](https://codecov.io/gh/edaa-org/pyEDAA.Reports)

[![Dependent repos (via libraries.io)](https://img.shields.io/librariesio/dependent-repos/pypi/pyEDAA.Reports?longCache=true&style=flat-square&logo=GitHub)](https://GitHub.com/edaa-org/pyEDAA.Reports/network/dependents)
[![Requires.io](https://img.shields.io/requires/github/edaa-org/pyEDAA.Reports?longCache=true&style=flat-square)](https://requires.io/github/EDAA-ORG/pyEDAA.Reports/requirements/?branch=main)
[![Libraries.io SourceRank](https://img.shields.io/librariesio/sourcerank/pypi/pyEDAA.Reports?longCache=true&style=flat-square)](https://libraries.io/github/edaa-org/pyEDAA.Reports/sourcerank)
-->

Proposal to define an abstract model for outputs from EDA tools and logging libraries.

The main intended use case of pyEDAA.Reports is to import multiple log/report formats (raw logs, CSVs, YAML, JSON, etc.)
and provide a unified model that can generate reports using popular formats such as XUnit or Cobertura.
Since most vendors, CI services and monitoring tools support XML, the internals of pyEDAA.Reports are to be based on
XML transformations.

As an abstract model, the main capability of pyEDAA.Reports is handling messages using an structured format.
The readers categorize messages by IDs and append attributes such as the severity, which allow complex filtering and
fancy coloring for better human readability.

<p align="center">
  <a title="edaa-org.github.io/pyEDAA.Reports" href="https://edaa-org.github.io/pyEDAA.Reports"><img height="275px" src="doc/_static/work-in-progress.png"/></a>
</p>

# Report Kinds

## Test Report Summary

* Test Suite
* Test Case
* Test Parameter

## Code Coverage Report

* Line Coverage
* Statement Coverage
* Branch Coverage
* Expression Coverage
* State Coverage
* Transition Coverage

## Functional Coverage

* Coverage Model
  * Dimension
  * Bin
    * Item
    * Range

## Synthesis

* Area/resources
* Timing

## Implementation

* Area/resources
* Timing

# Target input logs/formats

* ActiveHDL
* CoCoTb
* Diamond
* GHDL
* Icarus Verilog
* ISE
* ModelSim/QuestaSim
* nextpnr
* OSVVM
* RivieraPRO
* SymbiYosys
* Synplify
* Quartus
* Verilator
* Verilog-to-Routing
* Vivado
* VUnit
* Xcelium
* Yosys
* ...

# References

* [olofk/edalize](https://github.com/olofk/edalize/) (see `edalize.reporting`, `edalize.vivado_reporting`, `edalize.quartus_reporting`, `edalize.ise_reporting`, ...)
* [librecores/eda-log-parser](https://github.com/librecores/eda-log-parser)
* [SymbiFlow/fpga-tool-perf](https://github.com/SymbiFlow/fpga-tool-perf)
* [mattvenn/logLUTs](https://github.com/mattvenn/logLUTs)
* [tiagolascasas/Vivado-HLS-Report-Parser](https://github.com/tiagolascasas/Vivado-HLS-Report-Parser)
* [cuelang.org/](https://cuelang.org/)
  * [cuelang.org/docs/tutorials](https://cuelang.org/docs/tutorials/)
  * [cue-lang/cue#162](https://github.com/cue-lang/cue/issues/162)
    * [pypi.org/project/pycue](https://pypi.org/project/pycue/)
    * [philipdexter/pycue](https://github.com/philipdexter/pycue)
