Skip to content

Commit 2fd6ff8

Browse files
committed
Redesign shields block.
1 parent a1a1a89 commit 2fd6ff8

12 files changed

+167
-46
lines changed

repo_helper/_docs_shields.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@
6868
"make_docs_pre_commit_shield",
6969
"make_docs_pre_commit_ci_shield",
7070
"make_docs_actions_shield",
71+
"make_docs_pypi_downloads_shield",
7172
]
7273

7374

@@ -230,6 +231,22 @@ def make_docs_pypi_version_shield(pypi_name: str) -> str:
230231
:alt: PyPI - Package Version"""
231232

232233

234+
def make_docs_pypi_downloads_shield(pypi_name: str) -> str:
235+
"""
236+
Create a shield to show the version on PyPI.
237+
238+
:param pypi_name: The name of the project on PyPI.
239+
240+
:return: The shield.
241+
"""
242+
243+
return f"""\
244+
.. pypi-shield::
245+
:project: {pypi_name}
246+
:downloads: month
247+
:alt: PyPI - Downloads"""
248+
249+
233250
def make_docs_python_versions_shield(pypi_name: str) -> str:
234251
"""
235252
Create a shield to show the supported Python versions for the library.

repo_helper/blocks/__init__.py

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
make_docs_maintained_shield,
5353
make_docs_pre_commit_ci_shield,
5454
make_docs_pre_commit_shield,
55+
make_docs_pypi_downloads_shield,
5556
make_docs_pypi_version_shield,
5657
make_docs_python_implementations_shield,
5758
make_docs_python_versions_shield,
@@ -76,6 +77,7 @@
7677
make_maintained_shield,
7778
make_pre_commit_ci_shield,
7879
make_pre_commit_shield,
80+
make_pypi_downloads_shield,
7981
make_pypi_version_shield,
8082
make_python_implementations_shield,
8183
make_python_versions_shield,
@@ -317,7 +319,16 @@ class ShieldsBlock:
317319
"""
318320

319321
#: This list controls which sections are included, and their order.
320-
sections = ("Docs", "Tests", "PyPI", "Anaconda", "Activity", "Docker", "Other")
322+
sections = (
323+
"Docs",
324+
"Tests",
325+
"PyPI",
326+
"Anaconda",
327+
"Activity",
328+
"QA",
329+
"Docker",
330+
"Other",
331+
)
321332

322333
#: This list controls which substitutions are included, and their order.
323334
substitutions = (
@@ -326,6 +337,8 @@ class ShieldsBlock:
326337
"actions_linux",
327338
"actions_windows",
328339
"actions_macos",
340+
"actions_flake8",
341+
"actions_mypy",
329342
"requires",
330343
"coveralls",
331344
"codefactor",
@@ -340,6 +353,7 @@ class ShieldsBlock:
340353
"commits-since",
341354
"commits-latest",
342355
"maintained",
356+
"pypi-downloads",
343357
"docker_build",
344358
"docker_automated",
345359
"docker_size",
@@ -415,6 +429,7 @@ def set_readme_mode(self) -> None:
415429
self.make_requires_shield = make_requires_shield
416430
self.make_rtfd_shield = make_rtfd_shield
417431
self.make_wheel_shield = make_wheel_shield
432+
self.make_pypi_downloads_shield = make_pypi_downloads_shield
418433

419434
def set_docs_mode(self) -> None:
420435
"""
@@ -443,6 +458,7 @@ def set_docs_mode(self) -> None:
443458
self.make_requires_shield = make_docs_requires_shield
444459
self.make_rtfd_shield = make_docs_rtfd_shield
445460
self.make_wheel_shield = make_docs_wheel_shield
461+
self.make_pypi_downloads_shield = make_docs_pypi_downloads_shield
446462

447463
def make(self) -> str:
448464
"""
@@ -477,11 +493,9 @@ def make(self) -> str:
477493
substitutions["license"] = self.make_license_shield(repo_name, username)
478494
substitutions["language"] = self.make_language_shield(repo_name, username)
479495

480-
sections["QA"] = ["codefactor", "actions_macos"]
496+
sections["QA"] = ["codefactor", "actions_flake8", "actions_mypy"]
481497
substitutions["codefactor"] = self.make_codefactor_shield(repo_name, username)
482-
sections["QA"].append("actions_flake8")
483498
substitutions["actions_flake8"] = self.make_actions_shield(repo_name, username, "Flake8", "Flake8 Status")
484-
sections["QA"].append("actions_mypy")
485499
substitutions["actions_mypy"] = self.make_actions_shield(repo_name, username, "mypy", "mypy status")
486500

487501
if self.docs:
@@ -520,23 +534,20 @@ def make(self) -> str:
520534
sections["Tests"].append("coveralls")
521535
substitutions["coveralls"] = self.make_coveralls_shield(repo_name, username)
522536

523-
sections["Tests"].append("codefactor")
524-
525537
if self.pre_commit:
526538
sections["QA"].append("pre_commit_ci")
527-
sections["Tests"].append("pre_commit_ci")
528539
substitutions["pre_commit_ci"] = self.make_pre_commit_ci_shield(repo_name, username)
529540

530-
sections["Other"].append("pre_commit")
531-
substitutions["pre_commit"] = self.make_pre_commit_shield()
532-
533541
if self.on_pypi:
534542
sections["PyPI"] = ["pypi-version", "supported-versions", "supported-implementations", "wheel"]
535543
substitutions["pypi-version"] = self.make_pypi_version_shield(pypi_name)
536544
substitutions["supported-versions"] = self.make_python_versions_shield(pypi_name)
537545
substitutions["supported-implementations"] = self.make_python_implementations_shield(pypi_name)
538546
substitutions["wheel"] = self.make_wheel_shield(pypi_name)
539547

548+
sections["Activity"].append("pypi-downloads")
549+
substitutions["pypi-downloads"] = self.make_pypi_downloads_shield(pypi_name)
550+
540551
if self.conda:
541552
sections["Anaconda"] = ["conda-version", "conda-platform"]
542553
substitutions["conda-version"] = self.make_conda_version_shield(pypi_name, self.primary_conda_channel)
@@ -552,7 +563,7 @@ def make(self) -> str:
552563
substitutions["docker_size"] = self.make_docker_size_shield(docker_name, username)
553564

554565
for section in self.sections:
555-
if section not in sections:
566+
if section not in sections or not sections[section]:
556567
continue
557568

558569
images = DelimitedList([f"|{name}{self.unique_name}|" for name in sections[section]])

repo_helper/shields.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
"make_typing_shield",
5757
"make_wheel_shield",
5858
"make_actions_shield",
59+
"make_pypi_downloads_shield",
5960
]
6061

6162

@@ -215,6 +216,21 @@ def make_pypi_version_shield(pypi_name: str) -> str:
215216
:alt: PyPI - Package Version"""
216217

217218

219+
def make_pypi_downloads_shield(pypi_name: str) -> str:
220+
"""
221+
Create a shield to show the PyPI download statistics.
222+
223+
:param pypi_name: The name of the project on PyPI.
224+
225+
:return: The shield.
226+
"""
227+
228+
return f"""\
229+
.. image:: https://img.shields.io/pypi/dm/{ pypi_name }
230+
:target: https://pypi.org/project/{ pypi_name }/
231+
:alt: PyPI - Downloads"""
232+
233+
218234
def make_python_versions_shield(pypi_name: str) -> str:
219235
"""
220236
Create a shield to show the supported Python versions for the library.

tests/test_blocks_/test_create_shields_block_case_1_.rst

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,15 @@
77
* - Docs
88
- |docs| |docs_check|
99
* - Tests
10-
- |actions_linux| |actions_windows| |actions_macos| |coveralls| |codefactor|
10+
- |actions_linux| |actions_windows| |actions_macos| |coveralls|
1111
* - PyPI
1212
- |pypi-version| |supported-versions| |supported-implementations| |wheel|
1313
* - Anaconda
1414
- |conda-version| |conda-platform|
1515
* - Activity
16-
- |commits-latest| |commits-since| |maintained|
16+
- |commits-latest| |commits-since| |maintained| |pypi-downloads|
17+
* - QA
18+
- |codefactor| |actions_flake8| |actions_mypy|
1719
* - Other
1820
- |license| |language| |requires|
1921

@@ -37,6 +39,14 @@
3739
:target: https://github.com/octocat/REPO_NAME/actions?query=workflow%3A%22macOS%22
3840
:alt: macOS Test Status
3941

42+
.. |actions_flake8| image:: https://github.com/octocat/REPO_NAME/workflows/Flake8/badge.svg
43+
:target: https://github.com/octocat/REPO_NAME/actions?query=workflow%3A%22Flake8%22
44+
:alt: Flake8 Status
45+
46+
.. |actions_mypy| image:: https://github.com/octocat/REPO_NAME/workflows/mypy/badge.svg
47+
:target: https://github.com/octocat/REPO_NAME/actions?query=workflow%3A%22mypy%22
48+
:alt: mypy status
49+
4050
.. |requires| image:: https://requires.io/github/octocat/REPO_NAME/requirements.svg?branch=master
4151
:target: https://requires.io/github/octocat/REPO_NAME/requirements/?branch=master
4252
:alt: Requirements Status
@@ -91,4 +101,8 @@
91101
.. |maintained| image:: https://img.shields.io/maintenance/yes/2020
92102
:alt: Maintenance
93103

104+
.. |pypi-downloads| image:: https://img.shields.io/pypi/dm/PYPI_NAME
105+
:target: https://pypi.org/project/PYPI_NAME/
106+
:alt: PyPI - Downloads
107+
94108
.. end shields

tests/test_blocks_/test_create_shields_block_case_2_.rst

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,25 @@
44
:stub-columns: 1
55
:widths: 10 90
66

7-
* - Tests
8-
- |codefactor_UNIQUE_NAME|
97
* - PyPI
108
- |pypi-version_UNIQUE_NAME| |supported-versions_UNIQUE_NAME| |supported-implementations_UNIQUE_NAME| |wheel_UNIQUE_NAME|
119
* - Activity
12-
- |commits-latest_UNIQUE_NAME| |commits-since_UNIQUE_NAME| |maintained_UNIQUE_NAME|
10+
- |commits-latest_UNIQUE_NAME| |commits-since_UNIQUE_NAME| |maintained_UNIQUE_NAME| |pypi-downloads_UNIQUE_NAME|
11+
* - QA
12+
- |codefactor_UNIQUE_NAME| |actions_flake8_UNIQUE_NAME| |actions_mypy_UNIQUE_NAME|
1313
* - Docker
1414
- |docker_build_UNIQUE_NAME| |docker_automated_UNIQUE_NAME| |docker_size_UNIQUE_NAME|
1515
* - Other
1616
- |license_UNIQUE_NAME| |language_UNIQUE_NAME| |requires_UNIQUE_NAME|
1717

18+
.. |actions_flake8_UNIQUE_NAME| image:: https://github.com/octocat/REPO_NAME/workflows/Flake8/badge.svg
19+
:target: https://github.com/octocat/REPO_NAME/actions?query=workflow%3A%22Flake8%22
20+
:alt: Flake8 Status
21+
22+
.. |actions_mypy_UNIQUE_NAME| image:: https://github.com/octocat/REPO_NAME/workflows/mypy/badge.svg
23+
:target: https://github.com/octocat/REPO_NAME/actions?query=workflow%3A%22mypy%22
24+
:alt: mypy status
25+
1826
.. |requires_UNIQUE_NAME| image:: https://requires.io/github/octocat/REPO_NAME/requirements.svg?branch=master
1927
:target: https://requires.io/github/octocat/REPO_NAME/requirements/?branch=master
2028
:alt: Requirements Status
@@ -57,6 +65,10 @@
5765
.. |maintained_UNIQUE_NAME| image:: https://img.shields.io/maintenance/yes/2020
5866
:alt: Maintenance
5967

68+
.. |pypi-downloads_UNIQUE_NAME| image:: https://img.shields.io/pypi/dm/PYPI_NAME
69+
:target: https://pypi.org/project/PYPI_NAME/
70+
:alt: PyPI - Downloads
71+
6072
.. |docker_build_UNIQUE_NAME| image:: https://img.shields.io/docker/cloud/build/octocat/DOCKER_NAME?label=build&logo=docker
6173
:target: https://hub.docker.com/r/octocat/DOCKER_NAME
6274
:alt: Docker Hub Build Status

tests/test_blocks_/test_create_shields_block_case_3_.rst

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,25 @@
44
:stub-columns: 1
55
:widths: 10 90
66

7-
* - Tests
8-
- |codefactor_UNIQUE_NAME|
97
* - PyPI
108
- |pypi-version_UNIQUE_NAME| |supported-versions_UNIQUE_NAME| |supported-implementations_UNIQUE_NAME| |wheel_UNIQUE_NAME|
119
* - Activity
12-
- |commits-latest_UNIQUE_NAME| |commits-since_UNIQUE_NAME| |maintained_UNIQUE_NAME|
10+
- |commits-latest_UNIQUE_NAME| |commits-since_UNIQUE_NAME| |maintained_UNIQUE_NAME| |pypi-downloads_UNIQUE_NAME|
11+
* - QA
12+
- |codefactor_UNIQUE_NAME| |actions_flake8_UNIQUE_NAME| |actions_mypy_UNIQUE_NAME|
1313
* - Docker
1414
- |docker_build_UNIQUE_NAME| |docker_automated_UNIQUE_NAME| |docker_size_UNIQUE_NAME|
1515
* - Other
1616
- |license_UNIQUE_NAME| |language_UNIQUE_NAME| |requires_UNIQUE_NAME|
1717

18+
.. |actions_flake8_UNIQUE_NAME| image:: https://github.com/octocat/REPO_NAME/workflows/Flake8/badge.svg
19+
:target: https://github.com/octocat/REPO_NAME/actions?query=workflow%3A%22Flake8%22
20+
:alt: Flake8 Status
21+
22+
.. |actions_mypy_UNIQUE_NAME| image:: https://github.com/octocat/REPO_NAME/workflows/mypy/badge.svg
23+
:target: https://github.com/octocat/REPO_NAME/actions?query=workflow%3A%22mypy%22
24+
:alt: mypy status
25+
1826
.. |requires_UNIQUE_NAME| image:: https://requires.io/github/octocat/REPO_NAME/requirements.svg?branch=master
1927
:target: https://requires.io/github/octocat/REPO_NAME/requirements/?branch=master
2028
:alt: Requirements Status
@@ -57,6 +65,10 @@
5765
.. |maintained_UNIQUE_NAME| image:: https://img.shields.io/maintenance/yes/2020
5866
:alt: Maintenance
5967

68+
.. |pypi-downloads_UNIQUE_NAME| image:: https://img.shields.io/pypi/dm/REPO_NAME
69+
:target: https://pypi.org/project/REPO_NAME/
70+
:alt: PyPI - Downloads
71+
6072
.. |docker_build_UNIQUE_NAME| image:: https://img.shields.io/docker/cloud/build/octocat/DOCKER_NAME?label=build&logo=docker
6173
:target: https://hub.docker.com/r/octocat/DOCKER_NAME
6274
:alt: Docker Hub Build Status

tests/test_files/test_readme_/test_rewrite_readme_input_a_rst_.html

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<td><a href="https://hello-world.readthedocs.io/en/latest" rel="nofollow"><img alt="Documentation Build Status" src="https://img.shields.io/readthedocs/hello-world/latest?logo=read-the-docs"></a> <a href="https://github.com/octocat/hello-world/actions?query=workflow%3A%22Docs+Check%22" rel="nofollow"><img alt="Docs Check Status" src="https://github.com/octocat/hello-world/workflows/Docs%20Check/badge.svg"></a></td>
1010
</tr>
1111
<tr><th>Tests</th>
12-
<td><a href="https://github.com/octocat/hello-world/actions?query=workflow%3A%22Windows%22" rel="nofollow"><img alt="Windows Test Status" src="https://github.com/octocat/hello-world/workflows/Windows/badge.svg"></a> <a href="https://coveralls.io/github/octocat/hello-world?branch=master" rel="nofollow"><img alt="Coverage" src="https://img.shields.io/coveralls/github/octocat/hello-world/master?logo=coveralls"></a> <a href="https://www.codefactor.io/repository/github/octocat/hello-world" rel="nofollow"><img alt="CodeFactor Grade" src="https://img.shields.io/codefactor/grade/github/octocat/hello-world?logo=codefactor"></a> <a href="https://results.pre-commit.ci/latest/github/octocat/hello-world/master" rel="nofollow"><img alt="pre-commit.ci status" src="https://results.pre-commit.ci/badge/github/octocat/hello-world/master.svg"></a></td>
12+
<td><a href="https://github.com/octocat/hello-world/actions?query=workflow%3A%22Windows%22" rel="nofollow"><img alt="Windows Test Status" src="https://github.com/octocat/hello-world/workflows/Windows/badge.svg"></a> <a href="https://coveralls.io/github/octocat/hello-world?branch=master" rel="nofollow"><img alt="Coverage" src="https://img.shields.io/coveralls/github/octocat/hello-world/master?logo=coveralls"></a></td>
1313
</tr>
1414
<tr><th>PyPI</th>
1515
<td><a href="https://pypi.org/project/hello-world/" rel="nofollow"><img alt="PyPI - Package Version" src="https://img.shields.io/pypi/v/hello-world"></a> <a href="https://pypi.org/project/hello-world/" rel="nofollow"><img alt="PyPI - Supported Python Versions" src="https://img.shields.io/pypi/pyversions/hello-world?logo=python&amp;logoColor=white"></a> <a href="https://pypi.org/project/hello-world/" rel="nofollow"><img alt="PyPI - Supported Implementations" src="https://img.shields.io/pypi/implementation/hello-world"></a> <a href="https://pypi.org/project/hello-world/" rel="nofollow"><img alt="PyPI - Wheel" src="https://img.shields.io/pypi/wheel/hello-world"></a></td>
@@ -18,10 +18,13 @@
1818
<td><a href="https://anaconda.org/octocat/hello-world" rel="nofollow"><img alt="Conda - Package Version" src="https://img.shields.io/conda/v/octocat/hello-world?logo=anaconda"></a> <a href="https://anaconda.org/octocat/hello-world" rel="nofollow"><img alt="Conda - Platform" src="https://img.shields.io/conda/pn/octocat/hello-world?label=conda%7Cplatform"></a></td>
1919
</tr>
2020
<tr><th>Activity</th>
21-
<td><a href="https://github.com/octocat/hello-world/commit/master" rel="nofollow"><img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/octocat/hello-world"></a> <a href="https://github.com/octocat/hello-world/pulse" rel="nofollow"><img alt="GitHub commits since tagged version" src="https://img.shields.io/github/commits-since/octocat/hello-world/v1.2.3"></a> <img alt="Maintenance" src="https://img.shields.io/maintenance/yes/2020"></td>
21+
<td><a href="https://github.com/octocat/hello-world/commit/master" rel="nofollow"><img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/octocat/hello-world"></a> <a href="https://github.com/octocat/hello-world/pulse" rel="nofollow"><img alt="GitHub commits since tagged version" src="https://img.shields.io/github/commits-since/octocat/hello-world/v1.2.3"></a> <img alt="Maintenance" src="https://img.shields.io/maintenance/yes/2020"> <a href="https://pypi.org/project/hello-world/" rel="nofollow"><img alt="PyPI - Downloads" src="https://img.shields.io/pypi/dm/hello-world"></a></td>
22+
</tr>
23+
<tr><th>QA</th>
24+
<td><a href="https://www.codefactor.io/repository/github/octocat/hello-world" rel="nofollow"><img alt="CodeFactor Grade" src="https://img.shields.io/codefactor/grade/github/octocat/hello-world?logo=codefactor"></a> <a href="https://github.com/octocat/hello-world/actions?query=workflow%3A%22Flake8%22" rel="nofollow"><img alt="Flake8 Status" src="https://github.com/octocat/hello-world/workflows/Flake8/badge.svg"></a> <a href="https://github.com/octocat/hello-world/actions?query=workflow%3A%22mypy%22" rel="nofollow"><img alt="mypy status" src="https://github.com/octocat/hello-world/workflows/mypy/badge.svg"></a> <a href="https://results.pre-commit.ci/latest/github/octocat/hello-world/master" rel="nofollow"><img alt="pre-commit.ci status" src="https://results.pre-commit.ci/badge/github/octocat/hello-world/master.svg"></a></td>
2225
</tr>
2326
<tr><th>Other</th>
24-
<td><a href="https://github.com/octocat/hello-world/blob/master/LICENSE" rel="nofollow"><img alt="License" src="https://img.shields.io/github/license/octocat/hello-world"></a> <img alt="GitHub top language" src="https://img.shields.io/github/languages/top/octocat/hello-world"> <a href="https://requires.io/github/octocat/hello-world/requirements/?branch=master" rel="nofollow"><img alt="Requirements Status" src="https://requires.io/github/octocat/hello-world/requirements.svg?branch=master"></a> <a href="https://github.com/pre-commit/pre-commit" rel="nofollow"><img alt="pre-commit" src="https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&amp;logoColor=white"></a></td>
27+
<td><a href="https://github.com/octocat/hello-world/blob/master/LICENSE" rel="nofollow"><img alt="License" src="https://img.shields.io/github/license/octocat/hello-world"></a> <img alt="GitHub top language" src="https://img.shields.io/github/languages/top/octocat/hello-world"> <a href="https://requires.io/github/octocat/hello-world/requirements/?branch=master" rel="nofollow"><img alt="Requirements Status" src="https://requires.io/github/octocat/hello-world/requirements.svg?branch=master"></a></td>
2528
</tr>
2629
</tbody>
2730
</table>

tests/test_files/test_readme_/test_rewrite_readme_input_a_rst_.rst

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,17 @@ repo_helper
1717
* - Docs
1818
- |docs| |docs_check|
1919
* - Tests
20-
- |actions_windows| |coveralls| |codefactor| |pre_commit_ci|
20+
- |actions_windows| |coveralls|
2121
* - PyPI
2222
- |pypi-version| |supported-versions| |supported-implementations| |wheel|
2323
* - Anaconda
2424
- |conda-version| |conda-platform|
2525
* - Activity
26-
- |commits-latest| |commits-since| |maintained|
26+
- |commits-latest| |commits-since| |maintained| |pypi-downloads|
27+
* - QA
28+
- |codefactor| |actions_flake8| |actions_mypy| |pre_commit_ci|
2729
* - Other
28-
- |license| |language| |requires| |pre_commit|
30+
- |license| |language| |requires|
2931

3032
.. |docs| image:: https://img.shields.io/readthedocs/hello-world/latest?logo=read-the-docs
3133
:target: https://hello-world.readthedocs.io/en/latest
@@ -39,6 +41,14 @@ repo_helper
3941
:target: https://github.com/octocat/hello-world/actions?query=workflow%3A%22Windows%22
4042
:alt: Windows Test Status
4143

44+
.. |actions_flake8| image:: https://github.com/octocat/hello-world/workflows/Flake8/badge.svg
45+
:target: https://github.com/octocat/hello-world/actions?query=workflow%3A%22Flake8%22
46+
:alt: Flake8 Status
47+
48+
.. |actions_mypy| image:: https://github.com/octocat/hello-world/workflows/mypy/badge.svg
49+
:target: https://github.com/octocat/hello-world/actions?query=workflow%3A%22mypy%22
50+
:alt: mypy status
51+
4252
.. |requires| image:: https://requires.io/github/octocat/hello-world/requirements.svg?branch=master
4353
:target: https://requires.io/github/octocat/hello-world/requirements/?branch=master
4454
:alt: Requirements Status
@@ -93,9 +103,9 @@ repo_helper
93103
.. |maintained| image:: https://img.shields.io/maintenance/yes/2020
94104
:alt: Maintenance
95105

96-
.. |pre_commit| image:: https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white
97-
:target: https://github.com/pre-commit/pre-commit
98-
:alt: pre-commit
106+
.. |pypi-downloads| image:: https://img.shields.io/pypi/dm/hello-world
107+
:target: https://pypi.org/project/hello-world/
108+
:alt: PyPI - Downloads
99109

100110
.. |pre_commit_ci| image:: https://results.pre-commit.ci/badge/github/octocat/hello-world/master.svg
101111
:target: https://results.pre-commit.ci/latest/github/octocat/hello-world/master

0 commit comments

Comments
 (0)