Skip to content

Conference updates - #454

Merged
JesperDramsch merged 26 commits into
mainfrom
auto/conference-updates
Sep 25, 2026
Merged

JesperDramsch merged 26 commits into
mainfrom
auto/conference-updates

Conversation

@github-actions

@github-actions github-actions Bot commented Sep 8, 2026 •

Copy link
Copy Markdown

Automated Conference Updates

Source Commit Date
TBA Enrichment (full) 3db3052 2026-09-08
🆕 [Conference] Wagtail Space 2025,2026 6519548 2026-09-14
TBA Enrichment (full) 30d13d3 2026-09-15
📊 python-organizers 4397154 2026-09-18
TBA Enrichment (quick) eee2dd2 2026-09-19
📊 python-organizers ff87412 2026-09-19
TBA Enrichment (quick) 71c4f85 2026-09-20
TBA Enrichment (full) ad56ac3 2026-09-22

👀 Items for Manual Review

The following items had moderate confidence and need verification:

Please verify these values before merging.

Enrichment level: full

Triggered: 2026-09-08T10:55:27Z
@github-actions github-actions Bot added automated Created by automation conference-update Conference data update labels Sep 8, 2026
github-actions Bot and others added 25 commits September 14, 2026 19:32
Enrichment level: full

Triggered: 2026-09-15T11:24:20Z
Source: canonical-csv

Triggered: 2026-09-18T14:25:58Z
Enrichment level: quick

Triggered: 2026-09-19T10:33:48Z
Source: canonical-csv

Triggered: 2026-09-19T13:51:55Z
Enrichment level: quick

Triggered: 2026-09-20T10:56:38Z
Enrichment level: full

Triggered: 2026-09-22T11:14:32Z
# Conflicts:
#	_data/archive.yml
#	_data/conferences.yml
KeyboardInterrupt is not an Exception subclass, so Ctrl+C skipped the
pipeline's error logging and exit code. It also escaped the test that
simulates it and aborted the whole pytest session halfway.
update_title_mappings ignored its path argument and always wrote the
module's own data/titles.yml. The test that passes a temporary file
therefore wrote 'ExistingConf: New Variation' into the real mappings
(committed since) and re-sorted the file with CRLF line endings.

Repo-relative paths under utils/tidy_conf/data/ still resolve relative
to the module, so the merge pipeline is unchanged. Files are written
with LF endings. The test now uses its temp file and asserts the real
titles.yml is untouched. Removes the leaked ExistingConf entry.
Python Nordeste is canonical; PyNE and 'Python Nordeste (PyNE)' map to
it, which stops imports from adding a duplicate PyNE entry.

PyDay Mexico is canonical, matching the 2017-2019 entries; the 2026
entry is renamed from 'PyDay México: CDMX', which is kept as alt_name.
'PyCon Panamá' and 'PyCon Panama' are the same conference. Add
strip_accents/fold_name (NFKD without combining marks) and use them for
comparisons only; stored names keep their spelling.

- load_title_mappings adds accent-free variants of every variation
- tidy_titles compares folded names
- is_identical_name and conference_scorer compare folded names

Also fixes the tidy_titles check that stripped 'Conference' from an
already-lowercased string and so could never match.
write_df_yaml called astype(str) on the cfp column, which turns a
missing value into the literal 'nan'. PyCon Germany 2028 ended up with
'cfp: nan' in conferences.yml.

- write_df_yaml fills missing CFPs with TBA before converting
- the schema maps NaN/'nan'/'' to TBA for cfp and to None for the
  optional deadlines; rejecting would make sort drop the conference
- test_no_nan_deadlines checks every entry in all three data files
- PyCon Germany 2028 set to cfp: TBA
Nesting constr()/conint()/condate()/confloat() inside Annotated is
ignored by pydantic v2, so none of these constraints were applied: years
before 1989, out-of-range coordinates and malformed deadlines all
validated. Use StringConstraints/Field metadata instead.

- deadlines accept a date with an optional time; sort_yaml appends
  DEFAULT_CFP_TIME to date-only values
- cfp also accepts the TBA words sort_yaml understands, case-insensitive
  ('nan' is normalised to TBA before the pattern check)
- clean_dates now adds the default time to cfp_ext as well
- PyOhio 2017 had its CFP page URL in cfp_ext; moved to cfp_link

All entries in conferences, archive and legacy validate under the
stricter schema, so sort drops nothing.
fuzzy_match has returned (df_yml, df_remote, report) since #198 and both
production importers unpack three values; six pipeline tests still
unpacked two and failed with 'too many values to unpack'.
…tion

For A→B→A, check_mastodon_migration only noticed the loop once it had
already moved back to A, then returned None because the URL had not
changed. The loop is now detected before following the hop, so the
result is B, as the test written with the feature expects.

The integration tests passed start as a string, but sort_data runs
tidy_dates before check_links, so start is a date by then; the tests
now do the same.
…dels

'"cfp_ext" in q' is always False on a pydantic model (iteration yields
(name, value) tuples), so split_data never appended DEFAULT_CFP_TIME to
extended deadlines. Check the attribute instead.

The split_data and sort_by_date_passed tests hard-coded 2026 as 'the
future' and started failing once 2026 arrived; freeze time in them.
utils/tidy_conf/data/.tmp/ is gitignored, so in a fresh checkout every
code path touching the link cache raised FileNotFoundError: 14 tests
failed on a clean clone but passed locally.
With accent-insensitive identity, 'PyCon Panamá' (YAML) and 'PyCon
Panama' (remote) took the exact-match path, which keyed the merged row
under the remote spelling. The importers drop the YAML conference column
and take the name from that index, so the conference was renamed and
the bot's data-loss guard would then fail every run.

The exact-match path now keys the remote row by the YAML name and
records the remote spelling as a titles.yml variation. The importer's
normalisation also falls back to the accent-free form so an accented
remote name finds a mapping keyed by the plain spelling.
…ration

Returning the last account before the loop (B for A→B→A) meant the next
links run, starting from B, returned A: the field flipped on every run.
A cycle has no canonical destination, so return None and keep the data
as is. The test that expected B is corrected accordingly.
Now that the schema enforces its constraints, an invalid entry was
logged, dropped and the remaining data written with exit code 0, which
the unattended sort workflows then commit. Previously a malformed CFP
crashed sort_by_cfp before anything was written. Raise instead, so the
run goes red and nothing is deleted silently.
…onal deadlines

The deadline pattern only checked the digit layout, so 2026-02-30 or a
25:00:00 time validated and crashed later in sort_by_cfp. Parse the date
and time parts as a real calendar value.

clean_dates now also handles cfp_ext, so a blank 'cfp_ext:' (loaded as
None) hit .lower() and aborted the whole sort; skip None values and let
the schema drop them.
write_conference_yaml used the platform newline, so every sort on
Windows rewrote _data/*.yml with CRLF and git showed the files as
modified without any content change.
The python-organizers import added 'PyDay Chile Valparaiso' next to
'PyDay Valparaiso' and 'FOSDEM: Python Dev Room' next to 'FOSDEM' for
2026. Map both spellings to the existing names so tidy_titles and
merge_duplicates collapse them, now and on future imports.

The re-sort also adds the default time to nine date-only cfp_ext values
in archive and legacy, as clean_dates now does for that field.
…pendencies

'pixi run test-fast || echo' swallowed every failure, and the default
pixi environment has no pytest, so the step printed 'pytest: command
not found' and passed on every run. The tests feature also lacked
freezegun, hypothesis and responses, which the suite imports.

Run the suite in the tests environment without a fallback and drop the
ruff step, which the pre-commit job already covers.
@github-actions github-actions Bot added dependencies Pull requests that update a dependency file CI/CD Tests labels Sep 25, 2026
@JesperDramsch
JesperDramsch merged commit 1fbb84a into main Sep 25, 2026
12 checks passed
@JesperDramsch
JesperDramsch deleted the auto/conference-updates branch September 25, 2026 12:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

automated Created by automation CI/CD conference-update Conference data update dependencies Pull requests that update a dependency file Tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant