Описание
При инициализации библиотеки ошибка AttributeError: 'str' object has no attribute 'copy'
Воспроизведение
Шаги для воспроизведения бага:
Вероятно этот баг смогут воспроизвести только люди у которых Яндекс Плюс оформлен через мобильного оператора
Создать объект Client (c токеном)
Вызвать метод Client.init()
Увидеть ошибку AttributeError: 'str' object has no attribute 'copy'
Ожидаемое поведение
Ожидалась инициализации библиотеки и корректная работа.
Логи
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/devdk/.local/lib/python3.8/site-packages/yandex_music/client.py", line 70, in wrapper
result = method(*args, **kwargs)
File "/home/devdk/.local/lib/python3.8/site-packages/yandex_music/client.py", line 156, in init
self.me = self.account_status()
File "/home/devdk/.local/lib/python3.8/site-packages/yandex_music/client.py", line 70, in wrapper
result = method(*args, **kwargs)
File "/home/devdk/.local/lib/python3.8/site-packages/yandex_music/client.py", line 177, in account_status
return Status.de_json(result, self)
File "/home/devdk/.local/lib/python3.8/site-packages/yandex_music/account/status.py", line 76, in de_json
data['subscription'] = Subscription.de_json(data.get('subscription'), client)
File "/home/devdk/.local/lib/python3.8/site-packages/yandex_music/account/subscription.py", line 64, in de_json
data['operator'] = Operator.de_list(data.get('operator'), client)
File "/home/devdk/.local/lib/python3.8/site-packages/yandex_music/account/operator.py", line 71, in de_list
return [cls.de_json(operator, client) for operator in data]
File "/home/devdk/.local/lib/python3.8/site-packages/yandex_music/account/operator.py", line 71, in <listcomp>
return [cls.de_json(operator, client) for operator in data]
File "/home/devdk/.local/lib/python3.8/site-packages/yandex_music/account/operator.py", line 51, in de_json
data['deactivation'] = Deactivation.de_list(data.get('deactivation'), client)
File "/home/devdk/.local/lib/python3.8/site-packages/yandex_music/account/deactivation.py", line 62, in de_list
return [cls.de_json(deactivation, client) for deactivation in data]
File "/home/devdk/.local/lib/python3.8/site-packages/yandex_music/account/deactivation.py", line 62, in <listcomp>
return [cls.de_json(deactivation, client) for deactivation in data]
File "/home/devdk/.local/lib/python3.8/site-packages/yandex_music/account/deactivation.py", line 44, in de_json
data = super(Deactivation, cls).de_json(data, client)
File "/home/devdk/.local/lib/python3.8/site-packages/yandex_music/base.py", line 59, in de_json
data = data.copy()
AttributeError: 'str' object has no attribute 'copy'
Дополнительная информация
Предыстория
Я активный пользователь тг бота @music_yandex_bot. Примерно месяц назад бот полностью перестал отвечать на любые мои команды. Вчера мне надоело пользоваться костылями и я написал @MarshalX о проблеме, получил совет использовать третий аккаунт:( Решил сам посмотреть работает ли библиотека. Получил новый токен, запустил и увидел это ошибку.
Проблема как я понял кроется в том что ЯМ АПИ возвращает в одном из методов лист в виде строки.
Ошибку получают не многие пользователи, наверное, из-за того что ошибка возникает при обработке информации о подписке через мобильного оператора.
(Добавил принтов в функции десериализации)
{
"operator": [
{
"product_id": "beeline-ru-standalone-cpa-plus-stable.684000005",
"phone": "",
"payment_regularity": "Списание средств производится автоматически каждый месяц",
"deactivation": "[{'method':'ussd','instructions':'Для отключения перейдите в Личный Кабинет билайн'}]",
"title": "Специальное предложение",
"suspended": false
}
],
...
}
Библиотека пытается десериализовать данные и начинает фором проходится по строке "[{'method':'ussd','instructions':'Для отключения перейдите в Личный Кабинет билайн'}]" и из-за этого возникает ошибка.
Описание При инициализации библиотеки ошибка
AttributeError: 'str' object has no attribute 'copy'
Воспроизведение Шаги для воспроизведения бага:
AttributeError: 'str' object has no attribute 'copy'
Ожидаемое поведение Ожидалась инициализации библиотеки и корректная работа.
Логи
Дополнительная информация
Предыстория
Я активный пользователь тг бота @music_yandex_bot. Примерно месяц назад бот полностью перестал отвечать на любые мои команды. Вчера мне надоело пользоваться костылями и я написал @MarshalX о проблеме, получил совет использовать третий аккаунт:( Решил сам посмотреть работает ли библиотека. Получил новый токен, запустил и увидел это ошибку.Проблема как я понял кроется в том что ЯМ АПИ возвращает в одном из методов лист в виде строки. Ошибку получают не многие пользователи, наверное, из-за того что ошибка возникает при обработке информации о подписке через мобильного оператора. (Добавил принтов в функции десериализации)
Библиотека пытается десериализовать данные и начинает фором проходится по строке
"[{'method':'ussd','instructions':'Для отключения перейдите в Личный Кабинет билайн'}]"
и из-за этого возникает ошибка.У себя, локально, починил с помощью проверки на тип (yandex_music/account/deactivation.py:61)