Repository navigation
Release v1.2.2
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__)"Уведомления об обновлениях:
- 📧 Email: seo@controlseo.ru
- 🐛 Issues: GitHub Issues
- 💬 Discussions: GitHub Discussions
- ⭐ Watch репозиторий на GitHub для уведомлений