AEMO Integrated System Plan Assumptions Workbook Parser
A Python package for reading data from the Inputs, Assumptions and Scenarios Report (IASR) Microsoft Excel workbook published by the Australian Energy Market Operator for use in their Integrated System Plan modelling.
Table of contents
Installation
pip install isp-workbook-parser
How the package works
- Load a workbook using
Parser(see examples below).- While we do not include workbooks with the package distribution, you can find the versions for which table configurations are written within
workbooks/<version>.
- While we do not include workbooks with the package distribution, you can find the versions for which table configurations are written within
- Table configuration files for data tables are located in
src/isp_table_configs/<version>- These specify the name, location, columns and data range of tables to be extracted from a particular workbook version. Optionally, rows to skip and not read in (e.g. where AEMO has formatted a row with a strike through to indicate that the data is no longer being used) and columns with merged rows can also be specified and handled.
- These are included with the package distributions.
Parserloads the MS Excel workbook and, by default, will check if the version of the workbook is supported by seeing if configuration files are included in the package for that version.- If they are,
Parsercan use these configuration files to parse the data tables and save them as CSVs.
Table configurations
Table configuration file attributes
name: the table namesheet_name: the sheet where the table is located- N.B. there may be spaces at the end of sheet names in the workbook
header_rows: this specifies the Excel row(s) with table column names- A single row of table column names (e.g.
6) - Or a list of row numbers for the table header sorted in ascending order (e.g.
[6, 7, 8])
- A single row of table column names (e.g.
end_row: the last row of table datacolumn_range: the Excel column range of the table in alphabetical/Excel format, e.g."B:F"skip_rows: optional, Excel row(s) in the table that should not be read in- A single row (e.g.
15) - Or a list of rows (e.g.
[15, 16])
- A single row (e.g.
columns_with_merged_rows: optional, Excel column(s) with merged rows- A single column in alphabetical format (e.g.
"B"), - Or a list of columns in alphabetical format (e.g.
["B", "D"])
- A single column in alphabetical format (e.g.
forward_fill_values: optional, specifies whether table values should be forward filled- Default
Trueto handle merged cells in tables - Should be set to
Falsewhere there are empty columns
- Default
skip_checks: optional, a list of table validation check names not to run for the table- To deal with known data issues in a published workbook (that would otherwise make a specified table fail validation).
- Valid names:
no_data_above_first_header_row,data_ends_where_expected,missed_column_on_right_hand_side,missed_column_on_left_hand_side,last_column_isnt_empty,over_run_into_another_table,over_run_into_notes
Adding table configuration files to this package
Refer to the contributing instructions for details on how to contribute table configuration (YAML) files to this repository and package.
Examples
Bulk export
Export all the data tables the package has a config file for to CSV files.
from isp_workbook_parser import Parser
workbook = Parser("<path/to/workbook>/2024-isp-inputs-and-assumptions-workbook.xlsx")
workbook.save_tables("<path/to/output directory>")
List tables with configuration files
Return a dictionary of table names, with lists of tables names stored under a key which is their sheet name in the workbook. For a given workbook version, this only returns tables the package has a configuration file for.
from isp_workbook_parser import Parser
workbook = Parser("<path/to/workbook>/2024-isp-inputs-and-assumptions-workbook.xlsx")
names = workbook.get_table_names()
names["Build limits"]
Get table as DataFrame
Get a single table as a pandas DataFrame.
from isp_workbook_parser import Parser
workbook = Parser("<path/to/workbook>/2024-isp-inputs-and-assumptions-workbook.xlsx")
table = workbook.get_table("retirement_costs")
Get table with custom configuration
Get a table by directly providing the table config.
from isp_workbook_parser import Parser, TableConfig
workbook = Parser("<path/to/workbook>/2024-isp-inputs-and-assumptions-workbook.xlsx")
table_config = TableConfig(
name="table_name",
sheet_name="sheet_name",
header_rows=5,
end_row=21,
column_range="B:J",
)
workbook.get_table_from_config(table_config)
Contributing
Interested in contributing to the source code or adding table configurations? Check out the contributing instructions, which also includes steps to install isp-workbook-parser for development.
Please note that this project is released with a Code of Conduct. By contributing to this project, you agree to abide by its terms.
License
isp-workbook-parser was created as a part of the OpenISP project. It is licensed under the terms of GNU GPL-3.0-or-later licences.
Release files for isp-workbook-parser 2.9.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| isp_workbook_parser-2.9.0.tar.gz | 88.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| isp_workbook_parser-2.9.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 264.7 kB
Release files / isp_workbook_parser-2.9.0.tar.gz
| Download URL | isp_workbook_parser-2.9.0.tar.gz |
|---|---|
| Size | 88.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c2444c85ddd4be22ac94b5a5f9dfd94757f01e8fcc8a485dcc79b7d152220cda
|
|
BLAKE2b-256 checksum How to use checksums |
285bf54963d7cb79931dfb5b6d16346cb20f966017ef8dbc6db19756fc0e0f09
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 20, 2026.
Transparency logRelease files / isp_workbook_parser-2.9.0-py3-none-any.whl
| Download URL | isp_workbook_parser-2.9.0-py3-none-any.whl |
|---|---|
| Size | 176.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
dfd931615d7854a2981e310245643a5ddc5da64e7676926012d5157f6ed3387f
|
|
BLAKE2b-256 checksum How to use checksums |
df6118c39c3bdc2583f39dcb31c0807242fb7d070a5eaa45af0369952412013a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 20, 2026.
Transparency log