Repository navigation
fmsave 0.5.4
Fixed
tactics()reads presets and alternate tactics.tactics()andset_pieces()support more continued careers. Validation checks complete team lists, including empty lists, withtactic_records_count_matching; unrelated tactics cannot fill gaps.stadiums()excludes a spurious ground. Validation dropsstadiums.template_rows.staff_lists()keeps valid members beside empty references.- Player and staff readers recover missed people, contracts and season-stat joins. Club data no longer appears as staff contracts.
- Retained contracts without substantive terms no longer count as current paid contracts when registration is absent and no independent current end date exists. Raw chains remain available.
competition_rules()recovers missed rounds, including in continued careers. Legacymatch_countstays raw and is no longer a verified fixture count.fixtures()recovers missing scores, rejects ambiguous or conflicting joins, keeps distinct fixtures with proven ownership, separates final scores from penalties, and leaves unplayed matches unscored.fixtures()recovers omitted calendar rows, including unplayed and trailing fixtures, corrects played statuses, and excludes proven cached copies. Calendar checks still apply; neutral-venue flags use recovered fixtures.player_match_stats()recovers stored histories with missing team references, excludes unrelated data, and detects incomplete or unresolved histories. Empty output passes validation only when every player explicitly has no stored history. Malformed histories no longer cause repeated scans.suspensions()recovers entries with attached match records when the full list can be read.sponsorships()respects each club's primary list, including empty lists, and retains historical contracts. Other sponsor-shaped data cannot replace an empty or invalid list.
Install or update: pip install --upgrade fmsave