Metadata-Version: 2.4
Name: brds
Version: 0.13.0
Summary: Awesome brds created by brahle
Home-page: https://github.com/brahle/brds/
Author: brahle
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: aiohttp
Requires-Dist: colorama
Requires-Dist: fastapi>=0.94.1
Requires-Dist: html5lib
Requires-Dist: hvac
Requires-Dist: jinja2
Requires-Dist: lxml
Requires-Dist: minio
Requires-Dist: numpy
Requires-Dist: pandas
Requires-Dist: pyarrow
Requires-Dist: python-dotenv
Requires-Dist: PyYAML
Requires-Dist: python-json-logger
Requires-Dist: requests
Requires-Dist: uvicorn
Provides-Extra: test
Requires-Dist: pytest; extra == "test"
Requires-Dist: flake8; extra == "test"
Requires-Dist: black; extra == "test"
Requires-Dist: isort; extra == "test"
Requires-Dist: mypy; extra == "test"
Requires-Dist: gitchangelog; extra == "test"
Requires-Dist: mkdocs; extra == "test"
Requires-Dist: pytest-asyncio; extra == "test"
Requires-Dist: httpx>=0.27; extra == "test"
Requires-Dist: pandas-stubs; extra == "test"
Requires-Dist: types-PyYAML; extra == "test"
Requires-Dist: types-requests; extra == "test"
Dynamic: author
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license-file
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# brds

[![CI](https://github.com/brahle/brds/actions/workflows/main.yml/badge.svg)](https://github.com/brahle/brds/actions/workflows/main.yml)

Bruno Rahle's Data Science library.

## Install it from PyPI

```bash
pip install brds
```

## Usage

```python
from brds import FileReader

reader = FileReader(folder="/data/example", version="", allowed_root="/data")
data = reader.load("data.parquet")
```

`allowed_root` checks resolved paths before listing version directories or opening
a payload. Omitting it preserves ordinary `FileReader` and `fload` behavior.
The HTTP API pins readers to the normalized `FILE_READER_PATH`, including its
automatic latest-version selection. Paths or symlinks outside that root return
403; NUL request paths return 400, and unresolvable paths (including symlink
loops) return 404. The dataset index omits outside, dangling and unreadable
entries before reporting their metadata; valid in-root aliases keep their logical
dataset names and timestamps. Relative and symlinked configured roots are
supported by file reading and dataset listings. Python 3.9 or newer is required.

## Development

Read the [CONTRIBUTING.md](CONTRIBUTING.md) file.
