Metadata-Version: 2.4
Name: azul-client
Version: 11.0.93
Summary: Interact with Azul using your terminal instead of clicking in the UI a thousand times!
Project-URL: Documentation, https://australiancybersecuritycentre.github.io/azul/
Project-URL: Repository, https://github.com/AustralianCyberSecurityCentre/azul-client
Author: Azul
License-Expression: MIT
License-File: license.md
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.12
Requires-Dist: azul-bedrock>=11.0.32
Requires-Dist: cart>=1.2.3
Requires-Dist: click>=8.3.1
Requires-Dist: filelock>=3.20.3
Requires-Dist: httpx>=0.28.1
Requires-Dist: malpz>=10.0.3
Requires-Dist: pendulum>=3.2.0
Requires-Dist: pydantic-settings>=2.12.0
Requires-Dist: pydantic>2
Requires-Dist: rich>=14.3.2
Requires-Dist: tenacity>=9.1.2
Description-Content-Type: text/markdown

# Azul Client

Azul client is a near complete client for Azul's RestAPI.

Interact with Azul using your terminal instead of clicking in the UI a thousand times!

Tested on ubuntu 22.04.

## Install

`pip install azul-client`

## Setup

Azul Client requires a config file located at ~/.azul.ini

A default config will be generated on first run.

You will need to adjust the config options as appropriate.

```yaml
[default]
azul_url = http://localhost
oidc_url = http://keycloak/.well-known/openid-configuration
auth_type = callback
auth_scopes =
auth_client_id = azul-web
auth_client_secret =
azul_verify_ssl = True
auth_token = {}
auth_token_time = 0
max_timeout = 300.0
oidc_timeout = 10.0
```

### Root CA

If you have extra Root CAs, you will need to make httpx aware of them or it will complain.

Ubuntu - `export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt`

Red Hat - `export SSL_CERT_FILE=/etc/ssl/certs/ca-bundle.crt`

Alternatively you can point to a certificate directory

`export SSL_CERT_DIR=/etc/ssl/certs`

This can be added to your ~/.bashrc to prevent you from having to do it for every terminal session.

## Usage

For usage guidance refer to the [API](./docs/api.md) and [CLI](./docs/cli.md) documentation.

## Integration test suite

The integration test suite is in the tests/integration folder.

The `setUpModule` method in the file `tests/integration/__init__.py` creates all files in azul that need to be available for querying and uploading child/dataless.
It also waits for those uploaded files to be available in Azul which means during tests you can assume those files exist.

It also exports the sha256's of the files it uploaded to ensure the tests can import those sha256's for their testing.

NOTE - the first time you run the test suite particularly if you've added new files to the module it may be slow. But all subsequent runs will be much faster.

## Dependency management

Dependencies are managed in the pyproject.toml and debian.txt file.

Version pinning is achieved using the `uv.lock` file.
Because the `uv.lock` file is configured to use a private UV registry, external developers using UV will need to delete the existing `uv.lock` file and update the project configuration to point to the publicly available PyPI registry instead.

To add new dependencies it's recommended to use uv with the command `uv add <new-package>`
    or for a dev package `uv add --dev <new-dev-package>`

The tool used for linting and managing styling is `ruff` and it is configured via `pyproject.toml`

The debian.txt file manages the debian dependencies that need to be installed on development systems and docker images.

Sometimes the debian.txt file is insufficient and in this case the Dockerfile may need to be modified directly to
install complex dependencies.
