Metadata-Version: 2.4
Name: infrahub-sdk
Version: 1.18.0
Summary: Python Client to interact with Infrahub
Project-URL: Homepage, https://opsmill.com
Project-URL: Repository, https://github.com/opsmill/infrahub-sdk-python
Project-URL: Documentation, https://docs.infrahub.app/python-sdk/introduction
Author-email: OpsMill <info@opsmill.com>
License: Apache-2.0
License-File: LICENSE.txt
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Python: <3.15,>=3.10
Requires-Dist: dulwich>=0.21.4
Requires-Dist: graphql-core<3.3,>=3.1
Requires-Dist: httpx>=0.20
Requires-Dist: netutils>=1.0.0
Requires-Dist: pydantic!=2.0.1,!=2.1.0,<3.0.0,>=2.0.0
Requires-Dist: pydantic-settings>=2.0
Requires-Dist: tomli>=1.1.0; python_version < '3.11'
Requires-Dist: ujson>=5
Requires-Dist: whenever<0.10.0,>=0.9.3
Provides-Extra: all
Requires-Dist: ariadne-codegen==0.15.3; extra == 'all'
Requires-Dist: click==8.1.*; extra == 'all'
Requires-Dist: jinja2>=3; extra == 'all'
Requires-Dist: numpy>=1.24.2; (python_version < '3.12') and extra == 'all'
Requires-Dist: numpy>=1.26.2; (python_version >= '3.12') and extra == 'all'
Requires-Dist: pyarrow>=14; extra == 'all'
Requires-Dist: pytest; extra == 'all'
Requires-Dist: pyyaml>=6; extra == 'all'
Requires-Dist: rich<14,>=12; extra == 'all'
Requires-Dist: typer>=0.12.5; extra == 'all'
Provides-Extra: ctl
Requires-Dist: ariadne-codegen==0.15.3; extra == 'ctl'
Requires-Dist: click==8.1.*; extra == 'ctl'
Requires-Dist: jinja2>=3; extra == 'ctl'
Requires-Dist: numpy>=1.24.2; (python_version < '3.12') and extra == 'ctl'
Requires-Dist: numpy>=1.26.2; (python_version >= '3.12') and extra == 'ctl'
Requires-Dist: pyarrow>=14; extra == 'ctl'
Requires-Dist: pyyaml>=6; extra == 'ctl'
Requires-Dist: rich<14,>=12; extra == 'ctl'
Requires-Dist: typer>=0.12.5; extra == 'ctl'
Description-Content-Type: text/markdown


<!-- markdownlint-disable -->
![Infrahub Logo](https://assets-global.website-files.com/657aff4a26dd8afbab24944b/657b0e0678f7fd35ce130776_Logo%20INFRAHUB.svg)
<!-- markdownlint-restore -->

# Infrahub by OpsMill

[Infrahub](https://github.com/opsmill/infrahub) by [OpsMill](https://opsmill.com) is taking a new approach to Infrastructure Management by providing a new generation of datastore to organize and control all the data that defines how an infrastructure should run.

At its heart, Infrahub is built on 3 fundamental pillars:

- **Powerful Schema**: that's easily extensible
- **Unified Version Control**: for data and files
- **Data Synchronization**: with traceability and ownership

## Infrahub SDK

The Infrahub Python SDK greatly simplifies how you can interact with Infrahub programmatically.

More information can be found in the [Infrahub Python SDK Documentation](https://docs.infrahub.app/python-sdk/introduction).

## Installation

The Infrahub SDK can be installed using the pip package installer. It is recommended to install the SDK into a virtual environment.

```bash
python3 -m venv .venv
source .venv/bin/activate
pip install infrahub-sdk
```

### Installing optional extras

Extras can be installed as part of the Python SDK and are not installed by default.

#### ctl

The ctl extra provides the `infrahubctl` command, which allows you to interact with an Infrahub instance.

```bash
pip install 'infrahub-sdk[ctl]'
```

#### tests

The tests extra provides all the components for the testing framework of Transforms, Queries and Checks.

```bash
pip install 'infrahub-sdk[tests]'
```

#### all

Installs infrahub-sdk together with all the extras.

```bash
pip install 'infrahub-sdk[all]'
```

### Development setup with UV

If you're developing the SDK and using UV for dependency management, you can install specific dependency groups:

```bash
# Install development dependencies
uv sync --all-groups --all-extras

# Install specific groups
uv sync --group tests               # Testing dependencies only
uv sync --group lint                # Linting dependencies only
uv sync --group ctl                 # CLI dependencies only
uv sync --all-groups --all-extras   # All optional dependencies
```
