trackdb: Clean up __init__.py file

And use the new tags.get_state() and tag.set_state() functions

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-06-27 10:15:31 -04:00
parent 0b4c440d66
commit c27d4d5ce1
2 changed files with 28 additions and 32 deletions

View File

@ -100,10 +100,10 @@ class TestTrackDB(unittest.TestCase):
self.count_removed += 1
def test_trackdb_init(self):
self.assertIsInstance(trackdb.save_bus, bus.Bus)
self.assertIsInstance(trackdb.Bus, bus.Bus)
self.assertIsInstance(trackdb.Library, trackdb.LibraryStore)
self.assertEqual(trackdb.db_file, "trackdb.pickle")
self.assertEqual(trackdb.save_bus.timeout, 500)
self.assertEqual(trackdb.File, "trackdb.pickle")
self.assertEqual(trackdb.Bus.timeout, 500)
self.assertIn(trackdb.save, trackdb.Library.Added.subscribers)
self.assertIn(trackdb.save, trackdb.Library.Removed.subscribers)
@ -127,17 +127,17 @@ class TestTrackDB(unittest.TestCase):
self.assertEqual(self.count_removed, 1)
def test_trackdb_save_load(self):
db_file = data.DataFile(trackdb.db_file, data.READ)
db_file = data.DataFile(trackdb.File, data.READ)
lib = trackdb.Library.add(test_tracks)
lib.scan()
trackdb.save()
self.assertEqual(trackdb.save_bus.passengers, [ (trackdb._do_save, ()) ])
self.assertEqual(trackdb.Bus.passengers, [ (trackdb._do_save, ()) ])
self.assertFalse(db_file.exists())
lib.scan.join()
trackdb.save_bus.complete()
self.assertEqual(trackdb.save_bus.passengers, [ ])
trackdb.Bus.complete()
self.assertEqual(trackdb.Bus.passengers, [ ])
self.assertTrue(db_file.exists())
trackdb.tags.reset()
@ -154,8 +154,8 @@ class TestTrackDB(unittest.TestCase):
def test_trackdb_stress(self):
lib = trackdb.Library.add(pathlib.Path("./trier/Test Library/"))
lib.scan()
trackdb.save_bus.complete()
lib.scan().join()
trackdb.Bus.complete()
def test_trackdb_reset(self):
trackdb.Tracks.Added.register(1)
@ -165,7 +165,7 @@ class TestTrackDB(unittest.TestCase):
trackdb.Library.Removed.register(1)
trackdb.Library.store = { "a" : 1, "b" : 2, "c" : 3 }
trackdb.need_save = True
with data.DataFile(trackdb.db_file, data.WRITE) as f:
with data.DataFile(trackdb.File, data.WRITE) as f:
f.pickle([ 0, [] ])
trackdb.reset()
@ -175,4 +175,4 @@ class TestTrackDB(unittest.TestCase):
self.assertIn(trackdb.save, trackdb.Tracks.Updated.subscribers)
self.assertIn(trackdb.save, trackdb.Library.Added.subscribers)
self.assertIn(trackdb.save, trackdb.Library.Removed.subscribers)
self.assertFalse(data.DataFile(trackdb.db_file, data.READ).exists())
self.assertFalse(data.DataFile(trackdb.File, data.READ).exists())

View File

@ -1,31 +1,26 @@
# Copyright 2020 (c) Anna Schumaker.
from lib import bus
from lib import data
from lib import publisher
from lib import tag
from lib import tagstore
from lib import thread
from . import allocator
from . import tags
from . import track
import lib
import pathlib
import threading
db_file = "trackdb.pickle"
save_bus = bus.Bus(500)
File = "trackdb.pickle"
Bus = lib.bus.Bus(500)
Tracks = allocator.TrackAllocator()
class LibraryTag(tag.Tag):
class LibraryTag(lib.tag.Tag):
def __init__(self, path):
super().__init__(path)
self.clear = thread.Thread(self.__do_clear__)
self.scan = thread.Thread(self.__do_scan__)
self.clear = lib.thread.Thread(self.__do_clear__)
self.scan = lib.thread.Thread(self.__do_scan__)
def __setstate__(self, state):
super().__setstate__(state)
self.tracks = [ Tracks[i] for i in state["tracks"] ]
self.clear = thread.Thread(self.__do_clear__)
self.scan = thread.Thread(self.__do_scan__)
self.clear = lib.thread.Thread(self.__do_clear__)
self.scan = lib.thread.Thread(self.__do_scan__)
def __do_scan__(self):
for trak in Tracks.autoremove(self):
@ -43,7 +38,7 @@ class LibraryTag(tag.Tag):
self.tracks.clear()
class LibraryStore(tagstore.TagStore):
class LibraryStore(lib.tagstore.TagStore):
def __alloc_tag__(self, name, sort):
return LibraryTag(name)
@ -58,18 +53,19 @@ Library = LibraryStore()
def _do_save():
with data.DataFile(db_file, data.WRITE) as f:
f.pickle([ tags.Artist, tags.Album, tags.Genre, tags.Decade, tags.Year, Tracks, Library ])
with lib.data.DataFile(File, lib.data.WRITE) as f:
f.pickle([ tags.get_state(), Tracks, Library ])
def save(*args):
save_bus.board(_do_save)
Bus.board(_do_save)
def load():
global Library
global Tracks
with data.DataFile(db_file, data.READ) as f:
with lib.data.DataFile(File, lib.data.READ) as f:
if f.exists():
(tags.Artist, tags.Album, tags.Genre, tags.Decade, tags.Year, Tracks, Library) = f.unpickle()
(tagstate, Tracks, Library) = f.unpickle()
tags.set_state(*tagstate)
def __register_callbacks():
Library.Added.register(save)
@ -83,7 +79,7 @@ def reset():
Tracks.reset()
Library.reset()
tags.reset()
save_bus.clear()
Bus.clear()
data.DataFile(db_file, data.READ).remove()
lib.data.DataFile(File, lib.data.READ).remove()
__register_callbacks()