Skip to content

Release v1.2.2

Choose a tag to compare

@github-actions github-actions released this 15 Oct 14:15
· 17 commits to main since this release

Changelog

Все значимые изменения в проекте XMLRiver Pro будут документированы в этом файле.

Формат основан на Keep a Changelog,
и этот проект придерживается Semantic Versioning.

[Unreleased]

Added

  • Планируемые функции для следующих версий

[1.2.2] - 2025-01-15

Fixed

  • 🚨 КРИТИЧЕСКИЙ БАГ ИСПРАВЛЕН - Query в ответах больше не пустая строка
  • 🔧 Исправлена передача query - во всех клиентах query корректно передается из параметров
  • 📝 Исправлены методы парсинга - _parse_response и _parse_results получают query из параметров
  • 🎯 Исправлены все типы поиска - web, news, images, maps, ads
  • 🧹 Улучшено качество кода - исправлены Pylint предупреждения (9.91/10)

Technical Details

  • AsyncBaseClient: передача query в _parse_response(text, search_type, query)
  • BaseClient: передача query в _parse_results(response, query)
  • Google клиенты: все методы поиска исправлены
  • Yandex клиенты: все методы поиска исправлены
  • Специализированные методы: news, images, maps исправлены
  • Pylint: исправлены no-else-return, no-member, arguments-renamed

Impact

  • До исправления: response.query всегда была пустой строкой
  • После исправления: response.query содержит исходный поисковый запрос
  • Обратная совместимость: 100% - API не изменился

[1.2.1] - 2025-01-15

Fixed

  • 🚨 КРИТИЧЕСКОЕ ИСПРАВЛЕНИЕ - Асинхронные клиенты теперь используют правильные эндпойнты
  • 🔧 Исправлены эндпойнты - AsyncGoogleClient и AsyncYandexClient используют корректные URL
  • 📝 Исправлен python_version - в pyproject.toml изменен с "1.2.0" на "3.10"
  • 🎨 Улучшено форматирование - применен Black к 3 файлам для соответствия стандартам
  • 🧹 Синхронизация версий - все файлы проекта теперь используют версию 1.2.1

Technical Details

  • AsyncGoogleClient: теперь использует "http://xmlriver.com/search/xml"
  • AsyncYandexClient: теперь использует "https://xmlriver.com/search_yandex/xml"
  • AsyncBaseClient: убран неправильный BASE_URL = "https://xmlriver.com/api"
  • Форматирование: применен Black к async_base_client.py, images.py, base_client.py
  • MyPy: исправлена критическая ошибка с python_version

[1.2.0] - 2025-01-15

Added

  • 🚀 Улучшенный Retry механизм - настраиваемые повторы с экспоненциальным backoff
  • ⚙️ Гибкая конфигурация - настройка таймаутов, retry параметров и контроля повторов
  • 📊 Умная стратегия задержек - экспоненциальная задержка: 1с → 2с → 4с → 8с
  • 🔧 Контроль retry - возможность отключить повторы для продвинутых пользователей
  • 📚 Подробная документация - детальные примеры конфигурации и лучшие практики

Enhanced

  • 🎯 Поддержка всех клиентов - GoogleClient, AsyncGoogleClient, YandexClient, AsyncYandexClient
  • 🧪 Расширенное тестирование - 102 теста включая валидацию retry механизма
  • 📈 Качество кода - Pylint 9.68/10, улучшенная обработка ошибок
  • 🔄 Обратная совместимость - существующий код работает без изменений

Technical Details

  • Retry параметры: timeout, max_retries, retry_delay, enable_retry
  • Значения по умолчанию: 60с таймаут, 3 повтора, 1.0с базовая задержка, retry включен
  • Экспоненциальный backoff: delay = retry_delay * (2 ** attempt)
  • Обработка ошибок: Повторы при RequestException и NetworkError
  • Async поддержка: Полная поддержка retry в async клиентах с asyncio.sleep()

Examples

# Стандартное использование (без изменений)
client = GoogleClient(user_id=123, api_key="key")

# Кастомная конфигурация retry
client = GoogleClient(
    user_id=123, 
    api_key="key",
    timeout=120,        # 2 минуты
    max_retries=5,      # 5 попыток
    retry_delay=2.0     # 2с базовая задержка
)

# Отключить retry для продвинутых пользователей
client = GoogleClient(user_id=123, api_key="key", enable_retry=False)

[1.1.1] - 2025-01-15

Fixed

  • 🔧 Исправления линтинга - улучшено качество кода
  • 🧹 Удалены неиспользуемые импорты - очищен код от W0611 ошибок
  • 📝 Исправлен порядок импортов - C0411, C0413 ошибки устранены
  • 🎯 Добавлены hasattr() проверки - исправлены Union типы в formatters.py
  • 📦 Установлены types-requests - улучшена типизация MyPy
  • 🔨 Исправлены конструкторы - OneBoxDocument и KnowledgeGraph
  • ✂️ Разбиты длинные строки - C0301 ошибки устранены

Technical Details

  • Pylint: 9.63/10 (было 8.70/10, +0.94)
  • MyPy: 197 ошибок (было 232, -35 ошибок)
  • Black: ✅ Все файлы отформатированы
  • Тесты: 92/92 проходят успешно
  • Покрытие: 62% стабильно

[1.1.0] - 2025-01-15

Added

  • ⚡ Асинхронная поддержка с aiohttp
  • 🔄 AsyncGoogleClient - асинхронный клиент для Google
  • 🔄 AsyncYandexClient - асинхронный клиент для Yandex
  • 📚 Примеры асинхронного использования в docs/examples_async.py
  • 🧪 Тесты для асинхронных клиентов (test_async_google.py, test_async_yandex.py)
  • 📖 Обновленная документация с примерами асинхронности

Technical Details

  • Новая зависимость: aiohttp>=3.8.0
  • Поддержка: async/await, asyncio.gather(), контекстные менеджеры
  • Производительность: Параллельные запросы до 10 одновременных
  • Совместимость: Полная обратная совместимость с синхронными клиентами

[1.0.2] - 2025-01-15

Fixed

  • Исправлена ошибка в pyproject.toml (python_version)
  • Улучшена стабильность работы с API
  • Исправлены мелкие баги в валидации параметров

[1.0.1] - 2025-01-15

Fixed

  • Исправлена ошибка с кодировкой UTF-8 в ответах API
  • Улучшена обработка ошибок сети
  • Исправлена проблема с таймаутами

[1.0.0] - 2025-01-15

Added

  • 🚀 Первый релиз XMLRiver Pro
  • ✅ Полная поддержка Google Search API через xmlriver.com
  • ✅ Полная поддержка Yandex Search API через xmlriver.com
  • ✅ Органический поиск с полной типизацией
  • ✅ Поиск по новостям с фильтрами времени
  • ✅ Поиск по изображениям (размер, цвет, тип)
  • ✅ Поиск по картам с координатами
  • ✅ Рекламные блоки (верхние и нижние)
  • ✅ Специальные блоки (OneBox, Knowledge Graph, колдунщики)
  • ✅ Полная типизация для Python 3.10+
  • ✅ Модульная архитектура
  • ✅ 66 тестов с покрытием 57%
  • ✅ Специализированные исключения
  • ✅ Валидация параметров
  • ✅ Обработка всех официальных кодов ошибок XMLRiver
  • ✅ Поддержка официальных ограничений API:
    • Максимум 10 потоков для каждой системы
    • Дневные лимиты: Google 200k, Yandex 150k запросов
    • Рекомендуемый таймаут 60 секунд
  • ✅ Примеры многопоточного использования
  • ✅ Адаптивное управление скоростью запросов
  • ✅ Контроль дневных лимитов
  • ✅ Полная документация с примерами

Technical Details

  • Python: 3.10+
  • Dependencies: requests, xmltodict
  • Testing: pytest, pytest-cov
  • Linting: black, pylint, mypy
  • Coverage: 57%
  • Pylint Score: 9.38/10
  • MyPy: 0 errors

API Coverage

  • Google API: 100% покрытие всех типов поиска
  • Yandex API: 100% покрытие всех типов поиска
  • Error Handling: Все 25 официальных кодов ошибок
  • Rate Limiting: Поддержка официальных ограничений

[0.14.0] - 2025-01-15

Added

  • 🎯 Fork оригинальной библиотеки xmlriver
  • 📚 Скачивание официальной документации xmlriver.com
  • 🔧 Анализ покрытия API и выявление недостающих функций

Changed

  • 🔄 Полная переработка архитектуры
  • 🔄 Переписан весь код с нуля
  • 🔄 Добавлена полная типизация

Removed

  • ❌ Удален устаревший код оригинальной библиотеки
  • ❌ Удалены неиспользуемые зависимости

Как читать этот Changelog

Типы изменений:

  • Added - новые функции
  • Changed - изменения в существующей функциональности
  • Deprecated - функции, которые будут удалены в будущих версиях
  • Removed - удаленные функции
  • Fixed - исправления ошибок
  • Security - исправления уязвимостей

Версионирование:

  • MAJOR (1.0.0 → 2.0.0) - кардинальные изменения, нарушающие обратную совместимость
  • MINOR (1.0.0 → 1.1.0) - новые функции с сохранением обратной совместимости
  • PATCH (1.0.0 → 1.0.1) - исправления ошибок

Как обновляться:

# Обновление до последней версии
pip install --upgrade xmlriver-pro

# Обновление до конкретной версии
pip install xmlriver-pro==1.0.0

# Проверка текущей версии
python -c "import xmlriver_pro; print(xmlriver_pro.__version__)"

Уведомления об обновлениях: