You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Australian localisation pack: AU calendar, payroll, GST/BAS #14
Hi, Ryan from Australia (public-practice accountant). I have been working on a fork turning openfpa into an Australian FP&A toolkit, following the "data-access recipes / industry packs" path in CONTRIBUTING. Before I go further, wanted to check the approach suits you, and whether any of this belongs upstream versus in a long-lived fork.
Built so far on ryanduguid/openfpa (branch feat/au-pack, ~1,200 lines, 36 tests, suite green):
pyfpa.au.calendar - 30 June fiscal years, FY2027 / Q1 FY2027 / 1H FY2027 labels, dd/mm/yyyy, monthly PeriodIndex helpers matching the kernel convention
Effective-dated statutory rate tables as YAML data files with source URLs: super guarantee schedule, payroll tax for all 8 jurisdictions (verified at revenue offices 2026-08-20, including the ACT and NT changes that went live 1 July 2026), GST/BAS rules
pyfpa.au.payroll - monthly cost + cash frames from effective-dated roles: SG, state payroll tax, workers comp, leave provisions, bonuses, contractors
pyfpa.au.gst - net GST position from GST-exclusive series, quarterly and monthly BAS settlement schedules, exported into cash13 WeeklyFlows
Two skills: fpa-au-payroll, fpa-au-gst-bas
Documented simplifications (grouping provisions, QLD taper, WA diminishing threshold, surcharge tiers) live in module docstrings and skill docs, not silently approximated.
Side fix worth pulling regardless: branch fix/windows-path-separators - one line, memory index emits backslash paths on Windows and fails test_memory_retrieval. CI is ubuntu-only so it never showed.
Questions:
Do you want the AU pack upstream (PR against pyfpa/au/ + skills), or should I keep it as a fork-side pack?
Any appetite for a shared "fiscal calendar" abstraction in the kernel (periods.py) so UK/US/July-year entities all ride the same code? AU currently sits in its own module and touches nothing.
For an ASX public-company worked example (like the FOXF one): happy for me to build that downstream and show it to you, or would you want to shape it?
No rush, I know this is side-of-the-desk. I will keep building on the fork meanwhile: Xero Australia data recipe next, then the ASX proof.
Update from the fork (now named FireFalcon, still a fork of this repo):
Done on the fork
Xero Australia parser + recipe (pyfpa.io.xero_au, docs/recipes/xero-au.md)
RBA/ABS driver snapshots (pyfpa.au.drivers)
Synthetic example: Harbour Light (VIC, FY2027, Xero + payroll + quarterly BAS into 13-week cash, verified Excel)
Public example: ARB Corporation (ASX: ARB) from the FY2025 Appendix 4E — reproduction, holdout, forecast, labeled THB/tariff sensitivity. Not James Hardie (USD / 31 March / AZEK).
Small PR, this repo
Windows memory-index path fix: will open against fix/windows-path-separators (one line, as_posix()). Worth pulling regardless of the AU pack.
AU pack PR
Still waiting on your call from the questions above. I am not opening a large pyfpa/au PR until that is clearer.
Windows path follow-up from this thread: opened #17 with the as_posix() change plus a Linux-visible test that stubs Path.relative_to to PureWindowsPath, so Ubuntu CI can actually see the bug. Still holding the AU pack until you say whether it belongs upstream.
Activity
ryanduguid commentedon Aug 20, 2026
Update from the fork (now named FireFalcon, still a fork of this repo):
Done on the fork
pyfpa.io.xero_au,docs/recipes/xero-au.md)pyfpa.au.drivers)Small PR, this repo
fix/windows-path-separators(one line,as_posix()). Worth pulling regardless of the AU pack.AU pack PR
pyfpa/auPR until that is clearer.chore(au): merge feature branches, export drivers, README section
chore(au): merge feature branches, export drivers, README section
ryanduguid commentedon Aug 31, 2026
Windows path follow-up from this thread: opened #17 with the
as_posix()change plus a Linux-visible test that stubsPath.relative_totoPureWindowsPath, so Ubuntu CI can actually see the bug. Still holding the AU pack until you say whether it belongs upstream.