mirror of
https://github.com/beetbox/beets.git
synced 2025-12-07 17:16:07 +01:00
create method for deepcopy
This commit is contained in:
parent
84bbd14c76
commit
d7ed84646e
2 changed files with 20 additions and 60 deletions
|
|
@ -148,6 +148,16 @@ class AlbumInfo(AttrDict):
|
|||
for track in self.tracks:
|
||||
track.decode(codec)
|
||||
|
||||
def dup_albuminfo(self):
|
||||
dupe = AlbumInfo()
|
||||
dupe.update(self)
|
||||
if 'tracks' in self:
|
||||
tracks = []
|
||||
for track in self.tracks:
|
||||
tracks.append(track.dup_trackinfo())
|
||||
dupe.tracks = tracks
|
||||
return dupe
|
||||
|
||||
|
||||
class TrackInfo(AttrDict):
|
||||
"""Describes a canonical track present on a release. Appears as part
|
||||
|
|
@ -209,6 +219,10 @@ class TrackInfo(AttrDict):
|
|||
if isinstance(value, bytes):
|
||||
setattr(self, fld, value.decode(codec, 'ignore'))
|
||||
|
||||
def dup_trackinfo(self):
|
||||
dupe = TrackInfo()
|
||||
dupe.update(self)
|
||||
|
||||
|
||||
# Candidate distance scoring.
|
||||
|
||||
|
|
|
|||
|
|
@ -753,32 +753,14 @@ class ApplyTest(_common.TestCase, ApplyTestUtil):
|
|||
|
||||
def test_album_artist_overrides_empty_track_artist(self):
|
||||
# make a deepcopy of self.info
|
||||
trackinfo = []
|
||||
track = TrackInfo()
|
||||
track.update(self.info.tracks[0])
|
||||
trackinfo.append(track)
|
||||
track = TrackInfo()
|
||||
track.update(self.info.tracks[1])
|
||||
trackinfo.append(track)
|
||||
my_info = AlbumInfo()
|
||||
my_info.update(self.info)
|
||||
my_info.tracks = trackinfo
|
||||
my_info = self.info.dup_albuminfo()
|
||||
self._apply(info=my_info)
|
||||
self.assertEqual(self.items[0].artist, 'artistNew')
|
||||
self.assertEqual(self.items[1].artist, 'artistNew')
|
||||
|
||||
def test_album_artist_overridden_by_nonempty_track_artist(self):
|
||||
# make a deepcopy of self.info
|
||||
trackinfo = []
|
||||
track = TrackInfo()
|
||||
track.update(self.info.tracks[0])
|
||||
trackinfo.append(track)
|
||||
track = TrackInfo()
|
||||
track.update(self.info.tracks[1])
|
||||
trackinfo.append(track)
|
||||
my_info = AlbumInfo()
|
||||
my_info.update(self.info)
|
||||
my_info.tracks = trackinfo
|
||||
my_info = self.info.dup_albuminfo()
|
||||
my_info.tracks[0].artist = 'artist1!'
|
||||
my_info.tracks[1].artist = 'artist2!'
|
||||
self._apply(info=my_info)
|
||||
|
|
@ -801,16 +783,7 @@ class ApplyTest(_common.TestCase, ApplyTestUtil):
|
|||
|
||||
def test_full_date_applied(self):
|
||||
# make a deepcopy of self.info
|
||||
trackinfo = []
|
||||
track = TrackInfo()
|
||||
track.update(self.info.tracks[0])
|
||||
trackinfo.append(track)
|
||||
track = TrackInfo()
|
||||
track.update(self.info.tracks[1])
|
||||
trackinfo.append(track)
|
||||
my_info = AlbumInfo()
|
||||
my_info.update(self.info)
|
||||
my_info.tracks = trackinfo
|
||||
my_info = self.info.dup_albuminfo()
|
||||
my_info.year = 2013
|
||||
my_info.month = 12
|
||||
my_info.day = 18
|
||||
|
|
@ -826,16 +799,7 @@ class ApplyTest(_common.TestCase, ApplyTestUtil):
|
|||
self.items.append(Item(year=4, month=5, day=6))
|
||||
|
||||
# make a deepcopy of self.info
|
||||
trackinfo = []
|
||||
track = TrackInfo()
|
||||
track.update(self.info.tracks[0])
|
||||
trackinfo.append(track)
|
||||
track = TrackInfo()
|
||||
track.update(self.info.tracks[1])
|
||||
trackinfo.append(track)
|
||||
my_info = AlbumInfo()
|
||||
my_info.update(self.info)
|
||||
my_info.tracks = trackinfo
|
||||
my_info = self.info.dup_albuminfo()
|
||||
my_info.year = 2013
|
||||
self._apply(info=my_info)
|
||||
|
||||
|
|
@ -856,16 +820,7 @@ class ApplyTest(_common.TestCase, ApplyTestUtil):
|
|||
|
||||
def test_data_source_applied(self):
|
||||
# make a deepcopy of self.info
|
||||
trackinfo = []
|
||||
track = TrackInfo()
|
||||
track.update(self.info.tracks[0])
|
||||
trackinfo.append(track)
|
||||
track = TrackInfo()
|
||||
track.update(self.info.tracks[1])
|
||||
trackinfo.append(track)
|
||||
my_info = AlbumInfo()
|
||||
my_info.update(self.info)
|
||||
my_info.tracks = trackinfo
|
||||
my_info = self.info.dup_albuminfo()
|
||||
my_info.data_source = 'MusicBrainz'
|
||||
self._apply(info=my_info)
|
||||
|
||||
|
|
@ -928,16 +883,7 @@ class ApplyCompilationTest(_common.TestCase, ApplyTestUtil):
|
|||
|
||||
def test_va_flag_sets_comp(self):
|
||||
# make a deepcopy of self.info
|
||||
trackinfo = []
|
||||
track = TrackInfo()
|
||||
track.update(self.info.tracks[0])
|
||||
trackinfo.append(track)
|
||||
track = TrackInfo()
|
||||
track.update(self.info.tracks[1])
|
||||
trackinfo.append(track)
|
||||
va_info = AlbumInfo()
|
||||
va_info.update(self.info)
|
||||
va_info.tracks = trackinfo
|
||||
va_info = self.info.dup_albuminfo()
|
||||
va_info.va = True
|
||||
self._apply(info=va_info)
|
||||
self.assertTrue(self.items[0].comp)
|
||||
|
|
|
|||
Loading…
Reference in a new issue