Skip to main content

Библиотека для проверки орфографии с использованием API Яндекс Спеллер

Project description

🐝 PySpeller

PyPI version Python versions License GitHub stars Downloads

Простая и легковесная библиотека-обёртка для API Яндекс.Спеллера. Предоставляет синхронный и асинхронный клиенты, строгую типизацию через Pydantic, и удобные функции-помощники для быстрой проверки текста.

✨ Возможности

  • ✅ Проверка одного текста или списка текстов (метод checkTexts)
  • ⚡ Синхронный и асинхронный режимы (на базе httpx)
  • 🎛️ Поддержка всех опций Яндекс.Спеллера (игнорирование URL, цифр, повторов и т.д.)
  • 🧠 Автоматическое управление HTTP-сессиями — создаются и закрываются при каждом вызове, не требуется использовать контекстный менеджер
  • 📦 Типизированные модели ответов на основе Pydantic v2
  • 🚨 Понятные исключения для ошибок API и сетевых проблем
  • 🪶 Минимум зависимостей: только httpx и pydantic

📦 Установка

pip install pyspeller

или с помощью uv:

uv add pyspeller

Для работы требуется Python 3.9 или новее.

🚀 Быстрый старт

Синхронная проверка

from pyspeller import check_text

result = check_text("Превед, медвед!")
if result.errors:
    print(result.errors[0].suggestions)  # ['Привет']

Асинхронная проверка

import asyncio
from pyspeller import async_check_text

async def main():
    res = await async_check_text("синхрафазатрон")
    print(res.errors[0].suggestions)  # ['синхрофазотрон']

asyncio.run(main())

Проверка списка текстов

from pyspeller import check_texts

results = check_texts(["очепятка", "дубне"])
for text_result in results.results:
    for error in text_result.errors:
        print(f"Слово '{error.word}' → {error.suggestions}")

⚙️ Опции проверки

Все опции Яндекс.Спеллера доступны через перечисление SpellerOptions. Их можно комбинировать с помощью побитового ИЛИ (|).

from pyspeller import check_text, SpellerOptions

result = check_text(
    "мой сайт http://example.com и номер R2D2",
    options=SpellerOptions.IGNORE_URLS | SpellerOptions.IGNORE_DIGITS
)

# Или импортировать опции напрямую

from pyspeller import check_text, IGNORE_URLS, IGNORE_DIGITS

result = check_text(
    "мой сайт http://example.com и номер R2D2",
    options=IGNORE_URLS | IGNORE_DIGITS
)

Доступные опции

Константа Число Описание
IGNORE_DIGITS 2 Пропускать слова с цифрами
IGNORE_URLS 4 Пропускать интернет-адреса и e‑mail
FIND_REPEAT_WORDS 8 Находить повторяющиеся подряд слова
IGNORE_CAPITALIZATION 512 Игнорировать неверное использование заглавных букв

При необходимости можно передать произвольное целое число.

📖 API

Клиенты

YandexSpeller(lang="ru,en", options=0, format="plain")

Синхронный клиент.

Методы:

  • check_text(text: str) -> CheckTextResponse
  • check_texts(texts: List[str]) -> CheckTextsResponse

AsyncYandexSpeller(lang="ru,en", options=0, format="plain")

Асинхронный клиент. Методы аналогичны синхронному, но возвращают корутины.

Удобные функции

# Синхронные
check_text(text, lang="ru,en", options=0, format="plain") -> CheckTextResponse
check_texts(texts, ...) -> CheckTextsResponse

# Асинхронные
async_check_text(text, ...) -> CheckTextResponse
async_check_texts(texts, ...) -> CheckTextsResponse

Все функции автоматически создают и закрывают сессию, поэтому их можно вызывать без дополнительного управления.

Модели данных

SpellResult — одна найденная ошибка

Поле Тип Описание
code int Код ошибки (1 – нет в словаре, 3 – регистр)
pos int Позиция слова в тексте (символы)
row int Номер строки
col int Номер символа в строке
length int Длина ошибочного слова
word str Само слово
suggestions List[str] Варианты исправления

CheckTextResponse — результат проверки одного текста

  • errors: List[SpellResult]

CheckTextsResponse — результат проверки нескольких текстов

  • results: List[CheckTextResponse]

Исключения

Все исключения наследуются от SpellerError.

  • SpellerAPIError(status_code: int, message: str) – ошибка API (HTTP 4xx/5xx).
  • SpellerNetworkError(original_exception: Exception) – сетевая ошибка (таймаут, DNS и т.п.).

🛠️ Разработка

git clone https://github.com/austnv/pyspeller.git
cd pyspeller
uv sync --group dev
uv run pytest tests/ -v

📄 Лицензия

Проект распространяется под лицензией MIT. Подробнее см. в файле LICENSE.


Сделано с ❤️ для проверки орфографии через Яндекс.Спеллер.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyspeller-2.0.0.tar.gz (27.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyspeller-2.0.0-py3-none-any.whl (10.9 kB view details)

Uploaded Python 3

File details

Details for the file pyspeller-2.0.0.tar.gz.

File metadata

  • Download URL: pyspeller-2.0.0.tar.gz
  • Upload date:
  • Size: 27.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for pyspeller-2.0.0.tar.gz
Algorithm Hash digest
SHA256 aa26e21e35872c627ed73b35aed4dffa45f15aa7d74aa199b134a3b22b5039e3
MD5 fc7d7628218bbb9f02bddda3ec097dd1
BLAKE2b-256 049a409c6d1e738b3c3bcaba0216934a83cb575ba455402442cb9809bfb70f4b

See more details on using hashes here.

File details

Details for the file pyspeller-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: pyspeller-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 10.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for pyspeller-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3906877caf288e224f5265535e54588e160894ea6eee20bd3db50d18ce156dc8
MD5 15286e5ddff2fea9dc7b85fc021c1f70
BLAKE2b-256 4b55ac594cd86612b1dbfbba4684455ce8dd0376e78c202515e0a713bf61d9ad

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page