Metadata-Version: 2.4
Name: vcti-path-format-attributes
Version: 1.1.0
Summary: Domain vocabulary enums for file format classification — path types, structures, content, and analysis categories
Author: Visual Collaboration Technologies Inc.
Requires-Python: <3.15,>=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: vcti-enum>=1.0.3
Provides-Extra: test
Requires-Dist: pytest; extra == "test"
Requires-Dist: pytest-cov; extra == "test"
Provides-Extra: lint
Requires-Dist: ruff; extra == "lint"
Dynamic: license-file

# Path Format Attributes

Domain vocabulary enums for file format classification — path types, structures, content, and analysis categories.

Part of the path-format ecosystem:
**attributes** (this package) · **vcti-python-path-format** (framework) · **vcti-python-path-format-descriptors** (format plugins)

This package is the shared taxonomy — it defines the classification
dimensions that format descriptors and identification rules use. It lives
in its own repository so that vocabulary changes are deliberate and
reviewed across all formats. See [docs/ecosystem.md](docs/ecosystem.md)
for how the three repos work together, and
[docs/extending.md](docs/extending.md) for how to add new members and
enums.

## Installation

```bash
pip install vcti-path-format-attributes>=1.1.0
```

### In `pyproject.toml` dependencies

```toml
dependencies = [
    "vcti-path-format-attributes>=1.1.0",
]
```

---

## Quick Start

```python
from vcti.pathformat.attribute import (
    AnalysisType,
    Attribute,
    FileContent,
    FileStructure,
    PathType,
)

# Use as metadata keys and values for format descriptors
attrs = {
    Attribute.PATH_TYPE: PathType.FILE,
    Attribute.STRUCTURE: FileStructure.HDF5,
    Attribute.CONTENT: FileContent.SOLVER_OUTPUTS,
    Attribute.ANALYSIS_TYPE: AnalysisType.STRUCTURAL,
}

# Enum values are lowercase strings — usable with vcti-lookup rules
#   Rule(Attribute.STRUCTURE.value, "==", FileStructure.HDF5.value)

# Lookup by value (useful for deserialization)
structure = FileStructure("hdf5")
assert structure is FileStructure.HDF5
```

---

## Enums

### Attribute

Attribute names for format descriptor metadata:

| Member | Value |
|--------|-------|
| `PATH_TYPE` | `"path_type"` |
| `SOLVER` | `"solver"` |
| `GENERATOR` | `"generator"` |
| `STRUCTURE` | `"structure"` |
| `CONTENT` | `"content"` |
| `ANALYSIS_TYPE` | `"analysis_type"` |
| `SOLUTION_TYPE` | `"solution_type"` |

### PathType

| Member | Value |
|--------|-------|
| `FILE` | `"file"` |
| `DIR` | `"dir"` |

### FileStructure

| Member | Value |
|--------|-------|
| `ASCII` | `"ascii"` |
| `BINARY` | `"binary"` |
| `HDF5` | `"hdf5"` |
| `JSON` | `"json"` |
| `CSV` | `"csv"` |

### FileContent

| Member | Value |
|--------|-------|
| `MESH` | `"mesh"` |
| `SOLVER_INPUTS` | `"solver_inputs"` |
| `SOLVER_OUTPUTS` | `"solver_outputs"` |
| `FILTERED_DATA` | `"filtered_data"` |
| `SURFACE_3D_MODEL` | `"surface_3d_model"` |
| `SURFACE_3D_VIEWS` | `"surface_3d_views"` |

### AnalysisType

| Member | Value |
|--------|-------|
| `STRUCTURAL` | `"structural"` |
| `THERMAL` | `"thermal"` |
| `FLUID` | `"fluid"` |
| `CRASH` | `"crash"` |

---

## Extending

To add a new member or a new enum, see [docs/extending.md](docs/extending.md).
All members use `auto_enum_value()` — values are always lowercase strings
derived from the member name.

---

## Dependencies

- [vcti-enum](https://pypi.org/project/vcti-enum/) (>=1.0.3) — value-generated string enums
