Coverage for tsfpga/about.py: 32%
19 statements
« prev ^ index » next coverage.py v7.6.9, created at 2024-12-20 20:52 +0000
« prev ^ index » next coverage.py v7.6.9, created at 2024-12-20 20:52 +0000
1# --------------------------------------------------------------------------------------------------
2# Copyright (c) Lukas Vik. All rights reserved.
3#
4# This file is part of the tsfpga project, a project platform for modern FPGA development.
5# https://tsfpga.com
6# https://github.com/tsfpga/tsfpga
7# --------------------------------------------------------------------------------------------------
10REPOSITORY_URL = "https://github.com/tsfpga/tsfpga"
11WEBSITE_URL = "https://tsfpga.com"
14def get_short_slogan() -> str:
15 """
16 Short slogan used e.g. on pypi.org.
17 Note that there seems to be an upper limit of 98 characters when rendering the slogan
18 on pypi.org.
20 Note that this slogan should be the same as the one used in the readme and on the website below.
21 The difference is capitalization and whether the project name is included.
22 """
23 result = "A flexible and scalable development platform for modern FPGA projects"
24 return result
27def get_readme_rst(
28 include_extra_for_github: bool = False,
29 include_extra_for_website: bool = False,
30 include_extra_for_pypi: bool = False,
31) -> str:
32 """
33 Get the complete README.rst for tsfpga (to be used on website and in PyPI release).
35 The arguments control some extra text that is included. This is mainly links to the
36 other places where you can find information on the project (website, GitHub, PyPI).
38 Arguments:
39 include_extra_for_github (bool): Include the extra text that shall be included in the
40 GitHub README.
41 include_extra_for_website (bool): Include the extra text that shall be included in the
42 website main page.
43 include_extra_for_pypi (bool): Include the extra text that shall be included in the
44 PyPI release README.
45 """
46 if include_extra_for_github:
47 readme_rst = ""
48 extra_rst = f"""\
49**See documentation on the website**: {WEBSITE_URL}
51**See PyPI for installation details**: https://pypi.org/project/tsfpga/
52"""
53 elif include_extra_for_website:
54 # The website needs the initial heading, in order for the landing page to get
55 # the correct title.
56 # The others do not need this initial heading, it just makes the GitHub/PyPI page
57 # more clunky.
58 readme_rst = """\
59About tsfpga
60============
62"""
63 extra_rst = f"""\
64To install the Python package, see :ref:`installation`.
65To check out the source code go to the `GitHub page <{REPOSITORY_URL}>`__.
66"""
67 elif include_extra_for_pypi:
68 readme_rst = ""
69 extra_rst = f"""\
70**See documentation on the website**: {WEBSITE_URL}
72**Check out the source code on GitHub**: {REPOSITORY_URL}
73"""
74 else:
75 readme_rst = ""
76 extra_rst = ""
78 readme_rst += f"""\
79.. image:: {WEBSITE_URL}/logos/banner.png
80 :alt: Project banner
81 :align: center
83|
85.. |pic_website| image:: {WEBSITE_URL}/badges/website.svg
86 :alt: Website
87 :target: {WEBSITE_URL}
89.. |pic_repository| image:: {WEBSITE_URL}/badges/repository.svg
90 :alt: Repository
91 :target: {REPOSITORY_URL}
93.. |pic_chat| image:: {WEBSITE_URL}/badges/chat.svg
94 :alt: Chat
95 :target: {REPOSITORY_URL}/discussions
97.. |pic_pip_install| image:: {WEBSITE_URL}/badges/pip_install.svg
98 :alt: pypi
99 :target: https://pypi.org/project/tsfpga/
101.. |pic_license| image:: {WEBSITE_URL}/badges/license.svg
102 :alt: License
103 :target: {WEBSITE_URL}/license_information.html
105.. |pic_ci_status| image:: {REPOSITORY_URL}/actions/workflows/ci.yml/\
106badge.svg?branch=main
107 :alt: CI status
108 :target: {REPOSITORY_URL}/actions/workflows/ci.yml
110.. |pic_python_line_coverage| image:: {WEBSITE_URL}/badges/python_coverage.svg
111 :alt: Python line coverage
112 :target: {WEBSITE_URL}/python_coverage_html
114|pic_website| |pic_repository| |pic_pip_install| |pic_license| |pic_chat| |pic_ci_status|
115|pic_python_line_coverage|
117tsfpga is a flexible and scalable development platform for modern FPGA projects.
118With its Python-based build/simulation flow it is perfect for CI/CD and test-driven development.
119The API is simple and easy to use
120(a complete `simulation project <{WEBSITE_URL}/simulation.html>`__ is set up in less than
12115 lines).
123{extra_rst}
124Key features
125------------
127* Source code-centric `project structure <{WEBSITE_URL}/module_structure.html>`__
128 for scalability.
129 Build projects, test configurations, constraints, IP cores, etc. are handled close to the
130 source code, not in a central monolithic script.
131* Automatically adds build/simulation sources if a recognized folder structure is used.
132* Enables `local VUnit test configuration
133 <{WEBSITE_URL}/simulation.html#local-configuration-of-test-cases>`__ without
134 multiple ``run.py``.
135* Handling of `IP cores <{WEBSITE_URL}/simulation.html#simulating-with-vivado-ip-cores>`__
136 and `simlib <{WEBSITE_URL}/simulation.html#vivado-simulation-libraries>`__
137 for your simulation project, with automatic re-compile when needed.
138* Python-based `Vivado build system <{WEBSITE_URL}/fpga_build.html>`__ where many builds can
139 be run in parallel.
140* Tightly integrated with `hdl-registers <https://hdl-registers.com>`__.
141 Register code generation is performed before each simulation and each build.
142* Released under the very permissive BSD 3-Clause License.
144The maintainers place high focus on quality, with everything having good unit test coverage and a
145thought-out structure.
146The project is mature and used in many production environments.
147"""
149 return readme_rst