FM27: support fixtures, league tables and competition rules
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 48/100
Research direction
Start by reading the implementations of fixtures(), league_tables() and competition_rules(), then trace the shared span pass and the layout handling they use. Run fmsave validate against FM27 data and compare results with the issue’s reported game screens. Done means all three reads work, table checks catch lost blocks, and stadiums() still works if calendar parsing fails.
Written by the indexing model from the issue text.
Description
No save files or real data
- I have not attached or linked a save file, screenshot, or any real player data
What is missing
On FM27, fmsave 0.8.0 refuses fixtures(), league_tables() and competition_rules(). They report error in fmsave validate. These can be read, and the results agree with the game where I could compare them.
How the results compare with the game
The comparisons below used a local build, because 0.8.0 refuses this on FM27.
| Table | Read on the 9 August save | Compared with the game |
|---|---|---|
fixtures() |
18,884 records | All 3 results on a fixture schedule screen match, and the first competitive result matches. The dates of 2 further friendlies on the training screen match. |
league_tables() |
229 tables, 1,694 rows | 4 of 4 league positions shown on club screens match, across 3 competitions. |
competition_rules() |
241 records | Not compared. |
Every table has an unbroken run of positions. Every double round-robin stage in the calendar has a table.
Suggested approach
- Fixtures: register FM27 layouts for the calendar, stage results and match summaries.
- Tables: FM27 stores a table in more than one form. One form has no match rows, so
matchesstays empty for those tables. A lost block should fail a check, not silently drop a table. - Rules: read them from the span pass. Enabling all three together makes sense, because they share that pass.
stadiums() needs the calendar for its home grounds, so it should keep working if the calendar fails.
What remains uncertain
- I checked one career, from the start of the first season to early August. I will send the saves and matching screens by email.
- 6 rows, all in one 18-club competition, have
won + drawn + lostbelowplayed, and their points suggest a fourth kind of result. I have not found it on a screen. - 13 rows have points that differ from 3 for a win and 1 for a draw. I have not looked at why.
competition_nameis empty on all fixtures in this read, whilecompetition_idis set on all of them.- I have not seen a table after the season changes, so a next-season block beside an unfinished block is untested.
- Some bytes of a rules round stay unidentified.
Versions
- fmsave 0.8.0 (
mainat 418c837), Python 3.13.13, macOS 27.2 - FM27 build
27.0.0+2486695
- Dominant language
- Python
- Stars
- 28
- Forks
- 8
- Avg merge
- 42m
- Merged PRs (30d)
- 33
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from rhiever/fmsave
-
good first issue help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
Maintainers usually reply within 1 day
-
good first issue help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
training_man: 27.0.1+2494687 writes a non-zero block trailer, training/mentoring readers fail closedOpen
Difficulty 4/5 1-2 days Newbie friendliness 49/100
rhiever/fmsave#82 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 35/100
rhiever/fmsave#77 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 43/100
rhiever/fmsave#75 · 2 comments ·
Maintainers usually reply within 1 day
Similar issues
-
needs-triage
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
gke-labs/kube-agents#5671 ·
Maintainers usually reply within 1 day
-
docs(auth): Method B step 4 should tell users to tick "Use this client for an AI-powered agent"Opendocumentation next-release v0.9.6
Difficulty 1/5 Under an hour Newbie friendliness 88/100
khuisman/mcp-gee-sweet#1446 ·
Maintainers usually reply within 1 day
-
model:sonnet runtime:claude security size:S
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
FootprintAI/Containarium#3671 ·
Maintainers usually reply within 1 day
-
HolidayBase: reassigning `language` does not re-initialize translations or re-populate holidaysPossibly taken @shikhabhadoria claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
vacanza/holidays#4116 · 1 comment ·
Maintainers usually reply within 1 day
-
bug CLI exec
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Maintainers usually reply within 1 day