Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 6 additions & 11 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: CI_LandBOSSE
name: CI Tests

# We run CI on push commits and pull requests on all branches
on: [push, pull_request]
Expand All @@ -9,12 +9,12 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12"]
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- name: Set up Miniconda Python ${{ matrix.python-version }}
uses: conda-incubator/setup-miniconda@v3
uses: conda-incubator/setup-miniconda@v4
with:
auto-update-conda: true
python-version: ${{ matrix.python-version }}
Expand All @@ -23,14 +23,9 @@ jobs:
- name: Install Dependencies
run: |
python -m pip install --upgrade pip
python -m pip install pytest pandas numpy scipy xlsxwriter openpyxl openmdao
pip install -e .[develop]

- name: Pip Install LandBOSSE
run: |
pip install -e . -v

# Run tests
- name: Pip Run pytest
- name: Run Tests
run: |
pytest landbosse/tests

2 changes: 1 addition & 1 deletion .github/workflows/gh_pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
jupyter-book build docs

- name: Upload artifact
uses: actions/upload-pages-artifact@v4
uses: actions/upload-pages-artifact@v5
with:
path: "docs/_build/html"

Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/python-publish-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,12 @@ jobs:
id-token: write

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6

- name: Set up Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: '3.11'
python-version: '3.13'

- name: Build package
run: |
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/python-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,12 @@ jobs:
id-token: write

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6

- name: Set up Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: '3.11'
python-version: '3.13'

- name: Build package
run: |
Expand Down
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
# LandBOSSE Changelog

## 2.6.3 (May 7, 2026)

+ Corrects an error in multiple names defined for `LandBOSSERunner`s data connection to project
Excel file, which is now called "data_tables", consistent with the implementation made in
the `WAVES` integration.
+ Removes the reliance on `component` data being provided outside the Excel project data to reduce
duplicated data definitions.
+ Corrects the `LandBOSSERunner.keys_rename` to ensure all required variables are included.
+ Makes the `weather` input to `LandBOSSERunner` optional, so that the Excel "weather_window" sheet
will still be used if provided. If `weather` is provided as an input, it will override the the
Excel-defined "weather_window" sheet.
+ `LandBOSSERunner.convert_excel_to_dict()` added for converting a project from an Excel-based
project list to a compatible dictionary.

## 2.6.2 (February 26, 2026)

+ Docstrings are reformatted to display nicely on a Jupyter Book documentation site.
Expand Down
48 changes: 27 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
[![PyPI version](https://badge.fury.io/py/NREL-landbosse.svg)](https://badge.fury.io/py/NREL-landbosse)
[![Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
[![image](https://img.shields.io/pypi/pyversions/NREL-landbosse.svg)](https://pypi.python.org/pypi/NREL-landbosse)
[![Jupyter Book](https://jupyterbook.org/badge.svg)](https://nlrwindsystems.github.io/LandBOSSE)
[![Jupyter Book Badge](https://raw.githubusercontent.com/jupyter-book/jupyter-book/next/docs/media/images/badge.svg)](nlrwindsystems.github.io/LandBOSSE)

## Welcome to LandBOSSE!

Expand All @@ -14,13 +14,23 @@ The methods used to develop this model (specifically, LandBOSSE Version 2.1.0) a
Eberle, Annika, Owen Roberts, Alicia Key, Parangat Bhaskar, and Katherine Dykes.
2019. NREL’s Balance-of-System Cost Model for Land-Based Wind. Golden, CO:
National Renewable Energy Laboratory. NREL/TP-6A20-72201.
https://www.nrel.gov/docs/fy19osti/72201.pdf.
https://www.nlr.gov/docs/fy19osti/72201.pdf.

## Installation
## Part of the WETO Stack

LandBOSSE is primarily developed with the support of the U.S. Department of Energy and is part of the [WETO Software Stack](https://natlabrockies.github.io/WETOStack). For more information and other integrated modeling software, see:
- [Portfolio Overview](https://natlabrockies.github.io/WETOStack/portfolio_analysis/overview.html)
- [Entry Guide](https://natlabrockies.github.io/WETOStack/_static/entry_guide/index.html)
- [Techno-Economic Modeling Workshop](https://natlabrockies.github.io/WETOStack/workshops/user_workshops_2024.html#tea-and-cost-modeling)
- [Systems Engineering Workshop](https://natlabrockies.github.io/WETOStack/workshops/user_workshops_2024.html#systems-engineering)

## User Guide

### Installation

For any installation, users should use a virtual environment. We recommend Miniconda or Anaconda,
but any supporting PyPI or source installations are possible. Here, we'll work with conda for
compatibility with other NREL tools.
compatibility with other NLR tools.

In the below, you can replace the name "landbosse" with any name you choose, and the Python version
can be any that you prefer as long as it's supported by LandBOSSE.
Expand All @@ -29,13 +39,13 @@ can be any that you prefer as long as it's supported by LandBOSSE.
conda create -n landbosse python=3.13 -y
```

### PyPI
#### PyPI

```bash
pip install NREL-landbosse
```

### Source
#### Source

1. Navigate to your preferred installation location
2. Clone the repo (or fork and clone your fork, if preferred).
Expand All @@ -53,22 +63,19 @@ pip install NREL-landbosse

Optional: `pip install -e .` for editable installations if you plan to modify the code itself.

## User Guides

### First time running teh model
### First time running the model

At its most basic, the following setup is required, though the provided input data in `project_inpute_template`
At its most basic, the following setup is required, though the provided input data in `project_input_template`
can be used to test out the model and view results before diving into configuring custom scenarios.

1. Create an "input" and "output" folder for LandBOSSE to access. If you are using a source
1. Create an input and output folder for LandBOSSE to access. If you are using a source
installation, then ensure the folders are not located inside the local copy of the repository.
2. Create a `project_list.xlsx` like `LandBOSSE/project_list.xlsx` and a subfolder called
`project_data` inside of `inputs`.
3. Each project in `project_list.xlsx` should have a corresponding Excel file in `project_data`
similar to the examples in `LandBOSSE/project_input_template/project_data`.


### Running the model
### Running the model

Once the initial steps (above) are followed, we can run the model:

Expand All @@ -77,18 +84,17 @@ Once the initial steps (above) are followed, we can run the model:
3. Run the model: `python main.py -i input-folder-path -o output-folder-path` (be sure to replace
"input-folder-path" and "output-folder-path" with your respective input and output folders).

All together
All together, this is:

```bash
conda activate landbosse
cd /path/to/LandBOSSE
python main.py -i /path/to/inputs -o /path/to/outputs
conda deactivate
```
```bash
conda activate landbosse
cd /path/to/LandBOSSE
python main.py -i /path/to/inputs -o /path/to/outputs
conda deactivate
```

4. View your results in the output folder.


### Integrating LandBOSSE into your code

While LandBOSSE was originally designed as a CLI tool powered by Excel workbooks, an API also exists
Expand Down
29 changes: 10 additions & 19 deletions docs/_config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,16 @@ repository:
html:
use_issues_button: true
use_repository_button: true
home_page_in_navbar: true

parse:
myst_url_schemes: [mailto, http, https]
myst_enable_extensions:
- dollarmath
- amsmath
- deflist
- linkify
- colon_fence

sphinx:
extra_extensions:
Expand All @@ -46,25 +56,6 @@ sphinx:
show_toc_level: 2
repository_url: "https://github.com/NLRWindSystems/LandBOSSE"
repository_branch: main
# icon_links: [
# {
# name: GitHub,
# url: "https://github.com/NREL/WAVES",
# icon: fa-brands fa-github,
# },
# {
# name: PyPI version,
# url: "https://pypi.org/project/WAVES/",
# icon: "https://img.shields.io/pypi/v/WAVES?link=https%3A%2F%2Fpypi.org%2Fproject%2FWAVES%2F",
# type: url,
# },
# {
# name: Binder,
# url: "https://mybinder.org/v2/gh/NREL/WAVES/main?filepath=examples",
# icon: "https://mybinder.org/badge_logo.svg",
# type: url,
# },
# ]
language: 'python'
autosummary_generate: true
autodoc_default_options:
Expand Down
6 changes: 3 additions & 3 deletions docs/_toc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@
format: jb-book
root: intro
chapters:
- file: api
- file: examples
- file: contributing
- file: example
- file: contributing
- file: api
43 changes: 41 additions & 2 deletions docs/contributing.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,42 @@
# Contributor's Guide
# Developer's Guide

Coming soon.
## Installation

1. Navigate to your preferred installation location
2. Fork LandBOSSE
3. Clone your fork

```bash
git clone https://github.com/<your-user-name>/LandBOSSE.git
```

4. Enter the directory and locally install an editable version with the testing and documentation
building dependencies.

```bash
cd LandBOSSE
pip install -e .[test, docs]
```

## Testing the Code

Run LandBOSSE's testing suite using the following command. Please note the tests are not
particularly robust at this time, so passing tests after modifying the code should be viewed with
caution.

```bash
pytest landbosse
```

## Building the documentation

LandBOSSE uses Jupyter Book (v1) for its documentation site, which can be recreated locally with
the following command from the top-level directory.

```bash
jupyter book build docs/
```

Once complete, there will be a callout to "paste this line directly into your browser bar" with the
next line in the form of `file:///path/to/LandBOSSE/docs/_build/html/index.html`, which should be
pasted into the browser bar like a URL. You should now be able to peruse the documentation.
Loading