From ad8e98ea352cc71cb159b55b976e31a1b041a6c8 Mon Sep 17 00:00:00 2001 From: Kurt McKee Date: Wed, 10 Sep 2025 07:45:02 -0500 Subject: [PATCH 1/2] Add a logo and banner to the project --- README.rst | 8 +- assets/banner.svg | 288 ++++++++++++++++++ assets/logo.svg | 261 ++++++++++++++++ assets/openmoji-1F4F0-newspaper-2024.svg | 21 ++ assets/openmoji-2699-gear-2024.svg | 12 + assets/openmoji-E381-web-syndication-2024.svg | 14 + .../20260725_110223_kurtmckee_add_logo.rst | 4 + docs/_static/banner.png | Bin 0 -> 38747 bytes docs/_static/custom.css | 23 ++ docs/_static/feedparser.css | 5 - docs/_static/logo.png | Bin 0 -> 11065 bytes docs/_templates/about-no-logo.html.jinja | 23 ++ docs/_templates/about.html.jinja | 24 ++ docs/colophon.rst | 36 +++ docs/conf.py | 45 ++- docs/index.rst | 18 +- 16 files changed, 762 insertions(+), 20 deletions(-) create mode 100644 assets/banner.svg create mode 100644 assets/logo.svg create mode 100644 assets/openmoji-1F4F0-newspaper-2024.svg create mode 100644 assets/openmoji-2699-gear-2024.svg create mode 100644 assets/openmoji-E381-web-syndication-2024.svg create mode 100644 changelog.d/20260725_110223_kurtmckee_add_logo.rst create mode 100644 docs/_static/banner.png create mode 100644 docs/_static/custom.css delete mode 100644 docs/_static/feedparser.css create mode 100644 docs/_static/logo.png create mode 100644 docs/_templates/about-no-logo.html.jinja create mode 100644 docs/_templates/about.html.jinja create mode 100644 docs/colophon.rst diff --git a/README.rst b/README.rst index 7c3822159..7350c9a07 100644 --- a/README.rst +++ b/README.rst @@ -1,13 +1,11 @@ .. This file is part of feedparser. - Copyright 2010-2025 Kurt McKee + Copyright 2010-2026 Kurt McKee Copyright 2002-2008 Mark Pilgrim Released under the BSD 2-clause license. -feedparser -########## - -Parse Atom and RSS feeds in Python. +.. image:: docs/_static/banner.png + :alt: feedparser: Parse RSS/Atom/JSON feeds in Python. ---- diff --git a/assets/banner.svg b/assets/banner.svg new file mode 100644 index 000000000..c608ac5c7 --- /dev/null +++ b/assets/banner.svg @@ -0,0 +1,288 @@ + + + +feedparserParse RSS / Atom / JSON feeds in Python diff --git a/assets/logo.svg b/assets/logo.svg new file mode 100644 index 000000000..d3c0413ab --- /dev/null +++ b/assets/logo.svg @@ -0,0 +1,261 @@ + + + + diff --git a/assets/openmoji-1F4F0-newspaper-2024.svg b/assets/openmoji-1F4F0-newspaper-2024.svg new file mode 100644 index 000000000..b86e3de43 --- /dev/null +++ b/assets/openmoji-1F4F0-newspaper-2024.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/openmoji-2699-gear-2024.svg b/assets/openmoji-2699-gear-2024.svg new file mode 100644 index 000000000..20a39204f --- /dev/null +++ b/assets/openmoji-2699-gear-2024.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/assets/openmoji-E381-web-syndication-2024.svg b/assets/openmoji-E381-web-syndication-2024.svg new file mode 100644 index 000000000..2fd8aa44f --- /dev/null +++ b/assets/openmoji-E381-web-syndication-2024.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/changelog.d/20260725_110223_kurtmckee_add_logo.rst b/changelog.d/20260725_110223_kurtmckee_add_logo.rst new file mode 100644 index 000000000..6473e40d7 --- /dev/null +++ b/changelog.d/20260725_110223_kurtmckee_add_logo.rst @@ -0,0 +1,4 @@ +Documentation +------------- + +* Add a logo and banner to the project. diff --git a/docs/_static/banner.png b/docs/_static/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..c84d8f03302ff33b6c062c1d5541f65f2a3d0bbc GIT binary patch literal 38747 zcmYJbbwE|!^F4e4=}sl2ltw_hK?I~bRU{+?q>+-81}W)A>5x`IMLMJuL{LP!q*EGx zb9_GE_xwOe@o9RYwfqEkzV&0_SWWb0%rt{QjMoxg^||7+k$3>)fSOAEClV=noDZfY7}nL zNKjp(?8J+}`$2k>8IKd4io~{U*!hsVzkA6kwi<1`8S2m6y3Hl%b1w?gEY zI7>+bb5QTm9vxp?R1wNH*HV(p;V^}e$j!4}MKQE+p@vY77&zw_7pYe?+fW@OEqbUy z)VO{T2D}B{7thH;*Mf^WK`V$jv2ekNe~&UiOGB5{o#^`aB{)pq6^Q~dP@^a%3qMkO z)T>J^ge`Wc_b>Kh|9zZ9=Y|#PkRk9Y>e4H`x=V~js920;{XdnY|6M~_c_!*U>SI+& zdHJkqLlI%F~TS!nMy~ozxXi9fb zW7=67ssH_&Tt_SRS8S{PkR-~$G*km|p7g;P^M9Yx)5S%JV|bk$T~7YQSr9TyxJ2Rm zzYlS?UuscC_2vd_uc9pJ11I@cNRS1Bi||>Eot=|Z@%wbCoG0*do}2XlZhANoH;*Gw ze!7o3J~?kX_`mOAHW5dqq@HSiCWt@_^g`WrU7>*WkENH2!oSSJc;klpgWrtv_~PQ? z)oq|~ZSjtl!2`0R2l9Kl)P5$@y<7kgcF6E_ud}{IdG50193A2v5`OA+VWRW}6`Tmmw ztvcD0cl?cg_*;hsaopSg-T2G{5lYm+{BL|znwT3_<%6auHcjS71?fHCPYyPuK0 zp5>4Q-rd>2{NDyBe$_$G9K-i_7pD9uo?sudhE+Zb+=6LSb*HXl~Aw zBlR?FYsMJeWx_>4Q8?QKhg+3mxHsvL)mcz@=);|^D=OxW4k<2?<_E(OU3 zUb_>U=Q7vj?CRR~IgzcCNE$W0{_EY=-@jd&GG`%*F*N4iiqz@$QjmqxkI_SqCuh@8 z%BPVNP0Y!OEh%~A?Rk5qv#aZsVby~)L0dA5hYt(ydR9GXD!9vltbG}4DR--ivT}l= zP>3@pS2XV?4}1N+caE(?L!_mpr8-r=+S<@f-n%FGH2n)ppMv+e*(5qbnAq44r(1%0 zK7XDmI8V5C=UMlhi;l>@Z=_Nolvg6WOiqr$#>O`Ij2LxA%16-V36ix6>}K4tI{Nzw zWCq;kYH{U0ZAmks!LKEHij)z+&2s1#A?NJXn7y4Hvy2P_tnflgO?|yQtP#sP^S`gB z*1#Y!F}b?8IhEVTigP6A?k@PY_XD|p&!2C_F1w5Bi#xCHz3U3WC7+(2Msaa*J+imQ zK-JdPZf*RQI6c{H_Bz~RLPtj@p`yYHl9lbNLV|Gza~wlXiSVt*`rRT|J3G4{u<|SvYSA7>sHCji`o@0jYo&>Vt!L)HmA?Y^nUrG zX-R$U+BI&I_j*`O$h|75-$KJ-64J7;V9t>V;Hk}uj>dO?^2F-vH6+W9P{8rf!I1Jl zO)H)F`tr8e1}^d;I~qJ$oYElXYu6M~w6(Qwy>t9+`IYwH2d@A7Kxb!XB=@%x?Q12a zrJwUe{%xx=oWugGG=KbXi$c%Zn$`c}%+uTRztpW1BuC&P9rHXymNDK_BmzA;A|l@Na>O$gB_&x) z%j-HiI`MEC_V(OyLgkkK{JC}K4z`bv&!gY(g(@m4=6`=zA;-Dob+p6s;Gg#P8_tzQ)CcFD532Lizdm zjg;x*@2`&C=}WoM`5@=>+;+oqt=huE0uv`E9vnD16&1YNx;oVhzrDS^yz=tst{B>U zIN5xBeDQ8hT)ZqSn4440-SFM<$;qK@ZE}{@)^eJfkl0lC1O-ECYHs%T_vckr@osLo z$}y5KGBcy|ntqapZ`IM&eOXq9CnY7dyt>-{
P0|P!Gq0kp(o)7z~Oq&(e)Ch)$ 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
k$VWoPygRA;IKzEDVDA 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

@!IfvBGASTkBn4c)`ts=WA-FLjIs7Wj%Lp~ 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 literal 0 HcmV?d00001 diff --git a/docs/_static/custom.css b/docs/_static/custom.css new file mode 100644 index 000000000..5c314e0fe --- /dev/null +++ b/docs/_static/custom.css @@ -0,0 +1,23 @@ +.pre, .pre * { + font-style: normal; + font-family: monospace; + white-space: pre; +} + +/* + * The CSS code to visually hide elements comes from: + * https://www.a11yproject.com/posts/how-to-hide-content/ + * + * The CSS selector for the Sphinx/Alabaster theme comes from: + * https://github.com/pallets/pallets-sphinx-themes/blob/1512b53b/src/pallets_sphinx_themes/themes/pocoo/static/pocoo.css#L486-L498 + */ + +.visually-hidden > h1:first-child { + clip: rect(0 0 0 0); + clip-path: inset(50%); + height: 1px; + overflow: hidden; + position: absolute; + white-space: nowrap; + width: 1px; +} diff --git a/docs/_static/feedparser.css b/docs/_static/feedparser.css deleted file mode 100644 index aa1b70550..000000000 --- a/docs/_static/feedparser.css +++ /dev/null @@ -1,5 +0,0 @@ -.pre, .pre * { - font-style: normal; - font-family: monospace; - white-space: pre; -} diff --git a/docs/_static/logo.png b/docs/_static/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..04beb2a4a63a83bb3bdc8acfd1af3ef3e114fb22 GIT binary patch literal 11065 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 + + {% if theme_logo_name|lower == 'true' %} +

{{ project }}

+ {% elif theme_logo_name|lower != 'false' %} +

{{ theme_logo_name }}

+ {% endif %} +
+

+{% else %} +

{{ project }}

+{% endif %} + +{% if theme_description %} +

{{ theme_description }}

+{% endif %} + +{% if theme_github_user and theme_github_repo %} +

+ Source code repository +

+{% endif %} diff --git a/docs/_templates/about.html.jinja b/docs/_templates/about.html.jinja new file mode 100644 index 000000000..4c0118b72 --- /dev/null +++ b/docs/_templates/about.html.jinja @@ -0,0 +1,24 @@ +{% if theme_logo %} +

{{ project }}

+ {% elif theme_logo_name|lower != 'false' %} +

{{ theme_logo_name }}

+ {% endif %} +
+

+{% else %} +

{{ project }}

+{% endif %} + +{% if theme_description %} +

{{ theme_description }}

+{% endif %} + +{% if theme_github_user and theme_github_repo %} +

+ Source code repository +

+{% endif %} diff --git a/docs/colophon.rst b/docs/colophon.rst new file mode 100644 index 000000000..cbd08528d --- /dev/null +++ b/docs/colophon.rst @@ -0,0 +1,36 @@ +Colophon +######## + +The feedparser logo and banner build on others' work. + +* The newspaper in the logo is `Emoji 1F4F0`_, + the gear in the logo is `Emoji 2699`_, + and the web syndication icon in the logo is `Emoji E381`_. + They were designed by `OpenMoji`_, the open-source emoji and icon project. + + License: `CC BY-SA 4.0`_ + +* The text in the banner uses the `Noto Sans`_ font, + designed by the `Noto Project`_. + + License: `SIL Open Font License, version 1.1 `_ + +* The images and text were pieced together using `Inkscape`_. + + License: `GNU GPL, version 2`_ + + + +.. Links +.. ----- +.. +.. _Emoji 1F4F0: https://openmoji.org/library/emoji-1F4F0/ +.. _Emoji 2699: https://openmoji.org/library/emoji-2699/ +.. _Emoji E381: https://openmoji.org/library/emoji-E381/ +.. _OpenMoji: https://openmoji.org/ +.. _CC BY-SA 4.0: https://creativecommons.org/licenses/by-sa/4.0/ +.. _Noto Sans: https://fonts.google.com/noto/specimen/Noto+Sans +.. _Noto Project: https://github.com/notofonts/latin-greek-cyrillic +.. _Noto Sans License: https://github.com/notofonts/latin-greek-cyrillic/blob/4bc63d7ebca1faed49c6c685f380ba0abc2c1941/OFL.txt +.. _Inkscape: https://inkscape.org/ +.. _GNU GPL, version 2: https://inkscape.org/about/license/ diff --git a/docs/conf.py b/docs/conf.py index 6bcf1784a..bed8f8fac 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -9,7 +9,7 @@ # Project information project = "feedparser" -copyright = "2010-2025 Kurt McKee, 2004-2008 Mark Pilgrim" +copyright = "2010-2026 Kurt McKee, 2004-2008 Mark Pilgrim" language = "en" # General configuration @@ -19,13 +19,46 @@ # HTML options # Files in `html_static_path` will be copied to `_static/` when compiled. -html_static_path = ["_static"] -html_theme = "sphinx_rtd_theme" -# Example feeds that will be hosted by Read the Docs. -# The files are double-nested in 'examples/examples/' -# because they're copied to the root of the drive. +html_theme = "alabaster" +html_static_path = [ + "_static", +] +html_theme_options = { + "logo": "logo.png", + "logo_name": True, + "description": "Parse RSS/Atom/JSON feeds in Python.", + # Link to GitHub + "github_user": "kurtmckee", + "github_repo": "feedparser", + "github_button": True, + "github_type": "star", + "github_count": False, + # Don't show "Powered by" text. + "show_powered_by": False, +} +templates_path = ["_templates"] +html_sidebars = { + "index": [ + "about-no-logo.html.jinja", # Custom + "donate.html", + "navigation.html", + "relations.html", + "searchbox.html", + ], + "**": [ + "about.html.jinja", # Custom + "searchfield.html", + "navigation.html", + "relations.html", + "donate.html", + ], +} html_extra_path = ["examples"] + +# Don't copy source .rst files into the built documentation. +html_copy_source = False + sys.path.append(str(pathlib.Path(__file__).parent / "extensions")) extensions = [ # Make Sphinx add a to `feedparser.css`. diff --git a/docs/index.rst b/docs/index.rst index 6bbc46cdf..40aa02c19 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -1,6 +1,11 @@ -============= -Documentation -============= +.. rst-class:: visually-hidden + +feedparser - Parse RSS/Atom/JSON feeds in Python +################################################ + +.. image:: _static/banner.png + :alt: feedparser - Parse RSS/Atom/JSON feeds in Python + This documentation claims to describe the behavior of :program:`feedparser` |version|. It does not claim to describe the behavior of any other version. @@ -19,6 +24,11 @@ implied warranties. See :ref:`the documentation license ` for more det advanced http annotated-examples - changelog reference + +.. toctree:: + :maxdepth: 1 + + changelog license + colophon From fbf7c2ac1fb170ca4e5ac7166293f7156c7b4d5b Mon Sep 17 00:00:00 2001 From: Kurt McKee Date: Sat, 25 Jul 2026 11:06:48 -0500 Subject: [PATCH 2/2] Make the README image a permalink to the commit of last update --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 7350c9a07..d0d4c41c8 100644 --- a/README.rst +++ b/README.rst @@ -4,7 +4,7 @@ Copyright 2002-2008 Mark Pilgrim Released under the BSD 2-clause license. -.. image:: docs/_static/banner.png +.. image:: https://raw.githubusercontent.com/kurtmckee/feedparser/ad8e98ea352cc71cb159b55b976e31a1b041a6c8/docs/_static/banner.png :alt: feedparser: Parse RSS/Atom/JSON feeds in Python. ----