Metadata-Version: 2.4
Name: yini-parser
Version: 0.1.0a1
Summary: Official Python parser for YINI, an INI-inspired, indentation-insensitive configuration format with clear nested sections and explicit structure.
Author: YINI-lang project
License-Expression: Apache-2.0
Project-URL: Homepage, https://yini-lang.org?utm_campaign=yini_parser_python&utm_content=pyproject
Project-URL: Repository, https://github.com/YINI-lang/yini-parser-python
Project-URL: Specification, https://yini-lang.org/refs/specification?utm_campaign=yini_parser_python&utm_content=pyproject
Project-URL: Issues, https://github.com/YINI-lang/yini-parser-python/issues
Keywords: yini,configuration,config,parser,ini,antlr
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Text Processing :: Markup
Classifier: Typing :: Typed
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: antlr4-python3-runtime==4.13.2
Provides-Extra: dev
Requires-Dist: pytest>=8; extra == "dev"
Requires-Dist: ruff>=0.8; extra == "dev"
Requires-Dist: mypy>=1.13; extra == "dev"
Requires-Dist: build>=1.2; extra == "dev"
Requires-Dist: twine>=5; extra == "dev"
Dynamic: license-file

# yini-parser-python

The official Python parser for **YINI** (by the YINI-lang project) — a human-readable, INI-inspired, indentation-insensitive configuration format with clear nested sections, explicit structure, comments, and predictable parsing.  

> **Status:** Alpha. This parser is intended for early testing and integration. The public API and edge-case behavior may still change before `1.0.0`.

---

## Quick Start

```yini
// A small, practical YINI config.

// The App section starts here
^ App
name = "Demo App"
version = 1.2
features = ["search", "logs"]
debug = false    // on/off, yes/no would work too
pageSize = 25

    // Another section (sub-section of App)
    ^^ Server
    host = "localhost"
    port = 8080    # Can comment with # too
    useTLS = off
```

```python
from yini_parser import load

data = load("sample/basic.yini")
print(data["App"]["name"])  # Outputs: Demo App
```

Use `load(...)` to parse a file and `loads(...)` to parse a string.

See the [YINI specification and documentation](https://yini-lang.org/refs/specification?utm_source=github&utm_medium=referral&utm_campaign=yini_parser_python&utm_content=readme).

---

## Installation

From PyPI, once published:

```bash
pip install yini-parser
```

For local development:

```bash
python -m pip install -e ".[dev]"
```

or, if using the project Taskfile:

```bash
task install-dev
```

---

## Tests

The `tests/` directory contains a focused implementation-local test suite, including:
- Tests for the public API.
- Key semantic tests.
- Smoke/golden tests.
- Parser behavior tests for comments, values, sections, strict mode, conflicts, inline objects, and string concatenation.

Run the test suite with:

```bash
python -m pytest -v
```

or, if using the project Taskfile:

```bash
task test
```

---

**^YINI ≡**  
> YINI is a human-readable, INI-inspired, indentation-insensitive configuration format with clear nested sections, explicit structure, and predictable parsing.
> 
> It has a formal specification and a defined grammar.

[yini-lang.org](https://yini-lang.org/?utm_source=github&utm_medium=referral&utm_campaign=yini_parser_python&utm_content=readme_footer) · [YINI-lang on GitHub](https://github.com/YINI-lang)  
