# Lightning Utilities
__This repository covers the following use-cases:__
1. _Reusable GitHub workflows_
2. _Shared GitHub actions_
3. _General Python utilities in `lightning_utilities.core`_
4. _CLI `python -m lightning_utilities.cli --help`_
## 1. Reusable workflows
__Usage:__
```yaml
name: Check schema
on: [push]
jobs:
check-schema:
uses: Lightning-AI/utilities/.github/workflows/check-schema.yml@v0.5.0
with:
azure-dir: "" # skip Azure check
check-code:
uses: Lightning-AI/utilities/.github/workflows/check-code.yml@main
with:
actions-ref: main # normally you shall use the same version as the workflow
```
See usage of other workflows in [.github/workflows/ci-use-checks.yaml](https://github.com/Lightning-AI/utilities/tree/main/.github/workflows/ci-use-checks.yaml).
## 2. Reusable composite actions
See available composite actions [.github/actions/](https://github.com/Lightning-AI/utilities/tree/main/.github/actions).
__Usage:__
```yaml
name: Do something with cache
on: [push]
jobs:
pytest:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: 3.9
- uses: Lightning-AI/utilities/.github/actions/cache
with:
python-version: 3.9
requires: oldest # or latest
```
## 3. General Python utilities `lightning_utilities.core`
Installation
From source:
```bash
pip install https://github.com/Lightning-AI/utilities/archive/refs/heads/main.zip
```
From pypi:
```bash
pip install lightning_utilities
```
__Usage:__
Example for optional imports:
```python
from lightning_utilities.core.imports import module_available
if module_available("some_package.something"):
from some_package import something
```
## 4. CLI `lightning_utilities.cli`
The package provides common CLI commands.
Installation
From pypi:
```bash
pip install lightning_utilities[cli]
```
__Usage:__
```bash
python -m lightning_utilities.cli [group] [command]
```
Example for setting min versions
```console
$ cat requirements/test.txt
coverage>=5.0
codecov>=2.1
pytest>=6.0
pytest-cov
pytest-timeout
$ python -m lightning_utilities.cli requirements set-oldest
$ cat requirements/test.txt
coverage==5.0
codecov==2.1
pytest==6.0
pytest-cov
pytest-timeout
```