# Documentation

This document describes how to generate documentation of the library from the sources.
If you're looking for the documentation please [follow this link](#).

## Prerequsites

1. Doxygen
2. Python 3.9+
3. Pipenv

## Installation

The first time setup is required before generating the documentation. Follow these steps:
1. Open terminal in the `docsrc` directory
2. Run `pipenv install`

### Apple Silicon M1

On Apple M1 processors you may get this error when trying to build the documentation: `Could not parse the contents of index.xml as an xml.`

Most likely this issue is caused by an architecture mismatch of the `lxml` package.
To fix this issue open the Pipenv shell by running `pipenv shell` and follow these steps:
1. Run `pip uninstall lxml`
2. Run `arch -arm64 pip install lxml --no-binary lxml`

This solution forces `lxml` to be built from the sources.

## Generating the documentation

1. Open terminal in the `docsrc` directory
2. Run the Doxygen command `doxygen`
3. Open the Pipenv shell `pipenv shell`
4. Run the build `make html`

The generated documentation will be available in the `docsrc/build/html` directory.

## Github pages

In order to build the documentation that's going to be published as Github pages run `make github`.
The generated HTML build will be automatically moved to the `docs` directory.
