История изменений
Release 3.4.1 (2026-04-16)
Исправления:
Исправлена ошибка
TypeErrorпри передаче пути к файлу вAsyncClient.download()илиAsyncClient.upload()без установленногоaiofiles(см. issue #62)Обход проблемы, когда Яндекс.Диск игнорирует тело запроса для
Client.patch()иClient.update_public_settings()при использованииpycurlиз-за задания заголовкаTransfer-Encoding: chunkedпо умолчанию
Release 3.4.0 (2025-07-10)
Нововведения:
Добавлены методы для управления настройками публичного доступа к ресурсам:
Внимание: похоже, что эти эндпоинты не полностью соответствуют официальной документации REST API, их функциональность на практике ограничена.
Добавлен новый класс исключений
PasswordRequiredErrorДобавлено несколько новых полей
DiskInfoObject:deletion_restricion_dayshide_screenshots_in_photosliceis_legal_entity
Реализован метод
__dir__()для объектов ответов сервера
Улучшения:
repr()объектов ответов API теперь показывает только те ключи, которые фактически присутствуют (вместо отображения их значений какNone, как раньше)
Release 3.3.0 (2025-04-29)
Нововведения:
Спуфинг User-Agent для обхода ограничения скорости загрузки файлов на Диск (см. PR #57).
Client.upload()и связанные с ним методы (включаяAsyncClient) имеют новый опциональный параметрspoof_user_agent, который по умолчанию имеет значениеTrue. Этот параметр можно использовать для отключения спуфинга, если это необходимо.Добавлена поддержка pretty-printing в IPython для
YaDiskObjectи производных классов
Исправления:
Client.wait_for_operation()теперь используетtime.monotonic()вместоtime.time()
Улучшения:
Сообщения об ошибках REST API теперь чётко разделены на четыре части (сообщение, описание, код ошибки и код состояния HTTP)
Release 3.2.0 (2025-02-03)
Нововведения:
Добавлен новый метод:
Client.makedirs()иAsyncClient.makedirs()(см. issue #53)Добавлено несколько недостающих полей
DiskInfoObjectphotounlim_sizewill_be_overdrawnfree_photounlim_end_datepayment_flow
Добавлено недостающее поле
sizesдляResourceObjectи связанных с ним объектов
Исправления:
Client.rename()/AsyncClient.rename()теперь вызываетValueErrorпри попытке переименовать корневую папкуНомера автоматических повторных попыток логировались с ошибкой на единицу, теперь они логируются правильно
Release 3.1.0 (2024-07-12)
Нововведения:
Добавлены новые исключения:
GoneErrorиResourceDownloadLimitExceededErrorДобавлен новый метод:
Client.get_all_public_resources()иAsyncClient.get_all_public_resources()
Исправления:
Задание
headersи других опциональных параметров сессии какNoneбольше не вызывает ошибокИсправлено неправильное поведение
Client.rename()иAsyncClient.rename()при указании пустого имени файлаИсправлено несколько опечаток в асинхронных реализациях convenience-методов (
listdir()и аналогичных)Исправлен неправильный тип данных у атрибута
itemsклассаPublicResourceListObjectИсправлены ошибки при отправке запросов API с помощью
PycURLSessionпри заданииstream=TrueДанные не будут записаны в файл методами
Client.download(),Client.download_by_link(),AsyncClient.download()иAsyncClient.download_by_link(), если сервер вернул ошибочный код состояния
Release 3.0.1 (2024-07-09)
Исправлен сломанный
pyproject.toml, который не включал в сборку полное содержимое пакета (см. issue #49)
Release 3.0.0 (2024-07-09)
Несовместимые изменения:
См. Руководство по миграции для подробностей
Все методы теперь ожидают завершения асинхронных операций по умолчанию (см. новый параметр
wait=<bool>)Итерация по результату
AsyncClient.listdir()больше не требует дополнительного ключевого слова awaitЧисло возвращаемых файлов
Client.get_files()/AsyncClient.get_files()теперь контролируется параметромmax_items, вместоlimitМетоды
set_token(),set_headers()интерфейсовSessionиAsyncSessionбыли удаленыНекоторые методы больше не принимают параметр
fieldsClient.get_last_uploaded()/AsyncClient.get_last_uploaded()теперь возвращает список вместо генератораyadisk.api- теперь скрытый модульВсе скрытые модули были переименованы, их имена начинаются с
_(например,yadisk._api)
Нововведения:
Добавлены методы для ожидания завершения асинхронной операции (см.
Client.wait_for_operation()/AsyncClient.wait_for_operation())Методы, которые могут запускать асинхронную операцию, теперь принимают дополнительные параметры:
wait: bool = True,poll_interval: float = 1.0иpoll_timeout: Optional[float] = NoneClient.listdir(),Client.get_files()и их асинхронные вариации теперь принимают новый параметрmax_items: Optional[int] = None, который может быть использован, чтобы ограничить максимальное число возвращаемых файловБольшинство методов
ClientиAsyncClientтеперь принимаетretry_on: Optional[Tuple[Type[Exception], ...]] = None, который позволяет указывать кортеж из дополнительных исключений, которые могут вызвать автоматическую повторную попыткуМодуль
yadisk.types- теперь публичныйДобавлено логирование исходящих запросов к API и автоматических повторных попыток
Объект логгера библиотеки доступен как
yadisk.settings.loggerДобавлен метод
YaDiskObject.field()и оператор@(YaDiskObject.__matmul__()), который удостоверяется, что указанное поле объекта не являетсяNoneДобавлены методы
Client.get_upload_link_object(),AsyncClient.get_upload_link_object(), возвращаемые значения которых дополнительно содержатoperation_idutils.auto_retry()теперь принимает больше параметровДобавлено несколько недостающих полей
DiskInfoObjectEXIFObjectтеперь содержит GPS-координатыCaseInsensitiveDict- теперь частьyadisk.utils
Улучшения:
Добавлены полные подсказки типов для
ClientиAsyncClientс помощью файлов.pyiСтроки документации для
Client/AsyncClientтеперь включают в себя больше параметровОшибки во время обработки JSON (например,
InvalidResponseError) также вызывают автоматические повторные попыткиСообщение об ошибке в случае, когда модуль сессии по умолчанию недоступен, теперь не вводит в заблуждение (см. issue #43)
Уменьшено значение
limitдо500(было10000) дляClient.listdir()для избежания таймаутов при больших папках (см. issue #45)Уменьшено значение
limitдо200(было1000) дляClient.get_files()для избежания таймаутовClient.download()и подобные методы больше не задают заголовокConnection: closeт.к. в этом нет необходимости (в отличие отClient.upload())UnknownYaDiskErrorтеперь включает код статуса в сообщение об ошибке
Исправления:
Исправлены реализации на основе
httpxиaiohttp: реализации методовResponse.json()/AsyncResponse.json()не преобразовывали свои исключения вRequestErrorИсправлено: параметр
stream=Trueбыл не задан по умолчанию вAsyncClient.download(),AsyncClient.download_public()
Другие изменения:
typing_extensionsтеперь требуется для Python < 3.10
Release 2.1.0 (2024-01-03)
Исправлен баг, из-за которого параметры в теле POST-запроса неправильно кодировались
Исправлен баг в
PycURLSession.send_request(), из-за которого переданные заголовки игнорировалисьRequestsSession.close()теперь закрывает сессию для всех потоковВсе методы
ClientиAsyncClientтеперь используют существующую сессиюУдалены аттрибут
session_factoryи методmake_session()классовClientиAsyncClientКласс сессии теперь может быть указан в качестве строки (см.
Client/AsyncClient)Добавлены методы
Client.get_device_code()/AsyncClient.get_device_code()Добавлены методы
Client.get_token_from_device_code()/AsyncClient.get_token_from_device_code()Добавлен недостающий параметр
redirect_uriдляClient.get_auth_url()/AsyncClient.get_auth_url()иClient.get_code_url()/AsyncClient.get_code_url()Добавлена поддержка параметров PKCE для
Client.get_auth_url()/AsyncClient.get_auth_url(),Client.get_code_url()/AsyncClient.get_code_url()иClient.get_token()/AsyncClient.get_token()Добавлен аттрибут
scopeдляTokenObjectДобавлены новые классы исключений:
InvalidClientError,InvalidGrantError,AuthorizationPendingError,BadVerificationCodeErrorиUnsupportedTokenTypeError
Release 2.0.0 (2023-12-12)
Библиотека теперь предоставляет как синхронный, так и асинхронный API (см. Введение и Справочник API)
Теперь поддерживается несколько HTTP библиотек (см. Доступные реализации сессий для полного списка)
Теперь возможно добавить поддержку любой HTTP библиотеки (см. Интерфейс Session)
requests - теперь опциональная зависимость (хотя всё ещё используется по умолчанию для синхронного API)
Обратите внимание, что аргументы, специфичные для requests теперь передаются по другому (см. Доступные реализации сессий)
Предпочитаемые HTTP библиотеки теперь должны быть установлены явным образом (см. Введение)
Client.upload()иClient.upload_by_link()теперь могут принимать функцию, возвращающую итератор (или генератор) в качестве полезной нагрузки
Release 1.3.4 (2023-10-15)
Методы upload() и download() (и связянные с ними) теперь могут загружать/скачивать файлы, не поддерживающие операцию seek() (например, stdin и stdout, при условии, что они открыты в режиме «rb» или «wb»), см. PR #31
Release 1.3.3 (2023-04-22)
Пути вида app:/ теперь работают правильно (см. issue #26)
Release 1.3.2 (2023-03-20)
Исправлено issue #29: TypeError: „type“ object is not subscriptable
Release 1.3.1 (2023-02-28)
Исправлено issue #28: TypeError при вызове download_public() с параметром path
Исправлено AttributeError при вызове ResourceLinkObject.public_listdir()
Release 1.3.0 (2023-01-30)
Добавлены convenience-методы для объектов …Object (например, см. ResourceObject)
Добавлены подсказки типов (type hints)
Улучшены проверки ошибок и проверка ответа
Добавлены InvalidResponseError, PayloadTooLargeError, UploadTrafficLimitExceededError
Добавлено несколько недостающих полей объектов DiskInfoObject и SystemFoldersObject
Добавлены методы rename(), upload_by_link() и download_by_link()
Добавлен аттрибут default_args объекта YaDisk
download() и upload() теперь возвращают ResourceLinkObject
До этого возвращаемые объекты LinkObject были заменены более конкретными подклассами
ConnectionErrorтеперь тоже вызывает повторную попытку
Release 1.2.19 (2023-01-20)
Исправлено неправильное поведение фикса из 1.2.18 для путей disk: и trash:.
Release 1.2.18 (2023-01-20)
Исправлено issue #26: символ „:“ в именах файлов приводит к BadRequestError. Это поведение вызвано работой самого REST API Яндекс.Диска, но было исправлено на уровне библиотеки.
Release 1.2.17 (2022-12-11)
Исправлен баг, связанный с автоматическим закрытием сессии.Использование метода __del__() приводило в некоторых случаях к ошибке ReferenceError (ошибка игнорировалась, но сообщение выводилось).Баг проявляется по большей части в старых версиях Python (например 3.4).
Release 1.2.16 (2022-08-17)
Исправлен баг в check_token(): функция могла вызвать
ForbiddenError, если у приложения недостатчно прав (issue #23).
Release 1.2.15 (2021-12-31)
Исправлено: не распознавались ссылки на асинхронные операции, если они использовали http:// (вместо https://). Иногда Яндекс.Диск может вернуть http:// ссылку на асинхронную операцию. Теперь обе версии ссылок распознаются правильно, при этом, при получении информации об операции (через get_operation_status()) всегда используется https:// версия ссылки, даже если Яндекс.Диск вернул http://.
Release 1.2.14 (2019-03-26)
Исправлена ошибка TypeError в функциях get_public_* при использовании с параметром path (issue #7)
Добавлен аттрибут unlimited_autoupload_enabled для DiskInfoObject
Release 1.2.13 (2019-02-23)
Добавлен параметр md5 для remove()
Добавлен UserPublicInfoObject
Добавлен аттрибут country для UserObject
Добавлен аттрибут photoslice_time для ResourceObject, PublicResourceObject и TrashResourceObject
Release 1.2.12 (2018-10-11)
Исправлен баг: не работает параметр fields в listdir() (issue #4)
Release 1.2.11 (2018-06-30)
Добавлен недостающий параметр sort для get_meta()
Добавлены аттрибуты file и antivirus_status для ResourceObject, PublicResourceObject и TrashResourceObject
Добавлен параметр headers
Исправлена опечатка в download() и download_public() (issue #2)
Убран параметр *args
Release 1.2.10 (2018-06-14)
Исправлено поведение timeout=None. None должен означать „без таймаута“, но в предыдущих версиях значение None было синонимично со стандартным таймаутом.
Release 1.2.9 (2018-04-28)
Изменена лицензия на LGPLv3 (см. COPYING и COPYING.lesser)
Другие изменения информации о пакете
Release 1.2.8 (2018-04-17)
Исправлено несколько опечаток: у PublicResourceListObject.items и TrashResourceListObject.items были неправильные типы данных
Псевдонимы полей в параметре fields заменяются при выполнении запросов API (например, embedded -> _embedded)
Release 1.2.7 (2018-04-15)
Исправлен баг перемотки файла при загрузке/скачивании после повторной попытки
Release 1.2.6 (2018-04-13)
Теперь объекты сессий requests кэшируются, чтобы их можно было переиспользовать (иногда может существенно ускорить выполнение запросов)
keep-alive отключается при загрузке/скачивании файлов по умолчанию
Release 1.2.5 (2018-03-31)
Исправлен баг (ошибка на единицу) в utils.auto_retry() (иногда мог вызвать AttributeError)
Повторные попытки применяются для upload(), download() и download_public() целиком
Задано stream=True для download() и download_public()
Другие мелкие исправления
Release 1.2.4 (2018-02-19)
Исправлена опечатка (TokenObject.exprires_in -> TokenObject.expires_in)
Release 1.2.3 (2018-01-20)
Исправлено TypeError при вызове WrongResourceTypeError
Release 1.2.2 (2018-01-19)
refresh_token() больше не требует валидный или пустой токен.
Release 1.2.1 (2018-01-14)
Исправлена неработоспособность повторных попыток.
Release 1.2.0 (2018-01-14)
Исправлено использование n_retries=0 в upload(), download() и download_public()
upload(), download() и download_public() больше не возвращают ничего (см. документацию)
Добавлен модуль utils (см. документацию)
Добавлены RetriableYaDiskError, WrongResourceTypeError, BadGatewayError и GatewayTimeoutError
listdir() теперь вызывает WrongResourceTypeError вместо NotADirectoryError
Release 1.1.1 (2017-12-29)
Исправлена обработка аргументов в upload(), download() и download_public(). До этого использование n_retries и retry_interval вызывало исключение (TypeError).
Release 1.1.0 (2017-12-27)
Усовершенствованные исключения (см. документацию)
Добавлена поддержка параметра force_async
Мелкие исправления багов
Release 1.0.8 (2017-11-29)
Исправлен ещё один баг в listdir()
Release 1.0.7 (2017-11-04)
Добавлен install_requires в setup.py
Release 1.0.6 (2017-11-04)
Некоторые функции теперь возвращают OperationLinkObject
Release 1.0.5 (2017-10-29)
Исправлен setup.py, теперь исключает тесты
Release 1.0.4 (2017-10-23)
Исправлены баги в upload, download и listdir
Значение по-умолчанию limit в listdir установлено в 10000
Release 1.0.3 (2017-10-22)
Добавлен модуль settings
Release 1.0.2 (2017-10-19)
Исправлена функция get_code_url (добавлены недостающие параметры)
Release 1.0.1 (2017-10-18)
Исправлен серьёзный баг в GetTokenRequest (добавлен недостающий параметр)
Release 1.0.0 (2017-10-18)
Первый релиз