Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
4fd738c
conf: data merge from PSF calendar
github-actions[bot] Jan 19, 2026
c0358c8
chore: enrich TBA conferences with CFP data
github-actions[bot] Jan 20, 2026
feb2964
USA 🠒 US
JesperDramsch Jan 20, 2026
bc2583d
Fix link
JesperDramsch Jan 20, 2026
f17cde8
chore: enrich TBA conferences with CFP data
github-actions[bot] Jan 20, 2026
3332611
ci: clarify tba workflow
JesperDramsch Jan 20, 2026
9bb977a
feat(ci): enhance enrichment flow with review, debug and cfp pulls
JesperDramsch Jan 20, 2026
539be99
chore: enrich TBA conferences with CFP data
github-actions[bot] Jan 20, 2026
2e0a3fb
fix: undo LLM shenanigans
JesperDramsch Jan 20, 2026
a6ee7ad
chore: enrich TBA conferences with CFP data
github-actions[bot] Jan 20, 2026
3396593
feat(ci): deterministic link extraction for TBA conferences
JesperDramsch Jan 20, 2026
6879b5f
chore: enrich TBA conferences with CFP data
github-actions[bot] Jan 20, 2026
dc36994
fix: revert llm shenanigans
JesperDramsch Jan 20, 2026
24aa772
fix: better prompt
JesperDramsch Jan 20, 2026
dca321a
chore: enrich TBA conferences with CFP data
github-actions[bot] Jan 20, 2026
e3b58dc
fix: llm shenanigans
JesperDramsch Jan 20, 2026
2a93881
Potential fix for code scanning alert no. 77: Incomplete URL substrin…
JesperDramsch Jan 20, 2026
f00046d
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jan 20, 2026
ccebd27
Update enrich_tba.py
JesperDramsch Jan 20, 2026
a5e2a57
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jan 20, 2026
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
64 changes: 57 additions & 7 deletions .github/workflows/enrich-tba-conferences.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ on:
workflow_dispatch:
inputs:
enrichment_level:
description: 'Enrichment level'
description: 'quick=deterministic links only (no API), full=links + dates via Claude'
type: choice
options: ['full', 'quick']
default: 'full'
Expand All @@ -15,9 +15,9 @@ on:
type: boolean
default: false

# Weekly TBA checker (quick mode)
# Daily run - quick mode, except Tuesday which does full (with Claude API)
schedule:
- cron: '0 6 * * 0' # Sunday 6 AM UTC
- cron: '0 6 * * *' # Daily 6 AM UTC

# Prevent concurrent runs to avoid merge conflicts on the accumulator branch
concurrency:
Expand All @@ -44,8 +44,17 @@ jobs:
INPUT_LEVEL: ${{ inputs.enrichment_level }}
run: |
if [ "$EVENT_NAME" = "schedule" ]; then
echo "level=quick" >> $GITHUB_OUTPUT
echo "::notice title=Scheduled Run::Using quick enrichment mode"
DAY_OF_WEEK=$(date -u +%u) # 1=Monday, 2=Tuesday, ...

if [ "$DAY_OF_WEEK" = "2" ]; then
# Tuesday = weekly full run with Claude API
echo "level=full" >> $GITHUB_OUTPUT
echo "::notice title=Tuesday Full Run::Using full enrichment mode (with Claude API)"
else
# Other days = quick deterministic run
echo "level=quick" >> $GITHUB_OUTPUT
echo "::notice title=Daily Quick Run::Using quick enrichment mode (deterministic only)"
fi
else
echo "level=${INPUT_LEVEL:-full}" >> $GITHUB_OUTPUT
echo "::notice title=Manual Run::Using ${INPUT_LEVEL:-full} enrichment mode"
Expand Down Expand Up @@ -193,19 +202,36 @@ jobs:
echo "commit_sha=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT
echo "commit_msg=$COMMIT_MSG" >> $GITHUB_OUTPUT

- name: Read review items
id: review
run: |
if [ -f ".github/enrichment_review.md" ]; then
echo "has_review=true" >> $GITHUB_OUTPUT
# Use delimiter for multiline output
echo "review_content<<EOF" >> $GITHUB_OUTPUT
cat .github/enrichment_review.md >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
else
echo "has_review=false" >> $GITHUB_OUTPUT
fi

- name: Create or update PR
if: steps.check_changes.outputs.changed == 'true' && inputs.dry_run != true
uses: actions/github-script@v8
env:
UPDATE_BRANCH: ${{ env.UPDATE_BRANCH }}
COMMIT_SHA: ${{ steps.commit.outputs.commit_sha }}
ENRICHMENT_LEVEL: ${{ steps.config.outputs.level }}
HAS_REVIEW: ${{ steps.review.outputs.has_review }}
REVIEW_CONTENT: ${{ steps.review.outputs.review_content }}
with:
script: |
const branch = process.env.UPDATE_BRANCH;
const sha = process.env.COMMIT_SHA.substring(0, 7);
const level = process.env.ENRICHMENT_LEVEL;
const date = new Date().toISOString().split('T')[0];
const hasReview = process.env.HAS_REVIEW === 'true';
const reviewContent = process.env.REVIEW_CONTENT || '';

// Check for existing PR from the update branch
const { data: prs } = await github.rest.pulls.list({
Expand All @@ -226,6 +252,24 @@ jobs:
// Add entry before the END_UPDATES marker
body = body.replace(/(<!-- END_UPDATES -->)/, `${entry}\n$1`);

// Update or add review section
if (hasReview && reviewContent) {
const reviewMarker = '<!-- REVIEW_ITEMS -->';
const reviewEndMarker = '<!-- END_REVIEW_ITEMS -->';
const reviewSection = `${reviewMarker}\n${reviewContent}\n${reviewEndMarker}`;

if (body.includes(reviewMarker)) {
// Replace existing review section
body = body.replace(
new RegExp(`${reviewMarker}[\\s\\S]*?${reviewEndMarker}`),
reviewSection
);
} else {
// Add review section before END_UPDATES
body = body.replace(/(<!-- END_UPDATES -->)/, `\n${reviewSection}\n\n$1`);
}
}

await github.rest.pulls.update({
owner: context.repo.owner,
repo: context.repo.repo,
Expand All @@ -236,14 +280,20 @@ jobs:
console.log(`Updated PR #${pr.number}`);
core.notice(`Updated PR #${pr.number} with TBA enrichment`);
} else {
// Create new PR
// Create new PR with review items if present
let prBody = `## Automated Conference Updates\n\n| Source | Commit | Date |\n|--------|--------|------|\n${entry}\n<!-- END_UPDATES -->`;

if (hasReview && reviewContent) {
prBody = `## Automated Conference Updates\n\n| Source | Commit | Date |\n|--------|--------|------|\n${entry}\n<!-- END_UPDATES -->\n\n<!-- REVIEW_ITEMS -->\n${reviewContent}\n<!-- END_REVIEW_ITEMS -->`;
}

const { data: newPr } = await github.rest.pulls.create({
owner: context.repo.owner,
repo: context.repo.repo,
title: 'Conference updates',
head: branch,
base: 'main',
body: `## Automated Conference Updates\n\n| Conference | Commit | Date |\n|------------|--------|------|\n${entry}\n<!-- END_UPDATES -->`
body: prBody
});

// Add labels
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ vendor
.claude/
CLAUDE.md

# Temporary workflow files
.github/enrichment_review.md

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
Expand Down
44 changes: 43 additions & 1 deletion _data/conferences.yml
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@
- conference: PyCon Poland
alt_name: PyCon PL
year: 2026
link: https://pl.pycon.org/2026
link: https://pl.pycon.org/2026/
cfp_link: https://pyconpl.confreg.pl/events/67-pycon-pl-2026
cfp: '2026-02-15 23:59:59'
tutorial_deadline: '2026-02-15 23:59:00'
Expand All @@ -131,6 +131,20 @@
latitude: 50.294113
longitude: 18.6657306

- conference: EuroSciPy
year: 2026
link: https://euroscipy.org/
cfp: '2026-02-08 23:59:00'
timezone: Europe/Berlin
place: Krakow, Poland
start: 2026-07-18
end: 2026-07-23
sub: SCIPY
location:
- title: EuroSciPy 2026
latitude: 50.061389
longitude: 19.938333

- conference: PyCon Lithuania
alt_name: PyCon LT
year: 2026
Expand Down Expand Up @@ -299,6 +313,15 @@
latitude: 49.27213705
longitude: -123.13439461006233

- conference: XtremePython
year: 2026
link: https://xtremepython.dev/
cfp: TBA
place: Online
start: 2026-11-17
end: 2026-11-17
sub: PY

- conference: PyCon Greece
year: 2026
link: https://pycon.gr/
Expand All @@ -316,11 +339,13 @@
- conference: PyCon Kenya
year: 2026
link: https://www.pycon.ke/
cfp_link: https://pycon-kenya-2025.sessionize.com/
cfp: TBA
timezone: Africa/Nairobi
place: Nairobi, Kenya
start: 2026-08-28
end: 2026-08-29
sponsor: https://www.pycon.ke/sponsors
sub: PY
location:
- title: PyCon Kenya 2026
Expand All @@ -332,9 +357,11 @@
year: 2026
link: https://2026.pycon.org.au/
cfp: TBA
timezone: Australia/Brisbane
place: Brisbane, Australia
start: 2026-08-26
end: 2026-08-30
sponsor: https://2026.pycon.org.au/sponsor
mastodon: https://mastodon.pycon.org.au/@pyconau
bluesky: https://bsky.app/profile/pyconau.bsky.social
sub: PY
Expand All @@ -351,6 +378,7 @@
start: 2026-07-25
end: 2026-07-26
sponsor: https://www.pyohio.org/2026/PyOhio-2026-Sponsorship-Prospectus.pdf
mastodon: https://fosstodon.org/@pyohio
sub: PY
location:
- title: PyOhio 2026
Expand All @@ -369,3 +397,17 @@
- title: Python BarCamp Karlsruhe 2026
latitude: 49.0068705
longitude: 8.4034195

- conference: FOSDEM
year: 2026
link: https://fosdem.org/2026/
cfp: TBA
place: Brussels, Belgium
start: 2026-01-31
end: 2026-01-31
sponsor: https://fosdem.org/2026/about/sponsors/
sub: PY
location:
- title: FOSDEM 2026
latitude: 50.8465573
longitude: 4.351697
Loading