<div align="center">
  <h1>Unitsafe</h1>
  <p>A friendly way to handle engineering units in Python.</p>

  [![Open in Dev Containers](https://img.shields.io/static/v1?label=Dev%20Containers&message=Open&color=blue&logo=visualstudiocode)](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/jamesbayley/unitsafe)
  [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.0-4baaaa.svg)](https://github.com/jamesbayley/unitsafe/blob/main/.github/CODE_OF_CONDUCT.md)
  
  [![CI](https://github.com/jamesbayley/unitsafe/actions/workflows/ci.yml/badge.svg)](https://github.com/jamesbayley/unitsafe/actions/workflows/ci.yml)
  [![License: AGPL-3.0](https://img.shields.io/badge/License-AGPL--3.0-00add8)](https://choosealicense.com/licenses/agpl-3.0/)
  
  [![Python](https://img.shields.io/badge/Python-3.10_|_3.11_|_3.12-3776ab)](https://www.python.org)
</div>

## Table of Contents

- [Project Goals](#project-goals)
- [Documentation](#documentation)
- [Open Source](#open-source)
- [Contributing](#contributing)
- [Errata](#errata)

## Project Goals

1. Offer an intuitive experience for engineering unit conversion to reduce software errors. 
2. Enhance the domain model and clarity of software by explicitly encoding design intent.
3. Provide richer intellisense for numeric quantities in code editors.

## Documentation

Please visit the [Software Design Document](/docs/SDD.md) to learn more.

## Open Source

Unitsafe is proudly open-source under [MIT](https://choosealicense.com/licenses/mit/).

## Contributing

<p align="justify">
  For those interested in helping to build <a href="https://github.com/jamesbayley/unitsafe" target="_blank">Unitsafe</a>, please ⭐️ and 'watch' this repository so that you can track its progress in real-time.
</p>

<p align="justify">
  I am always on the lookout for new contributors to help: 
</p>

- Propose design improvements,
- Develop and maintain the project, 
- Enhance the testing and performance suite.

## Errata

<p align="justify">
  Unitsafe aspires to achieve the highest standards of professional rigour. Engineering software is often safety critical. I strive to ensure stability, robustness and correctness throughout the source code, test suite and companion documentation. Nevertheless, I am human and mistakes <em>are</em> possible. 
</p>

<p align="justify">
  I recommend that all users carefully review the code, tests and documentation. Please submit error reports and suggestions for improvement via <a href="https://github.com/jamesbayley/unitsafe/issues" target="_blank">GitHub Issues</a>. For anyone who would like to attempt a fix or improvement, I would encourage you to review the <a href="#contributing">Contributing</a> guidance and submit a Pull Request.
</p>
