| Python 3.10-3.12 | [Download](https://www.python.org/downloads/) | The library is Python-based. |
| Poetry | [Instructions](https://python-poetry.org/docs/#installation) | Poetry is used for package management and virtualenv management in Python codebases |
# Getting Started
## Install Dependencies
```sh
# Install Python dependencies.
poetry install
```
## Execute the Indexing Engine
```sh
poetry run poe index <...args>
```
## Executing Queries
```sh
poetry run poe query <...args>
```
# Azurite
Some unit and smoke tests use Azurite to emulate Azure resources. This can be started by running:
```sh
./scripts/start-azurite.sh
```
or by simply running `azurite` in the terminal if already installed globally. See the [Azurite documentation](https://learn.microsoft.com/en-us/azure/storage/common/storage-use-azurite) for more information about how to install and use Azurite.
# Lifecycle Scripts
Our Python package utilizes Poetry to manage dependencies and [poethepoet](https://pypi.org/project/poethepoet/) to manage build scripts.
Available scripts are:
-`poetry run poe index` - Run the Indexing CLI
-`poetry run poe query` - Run the Query CLI
-`poetry build` - This invokes `poetry build`, which will build a wheel file and other distributable artifacts.
-`poetry run poe test` - This will execute all tests.
-`poetry run poe test_unit` - This will execute unit tests.
-`poetry run poe test_integration` - This will execute integration tests.
-`poetry run poe test_smoke` - This will execute smoke tests.