Skip to content
This repository was archived by the owner on Aug 11, 2025. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions pybadges/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,7 @@ def badge(
embed_right_image: bool = False,
embed_center_image: bool = False,
id_suffix: str = '',
style: str = 'flat',
) -> str:
"""Creates a github-style badge as an SVG image.

Expand Down Expand Up @@ -184,6 +185,7 @@ def badge(
id_suffix: The suffix of the id attributes used in the SVG's elements.
Use to prevent duplicate ids if several badges are embedded on the
same page.
style: The style of the badge. Can be "flat" or "flat-square".
"""
if measurer is None:
measurer = (
Expand Down Expand Up @@ -239,6 +241,7 @@ def badge(
right_image=right_image,
center_image=center_image,
id_suffix=id_suffix,
style=style,
)
xml = minidom.parseString(svg)
_remove_blanks(xml)
Expand Down
7 changes: 6 additions & 1 deletion pybadges/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,10 @@ def main():
'the badge (this will prevent a URL fetch and may work around the '
'fact that some browsers do not fetch external image references); '
'only works if --logo is a HTTP/HTTPS URI or a file path')
parser.add_argument(
'--style',
default='flat',
help='the style of the badge (flat, flat-square)')
parser.add_argument(
'-v',
'--version',
Expand Down Expand Up @@ -194,7 +198,8 @@ def main():
center_image=args.center_image,
embed_logo=args.embed_logo,
embed_right_image=args.embed_right_image,
embed_center_image=args.embed_center_image)
embed_center_image=args.embed_center_image,
style=args.style)

if args.browser:
_, badge_path = tempfile.mkstemp(suffix='.svg')
Expand Down
48 changes: 31 additions & 17 deletions pybadges/badge-template-full.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions tests/golden-images/style-flat-square.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 7 additions & 1 deletion tests/test-badges.json
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,12 @@
"left_text": "commits",
"right_text": "250",
"center_image": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIgogICAgIHdpZHRoPSIxMDciIGhlaWdodD0iMTMiIHZpZXdCb3g9IjAgLTEyIDEwNyAxMyI+CjxkZWZzPgo8L2RlZnM+CjxwYXRoIGQ9Ik03LjAsLTIuNzQzNTAyMzE1NTM3MTcyNyBMNy45NTg3NjI4ODY1OTc5MzgsLTIuMTIxMjEzMzA0Mzk3MDk2NCBMOC45MTc1MjU3NzMxOTU4NzcsLTIuNDA5ODg0OTkzNTgyNDQgTDkuODc2Mjg4NjU5NzkzODE1LC0yLjc1MTk5MjYyMzQ3NzI4IEwxMC44MzUwNTE1NDYzOTE3NTMsLTIuODY0MjQ4NjIwOTk5NDIzIEwxMS43OTM4MTQ0MzI5ODk2OTEsLTIuNzQ4OTY4NzAyMjc0MDMzNyBMMTIuNzUyNTc3MzE5NTg3NjMsLTIuNTE4NzE4OTQxMDA1NTIxMyBMMTMuNzExMzQwMjA2MTg1NTY4LC0yLjI5ODcyNTU1NTExMjA2OCBMMTQuNjcwMTAzMDkyNzgzNTA2LC0yLjE4MDUyNzQ2ODU1MDQ2OCBMMTUuNjI4ODY1OTc5MzgxNDQzLC0yLjIwNzUwMzg3NDExOTE5IEwxNi41ODc2Mjg4NjU5NzkzODMsLTIuMzc4NTE5NzY1OTYyMzQ1IEwxNy41NDYzOTE3NTI1NzczMiwtMi42NjAyNjY2NjQyMzYwMDU4IEwxOC41MDUxNTQ2MzkxNzUyNiwtMy4wMDIxNjI2NTYzODYzMTcgTDE5LjQ2MzkxNzUyNTc3MzE5OCwtMy4zNTAxMTI0NTk0MTM2NzQ0IEwyMC40MjI2ODA0MTIzNzExMzYsLTMuNjU3MTgyODAwNzQyNjE5NSBMMjEuMzgxNDQzMjk4OTY5MDc0LC0zLjg5MDQ2MzgyMjIwMjAzNTMgTDIyLjM0MDIwNjE4NTU2NzAxMywtNC4wMzQxODM1ODkxMTUzMzggTDIzLjI5ODk2OTA3MjE2NDk0NywtNC4wODk2MjAzNDU5MjQyMzk1IEwyNC4yNTc3MzE5NTg3NjI4ODYsLTQuMDcyNTk4NTc1MTA0NjI2IEwyNS4yMTY0OTQ4NDUzNjA4MjQsLTQuMDA5NDI3NTk5MDgzNTA2IEwyNi4xNzUyNTc3MzE5NTg3NjIsLTMuOTMyMDk5NTc1MjEyMDcxMyBMMjcuMTM0MDIwNjE4NTU2NywtMy44NzM0NTAwMjY4NjU0OTIgTDI4LjA5Mjc4MzUwNTE1NDY0LC0zLjg2MjgzMTU2Njg3NDYxNDcgTDI5LjA1MTU0NjM5MTc1MjU3NywtMy45MjI2ODUwMDk2NDA3MjMzIEwzMC4wMTAzMDkyNzgzNTA1MTUsLTQuMDY2MjI5NTYxMjIyOTQzNSBMMzAuOTY5MDcyMTY0OTQ4NDU0LC00LjI5NjM0NzQ1NzYwMTgwNSBMMzEuOTI3ODM1MDUxNTQ2MzkyLC00LjYwNTYxNTkzNTk2OTI4OCBMMzIuODg2NTk3OTM4MTQ0MzM0LC00Ljk3NzM0NDcwNzEyMTA5OSBMMzMuODQ1MzYwODI0NzQyMjcsLTUuMzg3NDExMjE3OTM4OTA5IEwzNC44MDQxMjM3MTEzNDAyMSwtNS44MDY2NDc5MDAzNjczNzcgTDM1Ljc2Mjg4NjU5NzkzODE1LC02LjIwMzUyMjY2MDQ3MzMzOCBMMzYuNzIxNjQ5NDg0NTM2MDksLTYuNTQ2ODYyMzk4NTU3OTY4IEwzNy42ODA0MTIzNzExMzQwMjUsLTYuODA4Mzk1MTQzOTU5NjY0IEwzOC42MzkxNzUyNTc3MzE5NjQsLTYuOTY0OTI0ODkwNjMxMDQzNSBMMzkuNTk3OTM4MTQ0MzI5ODk1LC03LjAgTDQwLjU1NjcwMTAzMDkyNzgzLC02LjkwNDk4Njg2MjgzMTA4MiBMNDEuNTE1NDYzOTE3NTI1NzcsLTYuNjc5NTExNjAzNDIxNzI5IEw0Mi40NzQyMjY4MDQxMjM3MSwtNi4zMzEyODA3MjI1ODkwNzQgTDQzLjQzMjk4OTY5MDcyMTY1LC01Ljg3NTMzNDExMTQxODg5MSBMNDQuMzkxNzUyNTc3MzE5NTg2LC01LjMzMjgxODgyMTU2MjgzMyBMNDUuMzUwNTE1NDYzOTE3NTI1LC00LjcyOTM5ODAyMDA3NzM5OCBMNDYuMzA5Mjc4MzUwNTE1NDYsLTQuMDkzNDI2MDc0NTI0MzI4IEw0Ny4yNjgwNDEyMzcxMTM0LC0zLjQ1NDAyNzUyMDgwNTEzMiBMNDguMjI2ODA0MTIzNzExMzQsLTIuODM5MjE1MjY5NjczMDE1MyBMNDkuMTg1NTY3MDEwMzA5MjgsLTIuMjc0MTcyNzQ5NDk2MTY0OCBMNTAuMTQ0MzI5ODk2OTA3MjE2LC0xLjc3OTgwNjU5NzM5MTYxMSBMNTEuMTAzMDkyNzgzNTA1MTU0LC0xLjM3MTY1MzI1MjU2OTM1MzQgTDUyLjA2MTg1NTY3MDEwMzA5LC0xLjA1OTE5NTcxNTI0MjQ4OTMgTDUzLjAyMDYxODU1NjcwMTAzLC0wLjg0NTYxNjY5MDIwNjQwOCBMNTMuOTc5MzgxNDQzMjk4OTcsLTAuNzI3OTg1NTk5ODY3MDQxIEw1NC45MzgxNDQzMjk4OTY5MSwtMC42OTc4NDgwMTgzMzAyODk4IEw1NS44OTY5MDcyMTY0OTQ4NDYsLTAuNzQyMTYxMTg5NDAzODMwNiBMNTYuODU1NjcwMTAzMDkyNzg0LC0wLjg0NDQ5ODgwNzM1ODk0MjggTDU3LjgxNDQzMjk4OTY5MDcyLC0wLjk4NjQzMjIzOTgyMjc4MyBMNTguNzczMTk1ODc2Mjg4NjYsLTEuMTQ4OTg2NjQwMTk5MDU0NyBMNTkuNzMxOTU4NzYyODg2NiwtMS4zMTQwNjc1MzU0NDcyNjk1IEw2MC42OTA3MjE2NDk0ODQ1NCwtMS40NjU3NTg4ODYxNzY1NDEgTDYxLjY0OTQ4NDUzNjA4MjQ3NSwtMS41OTE0MDA4NTk3OTI5OTAzIEw2Mi42MDgyNDc0MjI2ODA0MTQsLTEuNjgyMzc2MDYzNTg1NzMgTDYzLjU2NzAxMDMwOTI3ODM1LC0xLjczNDU1MTAyNzE4Nzc4MjYgTDY0LjUyNTc3MzE5NTg3NjMsLTEuNzQ4MzQ0MTgxNDgxNTQzNyBMNjUuNDg0NTM2MDgyNDc0MjIsLTEuNzI4NDIwNTE2ODAxNTQ2MyBMNjYuNDQzMjk4OTY5MDcyMTcsLTEuNjgzMDM4MjEwOTMxODg2MiBMNjcuNDAyMDYxODU1NjcwMSwtMS42MjMwOTg4MDY1NTIyODY3IEw2OC4zNjA4MjQ3NDIyNjgwNSwtMS41NjA5NzU1NDcwODk1OSBMNjkuMzE5NTg3NjI4ODY1OTcsLTEuNTA5MjEzODk4MDQyMzY3NSBMNzAuMjc4MzUwNTE1NDYzOTMsLTEuNDc5MjEwNDI4NzcwNDM2IEw3MS4yMzcxMTM0MDIwNjE4NSwtMS40Nzk5Nzg3NDQ1NDg1MDA5IEw3Mi4xOTU4NzYyODg2NTk3OSwtMS41MTcxMTY3MzA1Nzk4NDMgTDczLjE1NDYzOTE3NTI1NzczLC0xLjU5MjA2NTc0NzQ0NDE1MjQgTDc0LjExMzQwMjA2MTg1NTY3LC0xLjcwMTc0NzIyOTA2NjY1OSBMNzUuMDcyMTY0OTQ4NDUzNiwtMS44Mzg2MjYyNTQ0MjEzMjU3IEw3Ni4wMzA5Mjc4MzUwNTE1NCwtMS45OTEyMTY3NzkyMDMxMjgzIEw3Ni45ODk2OTA3MjE2NDk0OCwtMi4xNDUwMjAxNTI4NTMyNzA2IEw3Ny45NDg0NTM2MDgyNDc0MiwtMi4yODM4MTk2MTk3Mzk0NzY0IEw3OC45MDcyMTY0OTQ4NDUzNiwtMi4zOTEyNTc2OTkyMTQxNTYzIEw3OS44NjU5NzkzODE0NDMzLC0yLjQ1MjUzMzMzOTAzNTE0IEw4MC44MjQ3NDIyNjgwNDEyMywtMi40NTYwNzQ5NTI5NjkyMzQ3IEw4MS43ODM1MDUxNTQ2MzkxNywtMi4zOTUwMTE3ODM3MjcyOTE3IEw4Mi43NDIyNjgwNDEyMzcxMSwtMi4yNjgyNDU1NzUxNzA4MzkgTDgzLjcwMTAzMDkyNzgzNTA1LC0yLjA4MDk3ODY3NTc0MDM4OTQgTDg0LjY1OTc5MzgxNDQzMjk5LC0xLjg0NDU1OTAzODgyMTk0NDIgTDg1LjYxODU1NjcwMTAzMDkzLC0xLjU3NTU3ODYzNDY2ODQ1MyBMODYuNTc3MzE5NTg3NjI4ODYsLTEuMjk0MjM1NDM2MzQ1Njg3IEw4Ny41MzYwODI0NzQyMjY4LC0xLjAyMjA3MjgxNzk0Mjk3ODggTDg4LjQ5NDg0NTM2MDgyNDc0LC0wLjc3OTMxMjg1MzQyMzA1NTUgTDg5LjQ1MzYwODI0NzQyMjY4LC0wLjU4MjA5OTU5NjkzNTA0NzMgTDkwLjQxMjM3MTEzNDAyMDYyLC0wLjQ0MDExNzk2OTM2NjA1MDUgTDkxLjM3MTEzNDAyMDYxODU2LC0wLjM1NTAxMDE5NDAwMTg2MDUgTDkyLjMyOTg5NjkwNzIxNjUsLTAuMzIwMTMwMjc5MjczNjg1OCBMOTMuMjg4NjU5NzkzODE0NDMsLTAuMzIxOTcyNDkwOTA3MTA4OCBMOTQuMjQ3NDIyNjgwNDEyMzcsLTAuMzQzNDAzNTIzNjk3OTg4NCBMOTUuMjA2MTg1NTY3MDEwMzEsLTAuMzY4MzI3MzU4MDE0MDQ1MDQgTDk2LjE2NDk0ODQ1MzYwODI1LC0wLjM4NjY5Mjg5NDY2NjY1ODcgTDk3LjEyMzcxMTM0MDIwNjE5LC0wLjM5NzU5OTkwNjk5MTU4NDkzIEw5OC4wODI0NzQyMjY4MDQxMiwtMC40MDY2MzY5NTEwNTIwMjg3IEw5OS4wNDEyMzcxMTM0MDIwNiwtMC40MTE0MDA3NzYyMjkwODczMyBMMTAwLjAsLTAuMzY2MTM0NjcxODM4MTc0MiIgZmlsbD0idHJhbnNwYXJlbnQiIHN0cm9rZT0iIzAwN2VjNiIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiAvPgo8L3N2Zz4=",
"center_color": "#252525"
"center_color": "#252525"
},
{
"file_name": "style-flat-square.svg",
"left_text": "style",
"right_text": "flat-square",
"style": "flat-square"
}
]