Skip to content

Commit cd8c644

Browse files
authored
Add 'Edit this page on GitHub' footer link and repo cleanup (#4)
1 parent d72d17d commit cd8c644

19 files changed

+413
-27
lines changed

.github/workflows/ci.yml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,43 @@ jobs:
4242
- name: Spell check
4343
uses: crate-ci/typos@v1.32.0
4444

45+
markdown:
46+
name: Markdown a11y
47+
runs-on: ubuntu-latest
48+
steps:
49+
- name: Checkout
50+
uses: actions/checkout@v4
51+
52+
- name: Setup Bun
53+
uses: oven-sh/setup-bun@v2
54+
with:
55+
bun-version: latest
56+
57+
- name: Markdownlint
58+
run: bunx markdownlint-cli "content/posts/**/index.md"
59+
4560
build:
4661
name: Build
4762
runs-on: ubuntu-latest
63+
needs: [quality, spellcheck, markdown]
64+
steps:
65+
- name: Checkout
66+
uses: actions/checkout@v4
67+
68+
- name: Setup Bun
69+
uses: oven-sh/setup-bun@v2
70+
with:
71+
bun-version: latest
72+
73+
- name: Install dependencies
74+
run: bun install --frozen-lockfile
75+
76+
- name: Build
77+
run: bun run build
78+
79+
a11y:
80+
name: Accessibility
81+
runs-on: ubuntu-latest
4882
needs: [quality, spellcheck]
4983
steps:
5084
- name: Checkout
@@ -60,3 +94,9 @@ jobs:
6094

6195
- name: Build
6296
run: bun run build
97+
98+
- name: Lighthouse CI
99+
uses: treosh/lighthouse-ci-action@v12
100+
with:
101+
configPath: .lighthouserc.json
102+
uploadArtifacts: true

.lighthouserc.json

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"ci": {
3+
"collect": {
4+
"startServerCommand": "bun run preview",
5+
"startServerReadyPattern": "Host:",
6+
"url": [
7+
"http://localhost:4321/",
8+
"http://localhost:4321/blog",
9+
"http://localhost:4321/tags",
10+
"http://localhost:4321/authors"
11+
],
12+
"settings": {
13+
"onlyCategories": ["accessibility"]
14+
}
15+
},
16+
"assert": {
17+
"assertions": {
18+
"categories:accessibility": ["error", { "minScore": 0.85 }],
19+
"color-contrast": "warn"
20+
}
21+
},
22+
"upload": {
23+
"target": "temporary-public-storage"
24+
}
25+
}
26+
}

.markdownlint.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"default": false,
3+
"MD001": true,
4+
"MD042": true,
5+
"MD045": true
6+
}

.markdownlintignore

Lines changed: 274 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,274 @@
1+
# Migrated Blogger posts with pre-existing a11y violations
2+
# (MD001: heading increment, MD045: image alt text)
3+
# Fix these incrementally, then remove from this file.
4+
5+
content/posts/2007-psf-accomplishments/index.md
6+
content/posts/2011-frank-willison-memorial-award/index.md
7+
content/posts/2015-psf-news-blog-post-3-psf-brochure/index.md
8+
content/posts/2017-year-in-review/index.md
9+
content/posts/2018-in-review/index.md
10+
content/posts/2018-python-software-foundation-board/index.md
11+
content/posts/2019-board-of-directors-election-voting/index.md
12+
content/posts/2019-psf-fundraiser-thank-you-debrief/index.md
13+
content/posts/2021-end-of-year-fundraiser/index.md
14+
content/posts/2025-psf-board-election-schedule-change/index.md
15+
content/posts/6-ways-salesforce-gets-things-done-with/index.md
16+
content/posts/a-formal-specification-for-cpython/index.md
17+
content/posts/a-million-children/index.md
18+
content/posts/abigail-dogbe-awarded-psf-community/index.md
19+
content/posts/affirm-your-psf-membership-voting-status-2/index.md
20+
content/posts/all-strings-become-f-strings-python/index.md
21+
content/posts/amber-brown-batteries-included-but/index.md
22+
content/posts/announcing-2012-distinctive-service/index.md
23+
content/posts/announcing-2024-psf-board-election/index.md
24+
content/posts/announcing-code-of-conduct-for-use-by/index.md
25+
content/posts/announcing-hidden-figures-of-python-pypodcats/index.md
26+
content/posts/announcing-our-new-infrastructure/index.md
27+
content/posts/announcing-our-new-pypi-support/index.md
28+
content/posts/announcing-our-new-security-developer/index.md
29+
content/posts/announcing-psf-board-candidates-for-2024/index.md
30+
content/posts/announcing-psf-project-funding-working/index.md
31+
content/posts/answer-surveys-improve-pip-ux/index.md
32+
content/posts/au-revoir-pycon-pune/index.md
33+
content/posts/bbc-launches-microbit/index.md
34+
content/posts/bbc-microbit-successfully-launched/index.md
35+
content/posts/bbcs-microbit-project-open-sourced-today/index.md
36+
content/posts/blog-post/index.md
37+
content/posts/board-of-directors-for-2011-2012/index.md
38+
content/posts/boston-python-workshop-psf-grant/index.md
39+
content/posts/bug-weekend-nov-20-21/index.md
40+
content/posts/building-psf-q2-2019-fundraiser/index.md
41+
content/posts/call-for-applications-sprint-funding/index.md
42+
content/posts/capital-one-lessons-from-adopting/index.md
43+
content/posts/commencing-security-accessibility-and/index.md
44+
content/posts/congratulations-to-jessica-mckellar/index.md
45+
content/posts/connecting-the-dots/index.md
46+
content/posts/core-workflow-updates-python-language/index.md
47+
content/posts/cpython-core-dev-sprint-2025-at-arm/index.md
48+
content/posts/cpython-core-developer-sprint-2018/index.md
49+
content/posts/cpython-core-developer-sprint-2019/index.md
50+
content/posts/cpython-documentation-next-5-years/index.md
51+
content/posts/cpython-on-mobile-platforms/index.md
52+
content/posts/cubaconf-day-1/index.md
53+
content/posts/deb-nicholson-new-executive-director/index.md
54+
content/posts/debora-azevedo-awarded-psf-community/index.md
55+
content/posts/debora-azevedo-finding-sense-of/index.md
56+
content/posts/discovering-python-community-in/index.md
57+
content/posts/django-girls-seoul-great-success/index.md
58+
content/posts/django-girls-warsaw-carrot-coding/index.md
59+
content/posts/dr-russell-keith-magee-python-warrior/index.md
60+
content/posts/dsa-thomas-wouters/index.md
61+
content/posts/dsa-van-lindberg/index.md
62+
content/posts/elaine-wong-awarded-psf-community/index.md
63+
content/posts/election-reform-update/index.md
64+
content/posts/ernest-w-durbin-iii-joins-psf-team/index.md
65+
content/posts/europython-2010-grant/index.md
66+
content/posts/europython-2011-call-for-presentations/index.md
67+
content/posts/europython-early-bird-registration/index.md
68+
content/posts/evangelizing-python-in-africa-chukwudi/index.md
69+
content/posts/faq-for-proposed-changes-to-psf-bylaws/index.md
70+
content/posts/first-annual-pycon-china-hit-in/index.md
71+
content/posts/first-ever-pycaribbean-coming-this/index.md
72+
content/posts/for-shes-jolly-good-psf-fellow/index.md
73+
content/posts/frank-willison-memorial-award-recipient/index.md
74+
content/posts/funding-for-pycon-pl10/index.md
75+
content/posts/funding-python-miro-community/index.md
76+
content/posts/georgi-ker-awarded-psf-community/index.md
77+
content/posts/giving-tuesday-2019/index.md
78+
content/posts/google-summer-of-code-applications-are/index.md
79+
content/posts/google-summer-of-code-call-for-projects/index.md
80+
content/posts/grants-awarded-for-python-in-education/index.md
81+
content/posts/greetings-readers-i-apologize-for/index.md
82+
content/posts/gsoc-comes-to-end/index.md
83+
content/posts/gsoc-student-applications-accepted/index.md
84+
content/posts/gsoc-student-applications-open/index.md
85+
content/posts/happy-anniversary-to-python-and-python/index.md
86+
content/posts/help-psf-raise-60000-usd-by-december/index.md
87+
content/posts/highly-contagious-python-spreads/index.md
88+
content/posts/hpy-future-proof-way-of-extending/index.md
89+
content/posts/humble-book-bundle-python-2017/index.md
90+
content/posts/humble-bundle-by-no-starch-supports/index.md
91+
content/posts/humphrey-butau-awarded-psf-community/index.md
92+
content/posts/improving-python-and-expanding-access/index.md
93+
content/posts/infrastructure-committee/index.md
94+
content/posts/its-time-for-our-annual-year-end-psf/index.md
95+
content/posts/john-pinner/index.md
96+
content/posts/join-python-developers-survey-2023/index.md
97+
content/posts/join-python-developers-survey-2024/index.md
98+
content/posts/july-2011-members-election-results/index.md
99+
content/posts/katia-lira-awarded-psf-community/index.md
100+
content/posts/kenneth-gonsalves-posthumously-awarded/index.md
101+
content/posts/leadership-for-pycon-us-2011/index.md
102+
content/posts/lightning-talks-part-1/index.md
103+
content/posts/lightning-talks-part-2/index.md
104+
content/posts/loren-crary-has-joined-psf-as-its/index.md
105+
content/posts/manuel-kaufmann-and-python-in-argentina/index.md
106+
content/posts/mariatta-wijaya-lets-use-github-issues/index.md
107+
content/posts/mark-hammond-receives-distinguished/index.md
108+
content/posts/montreal-python-packaging-sprint/index.md
109+
content/posts/more-pycon-2010-conference-grants/index.md
110+
content/posts/moss-czi-support-pip/index.md
111+
content/posts/my-dinner-with-katie/index.md
112+
content/posts/new-board-election-important-please-read/index.md
113+
content/posts/new-member-election/index.md
114+
content/posts/nicholas-tollervey-and-python-in/index.md
115+
content/posts/noah-alorwu-awarded-psf-community/index.md
116+
content/posts/november-2018-board-meeting-summary/index.md
117+
content/posts/now-accepting-applications-for-google/index.md
118+
content/posts/online-degree-reviews-joins-psf-as/index.md
119+
content/posts/open-infrastructure-is-not-free-pypi/index.md
120+
content/posts/opening-bbc-microbit/index.md
121+
content/posts/pablo-galindo-salgado-nights-watch-is/index.md
122+
content/posts/paul-ganssle-time-zones-in-standard/index.md
123+
content/posts/personal-opinion-i-think-its-always/index.md
124+
content/posts/petr-viktorin-extension-modules-and/index.md
125+
content/posts/power-of-we-ana-balica/index.md
126+
content/posts/property-based-testing-for-python/index.md
127+
content/posts/protecting-python-trademarks/index.md
128+
content/posts/psf-board-election-dates-for-2024/index.md
129+
content/posts/psf-board-nominations-opening-july-29th/index.md
130+
content/posts/psf-board-of-directors-for-2010-2011/index.md
131+
content/posts/psf-board-update-on-improvements-to-psf/index.md
132+
content/posts/psf-dsa-ewa-jodlowska/index.md
133+
content/posts/psf-elects-new-members/index.md
134+
content/posts/psf-funds-readthedocsorg/index.md
135+
content/posts/psf-grant-funds-porting-work-for-email/index.md
136+
content/posts/psf-granted-pytexas-2011-us750/index.md
137+
content/posts/psf-grants-over-37000-to-python/index.md
138+
content/posts/psf-grants-program-2022-2023/index.md
139+
content/posts/psf-grants-program-2024-transparency/index.md
140+
content/posts/psf-grants-program-updates-part1/index.md
141+
content/posts/psf-grants-program-updates-part2/index.md
142+
content/posts/psf-grants-pycon-ireland-us1500/index.md
143+
content/posts/psf-members-meeting-to-be-held-at-pycon/index.md
144+
content/posts/psf-needs-help-creating-logos/index.md
145+
content/posts/psf-officers-for-2010/index.md
146+
content/posts/psf-provides-grant-to-port-webob/index.md
147+
content/posts/psf-python-brochure-get-your-free-copy/index.md
148+
content/posts/psf-python-brochure-now-available-get/index.md
149+
content/posts/psf-python-brochure-sold-out-help-us/index.md
150+
content/posts/psf-python-job-board-relaunched/index.md
151+
content/posts/psf-python-marketing-brochure-last-call/index.md
152+
content/posts/psf-supports-more-django-girls/index.md
153+
content/posts/psf-to-sponsor-plone-bucharest-2015/index.md
154+
content/posts/psfnumfocus-joint-working-group-on/index.md
155+
content/posts/pycaribbean-2018/index.md
156+
content/posts/pycon-2010-conference-grants/index.md
157+
content/posts/pycon-2012-proposals-due-12-oct/index.md
158+
content/posts/pycon-2018-2019-in-havana-cuba/index.md
159+
content/posts/pycon-apac-bringing-us-together/index.md
160+
content/posts/pycon-australia/index.md
161+
content/posts/pycon-belarus/index.md
162+
content/posts/pycon-cameroon/index.md
163+
content/posts/pycon-de-2010-funding/index.md
164+
content/posts/pycon-india-2010-grant/index.md
165+
content/posts/pycon-japan-2015-success/index.md
166+
content/posts/pycon-jp-association-awarded-psf/index.md
167+
content/posts/pycon-singapore/index.md
168+
content/posts/pyconza-2018-beautiful-community-in/index.md
169+
content/posts/pyladies-announcing-paid-summer/index.md
170+
content/posts/pyladies-gets-psf-grant/index.md
171+
content/posts/pyohio-young-coders-to-receive-psf/index.md
172+
content/posts/pypi-now-supports-two-factor-login-via/index.md
173+
content/posts/pypi-security-and-accessibility-q1-2019/index.md
174+
content/posts/pypi-user-feedback-summary/index.md
175+
content/posts/python-2-sunset/index.md
176+
content/posts/python-applications-for-gsoc-2017/index.md
177+
content/posts/python-brasil-people-technology/index.md
178+
content/posts/python-community-service-award-q3-mario/index.md
179+
content/posts/python-core-developer-mentorship/index.md
180+
content/posts/python-core-mentorship-program/index.md
181+
content/posts/python-events-calendars-please-submit-2/index.md
182+
content/posts/python-events-calendars-please-submit/index.md
183+
content/posts/python-in-education-request-for-ideas/index.md
184+
content/posts/python-is-for-everyone-inside-psfs-d/index.md
185+
content/posts/python-is-for-everyone-join-in-psf-year/index.md
186+
content/posts/python-job-board-anything-but-boring/index.md
187+
content/posts/python-job-board-call-for-volunteers/index.md
188+
content/posts/python-jobs-board-maintainer-changing/index.md
189+
content/posts/python-language-summit-2024-c-api/index.md
190+
content/posts/python-language-summit-2024-free-threading-ecosystems/index.md
191+
content/posts/python-language-summit-2024-limiting-yield-in-async-generators/index.md
192+
content/posts/python-language-summit-2024-pyrepl-new-default-repl-for-python/index.md
193+
content/posts/python-language-summit-2024-pyrepl-new-pdb/index.md
194+
content/posts/python-language-summit-2024-python-on-mobile/index.md
195+
content/posts/python-language-summit-2025-uncontentious-talk-about-contention/index.md
196+
content/posts/python-language-summit-europython-2010/index.md
197+
content/posts/python-language-summit-lightning-talks-part-2/index.md
198+
content/posts/python-language-summit-lightning-talks/index.md
199+
content/posts/python-namibia/index.md
200+
content/posts/python-package-maintainers-help-test/index.md
201+
content/posts/python-packaging-strategy-discussion/index.md
202+
content/posts/python-software-foundation-end-of-year/index.md
203+
content/posts/python-software-foundation-fellow-10/index.md
204+
content/posts/python-software-foundation-fellow-14/index.md
205+
content/posts/python-software-foundation-fellow-5/index.md
206+
content/posts/python-software-foundation-fellow-7/index.md
207+
content/posts/python-software-foundation-fellow-9/index.md
208+
content/posts/python-x-southwest-scipy-in-austin/index.md
209+
content/posts/pythonday-mexico-recap-of-inaugural/index.md
210+
content/posts/pythonistas-and-python-at-pycon-jamaica/index.md
211+
content/posts/pythonorg-is-getting-makeover/index.md
212+
content/posts/rami-chowdhury-awarded-psf-community/index.md
213+
content/posts/raspberry-pi-2-even-more-delicious/index.md
214+
content/posts/raspbery-pis-in-space-astropi/index.md
215+
content/posts/read-docs-growing-with-little-help-from/index.md
216+
content/posts/rebuilding-psf-fundraiser-2020-your/index.md
217+
content/posts/replacing-cpythons-parser-python/index.md
218+
content/posts/run-for-board-of-directors/index.md
219+
content/posts/russell-keith-magee-python-on-other/index.md
220+
content/posts/scipy-2011-call-for-papers/index.md
221+
content/posts/scott-shawcroft-history-of-circuitpython/index.md
222+
content/posts/service-awards-given-by-psf-what-are/index.md
223+
content/posts/simon-cross-awarded-community-service/index.md
224+
content/posts/south-african-brothers-and-sisters-for/index.md
225+
content/posts/summer-pygames-registration-open/index.md
226+
content/posts/support-psf-during-2018-fundraising/index.md
227+
content/posts/support-python-q4-2023/index.md
228+
content/posts/tereza-iofciu-awarded-psf-community/index.md
229+
content/posts/the-2019-python-language-summit/index.md
230+
content/posts/the-2020-python-language-summit/index.md
231+
content/posts/the-2021-python-language-summit-3/index.md
232+
content/posts/the-2021-python-language-summit-4/index.md
233+
content/posts/the-2021-python-language-summit-fuzzing/index.md
234+
content/posts/the-2021-python-language-summit-hpy/index.md
235+
content/posts/the-2021-python-language-summit/index.md
236+
content/posts/the-2022-python-language-summit-3/index.md
237+
content/posts/the-2022-python-language-summit-5/index.md
238+
content/posts/the-2022-python-language-summit-dealing/index.md
239+
content/posts/the-2022-python-language-summit-f/index.md
240+
content/posts/the-2022-python-language-summit-per/index.md
241+
content/posts/the-2022-python-language-summit-python-2/index.md
242+
content/posts/the-2024-psf-board-election-is-open/index.md
243+
content/posts/the-case-for-second-developer-in/index.md
244+
content/posts/the-election-process-and-new-psf/index.md
245+
content/posts/the-esteemed-international-scientific/index.md
246+
content/posts/the-ethical-maintainer-community/index.md
247+
content/posts/the-happy-medium-distinguished-service/index.md
248+
content/posts/the-north-star-of-pycascades-core/index.md
249+
content/posts/the-path-forward-for-typing-python/index.md
250+
content/posts/the-psf-has-hired-it-manager/index.md
251+
content/posts/the-psf-has-paused-our-grants-program/index.md
252+
content/posts/the-psf-jobs-volunteer-team-community/index.md
253+
content/posts/the-psfs-2023-annual-impact-report-is/index.md
254+
content/posts/the-pylady-behind-pyladies-lynn-root/index.md
255+
content/posts/the-python-language-summit-2023-burnout/index.md
256+
content/posts/the-python-language-summit-2023-three/index.md
257+
content/posts/the-python-software-foundation-is-2/index.md
258+
content/posts/the-steady-leader-of-python-community/index.md
259+
content/posts/thinking-about-running-for-psf-board/index.md
260+
content/posts/to-egoless-pythonistas-that-makes-space/index.md
261+
content/posts/to-sublicense-or-not-to-sublicense-that/index.md
262+
content/posts/uniblue-systems-ltd-joins-psf-as/index.md
263+
content/posts/unmasking-phantom-dependencies-with/index.md
264+
content/posts/update-on-python-in-education-proposal/index.md
265+
content/posts/vicky-twomey-lee-awarded-psf-community/index.md
266+
content/posts/virtual-python-core-developer-sprint/index.md
267+
content/posts/warehouse-all-new-pypi-is-now-in-beta/index.md
268+
content/posts/weapons-of-math-destruction-by-cathy/index.md
269+
content/posts/welcoming-microsoft-as-visionary-sponsor/index.md
270+
content/posts/where-is-psf-2025-edition/index.md
271+
content/posts/why-become-pycon-sponsor/index.md
272+
content/posts/why-sponsor-pycon-2020/index.md
273+
content/posts/world-domination-one-student-at-time/index.md
274+
content/posts/zimbio-joins-psf-as-sponsor-member/index.md

.pre-commit-config.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,12 @@ repos:
1616
hooks:
1717
- id: typos
1818

19+
- repo: https://github.com/igorshubovych/markdownlint-cli
20+
rev: v0.44.0
21+
hooks:
22+
- id: markdownlint
23+
files: content/posts/.*\.md$
24+
1925
- repo: local
2026
hooks:
2127
- id: lint

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
## Python Insider Blog
1+
## PSF Blog
22

3-
Blog for Python core team, mostly for blogging about releases.
3+
The official blog of the Python Software Foundation.
44

55
## About
66

@@ -44,7 +44,7 @@ with the nice UI or you can write markdown in your editor.
4444

4545
Both should open a pull request to GitHub for review and CI checks.
4646

47-
> [!NOTE]
47+
> [!NOTE]
4848
> You have access to a few custom components that can be used like
4949
> `{% GhUser name="hugovk" /%}`, but PEPs, CPython docs, and GitHub links
5050
> will automatically be picked up if you use standard markdown via the

0 commit comments

Comments
 (0)