ImageMagick 7.1.1-12 changed the default colorspaces used by the PHASH
compare function from sRGB,HCLp to xyY,HSB. This breaks the current code
for comparisons, so let's define the colorspaces ourselves.
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
The 'status' field is potentially null, and in this case the dictionary key it is not returned by the API. Using get will return null in this case. Tested locally and this solves the issue!
these are mostly in the tests, which didn't cause issues since the
affected directories usually have nice ASCII paths. For consistency, it
is nicer to always invoke syspath. That also avoids deprecation warnings
for the bytestring interfaces on Python <= 3.5. The bytestring
interfaces were undeprecated with PEP 529 in Python 3.6, such that we
didn't observe any actual failures.
probably an issue going back to the Python 2 -> 3 switch: `map` gives an
iterator nowadays so after the test case started iterating
BASH_COMPLETION_PATHS, print_completion() couldn't find the
(previously found) bash_completion anymore, and would log a spurious
warning about that.
Also, some cleaup of path type handling
tricky...
- the only way I found to express the concept of the "associated type"
(in Rust lingo) model_type was by making Type generic over its value
and null types.
- in addition, the class hierarchy of Integer and Float types had to be
modified, since previously some of them would have conflicting null
types relative to their super class (this required a change to the
edit plugin; hopefully no more breakage is caused by these changes)
- don't import the query module, but only the relevant Query's to avoid
confusing the module query and the class variable query
As far as I can tell, the fast SQL path was never used before, since a
query would use the default `clause()` implementation. It is only the
`FieldQuery.clause()` that could delegate to `col_clause()`, but
`PlaylistQuery` is not a `FieldQuery`.
- Add NamedQuery abstract class to be able to express the expectation
that a query should be such a query (and have a specific constructor
signature) in construct_query_part
- slightly (and probably completely irrelevantly) improve Query.__hash__
- also, sprinkle some ABC/abstractmethod around to clarify things
It seems like `Query`s and `Sort`s should really be generic over
`Model`.
Also, make use of the postponed evaluation of annotations that we get
with `from future import __annotations__`.
fanart.tv uses a string to output the number of likes (see https://fanart.tv/api-docs/api-v3/). In order to sort numerically we need to convert the string into an int.
beets does not currently store the "canonical" release group title,
only each release's title and disambiguation. Oddly, beets does store
the release group disambiguation.
Without this there is no way to determine a release group's title
without separately querying a data source.