Metadata-Version: 2.4
Name: fmu-settings
Version: 0.32.0
Summary: A library for managing FMU settings
Author-email: Equinor <fg-fmu_atlas@equinor.com>
License: GPL-3.0
Project-URL: Homepage, https://github.com/equinor/fmu-settings
Project-URL: Repository, https://github.com/equinor/fmu-settings
Project-URL: Documentation, https://equinor.github.io/fmu-settings/
Classifier: Development Status :: 3 - Alpha
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Utilities
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Natural Language :: English
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: PyYAML
Requires-Dist: annotated_types
Requires-Dist: fmu-config
Requires-Dist: fmu-datamodels
Requires-Dist: pandas
Requires-Dist: pydantic
Provides-Extra: dev
Requires-Dist: mypy; extra == "dev"
Requires-Dist: pandas-stubs; extra == "dev"
Requires-Dist: pytest; extra == "dev"
Requires-Dist: pytest-cov; extra == "dev"
Requires-Dist: pytest-mock; extra == "dev"
Requires-Dist: pytest-xdist; extra == "dev"
Requires-Dist: ruff; extra == "dev"
Requires-Dist: types-PyYAML; extra == "dev"
Provides-Extra: docs
Requires-Dist: autodoc_pydantic; extra == "docs"
Requires-Dist: furo; extra == "docs"
Requires-Dist: myst-parser; extra == "docs"
Requires-Dist: sphinx; extra == "docs"
Requires-Dist: sphinx_autodoc_typehints; extra == "docs"
Requires-Dist: sphinx_copybutton; extra == "docs"
Dynamic: license-file

# fmu-settings

[![ci](https://github.com/equinor/fmu-settings/actions/workflows/ci.yml/badge.svg)](https://github.com/equinor/fmu-settings/actions/workflows/ci.yml)
[![docs](https://github.com/equinor/fmu-settings/actions/workflows/docs.yml/badge.svg)](https://github.com/equinor/fmu-settings/actions/workflows/docs.yml)

**Documentation**: <a href="https://equinor.github.io/fmu-settings/" target="_blank">https://equinor.github.io/fmu-settings/</a>

**Source code**: <a href="https://github.com/equinor/fmu-settings/" target="_blank">https://github.com/equinor/fmu-settings/</a>

`fmu-settings` is the Python core library for reading, writing, and managing resources in `.fmu/` directories for FMU projects and user environments.

It owns the filesystem behavior around those resources: initialization, discovery, configuration models, resource managers, locking, cache handling, changelogs, restore behavior, and synchronization helpers.

## FMU Settings Architecture

FMU Settings is split across a few repositories:

```mermaid
flowchart LR
    CLI["fmu-settings-cli"]
    API["fmu-settings-api"]
    GUI["fmu-settings-gui"]
    LIB["fmu-settings"]
    MODELS["fmu-datamodels"]

    CLI --> API
    CLI --> GUI
    CLI --> LIB
    GUI --> API
    API --> LIB
    LIB --> MODELS
    API --> MODELS
```

- [`fmu-settings`](https://github.com/equinor/fmu-settings) is the core library for reading, writing, and managing `.fmu/` resources.
- [`fmu-datamodels`](https://github.com/equinor/fmu-datamodels) provides shared Pydantic domain models.
- [`fmu-settings-api`](https://github.com/equinor/fmu-settings-api) exposes `fmu-settings` through a FastAPI application layer.
- [`fmu-settings-gui`](https://github.com/equinor/fmu-settings-gui) provides the browser-based user interface.
- [`fmu-settings-cli`](https://github.com/equinor/fmu-settings-cli) provides the user-facing command line interface, including commands that bootstrap local user state and launch the API and GUI.

See [ARCHITECTURE.md](ARCHITECTURE.md) for the library architecture and a high-level ecosystem overview.

## Documentation

The published documentation is the best starting point for users:

- [Overview](https://equinor.github.io/fmu-settings/overview.html)
- [Getting started](https://equinor.github.io/fmu-settings/getting_started.html)
- [GUI user guide](https://equinor.github.io/fmu-settings/gui_user_guide.html)
- [Terminal commands](https://equinor.github.io/fmu-settings/terminal_commands.html)

Documentation sources live under `docs/src/`.

## Developing

Clone and install into a virtual environment.

```sh
git clone git@github.com:equinor/fmu-settings.git
cd fmu-settings
# Create or source virtual/Komodo env
pip install -U pip
pip install -e ".[dev]"
# Make a feature branch for your changes
git checkout -b some-feature-branch
```

Run the tests with:

```sh
pytest -n auto tests
```

Ensure your changes will pass the various linters before making a pull
request. It is expected that all code will be typed and validated with
mypy.

```sh
ruff check
ruff format --check
mypy src tests
```

See [CONTRIBUTING.md](CONTRIBUTING.md) for more.
