Metadata-Version: 2.4
Name: dsbxml
Version: 1.1.0
Summary: Python package for DesignBuilder XML files with read / edit / write functionality.
Author-email: Bartlomiej Tokarzewski <bartlomiej.tokarzewski@gmail.com>
Project-URL: Homepage, https://github.com/DesignBuilderSoftware/db-schema
Project-URL: Bug Tracker, https://github.com/DesignBuilderSoftware/db-schema/issues
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pydantic
Requires-Dist: pydantic-xml
Requires-Dist: lxml
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: ruff<0.13,>=0.12.11; extra == "dev"
Requires-Dist: pylint>=3.0.3; extra == "dev"
Requires-Dist: pre-commit>=3.6.1; extra == "dev"
Requires-Dist: xmlschema; extra == "dev"
Requires-Dist: lxml; extra == "dev"
Requires-Dist: mkdocs>=1.5.0; extra == "dev"
Requires-Dist: mkdocs-material>=9.0.0; extra == "dev"
Requires-Dist: mkdocstrings[python]>=0.24.0; extra == "dev"
Dynamic: license-file

# db-schema

![Python](https://img.shields.io/badge/python-3.10%2B-blue)
![License](https://img.shields.io/badge/license-MIT-green)
![Tests](https://img.shields.io/badge/tests-241%20passing-brightgreen)

Python package for reading, editing, and writing DesignBuilder XML files using Pydantic and pydantic-xml.

## Install

```bash
pip install dsbxml
```

## Quick Start

```python
from dsbxml import load_model, save_model

dsb = load_model("building.xml")
dsb.name = "Updated Building"
save_model(dsb, "building_updated.xml")
```

## Features

- Type-safe XML handling via Pydantic v2
- XXE attack protection built-in
- Full DesignBuilder XML schema support including HVAC
- Load/save XML and JSON formats

## Data Model

```
dsbXML
└── Site
    ├── Attributes / Tables / AssemblyLibrary
    └── Buildings
        └── Building
            ├── BuildingBlocks / Zones / Surfaces
            └── HVACNetwork
                └── HVACLoops / HVACZoneGroups
```

## Development

```bash
git clone https://github.com/DesignBuilderSoftware/db-schema
cd db-schema
pip install -e ".[dev]"
pytest
```

## License

MIT — [Bartłomiej Tokarzewski](https://github.com/tokarzewski)
