Merge pull request #169 from MarshalX/issue-168

Убрано использование зарезервированных слов
このコミットが含まれているのは:
Il'ya 2019-12-26 23:52:56 +03:00 committed by GitHub
コミット 2ed5e060fe
この署名に対応する既知のキーがデータベースに存在しません
GPGキーID: 4AEE18F83AFDEB23
65個のファイルの変更209行の追加198行の削除

ファイルの表示

@ -424,7 +424,7 @@ def value():
@pytest.fixture(scope='session')
def id():
def id_():
return Id(TestId.type, TestId.tag)
@ -434,8 +434,8 @@ def sequence(track):
@pytest.fixture(scope='session')
def station(id, icon, restrictions):
return Station(id, TestStation.name, icon, icon, icon, TestStation.id_for_from, restrictions, restrictions, id)
def station(id_, icon, restrictions):
return Station(id_, TestStation.name, icon, icon, icon, TestStation.id_for_from, restrictions, restrictions, id_)
@pytest.fixture(scope='session')

ファイルの表示

@ -52,10 +52,9 @@ class TestAlbum:
assert album.regions == self.regions
def test_de_json_required(self, client, artist, label):
json_dict = {'id': self.id, 'title': self.title, 'cover_uri': self.cover_uri, 'track_count': self.track_count,
json_dict = {'id_': self.id, 'title': self.title, 'cover_uri': self.cover_uri, 'track_count': self.track_count,
'artists': [artist.to_dict()], 'labels': [label.to_dict()],
'available': self.available,
'available_for_premium_users': self.available_for_premium_users}
'available': self.available, 'available_for_premium_users': self.available_for_premium_users}
album = Album.de_json(json_dict, client)
assert album.id == self.id
@ -68,7 +67,7 @@ class TestAlbum:
assert album.available_for_premium_users == self.available_for_premium_users
def test_de_json_all(self, client, artist, label, track_position, track):
json_dict = {'id': self.id, 'title': self.title, 'cover_uri': self.cover_uri, 'track_count': self.track_count,
json_dict = {'id_': self.id, 'title': self.title, 'cover_uri': self.cover_uri, 'track_count': self.track_count,
'artists': [artist.to_dict()], 'labels': [label.to_dict()], 'available': self.available,
'available_for_premium_users': self.available_for_premium_users,
'content_warning': self.content_warning, 'original_release_year': self.original_release_year,
@ -77,7 +76,7 @@ class TestAlbum:
'available_partially': self.available_partially, 'bests': self.bests, 'prerolls': self.prerolls,
'volumes': [[track.to_dict()]], 'year': self.year,
'release_date': self.release_date,
'type': self.type, 'track_position': track_position.to_dict(), 'regions': self.regions}
'type_': self.type, 'track_position': track_position.to_dict(), 'regions': self.regions}
album = Album.de_json(json_dict, client)
assert album.id == self.id

ファイルの表示

@ -24,7 +24,7 @@ class TestAlbumsLikes:
assert albums_likes.timestamp == self.timestamp
def test_de_json_all(self, client, album):
json_dict = {'timestamp': self.timestamp, 'id': self.id, 'album': album.to_dict()}
json_dict = {'timestamp': self.timestamp, 'id_': self.id, 'album': album.to_dict()}
albums_likes = AlbumsLikes.de_json(json_dict, client)
assert albums_likes.timestamp == self.timestamp

ファイルの表示

@ -50,7 +50,7 @@ class TestArtist:
assert artist.end_date == self.end_date
def test_de_json_required(self, client, cover):
json_dict = {'id': self.id, 'name': self.name, 'cover': cover.to_dict()}
json_dict = {'id_': self.id, 'name': self.name, 'cover': cover.to_dict()}
artist = Artist.de_json(json_dict, client)
assert artist.id == self.id
@ -58,7 +58,7 @@ class TestArtist:
assert artist.cover == cover
def test_de_json_all(self, client, cover, counts, ratings, link, track_without_artists, description):
json_dict = {'id': self.id, 'name': self.name, 'various': self.various, 'composer': self.composer,
json_dict = {'id_': self.id, 'name': self.name, 'various': self.various, 'composer': self.composer,
'cover': cover.to_dict(), 'genres': self.genres, 'op_image': self.op_image,
'no_pictures_from_search': self.no_pictures_from_search, 'counts': counts.to_dict(),
'available': self.available, 'ratings': ratings.to_dict(), 'links': [link.to_dict()],

ファイルの表示

@ -22,7 +22,7 @@ class TestArtistsLikes:
artists_likes = ArtistsLikes.de_json(json_dict, client)
def test_de_json_all(self, client, artist):
json_dict = {'id': self.id, 'artist': artist.to_dict(), 'timestamp': self.timestamp}
json_dict = {'id_': self.id, 'artist': artist.to_dict(), 'timestamp': self.timestamp}
artists_likes = ArtistsLikes.de_json(json_dict, client)
assert artists_likes.id == self.id

ファイルの表示

@ -15,7 +15,7 @@ class TestBest:
def test_de_json_required(self, client, best_with_result):
best_fixture, result = best_with_result
json_dict = {'type': best_fixture.type, 'result': result.to_dict()}
json_dict = {'type_': best_fixture.type, 'result': result.to_dict()}
best = Best.de_json(json_dict, client)
assert best.type == best_fixture.type
@ -24,7 +24,7 @@ class TestBest:
def test_de_json_all(self, client, best_with_result):
best_fixture, result = best_with_result
json_dict = {'type': best_fixture.type, 'result': result.to_dict(), 'text': self.text}
json_dict = {'type_': best_fixture.type, 'result': result.to_dict(), 'text': self.text}
best = Best.de_json(json_dict, client)
assert best.type == best_fixture.type

ファイルの表示

@ -28,7 +28,7 @@ class TestBlock:
assert block.data == data
def test_de_json_required(self, client, block_entity):
json_dict = {'id': self.id, 'type': self.type, 'type_for_from': self.type_for_from, 'title': self.title,
json_dict = {'id_': self.id, 'type_': self.type, 'type_for_from': self.type_for_from, 'title': self.title,
'entities': [block_entity.to_dict()]}
block = Block.de_json(json_dict, client)
@ -41,7 +41,7 @@ class TestBlock:
def test_de_json_all(self, client, block_entity, data_with_type):
data, type = data_with_type
json_dict = {'id': self.id, 'type': type, 'type_for_from': self.type_for_from, 'title': self.title,
json_dict = {'id_': self.id, 'type_': type, 'type_for_from': self.type_for_from, 'title': self.title,
'entities': [block_entity.to_dict()], 'description': self.description, 'data': data.to_dict()}
block = Block.de_json(json_dict, client)

ファイルの表示

@ -28,7 +28,7 @@ class TestBlockEntity:
def test_de_json_required(self, client, block_entity_data_with_type):
data, type = block_entity_data_with_type
json_dict = {'id': self.id, 'type': type, 'data': data.to_dict()}
json_dict = {'id_': self.id, 'type_': type, 'data': data.to_dict()}
block_entity = BlockEntity.de_json(json_dict, client)
assert block_entity.id == self.id
@ -38,7 +38,7 @@ class TestBlockEntity:
def test_de_json_all(self, client, block_entity_data_with_type):
data, type = block_entity_data_with_type
json_dict = {'id': self.id, 'type': type, 'data': data.to_dict()}
json_dict = {'id_': self.id, 'type_': type, 'data': data.to_dict()}
block_entity = BlockEntity.de_json(json_dict, client)
assert block_entity.id == self.id

ファイルの表示

@ -26,7 +26,7 @@ class TestCover:
cover = Cover.de_json(json_dict, client)
def test_de_json_all(self, client):
json_dict = {'type': self.type, 'uri': self.uri, 'items_uri': self.items_uri, 'dir': self.dir,
json_dict = {'type_': self.type, 'uri': self.uri, 'items_uri': self.items_uri, 'dir_': self.dir,
'version': self.version, 'custom': self.custom, 'prefix': self.prefix, 'error': self.error}
cover = Cover.de_json(json_dict, client)

ファイルの表示

@ -12,7 +12,7 @@ class TestDiscreteScale:
assert discrete_scale.max == value
def test_de_json_required(self, client, value):
json_dict = {'type': self.type, 'name': self.name, 'min': value.to_dict(), 'max': value.to_dict()}
json_dict = {'type_': self.type, 'name': self.name, 'min_': value.to_dict(), 'max_': value.to_dict()}
discrete_scale = DiscreteScale.de_json(json_dict, client)
assert discrete_scale.type == self.type
@ -21,7 +21,7 @@ class TestDiscreteScale:
assert discrete_scale.max == value
def test_de_json_all(self, client, value):
json_dict = {'type': self.type, 'name': self.name, 'min': value.to_dict(), 'max': value.to_dict()}
json_dict = {'type_': self.type, 'name': self.name, 'min_': value.to_dict(), 'max_': value.to_dict()}
discrete_scale = DiscreteScale.de_json(json_dict, client)
assert discrete_scale.type == self.type

ファイルの表示

@ -11,7 +11,7 @@ class TestEnum:
assert enum.possible_values == [value]
def test_de_json_required(self, client, value):
json_dict = {'type': self.type, 'name': self.name, 'possible_values': [value.to_dict()]}
json_dict = {'type_': self.type, 'name': self.name, 'possible_values': [value.to_dict()]}
enum = Enum.de_json(json_dict, client)
assert enum.type == self.type
@ -19,7 +19,7 @@ class TestEnum:
assert enum.possible_values == [value]
def test_de_json_all(self, client, value):
json_dict = {'type': self.type, 'name': self.name, 'possible_values': [value.to_dict()]}
json_dict = {'type_': self.type, 'name': self.name, 'possible_values': [value.to_dict()]}
enum = Enum.de_json(json_dict, client)
assert enum.type == self.type

ファイルの表示

@ -23,14 +23,14 @@ class TestEvent:
assert event.tracks_count == self.tracks_count
def test_de_json_required(self, client):
json_dict = {'id': self.id, 'type': self.type}
json_dict = {'id_': self.id, 'type_': self.type}
event = Event.de_json(json_dict, client)
assert event.id == self.id
assert event.type == self.type
def test_de_json_all(self, client, track, artist_event, album_event):
json_dict = {'id': self.id, 'type': self.type, 'type_for_from': self.type_for_from, 'title': self.title,
json_dict = {'id_': self.id, 'type_': self.type, 'type_for_from': self.type_for_from, 'title': self.title,
'tracks': [track.to_dict()], 'artists': [artist_event.to_dict()],
'albums': [album_event.to_dict()], 'message': self.message, 'device': self.device,
'tracks_count': self.tracks_count}

ファイルの表示

@ -13,7 +13,7 @@ class TestGeneratedPlaylist:
assert generated_playlist.data == playlist
def test_de_json_required(self, client, playlist):
json_dict = {'type': self.type, 'ready': self.ready, 'notify': self.notify, 'data': playlist.to_dict()}
json_dict = {'type_': self.type, 'ready': self.ready, 'notify': self.notify, 'data': playlist.to_dict()}
generated_playlist = GeneratedPlaylist.de_json(json_dict, client)
assert generated_playlist.type == self.type
@ -22,7 +22,7 @@ class TestGeneratedPlaylist:
assert generated_playlist.data == playlist
def test_de_json_all(self, client, playlist):
json_dict = {'type': self.type, 'ready': self.ready, 'notify': self.notify, 'data': playlist.to_dict()}
json_dict = {'type_': self.type, 'ready': self.ready, 'notify': self.notify, 'data': playlist.to_dict()}
generated_playlist = GeneratedPlaylist.de_json(json_dict, client)
assert generated_playlist.type == self.type

ファイルの表示

@ -43,7 +43,7 @@ class TestGenre:
assert genre.hide_in_regions == self.hide_in_regions
def test_de_json_required(self, client, title, images):
json_dict = {'id': self.id, 'weight': self.weight, 'composer_top': self.composer_top, 'title': self.title,
json_dict = {'id_': self.id, 'weight': self.weight, 'composer_top': self.composer_top, 'title': self.title,
'titles': {'uz': title.to_dict()}, 'images': images.to_dict(), 'show_in_menu': self.show_in_menu}
genre = Genre.de_json(json_dict, client)
@ -56,7 +56,7 @@ class TestGenre:
assert genre.show_in_menu == self.show_in_menu
def test_de_json_all(self, client, title, images, icon, genre_without_sub_genre):
json_dict = {'id': self.id, 'weight': self.weight, 'composer_top': self.composer_top, 'title': self.title,
json_dict = {'id_': self.id, 'weight': self.weight, 'composer_top': self.composer_top, 'title': self.title,
'titles': {'uz': title.to_dict()}, 'images': images.to_dict(), 'show_in_menu': self.show_in_menu,
'full_title': self.full_title, 'url_part': self.url_part, 'color': self.color,
'radio_icon': icon.to_dict(), 'sub_genres': [genre_without_sub_genre.to_dict()],

ファイルの表示

@ -5,23 +5,23 @@ class TestId:
type = 'user'
tag = 'onyourwave'
def test_expected_values(self, id):
assert id.type == self.type
assert id.tag == self.tag
def test_expected_values(self, id_):
assert id_.type == self.type
assert id_.tag == self.tag
def test_de_json_required(self, client):
json_dict = {'type': self.type, 'tag': self.tag}
id = Id.de_json(json_dict, client)
json_dict = {'type_': self.type, 'tag': self.tag}
id_ = Id.de_json(json_dict, client)
assert id.type == self.type
assert id.tag == self.tag
assert id_.type == self.type
assert id_.tag == self.tag
def test_de_json_all(self, client):
json_dict = {'type': self.type, 'tag': self.tag}
id = Id.de_json(json_dict, client)
json_dict = {'type_': self.type, 'tag': self.tag}
id_ = Id.de_json(json_dict, client)
assert id.type == self.type
assert id.tag == self.tag
assert id_.type == self.type
assert id_.tag == self.tag
def test_equality(self):
a = Id(self.type, self.tag)

ファイルの表示

@ -10,14 +10,14 @@ class TestLabel:
assert label.name == self.name
def test_de_json_required(self, client):
json_dict = {'id': self.id, 'name': self.name}
json_dict = {'id_': self.id, 'name': self.name}
label = Label.de_json(json_dict, client)
assert label.id == self.id
assert label.name == self.name
def test_de_json_all(self, client):
json_dict = {'id': self.id, 'name': self.name}
json_dict = {'id_': self.id, 'name': self.name}
label = Label.de_json(json_dict, client)
assert label.id == self.id

ファイルの表示

@ -14,7 +14,7 @@ class TestLink:
assert link.social_network == self.social_network
def test_de_json_required(self, client):
json_dict = {'title': self.title, 'href': self.href, 'type': self.type}
json_dict = {'title': self.title, 'href': self.href, 'type_': self.type}
link = Link.de_json(json_dict, client)
assert link.title == self.title
@ -22,7 +22,7 @@ class TestLink:
assert link.type == self.type
def test_de_json_all(self, client):
json_dict = {'title': self.title, 'href': self.href, 'type': self.type, 'social_network': self.social_network}
json_dict = {'title': self.title, 'href': self.href, 'type_': self.type, 'social_network': self.social_network}
link = Link.de_json(json_dict, client)
assert link.title == self.title

ファイルの表示

@ -33,7 +33,7 @@ class TestLyrics:
assert lyrics.show_translation == self.show_translation
def test_de_json_required(self, client):
json_dict = {'id': self.id, 'lyrics': self.lyrics, 'full_lyrics': self.full_lyrics,
json_dict = {'id_': self.id, 'lyrics': self.lyrics, 'full_lyrics': self.full_lyrics,
'has_rights': self.has_rights, 'text_language': self.text_language,
'show_translation': self.show_translation}
lyrics = Lyrics.de_json(json_dict, client)
@ -46,7 +46,7 @@ class TestLyrics:
assert lyrics.show_translation == self.show_translation
def test_de_json_all(self, client):
json_dict = {'id': self.id, 'lyrics': self.lyrics, 'full_lyrics': self.full_lyrics,
json_dict = {'id_': self.id, 'lyrics': self.lyrics, 'full_lyrics': self.full_lyrics,
'has_rights': self.has_rights, 'text_language': self.text_language,
'show_translation': self.show_translation}
lyrics = Lyrics.de_json(json_dict, client)

ファイルの表示

@ -10,14 +10,14 @@ class TestMajor:
assert major.name == self.name
def test_de_json_required(self, client):
json_dict = {'id': self.id, 'name': self.name}
json_dict = {'id_': self.id, 'name': self.name}
major = Major.de_json(json_dict, client)
assert major.id == self.id
assert major.name == self.name
def test_de_json_all(self, client):
json_dict = {'id': self.id, 'name': self.name}
json_dict = {'id_': self.id, 'name': self.name}
major = Major.de_json(json_dict, client)
assert major.id == self.id

ファイルの表示

@ -24,7 +24,7 @@ class TestPlaylistsLikes:
assert playlists_likes.timestamp == self.timestamp
def test_de_json_all(self, client, playlist):
json_dict = {'timestamp': self.timestamp, 'id': self.id, 'playlist': playlist.to_dict()}
json_dict = {'timestamp': self.timestamp, 'id_': self.id, 'playlist': playlist.to_dict()}
playlists_likes = PlaylistsLikes.de_json(json_dict, client)
assert playlists_likes.timestamp == self.timestamp

ファイルの表示

@ -37,7 +37,7 @@ class TestProduct:
assert product.payment_method_types == self.payment_method_types
def test_de_json_required(self, client, price):
json_dict = {'product_id': self.product_id, 'type': self.type,
json_dict = {'product_id': self.product_id, 'type_': self.type,
'common_period_duration': self.common_period_duration, 'duration': self.duration,
'trial_duration': self.trial_duration, 'price': price.to_dict(), 'feature': self.feature,
'debug': self.debug}
@ -53,7 +53,7 @@ class TestProduct:
assert product.debug == self.debug
def test_de_json_all(self, client, price):
json_dict = {'product_id': self.product_id, 'type': self.type,
json_dict = {'product_id': self.product_id, 'type_': self.type,
'common_period_duration': self.common_period_duration, 'duration': self.duration,
'trial_duration': self.trial_duration, 'price': price.to_dict(), 'feature': self.feature,
'debug': self.debug, 'features': self.features, 'description': self.description,

ファイルの表示

@ -11,7 +11,7 @@ class TestSequence:
assert sequence.liked == self.liked
def test_de_json_required(self, client, track):
json_dict = {'type': self.type, 'track': track.to_dict(), 'liked': self.liked}
json_dict = {'type_': self.type, 'track': track.to_dict(), 'liked': self.liked}
sequence = Sequence.de_json(json_dict, client)
assert sequence.type == self.type
@ -19,7 +19,7 @@ class TestSequence:
assert sequence.liked == self.liked
def test_de_json_all(self, client, track):
json_dict = {'type': self.type, 'track': track.to_dict(), 'liked': self.liked}
json_dict = {'type_': self.type, 'track': track.to_dict(), 'liked': self.liked}
sequence = Sequence.de_json(json_dict, client)
assert sequence.type == self.type

ファイルの表示

@ -5,8 +5,8 @@ class TestStation:
name = 'На вашей волне'
id_for_from = 'user-561231028'
def test_expected_values(self, station, id, icon, restrictions):
assert station.id == id
def test_expected_values(self, station, id_, icon, restrictions):
assert station.id == id_
assert station.name == self.name
assert station.icon == icon
assert station.mts_icon == icon
@ -14,15 +14,15 @@ class TestStation:
assert station.id_for_from == self.id_for_from
assert station.restrictions == restrictions
assert station.restrictions2 == restrictions
assert station.parent_id == id
assert station.parent_id == id_
def test_de_json_required(self, client, id, icon, restrictions):
json_dict = {'id': id.to_dict(), 'name': self.name, 'icon': icon.to_dict(), 'mts_icon': icon.to_dict(),
def test_de_json_required(self, client, id_, icon, restrictions):
json_dict = {'id_': id_.to_dict(), 'name': self.name, 'icon': icon.to_dict(), 'mts_icon': icon.to_dict(),
'geocell_icon': icon.to_dict(), 'id_for_from': self.id_for_from,
'restrictions': restrictions.to_dict(), 'restrictions2': restrictions.to_dict()}
station = Station.de_json(json_dict, client)
assert station.id == id
assert station.id == id_
assert station.name == self.name
assert station.icon == icon
assert station.mts_icon == icon
@ -31,14 +31,14 @@ class TestStation:
assert station.restrictions == restrictions
assert station.restrictions2 == restrictions
def test_de_json_all(self, client, id, icon, restrictions):
json_dict = {'id': id.to_dict(), 'name': self.name, 'icon': icon.to_dict(), 'mts_icon': icon.to_dict(),
def test_de_json_all(self, client, id_, icon, restrictions):
json_dict = {'id_': id_.to_dict(), 'name': self.name, 'icon': icon.to_dict(), 'mts_icon': icon.to_dict(),
'geocell_icon': icon.to_dict(), 'id_for_from': self.id_for_from,
'restrictions': restrictions.to_dict(), 'restrictions2': restrictions.to_dict(),
'parent_id': id.to_dict()}
'parent_id': id_.to_dict()}
station = Station.de_json(json_dict, client)
assert station.id == id
assert station.id == id_
assert station.name == self.name
assert station.icon == icon
assert station.mts_icon == icon
@ -46,13 +46,13 @@ class TestStation:
assert station.id_for_from == self.id_for_from
assert station.restrictions == restrictions
assert station.restrictions2 == restrictions
assert station.parent_id == id
assert station.parent_id == id_
def test_equality(self, id, icon, restrictions):
a = Station(id, icon, self.name, icon, icon, icon, self.id_for_from, restrictions, restrictions)
b = Station(id, icon, self.name, None, icon, icon, self.id_for_from, restrictions, restrictions)
c = Station(id, icon, '', icon, icon, None, self.id_for_from, restrictions, restrictions)
d = Station(id, icon, self.name, icon, icon, icon, self.id_for_from, restrictions, restrictions)
def test_equality(self, id_, icon, restrictions):
a = Station(id_, icon, self.name, icon, icon, icon, self.id_for_from, restrictions, restrictions)
b = Station(id_, icon, self.name, None, icon, icon, self.id_for_from, restrictions, restrictions)
c = Station(id_, icon, '', icon, icon, None, self.id_for_from, restrictions, restrictions)
d = Station(id_, icon, self.name, icon, icon, icon, self.id_for_from, restrictions, restrictions)
assert a != b != c
assert hash(a) != hash(b) != hash(c)

ファイルの表示

@ -4,44 +4,44 @@ from yandex_music import StationTracksResult
@pytest.fixture(scope='class')
def station_tracks_result(id, sequence):
return StationTracksResult(id, [sequence], TestStationTracksResult.batch_id, TestStationTracksResult.pumpkin)
def station_tracks_result(id_, sequence):
return StationTracksResult(id_, [sequence], TestStationTracksResult.batch_id, TestStationTracksResult.pumpkin)
class TestStationTracksResult:
batch_id = '1573227402825981-2727432063278102211'
pumpkin = False
def test_expected_values(self, station_tracks_result, id, sequence):
assert station_tracks_result.id == id
def test_expected_values(self, station_tracks_result, id_, sequence):
assert station_tracks_result.id == id_
assert station_tracks_result.sequence == [sequence]
assert station_tracks_result.batch_id == self.batch_id
assert station_tracks_result.pumpkin == self.pumpkin
def test_de_json_required(self, client, id, sequence):
json_dict = {'id': id.to_dict(), 'sequence': [sequence.to_dict()], 'batch_id': self.batch_id,
def test_de_json_required(self, client, id_, sequence):
json_dict = {'id_': id_.to_dict(), 'sequence': [sequence.to_dict()], 'batch_id': self.batch_id,
'pumpkin': self.pumpkin}
station_tracks_result = StationTracksResult.de_json(json_dict, client)
assert station_tracks_result.id == id
assert station_tracks_result.id == id_
assert station_tracks_result.sequence == [sequence]
assert station_tracks_result.batch_id == self.batch_id
assert station_tracks_result.pumpkin == self.pumpkin
def test_de_json_all(self, client, id, sequence):
json_dict = {'id': id.to_dict(), 'sequence': [sequence.to_dict()], 'batch_id': self.batch_id,
def test_de_json_all(self, client, id_, sequence):
json_dict = {'id_': id_.to_dict(), 'sequence': [sequence.to_dict()], 'batch_id': self.batch_id,
'pumpkin': self.pumpkin}
station_tracks_result = StationTracksResult.de_json(json_dict, client)
assert station_tracks_result.id == id
assert station_tracks_result.id == id_
assert station_tracks_result.sequence == [sequence]
assert station_tracks_result.batch_id == self.batch_id
assert station_tracks_result.pumpkin == self.pumpkin
def test_equality(self, id, sequence):
a = StationTracksResult(id, sequence, self.batch_id, self.pumpkin)
b = StationTracksResult(id, sequence, "", False)
c = StationTracksResult(id, sequence, self.batch_id, self.pumpkin)
def test_equality(self, id_, sequence):
a = StationTracksResult(id_, sequence, self.batch_id, self.pumpkin)
b = StationTracksResult(id_, sequence, "", False)
c = StationTracksResult(id_, sequence, self.batch_id, self.pumpkin)
assert a != b
assert hash(a) != hash(b)

ファイルの表示

@ -19,7 +19,7 @@ class TestSupplement:
assert supplement.radio_is_available == self.radio_is_available
def test_de_json_required(self, client, lyrics, video_supplement):
json_dict = {'id': self.id, 'lyrics': lyrics.to_dict(), 'videos': [video_supplement.to_dict()],
json_dict = {'id_': self.id, 'lyrics': lyrics.to_dict(), 'videos': [video_supplement.to_dict()],
'radio_is_available': self.radio_is_available}
supplement = Supplement.de_json(json_dict, client)
@ -29,7 +29,7 @@ class TestSupplement:
assert supplement.radio_is_available == self.radio_is_available
def test_de_json_all(self, client, lyrics, video_supplement):
json_dict = {'id': self.id, 'lyrics': lyrics.to_dict(), 'videos': [video_supplement.to_dict()],
json_dict = {'id_': self.id, 'lyrics': lyrics.to_dict(), 'videos': [video_supplement.to_dict()],
'radio_is_available': self.radio_is_available}
supplement = Supplement.de_json(json_dict, client)

ファイルの表示

@ -48,7 +48,7 @@ class TestTrack:
assert track.available_full_without_permission == self.available_full_without_permission
def test_de_json_required(self, client, artist, album):
json_dict = {'id': self.id, 'title': self.title, 'available': self.available,
json_dict = {'id_': self.id, 'title': self.title, 'available': self.available,
'artists': [artist.to_dict()], 'albums': [album.to_dict()]}
track = Track.de_json(json_dict, client)
@ -59,11 +59,11 @@ class TestTrack:
assert track.albums == [album]
def test_de_json_all(self, client, artist, album, major, normalization):
json_dict = {'id': self.id, 'title': self.title, 'available': self.available,
json_dict = {'id_': self.id, 'title': self.title, 'available': self.available,
'available_for_premium_users': self.available_for_premium_users,
'artists': [artist.to_dict()], 'albums': [album.to_dict()],
'lyrics_available': self.lyrics_available, 'real_id': self.real_id,
'og_image': self.og_image, 'type': self.type, 'cover_uri': self.cover_uri,
'og_image': self.og_image, 'type_': self.type, 'cover_uri': self.cover_uri,
'major': major.to_dict(), 'duration_ms': self.duration_ms, 'storage_dir': self.storage_dir,
'file_size': self.file_size, 'normalization': normalization.to_dict(), 'error': self.error,
'regions': self.regions, 'available_as_rbt': self.available_as_rbt,

ファイルの表示

@ -10,13 +10,13 @@ class TestTrackId:
assert track_id.album_id == self.album_id
def test_de_json_required(self, client):
json_dict = {'id': self.id}
json_dict = {'id_': self.id}
track_id = TrackId.de_json(json_dict, client)
assert track_id.id == self.id
def test_de_json_all(self, client):
json_dict = {'id': self.id, 'album_id': self.album_id}
json_dict = {'id_': self.id, 'album_id': self.album_id}
track_id = TrackId.de_json(json_dict, client)
assert track_id.id == self.id

ファイルの表示

@ -19,14 +19,14 @@ class TestTrackShort:
assert track_short.album_id == self.album_id
def test_de_json_required(self, client):
json_dict = {'id': self.id, 'timestamp': self.timestamp}
json_dict = {'id_': self.id, 'timestamp': self.timestamp}
track_short = TrackShort.de_json(json_dict, client)
assert track_short.id == self.id
assert track_short.timestamp == self.timestamp
def test_de_json_all(self, client):
json_dict = {'id': self.id, 'timestamp': self.timestamp, 'album_id': self.album_id}
json_dict = {'id_': self.id, 'timestamp': self.timestamp, 'album_id': self.album_id}
track_short = TrackShort.de_json(json_dict, client)
assert track_short.id == self.id

ファイルの表示

@ -9,14 +9,14 @@ class TestTrackWithAds:
assert track_with_ads.track == track
def test_de_json_required(self, client, track):
json_dict = {'type': self.type, 'track': track.to_dict()}
json_dict = {'type_': self.type, 'track': track.to_dict()}
track_with_ads = TrackWithAds.de_json(json_dict, client)
assert track_with_ads.type == self.type
assert track_with_ads.track == track
def test_de_json_all(self, client, track):
json_dict = {'type': self.type, 'track': track.to_dict()}
json_dict = {'type_': self.type, 'track': track.to_dict()}
track_with_ads = TrackWithAds.de_json(json_dict, client)
assert track_with_ads.type == self.type

ファイルの表示

@ -97,7 +97,6 @@ from .supplement.video_supplement import VideoSupplement
from .pager import Pager
from .cover import Cover
from .experiments import Experiments
from .invocation_info import InvocationInfo
from .track_short import TrackShort
from .icon import Icon

ファイルの表示

@ -3,7 +3,7 @@ from yandex_music import YandexMusicObject
class Album(YandexMusicObject):
def __init__(self,
id,
id_,
title,
track_count,
artists,
@ -25,12 +25,12 @@ class Album(YandexMusicObject):
volumes=None,
year=None,
release_date=None,
type=None,
type_=None,
track_position=None,
regions=None,
client=None,
**kwargs):
self.id = id
self.id = id_
self.title = title
self.track_count = track_count
self.artists = artists
@ -51,7 +51,7 @@ class Album(YandexMusicObject):
self.very_important = very_important
self.available_for_mobile = available_for_mobile
self.available_partially = available_partially
self.type = type
self.type = type_
self.track_position = track_position
self.regions = regions
self.original_release_year = original_release_year

ファイルの表示

@ -3,25 +3,25 @@ from yandex_music import YandexMusicObject
class Label(YandexMusicObject):
"""Класс, представляющий лейбл альбома.
Attributes:
id (:obj:`int`): Идентификатор альбома.
name (:obj:`str`): Название альбома.
client (:obj:`yandex_music.Client`): Объект класса :class:`yandex_music.Client` представляющий клиент Yandex
Music.
Args:
id (:obj:`int`): Идентификатор альбома.
id_ (:obj:`int`): Идентификатор альбома.
name (:obj:`str`): Название альбома.
client (:obj:`yandex_music.Client`, optional): Объект класса :class:`yandex_music.Client` представляющий клиент
Yandex Music.
**kwargs: Произвольные ключевые аргументы полученные от API.
"""
def __init__(self,
id,
id_,
name,
client=None,
**kwargs):
self.id = id
self.id = id_
self.name = name
self.client = client
@ -33,8 +33,8 @@ class Label(YandexMusicObject):
Args:
data (:obj:`dict`): Поля и значения десериализуемого объекта.
client (:obj:`yandex_music.Client`): Объект класса :class:`yandex_music.Client` представляющий клиент Yandex
Music.
client (:obj:`yandex_music.Client`): Объект класса :class:`yandex_music.Client` представляющий клиент
Yandex Music.
Returns:
:obj:`yandex_music.Label`: Объект класса :class:`yandex_music.Label`.
"""

ファイルの表示

@ -3,7 +3,7 @@ from yandex_music import YandexMusicObject
class Artist(YandexMusicObject):
def __init__(self,
id,
id_,
name,
cover,
various=None,
@ -30,7 +30,7 @@ class Artist(YandexMusicObject):
end_date=None,
client=None,
**kwargs):
self.id = id
self.id = id_
self.name = name
self.cover = cover

ファイルの表示

@ -17,7 +17,7 @@ class ArtistTracks(YandexMusicObject):
Music.
**kwargs: Произвольные ключевые аргументы полученные от API.
"""
def __init__(self,
tracks,
pager,

ファイルの表示

@ -5,13 +5,13 @@ class Link(YandexMusicObject):
def __init__(self,
title,
href,
type,
type_,
social_network=None,
client=None,
**kwargs):
self.title = title
self.href = href
self.type = type
self.type = type_
self.social_network = social_network

ファイルの表示

@ -1,5 +1,7 @@
from abc import ABCMeta
import builtins
ujson = False
try:
import ujson as json
@ -7,6 +9,8 @@ try:
except ImportError:
import json
reserved_names = [name.lower() for name in dir(builtins)]
class YandexMusicObject:
__metaclass__ = ABCMeta
@ -48,6 +52,11 @@ class YandexMusicObject:
data.pop('client', None)
data.pop('_id_attrs', None)
for k, v in data.copy().items():
if k.lower() in reserved_names:
data.pop(k)
data.update({f'{k}_': v})
return parse(data)
def __eq__(self, other):

ファイルの表示

@ -17,10 +17,10 @@ class Cover(YandexMusicObject):
Music.
Args:
type (:obj:`str`, optional): Тип обложки.
type_ (:obj:`str`, optional): Тип обложки.
uri (:obj:`str`, optional): Ссылка на изображение.
items_uri (:obj:`str`, optional): Список ссылок на изображения.
dir (:obj:`str`, optional): Директория хранения изображения на сервере.
dir_ (:obj:`str`, optional): Директория хранения изображения на сервере.
version (:obj:`str`, optional): Версия.
custom (:obj:`bool`, optional): Является ли обложка пользовательской.
prefix (:obj:`str`, optional): Уникальный идентификатор.
@ -31,21 +31,21 @@ class Cover(YandexMusicObject):
"""
def __init__(self,
type=None,
type_=None,
uri=None,
items_uri=None,
dir=None,
dir_=None,
version=None,
custom=None,
prefix=None,
error=None,
client=None,
**kwargs):
self.type = type
self.type = type_
self.uri = uri
self.items_uri = items_uri
self.prefix = prefix
self.dir = dir
self.dir = dir_
self.version = version
self.custom = custom
self.error = error

ファイルの表示

@ -3,8 +3,8 @@ from yandex_music import YandexMusicObject
class Event(YandexMusicObject):
def __init__(self,
id,
type,
id_,
type_,
type_for_from=None,
title=None,
tracks=None,
@ -15,8 +15,8 @@ class Event(YandexMusicObject):
tracks_count=None,
client=None,
**kwargs):
self.id = id
self.type = type
self.id = id_
self.type = type_
self.type_for_from = type_for_from
self.title = title

ファイルの表示

@ -3,13 +3,13 @@ from yandex_music import YandexMusicObject
class GeneratedPlaylist(YandexMusicObject):
def __init__(self,
type,
type_,
ready,
notify,
data,
client=None,
**kwargs):
self.type = type
self.type = type_
self.ready = ready
self.notify = notify
self.data = data

ファイルの表示

@ -3,11 +3,11 @@ from yandex_music import YandexMusicObject
class TrackWithAds(YandexMusicObject):
def __init__(self,
type,
type_,
track,
client=None,
**kwargs):
self.type = type
self.type = type_
self.track = track
self.client = client

ファイルの表示

@ -3,7 +3,7 @@ from yandex_music import YandexMusicObject
class Genre(YandexMusicObject):
def __init__(self,
id,
id_,
weight,
composer_top,
title,
@ -18,7 +18,7 @@ class Genre(YandexMusicObject):
hide_in_regions=None,
client=None,
**kwargs):
self.id = id
self.id = id_
self.weight = weight
self.composer_top = composer_top
self.title = title

ファイルの表示

@ -3,8 +3,8 @@ from yandex_music import YandexMusicObject
class Block(YandexMusicObject):
def __init__(self,
id,
type,
id_,
type_,
type_for_from,
title,
entities,
@ -13,8 +13,8 @@ class Block(YandexMusicObject):
client=None,
**kwargs):
self.id = id
self.type = type
self.id = id_
self.type = type_
self.type_for_from = type_for_from
self.title = title
self.entities = entities
@ -37,7 +37,7 @@ class Block(YandexMusicObject):
from yandex_music import BlockEntity, PlayContextsData, PersonalPlaylistsData
data['entities'] = BlockEntity.de_list(data.get('entities'), client)
block_type = data.get('type')
block_type = data.get('type_')
if block_type == 'personal-playlists':
data['data'] = PersonalPlaylistsData.de_json(data.get('data'), client)
elif block_type == 'play-contexts':

ファイルの表示

@ -15,14 +15,14 @@ de_json = {
class BlockEntity(YandexMusicObject):
def __init__(self,
id,
type,
id_,
type_,
data,
client=None,
**kwargs):
self.id = id
self.type = type
self.id = id_
self.type = type_
self.data = data
self.client = client
@ -34,7 +34,7 @@ class BlockEntity(YandexMusicObject):
return None
data = super(BlockEntity, cls).de_json(data, client)
data['data'] = de_json.get(data.get('type'))(data.get('data'), client)
data['data'] = de_json.get(data.get('type_'))(data.get('data'), client)
return cls(client=client, **data)

ファイルの表示

@ -3,11 +3,11 @@ from yandex_music import YandexMusicObject
class TrackId(YandexMusicObject):
def __init__(self,
id,
id_,
album_id=None,
client=None,
**kwargs):
self.id = id
self.id = id_
self.album_id = album_id
self.client = client

ファイルの表示

@ -4,11 +4,11 @@ from yandex_music import YandexMusicObject
class AlbumsLikes(YandexMusicObject):
def __init__(self,
timestamp,
id=None,
id_=None,
album=None,
client=None,
**kwargs):
self.id = id
self.id = id_
self.album = album
self.timestamp = timestamp

ファイルの表示

@ -3,12 +3,12 @@ from yandex_music import YandexMusicObject
class ArtistsLikes(YandexMusicObject):
def __init__(self,
id=None,
id_=None,
artist=None,
timestamp=None,
client=None,
**kwargs):
self.id = id
self.id = id_
self.artist = artist
self.timestamp = timestamp

ファイルの表示

@ -4,11 +4,11 @@ from yandex_music import YandexMusicObject
class PlaylistsLikes(YandexMusicObject):
def __init__(self,
timestamp,
id=None,
id_=None,
playlist=None,
client=None,
**kwargs):
self.id = id
self.id = id_
self.playlist = playlist
self.timestamp = timestamp

ファイルの表示

@ -39,15 +39,15 @@ class User(YandexMusicObject):
self.client = client
self._id_attrs = (self.uid, self.login)
def download_avatar(self, filename, format='normal'):
def download_avatar(self, filename, format_='normal'):
"""Загрузка изображения пользователя.
Args:
filename (:obj:`str`): Путь для сохранения файла с названием и расширением.
format (:obj:`str`, optional): Формат желаемого изображения (normal, orig, small, big).
format_ (:obj:`str`, optional): Формат желаемого изображения (normal, orig, small, big).
"""
self.client.request.download(f'https://upics.yandex.net/{self.uid}/{format}', filename)
self.client.request.download(f'https://upics.yandex.net/{self.uid}/{format_}', filename)
@classmethod
def de_json(cls, data, client):

ファイルの表示

@ -3,16 +3,16 @@ from yandex_music import YandexMusicObject
class DiscreteScale(YandexMusicObject):
def __init__(self,
type,
type_,
name,
min,
max,
min_,
max_,
client=None,
**kwargs):
self.type = type
self.type = type_
self.name = name
self.min = min
self.max = max
self.min = min_
self.max = max_
self.client = client
self._id_attrs = (self.type, self.name, self.min, self.max)
@ -24,7 +24,7 @@ class DiscreteScale(YandexMusicObject):
data = super(DiscreteScale, cls).de_json(data, client)
from yandex_music import Value
data['min'] = Value.de_json(data.get('min'), client)
data['max'] = Value.de_json(data.get('max'), client)
data['min_'] = Value.de_json(data.get('min_'), client)
data['max_'] = Value.de_json(data.get('max_'), client)
return cls(client=client, **data)

ファイルの表示

@ -3,12 +3,12 @@ from yandex_music import YandexMusicObject
class Enum(YandexMusicObject):
def __init__(self,
type,
type_,
name,
possible_values,
client=None,
**kwargs):
self.type = type
self.type = type_
self.name = name
self.possible_values = possible_values

ファイルの表示

@ -3,11 +3,11 @@ from yandex_music import YandexMusicObject
class Id(YandexMusicObject):
def __init__(self,
type,
type_,
tag,
client=None,
**kwargs):
self.type = type
self.type = type_
self.tag = tag
self.client = client

ファイルの表示

@ -33,6 +33,6 @@ class Restrictions(YandexMusicObject):
data = super(Restrictions, cls).de_json(data, client)
for key, value in data.items():
data[key] = de_json.get(value.get('type'))(value, client)
data[key] = de_json.get(value.get('type_'))(value, client)
return cls(client=client, **data)

ファイルの表示

@ -3,12 +3,12 @@ from yandex_music import YandexMusicObject
class Sequence(YandexMusicObject):
def __init__(self,
type,
type_,
track,
liked,
client=None,
**kwargs):
self.type = type
self.type = type_
self.track = track
self.liked = liked

ファイルの表示

@ -3,7 +3,7 @@ from yandex_music import YandexMusicObject
class Station(YandexMusicObject):
def __init__(self,
id,
id_,
name,
icon,
mts_icon,
@ -14,7 +14,7 @@ class Station(YandexMusicObject):
parent_id=None,
client=None,
**kwargs):
self.id = id
self.id = id_
self.name = name
self.icon = icon
self.mts_icon = mts_icon
@ -36,7 +36,7 @@ class Station(YandexMusicObject):
data = super(Station, cls).de_json(data, client)
from yandex_music import Id, Icon, Restrictions
data['id'] = Id.de_json(data.get('id'), client)
data['id_'] = Id.de_json(data.get('id_'), client)
data['parent_id'] = Id.de_json(data.get('parent_id'), client)
data['icon'] = Icon.de_json(data.get('icon'), client)
data['mts_icon'] = Icon.de_json(data.get('mts_icon'), client)

ファイルの表示

@ -3,13 +3,13 @@ from yandex_music import YandexMusicObject
class StationTracksResult(YandexMusicObject):
def __init__(self,
id,
id_,
sequence,
batch_id,
pumpkin,
client=None,
**kwargs):
self.id = id
self.id = id_
self.sequence = sequence
self.batch_id = batch_id
self.pumpkin = pumpkin
@ -24,7 +24,7 @@ class StationTracksResult(YandexMusicObject):
data = super(StationTracksResult, cls).de_json(data, client)
from yandex_music import Id, Sequence
data['id'] = Id.de_json(data.get('id'), client)
data['id_'] = Id.de_json(data.get('id_'), client)
data['sequence'] = Sequence.de_list(data.get('sequence'), client)
return cls(client=client, **data)

ファイルの表示

@ -12,12 +12,12 @@ de_json_result = {
class Best(YandexMusicObject):
def __init__(self,
type,
type_,
result,
text=None,
client=None,
**kwargs):
self.type = type
self.type = type_
self.result = result
self.text = text
@ -31,6 +31,6 @@ class Best(YandexMusicObject):
return None
data = super(Best, cls).de_json(data, client)
data['result'] = de_json_result.get(data.get('type'))(data.get('result'), client)
data['result'] = de_json_result.get(data.get('type_'))(data.get('result'), client)
return cls(client=client, **data)

ファイルの表示

@ -27,11 +27,11 @@ class SearchResult(YandexMusicObject):
self._id_attrs = (self.total, self.per_page, self.order, self.results)
@classmethod
def de_json(cls, data, client, type=None):
def de_json(cls, data, client, type_=None):
if not data:
return None
data = super(SearchResult, cls).de_json(data, client)
data['results'] = de_json_result.get(type)(data.get('results'), client)
data['results'] = de_json_result.get(type_)(data.get('results'), client)
return cls(client=client, **data)

ファイルの表示

@ -82,15 +82,15 @@ class Account(YandexMusicObject):
if self.uid:
self._id_attrs = (self.uid,)
def download_avatar(self, filename, format='normal'):
def download_avatar(self, filename, format_='normal'):
"""Загрузка изображения пользователя.
Args:
filename (:obj:`str`): Путь для сохранения файла с названием и расширением.
format (:obj:`str`): Формат желаемого изображения (normal, orig, small, big).
format_ (:obj:`str`): Формат желаемого изображения (normal, orig, small, big).
"""
self.client.request.download(f'https://upics.yandex.net/{self.uid}/{format}', filename)
self.client.request.download(f'https://upics.yandex.net/{self.uid}/{format_}', filename)
@classmethod
def de_json(cls, data, client):

ファイルの表示

@ -26,7 +26,7 @@ class Product(YandexMusicObject):
Args:
product_id (:obj:`str`): Уникальный идентификатор.
type (:obj:`str`): Тип продаваемого.
type_ (:obj:`str`): Тип продаваемого.
common_period_duration (:obj:`str`): Длительность общего периода.
duration (:obj:`int`): Длительность.
trial_duration (:obj:`int`): Длительность испытательного срока.
@ -48,7 +48,7 @@ class Product(YandexMusicObject):
def __init__(self,
product_id,
type,
type_,
common_period_duration,
duration,
trial_duration,
@ -66,7 +66,7 @@ class Product(YandexMusicObject):
client=None,
**kwargs):
self.product_id = product_id
self.type = type
self.type = type_
self.common_period_duration = common_period_duration
self.duration = duration
self.trial_duration = trial_duration

ファイルの表示

@ -15,7 +15,7 @@ class Lyrics(YandexMusicObject):
Music.
Args:
id (:obj:`int`): Уникальный идентификатор текста трека.
id_ (:obj:`int`): Уникальный идентификатор текста трека.
lyrics (:obj:`str`): Первые строки текст песни.
has_rights (:obj:`bool`): Есть ли права.
full_lyrics (:obj:`str`): Текст песни.
@ -27,7 +27,7 @@ class Lyrics(YandexMusicObject):
"""
def __init__(self,
id,
id_,
lyrics,
full_lyrics,
has_rights,
@ -35,7 +35,7 @@ class Lyrics(YandexMusicObject):
show_translation,
client=None,
**kwargs):
self.id = id
self.id = id_
self.lyrics = lyrics
self.full_lyrics = full_lyrics
self.has_rights = has_rights
@ -60,7 +60,7 @@ class Lyrics(YandexMusicObject):
"""
if not data:
return None
data = super(Lyrics, cls).de_json(data, client)
return cls(client=client, **data)

ファイルの表示

@ -14,7 +14,7 @@ class Supplement(YandexMusicObject):
Music.
Args:
id (:obj:`int`): Уникальный идентификатор дополнительной информации.
id_ (:obj:`int`): Уникальный идентификатор дополнительной информации.
lyrics (:obj:`yandex_music.Lyrics`): Объект класса :class:`yandex_music.Lyrics` представляющий текст песни.
videos (:obj:`yandex_music.VideoSupplement`): Объект класса :class:`yandex_music.VideoSupplement` представляющий
видео.
@ -25,13 +25,13 @@ class Supplement(YandexMusicObject):
"""
def __init__(self,
id,
id_,
lyrics,
videos,
radio_is_available,
client=None,
**kwargs):
self.id = id
self.id = id_
self.lyrics = lyrics
self.videos = videos
self.radio_is_available = radio_is_available
@ -53,7 +53,7 @@ class Supplement(YandexMusicObject):
"""
if not data:
return None
data = super(Supplement, cls).de_json(data, client)
from yandex_music import Lyrics, VideoSupplement
data['lyrics'] = Lyrics.de_json(data.get('lyrics'), client)

ファイルの表示

@ -3,11 +3,11 @@ from yandex_music import YandexMusicObject
class Major(YandexMusicObject):
def __init__(self,
id,
id_,
name,
client=None,
**kwargs):
self.id = id
self.id = id_
self.name = name
self.client = client

ファイルの表示

@ -3,7 +3,7 @@ from yandex_music import YandexMusicObject
class Track(YandexMusicObject):
def __init__(self,
id,
id_,
title,
available,
artists,
@ -12,7 +12,7 @@ class Track(YandexMusicObject):
lyrics_available=None,
real_id=None,
og_image=None,
type=None,
type_=None,
cover_uri=None,
major=None,
duration_ms=None,
@ -28,7 +28,7 @@ class Track(YandexMusicObject):
available_full_without_permission=None,
client=None,
**kwargs):
self.id = id
self.id = id_
self.title = title
self.available = available
self.artists = artists
@ -38,7 +38,7 @@ class Track(YandexMusicObject):
self.lyrics_available = lyrics_available
self.real_id = real_id
self.og_image = og_image
self.type = type
self.type = type_
self.cover_uri = cover_uri
self.major = major
self.duration_ms = duration_ms

ファイルの表示

@ -12,7 +12,7 @@ class TrackShort(YandexMusicObject):
Music.
Args:
id (:obj:`str`): Уникальный идентификатор трека.
id_ (:obj:`str`): Уникальный идентификатор трека.
timestamp (:obj:`str`): Дата TODO.
album_id (:obj:`str`, optional): Уникальный идентификатор альбома.
client (:obj:`yandex_music.Client`, optional): Объект класса :class:`yandex_music.Client` представляющий клиент
@ -21,12 +21,12 @@ class TrackShort(YandexMusicObject):
"""
def __init__(self,
id,
id_,
timestamp,
album_id=None,
client=None,
**kwargs):
self.id = id
self.id = id_
self.timestamp = timestamp
self.album_id = album_id

ファイルの表示

@ -1,12 +1,14 @@
import re
import logging
import requests
import builtins
# Не используется ujson из-за отсутствия в нём object_hook'a
# Отправка вообще application/x-www-form-urlencoded, а не JSON'a
# https://github.com/psf/requests/blob/master/requests/models.py#L508
import json
import requests
from yandex_music.utils.captcha_response import CaptchaResponse
from yandex_music.utils.response import Response
from yandex_music.exceptions import Unauthorized, BadRequest, NetworkError, YandexMusicError, CaptchaRequired, \
@ -17,6 +19,7 @@ HEADERS = {
'X-Yandex-Music-Client': 'WindowsPhone/3.20',
}
reserved_names = [name.lower() for name in dir(builtins)] + ['client']
logging.getLogger('urllib3').setLevel(logging.WARNING)
@ -63,7 +66,8 @@ class Request:
cleaned_object = {}
for key, value in obj.items():
key = Request._convert_camel_to_snake(key.replace('-', '_'))
key = key.replace('client', 'client_')
if key.lower() in reserved_names:
key += '_'
if len(key) and key[0].isdigit():
key = '_' + key