Commit Graph

1213 Commits

Author SHA1 Message Date
Anna Schumaker 29608caddb curds: Remove the data_file_path() function
Now that we have the DataFile class we can remove this function as its
main use is now hidden from users.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-03-02 16:37:39 -05:00
Anna Schumaker 2c538771a3 curds: Add a class for pickling and unpickling objects
This gives us a convenient way to handle saved data. We use the 'with'
statment to handle any errors without crashing.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-03-02 16:24:52 -05:00
Anna Schumaker f56e6764a8 curds: Clean up unused code
I added a make target for code coverage, and used that to identify code
that isn't getting run.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-02-15 16:09:09 -05:00
Anna Schumaker 1eac742bc4 curds: Move the ThreadPoolExecutor into the track code
I think it makes sense to do this transparently through the Track code
so higher layers don't have to do as much work.  We'll just return a
Future-object corresponding to the track that will be added.

It makes sense to only have one thread in this case, since __add() needs
exclusive access to the track_list for its entire execution.  Anything
more would just create conflicts and actually increase execution time.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-02-15 15:54:00 -05:00
Anna Schumaker 2c022163ad curds: Create a single place to get a path to a data file
It's useful to have a way to override where data gets placed in the
filesystem so we don't accidentally clobber production data with test
data while running tests.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-02-14 08:08:42 -05:00
Anna Schumaker 0705f86d81 curds: Add a test for parallel track scanning
And add code for generating a large test library to make stress testing
possible.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-02-06 14:35:35 -05:00
Anna Schumaker 9b64c590cc curds: Switch to using the asyncio module for testing threading
I'm planning to use the asyncio code for running background threads, so
let's switch to it for now to get a feel for how it works.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-02-05 16:20:31 -05:00
Anna Schumaker 2a98aac6de curds: Keep a list of created tracks
We'll use this for scanning and updating the library later.  For now,
just keep everything in a list and do a uniqueness test whenever
something new is added.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-02-04 17:02:04 -05:00
Anna Schumaker c66405bd80 curds: Add basic track class
We account for some fallback values, and also attempt to detect
discnumbers from the album name.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-02-04 17:01:52 -05:00
Anna Schumaker a26e8867fe curds: Try to detect album names that embed a discnumber
We want to be able to pull out just the album name to make a more
accurate musicbrainz search, and so multiple discs link to the same
album object.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-01-28 17:00:40 -05:00
Anna Schumaker 306fa0f40c curds: Add function for album lookups
We want to share album objects whenever possible, so add a lookup
function for checking this.  Python built-in objects (like dictionaries)
are supposedly threadsafe, so we don't need a lock to access them but I
added the threadpool test anyway just in case.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-01-28 16:06:37 -05:00
Anna Schumaker 3b42ca233e curds: Add basic album class
We'll eventually pull out all the fields we need from a Mutagen
FileInfo class, but that has a dictionary-like interface so we can
easily fake one up for testing.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-01-24 16:27:25 -05:00
Anna Schumaker eecc32359f Initial commit 2019-01-24 09:35:41 -05:00