From affe7612825183aedc7b9276de5297d2ab6e16a5 Mon Sep 17 00:00:00 2001 From: Luka L Date: Fri, 17 Apr 2026 09:01:53 +0200 Subject: [PATCH 1/4] adds an articles section the first article to it --- docs/source/articles/index.rst | 25 +++++++++++++++++++++++++ docs/source/conf.py | 10 +++++++++- docs/source/index.rst | 1 + docs/source/json-data/articles.json | 16 ++++++++++++++++ 4 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 docs/source/articles/index.rst create mode 100644 docs/source/json-data/articles.json diff --git a/docs/source/articles/index.rst b/docs/source/articles/index.rst new file mode 100644 index 0000000..af6f467 --- /dev/null +++ b/docs/source/articles/index.rst @@ -0,0 +1,25 @@ +Articles +============ + +*The first place to look when you want to read something worth reading about Python.* + +This is a curated, `community-voted `_ section of articles from across the Python ecosystem. It's not just an aggregator however, think of it like a high-signal place to keep yourself informed about Python and its ecosystem. + +Links to past years' archives can be found at the bottom of the page. + +---- + +{% for article in articles["2026"] %} + +{% set heading = "`" + article.title + " ↗ <" + article.url + ">`_" %} +- .. rubric:: {{ heading }} + {{ '-' * heading|length }} + by `{{ article.author }} ↗ <{{ article.authorUrl }}>`_ + + .. image:: {{ article.image }} + :height: 10em + + {{ article.description }} + + +{% endfor %} diff --git a/docs/source/conf.py b/docs/source/conf.py index 17183b5..8385dd8 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -21,7 +21,7 @@ # -- Project information ----------------------------------------------------- project = "Python Belgrade" -copyright = "2024, Python Belgrade" +copyright = "2026, Python Belgrade" author = "Python Belgrade" @@ -69,9 +69,13 @@ with open("json-data/speakers.json") as file: speakers = json.load(file) +with open("json-data/articles.json") as file: + articles = json.load(file) + html_context = { "meetups": meetups, "speakers": speakers, + "articles": articles, } if os.environ.get("READTHEDOCS", "") == "True": @@ -98,6 +102,10 @@ "title": "Sponsorship", "url": "sponsorship/index", }, + { + "title": "Articles", + "url": "articles/index", + }, { "title": "Social", "children": [ diff --git a/docs/source/index.rst b/docs/source/index.rst index a0ecc8e..dcd202f 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -74,6 +74,7 @@ Only reason why you may want to bring a laptop would be if you are planning to g meetups/index speakers/index + articles/index .. toctree:: :maxdepth: 2 diff --git a/docs/source/json-data/articles.json b/docs/source/json-data/articles.json new file mode 100644 index 0000000..ee7eef9 --- /dev/null +++ b/docs/source/json-data/articles.json @@ -0,0 +1,16 @@ +{ + "2026": [ + { + "id": 1, + "title": "Writing agentic systems in Python", + "description": "From Python as a non-negotiable foundation all the way to an entire agentic system, this straightforward guide charts out a roadmap for getting hands on experience as an AI first Python engineer.", + "url": "https://dev.to/klement_gunndu/the-ai-engineering-stack-in-2026-what-to-learn-first-1nhj", + "image": "https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1709547228697-fa1f424a3f39%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DM3w4ODA4ODZ8MHwxfHNlYXJjaHwxfHxwcm9ncmFtbWluZyUyMGNhcmVlciUyMGxlYXJuaW5nfGVufDB8MHx8fDE3NzM0OTE1Nzh8MA%26ixlib%3Drb-4.1.0%26q%3D80%26w%3D1080", + "author": "Klement Gunndu", + "authorUrl": "https://www.linkedin.com/in/klement-gunndu-601872351/" + } + ], + "archives": { + "2026": [] + } +} From 4a820f63ee34734b251a65c38ddae52f1f47820f Mon Sep 17 00:00:00 2001 From: Luka L Date: Fri, 17 Apr 2026 09:31:10 +0200 Subject: [PATCH 2/4] messed up indentation --- docs/source/json-data/articles.json | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/source/json-data/articles.json b/docs/source/json-data/articles.json index ee7eef9..8c5294c 100644 --- a/docs/source/json-data/articles.json +++ b/docs/source/json-data/articles.json @@ -1,16 +1,16 @@ { - "2026": [ - { - "id": 1, - "title": "Writing agentic systems in Python", - "description": "From Python as a non-negotiable foundation all the way to an entire agentic system, this straightforward guide charts out a roadmap for getting hands on experience as an AI first Python engineer.", - "url": "https://dev.to/klement_gunndu/the-ai-engineering-stack-in-2026-what-to-learn-first-1nhj", - "image": "https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1709547228697-fa1f424a3f39%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DM3w4ODA4ODZ8MHwxfHNlYXJjaHwxfHxwcm9ncmFtbWluZyUyMGNhcmVlciUyMGxlYXJuaW5nfGVufDB8MHx8fDE3NzM0OTE1Nzh8MA%26ixlib%3Drb-4.1.0%26q%3D80%26w%3D1080", - "author": "Klement Gunndu", - "authorUrl": "https://www.linkedin.com/in/klement-gunndu-601872351/" + "2026": [ + { + "id": 1, + "title": "Writing agentic systems in Python", + "description": "From Python as a non-negotiable foundation all the way to an entire agentic system, this straightforward guide charts out a roadmap for getting hands on experience as an AI first Python engineer.", + "url": "https://dev.to/klement_gunndu/the-ai-engineering-stack-in-2026-what-to-learn-first-1nhj", + "image": "https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1709547228697-fa1f424a3f39%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DM3w4ODA4ODZ8MHwxfHNlYXJjaHwxfHxwcm9ncmFtbWluZyUyMGNhcmVlciUyMGxlYXJuaW5nfGVufDB8MHx8fDE3NzM0OTE1Nzh8MA%26ixlib%3Drb-4.1.0%26q%3D80%26w%3D1080", + "author": "Klement Gunndu", + "authorUrl": "https://www.linkedin.com/in/klement-gunndu-601872351/" + } + ], + "archives": { + "2026": [] } - ], - "archives": { - "2026": [] - } } From 73bcf9dd569a5d89a5ff869a28b5e5b08948aec8 Mon Sep 17 00:00:00 2001 From: Luka L Date: Fri, 17 Apr 2026 09:31:54 +0200 Subject: [PATCH 3/4] mention articles.json in the README --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 3fc8364..5587fc7 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # data located at docs/source/json-data +- docs/source/json-data/articles.json - docs/source/json-data/meetups.json - docs/source/json-data/speakers.json From 80184618b6e8109d211504fec6b7b2b967ea1291 Mon Sep 17 00:00:00 2001 From: Luka L Date: Sun, 19 Apr 2026 12:54:34 +0200 Subject: [PATCH 4/4] indent and heading fixes --- docs/source/articles/index.rst | 5 +++-- docs/source/json-data/articles.json | 28 ++++++++++++++-------------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/docs/source/articles/index.rst b/docs/source/articles/index.rst index af6f467..eff2162 100644 --- a/docs/source/articles/index.rst +++ b/docs/source/articles/index.rst @@ -12,8 +12,9 @@ Links to past years' archives can be found at the bottom of the page. {% for article in articles["2026"] %} {% set heading = "`" + article.title + " ↗ <" + article.url + ">`_" %} -- .. rubric:: {{ heading }} - {{ '-' * heading|length }} +- .. rubric:: {{ heading }} + + by `{{ article.author }} ↗ <{{ article.authorUrl }}>`_ .. image:: {{ article.image }} diff --git a/docs/source/json-data/articles.json b/docs/source/json-data/articles.json index 8c5294c..1d6e1db 100644 --- a/docs/source/json-data/articles.json +++ b/docs/source/json-data/articles.json @@ -1,16 +1,16 @@ { - "2026": [ - { - "id": 1, - "title": "Writing agentic systems in Python", - "description": "From Python as a non-negotiable foundation all the way to an entire agentic system, this straightforward guide charts out a roadmap for getting hands on experience as an AI first Python engineer.", - "url": "https://dev.to/klement_gunndu/the-ai-engineering-stack-in-2026-what-to-learn-first-1nhj", - "image": "https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1709547228697-fa1f424a3f39%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DM3w4ODA4ODZ8MHwxfHNlYXJjaHwxfHxwcm9ncmFtbWluZyUyMGNhcmVlciUyMGxlYXJuaW5nfGVufDB8MHx8fDE3NzM0OTE1Nzh8MA%26ixlib%3Drb-4.1.0%26q%3D80%26w%3D1080", - "author": "Klement Gunndu", - "authorUrl": "https://www.linkedin.com/in/klement-gunndu-601872351/" - } - ], - "archives": { - "2026": [] - } + "2026": [ + { + "id": 1, + "title": "Writing agentic systems in Python", + "description": "From Python as a non-negotiable foundation all the way to an entire agentic system, this straightforward guide charts out a roadmap for getting hands on experience as an AI first Python engineer.", + "url": "https://dev.to/klement_gunndu/the-ai-engineering-stack-in-2026-what-to-learn-first-1nhj", + "image": "https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1709547228697-fa1f424a3f39%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DM3w4ODA4ODZ8MHwxfHNlYXJjaHwxfHxwcm9ncmFtbWluZyUyMGNhcmVlciUyMGxlYXJuaW5nfGVufDB8MHx8fDE3NzM0OTE1Nzh8MA%26ixlib%3Drb-4.1.0%26q%3D80%26w%3D1080", + "author": "Klement Gunndu", + "authorUrl": "https://www.linkedin.com/in/klement-gunndu-601872351/" + } + ], + "archives": { + "2026": [] + } }