Metadata-Version: 2.4
Name: polis-nlp
Version: 0.2.0
Summary: Offline Polish text analysis and minimal correction library.
Project-URL: Homepage, https://github.com/PSyron/polis
Project-URL: Repository, https://github.com/PSyron/polis
Author: Paweł Cyroń
License-Expression: MIT
License-File: LICENSE
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Natural Language :: Polish
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Text Processing :: Linguistic
Classifier: Typing :: Typed
Requires-Python: >=3.12
Provides-Extra: dev
Requires-Dist: build>=1.3.0; extra == 'dev'
Requires-Dist: hatchling>=1.27.0; extra == 'dev'
Requires-Dist: mypy>=2.3.0; extra == 'dev'
Requires-Dist: packaging>=26.2; extra == 'dev'
Requires-Dist: pytest>=9.0.0; extra == 'dev'
Requires-Dist: ruff>=0.15.0; extra == 'dev'
Description-Content-Type: text/markdown

# Polis

Polis to biblioteka Pythona działająca domyślnie offline. Wykrywa i proponuje
minimalne, deterministyczne poprawki polskiego tekstu. Runtime v1 działa bez
sieci, modelu językowego, procesu Java i usług zewnętrznych.

## Granica v1

Polis poprawia tylko jednoznaczną lokalną formę tekstu. Nie zmienia znaczenia,
intencji, faktów, czasu, aspektu, stylu ani tonu. Gdy reguła nie ma
uzasadnionej minimalnej poprawki, nie zwraca sugestii. Automatyczna korekta
stosuje tylko zakwalifikowane, niekolidujące znaleziska; pozostałe są dostępne
do jawnego wyboru przez wywołującego.

Obecny runtime obejmuje reguły zgodności, pisowni oraz lokalnej składni i
interpunkcji. Pełny wykaz źródeł znajduje się w [opisie reguł](docs/rules.md).
Historia badań v2 nie jest funkcją produktu; jej odtwarzalną lokalizację podaje
[manifest archiwum](docs/project/v2-research-archive-manifest.md).
Żaden przetestowany model lokalny nie został zakwalifikowany do runtime'u v1;
LanguageTool również nie stanowi jego składnika.
Opcjonalne badania nad modelem nigdy nie blokują wydania runtime'u. Ścieżka
wydania runtime'u nie wymaga modelu, procesu Java, usługi sieciowej, korpusu
badawczego ani zużytego holdoutu.

## Szybki start

Polis wymaga Pythona 3.12 lub nowszego.

Do pracy deweloperskiej używaj przypiętego uv 0.11.2. Oficjalne instalatory to
<https://astral.sh/uv/0.11.2/install.sh> dla powłok POSIX oraz
<https://astral.sh/uv/0.11.2/install.ps1> dla PowerShell.

```console
python -m pip install polis-nlp
```

```python
from polis import Analyzer, AnalyzerConfig

result = Analyzer(AnalyzerConfig()).correct("Zeby jutro,powiem o tym.")
assert result.corrected_text == "Żeby jutro, powiem o tym."
```

`Analyzer.analyze()` zwraca `AnalysisResult` ze znaleziskami i przesunięciami
`[start, end)`. `Analyzer.correct()` zwraca oryginalny oraz poprawiony tekst,
znaleziska zastosowane i pominięte. Szczegóły zawiera
[publiczne API](docs/public-api.md) oraz [szybki start](docs/quick-start.md).

## Konfiguracja

Jedyną wspieraną sekcją pliku TOML jest `[analysis]`. Może określać
`categories` i `minimum_confidence`; kompletny przykład znajduje się w
[`examples/polis.toml`](examples/polis.toml). Konfiguracja jest odczytywana z
lokalnego, jawnie wskazanego pliku i nie szuka ustawień niejawnych.
Dokładnie historyczne tabele `[backend]`, `[language_tool]`,
`[contextual_inflection]` i `[vendored_language_tool]` są odrzucane przez
`ConfigurationError`. Inne nieznane tabele i klucze parser obecnie ignoruje;
nie są one wspieranym interfejsem i nie należy na tym zachowaniu polegać.

## Jakość i prywatność

Tekst nie opuszcza procesu. Polis nie zapisuje go w błędach bez jawnego
działania aplikacji wywołującej. Zobacz [pracę offline](docs/offline-operation.md),
[ograniczenia](docs/limitations.md), [prywatność](docs/privacy.md) i
[audyt prywatności](docs/privacy-audit.md).

W repozytorium kontrole deweloperskie uruchamia się w zablokowanym środowisku:

```console
uv sync --locked --extra dev
uv run --locked --extra dev pytest -m "not research and not slow"
uv run --locked --extra dev ruff check .
uv run --locked --extra dev ruff format --check .
uv run --locked --extra dev mypy .
```

Zasady zgodności, dystrybucji i kandydata wydania opisują odpowiednio
[compatibility](docs/compatibility.md),
[verification](docs/distribution-verification.md) i
[prerelease candidate](docs/prerelease-candidate.md).
