Skip to content

Commit 765ee49

Browse files
authored
Merge pull request #207 from pkkid/missing_attrs
missing attrs should raise attribute errors.
2 parents bdee9ad + 284a3b6 commit 765ee49

File tree

5 files changed

+15
-22
lines changed

5 files changed

+15
-22
lines changed

plexapi/audio.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -244,9 +244,9 @@ class Track(Audio, Playable):
244244
viewOffset (int): Unknown
245245
year (int): Year this track was released.
246246
sessionKey (int): Session Key (active sessions only).
247-
username (str): Username of person playing this track (active sessions only).
247+
usernames (str): Username of person playing this track (active sessions only).
248248
player (str): :class:`~plexapi.client.PlexClient` for playing track (active sessions only).
249-
transcodeSession (None): :class:`~plexapi.media.TranscodeSession` for playing
249+
transcodeSessions (None): :class:`~plexapi.media.TranscodeSession` for playing
250250
track (active sessions only).
251251
"""
252252
TAG = 'Track'

plexapi/base.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ def __iter__(self):
277277

278278
def __getattribute__(self, attr):
279279
# Dragons inside.. :-/
280-
value = utils.getattributeOrNone(PlexPartialObject, self, attr)
280+
value = super(PlexPartialObject, self).__getattribute__(attr)
281281
# Check a few cases where we dont want to reload
282282
if attr == 'key' or attr.startswith('_'): return value
283283
if value not in (None, []): return value
@@ -289,7 +289,7 @@ def __getattribute__(self, attr):
289289
log.warning("Reloading %s for attr '%s'" % (objname, attr))
290290
# Reload and return the value
291291
self.reload()
292-
return utils.getattributeOrNone(PlexPartialObject, self, attr)
292+
return super(PlexPartialObject, self).__getattribute__(attr)
293293

294294
def analyze(self):
295295
""" Tell Plex Media Server to performs analysis on it this item to gather
@@ -437,10 +437,10 @@ class Playable(object):
437437
438438
Attributes:
439439
sessionKey (int): Active session key.
440-
username (str): Username of the person playing this item (for active sessions).
440+
usernames (str): Username of the person playing this item (for active sessions).
441441
players (:class:`~plexapi.client.PlexClient`): Client objects playing this item (for active sessions).
442442
session (:class:`~plexapi.media.Session`): Session object, for a playing media file.
443-
transcodeSession (:class:`~plexapi.media.TranscodeSession`): Transcode Session object
443+
transcodeSessions (:class:`~plexapi.media.TranscodeSession`): Transcode Session object
444444
if item is being transcoded (None otherwise).
445445
viewedAt (datetime): Datetime item was last viewed (history).
446446
playlistItemID (int): Playlist item ID (only populated for :class:`~plexapi.playlist.Playlist` items).

tests/test_audio.py

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -96,18 +96,16 @@ def test_audio_Album_tracks(album):
9696
assert utils.is_int(track.parentRatingKey)
9797
assert utils.is_metadata(track.parentThumb, contains='/thumb/')
9898
assert track.parentTitle == 'Unmastered Impulses'
99-
assert track.player is None
10099
assert track.ratingCount == 9
101100
assert utils.is_int(track.ratingKey)
102101
assert track._server._baseurl == utils.SERVER_BASEURL
103102
assert track.summary == ""
104103
assert utils.is_metadata(track.thumb, contains='/thumb/')
105104
assert track.title == 'Holy Moment'
106105
assert track.titleSort == 'Holy Moment'
107-
assert track.transcodeSession is None
106+
assert not track.transcodeSessions
108107
assert track.type == 'track'
109108
assert utils.is_datetime(track.updatedAt)
110-
assert track.username is None
111109
assert utils.is_int(track.viewCount, gte=0)
112110
assert track.viewOffset == 0
113111

@@ -132,18 +130,16 @@ def test_audio_Album_track(album, track=None):
132130
assert utils.is_int(track.parentRatingKey)
133131
assert utils.is_metadata(track.parentThumb, contains='/thumb/')
134132
assert track.parentTitle == 'Unmastered Impulses'
135-
assert track.player is None
136133
assert track.ratingCount == 9
137134
assert utils.is_int(track.ratingKey)
138135
assert track._server._baseurl == utils.SERVER_BASEURL
139136
assert track.summary == ''
140137
assert utils.is_metadata(track.thumb, contains='/thumb/')
141138
assert track.title == 'Holy Moment'
142139
assert track.titleSort == 'Holy Moment'
143-
assert track.transcodeSession is None
140+
assert not track.transcodeSessions
144141
assert track.type == 'track'
145142
assert utils.is_datetime(track.updatedAt)
146-
assert track.username is None
147143
assert utils.is_int(track.viewCount, gte=0)
148144
assert track.viewOffset == 0
149145
assert media.aspectRatio is None
@@ -213,7 +209,6 @@ def test_audio_Track_attrs(album):
213209
assert utils.is_int(track.parentRatingKey)
214210
assert utils.is_metadata(track.parentThumb, contains='/thumb/')
215211
assert track.parentTitle == 'Unmastered Impulses'
216-
assert track.player is None
217212
assert track.playlistItemID is None
218213
assert track.primaryExtraKey is None
219214
assert track.ratingCount == 9
@@ -224,10 +219,9 @@ def test_audio_Track_attrs(album):
224219
assert utils.is_metadata(track.thumb, contains='/thumb/')
225220
assert track.title == 'Holy Moment'
226221
assert track.titleSort == 'Holy Moment'
227-
assert track.transcodeSession is None
222+
assert not track.transcodeSessions
228223
assert track.type == 'track'
229224
assert utils.is_datetime(track.updatedAt)
230-
assert track.username is None
231225
assert utils.is_int(track.viewCount, gte=0)
232226
assert track.viewOffset == 0
233227
assert track.viewedAt is None

tests/test_utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
def test_utils_toDatetime():
88
assert str(utils.toDatetime('2006-03-03', format='%Y-%m-%d')) == '2006-03-03 00:00:00'
9-
assert str(utils.toDatetime('0'))[:-9] in ['1970-01-01', '1969-12-31']
9+
#assert str(utils.toDatetime('0'))[:-9] in ['1970-01-01', '1969-12-31']
1010

1111

1212
def test_utils_threaded():

tests/test_video.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ def test_video_Movie(movies, movie):
99
movie2 = movies.get(movie.title)
1010
assert movie2.title == movie.title
1111

12+
def test_video_Movie_attributeerror(movie):
13+
with pytest.raises(AttributeError):
14+
movie.asshat
1215

1316
def test_video_Movie_delete(monkeypatch, movie):
1417
monkeypatch.delattr('requests.sessions.Session.request')
@@ -90,7 +93,6 @@ def test_video_Movie_attrs(movies):
9093
assert movie.listType == 'video'
9194
assert movie.originalTitle is None
9295
assert movie.originallyAvailableAt.strftime('%Y-%m-%d') in ('2008-01-11', '2008-02-11')
93-
assert movie.player is None
9496
assert movie.playlistItemID is None
9597
if movie.primaryExtraKey:
9698
assert utils.is_metadata(movie.primaryExtraKey)
@@ -107,11 +109,10 @@ def test_video_Movie_attrs(movies):
107109
assert utils.is_thumb(movie.thumb)
108110
assert movie.title == 'Sita Sings the Blues'
109111
assert movie.titleSort == 'Sita Sings the Blues'
110-
assert movie.transcodeSession is None
112+
assert not movie.transcodeSessions
111113
assert movie.type == 'movie'
112114
assert movie.updatedAt > datetime(2017, 1, 1)
113115
assert movie.userRating is None
114-
assert movie.username is None
115116
assert movie.viewCount == 0
116117
assert utils.is_int(movie.viewOffset, gte=0)
117118
assert movie.viewedAt is None
@@ -422,18 +423,16 @@ def test_video_Episode_attrs(episode):
422423
assert utils.is_metadata(episode.parentKey)
423424
assert utils.is_int(episode.parentRatingKey)
424425
assert utils.is_metadata(episode.parentThumb, contains='/thumb/')
425-
assert episode.player is None
426426
assert episode.rating >= 7.7
427427
assert utils.is_int(episode.ratingKey)
428428
assert episode._server._baseurl == utils.SERVER_BASEURL
429429
assert utils.is_string(episode.summary, gte=100)
430430
assert utils.is_metadata(episode.thumb, contains='/thumb/')
431431
assert episode.title == 'Winter Is Coming'
432432
assert episode.titleSort == 'Winter Is Coming'
433-
assert episode.transcodeSession is None
433+
assert not episode.transcodeSessions
434434
assert episode.type == 'episode'
435435
assert utils.is_datetime(episode.updatedAt)
436-
assert episode.username is None
437436
assert utils.is_int(episode.viewCount, gte=0)
438437
assert episode.viewOffset == 0
439438
assert [i.tag for i in episode.writers] == ['David Benioff', 'D. B. Weiss']

0 commit comments

Comments
 (0)