Metadata-Version: 2.1
Name: ThermalNetwork
Version: 0.2.3
Summary: A thermal network solver for GHE sizing.
Author-email: Matt Mitchell <mitchute@gmail.com>, Nathan Moore <nathan.moore@nrel.gov>
Project-URL: Homepage, https://github.com/NREL/ThermalNetwork
Project-URL: Bug Tracker, https://github.com/NREL/ThermalNetwork/issues
Classifier: Development Status :: 4 - Beta
Classifier: Topic :: Scientific/Engineering
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: <3.13,>=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: click ~=8.1
Requires-Dist: ghedesigner ~=1.3
Requires-Dist: pandas ~=2.1
Requires-Dist: rich ~=13.6
Provides-Extra: dev
Requires-Dist: pytest >=6.0 ; extra == 'dev'
Requires-Dist: pytest-cov ~=4.1 ; extra == 'dev'
Requires-Dist: pre-commit ~=3.5 ; extra == 'dev'
Requires-Dist: ruff ~=0.1 ; extra == 'dev'
Requires-Dist: jupyterlab ~=4.0 ; extra == 'dev'

# ThermalNetwork

A library for sizing multiple ground heat exchangers distributed around a single-pipe thermal network.

# Installation

`pip install ThermalNetwork`

# Usage

This package has a command-line interface, intended to be used via URBANopt. To access the CLI directly, after installing call `thermalnetwork --help` for all the commands.

# Developer installation

- Clone the repository: `git clone https://github.com/NREL/ThermalNetwork.git`
- Change directories into the repository: `cd ThermalNetwork`
- We recommend using virtual environments on principle to avoid dependencies colliding between your Python projects. [venv](https://docs.python.org/3/library/venv.html) is the Python native solution that will work everywhere, though other options may be more user-friendly.
    - Some popular alternatives are:
        - [pyenv](https://github.com/pyenv/pyenv) and [the virtualenv plugin](https://github.com/pyenv/pyenv-virtualenv) work together nicely for Linux/Mac machines
        - [virtualenv](https://virtualenv.pypa.io/en/latest/)
        - [miniconda](https://docs.conda.io/projects/miniconda/en/latest/)

Once you have set up your environment:
- Update pip and setuptools: `pip install -U pip setuptools`
- Install the respository with developer dependencies: `pip install -e .[dev]`
- Activate pre-commit (only once, after making a new venv): `pre-commit install`
    - Runs automatically on your staged changes before every commit
- To check the whole repo, run `pre-commit run --all-files`
    - Settings and documentation links for pre-commit and ruff are in .pre-commit-config.yaml and pyproject.toml
    - Pre-commit will run automatically during CI, linting and formatting the entire repository.

# Testing

Once you are set up as a developer, run `pytest` from the root dir. Increase verbosity with `-v` and `-vv`.

Test coverage will be reported to stdout.

Test files are in _thermalnetwork/tests/_

Test output will be written to _thermalnetwork/tests/test_output/_

# Releasing

Increment the version in thermalnetwork/_\_init__.py. Use [semantic versioning](https://semver.org/).
When a new release from the `main` branch is made in GitHub, a [workflow](https://github.com/marketplace/actions/pypi-publish) automatically releases to PyPI.
