Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ See also: [Shared AI agent instructions for the YINI project family](../AGENTS.m
- **Task runner:** Task (`Taskfile.yml`)
- **Framework/stack:** setuptools package, ANTLR4-generated parser, pytest, Ruff, mypy
- **Monorepo:** No
- **Status:** Alpha package for early testing and integration
- **Status:** Beta package for early testing and integration

This repository contains the official Python parser for YINI, an INI-inspired,
indentation-insensitive configuration format with explicit nested sections and
Expand Down Expand Up @@ -296,7 +296,7 @@ unless the maintainer asks for release work.
## Project-Specific Notes

- The public loading API is `load`, `loads`, and `YiniParseError`.
- The package is alpha; still avoid unnecessary public API churn.
- The package is beta; still avoid unnecessary public API churn.
- Generated parser files are included so package users do not need Java or the
ANTLR generator.
- Java is only needed by maintainers regenerating parser sources.
Expand Down
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# CHANGELOG

## 0.2.0b1 - 2026 June
- **Fixed:** Improved error reporting when a YINI file has broken syntax, including unfinished block comments such as `/* comment`.
- **Fixed:** `#!` lines outside the first line are now safely ignored as comment-like lines.
- **Fixed:** `@yini` markers are now rejected if they appear after real file content. The `@yini` marker belongs at the top of the file.
- **Fixed:** Backticked keys are now handled correctly, and invalid plain keys such as `1key` and `my.key` are rejected.
- **Added:** More tests for keys, comments, parser mode handling, and invalid YINI files.

## 0.1.0a3 - 2026 May
- **Fixed:** Normalized input handling so `load(...)` and `loads(...)` accept YINI documents without a final trailing newline.
- **Improved:** Cleaned up the published Python package contents by excluding tests and development-only project files from the source distribution and wheel.
Expand Down
12 changes: 10 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

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.
> **Status:** Beta.
> This parser is intended for early testing and integration. The public API and edge-case behavior may still change before `1.0.0`.

---
Expand Down Expand Up @@ -201,7 +201,7 @@ enabled = true
mode = "optional"
```

YINI may not be the right choice when you need mature ecosystem support, existing schema tooling, or maximum compatibility with infrastructure that already expects JSON, YAML, or TOML. The format and parser are still alpha-stage and best suited for testing, experiments, and early integration feedback.
YINI may not be the right choice when you need mature ecosystem support, existing schema tooling, or maximum compatibility with infrastructure that already expects JSON, YAML, or TOML. The format and parser are still beta-stage and best suited for testing, experiments, and early integration feedback.

---

Expand Down Expand Up @@ -298,6 +298,14 @@ task check

---

## 🧪 Testing and Stability

This parser is covered by smoke, integration, and regression tests.

It has also been run against `yini-test-suite` v0.3.0, the external [YINI conformance test suite](https://github.com/YINI-lang/yini-test-suite), with all TypeScript parser cases passing.

---

## Links

- [YINI specification](https://yini-lang.org/refs/specification?utm_source=github&utm_medium=referral&utm_campaign=yini_parser_python&utm_content=readme)
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ keywords = [
"configuration-file",
]
classifiers = [
"Development Status :: 3 - Alpha",
"Development Status :: 3 - Beta",
"Intended Audience :: Developers",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
Expand Down
Loading