'Lookup the given URIs.
If the URI expands to multiple tracks, the returned list will contain
them all.
:param uri: track URI
:type uri: string or :class:`None`
:param uris: track URIs
:type uris: list of string or :class:`None`
:rtype: list of :class:`mopidy.models.Track` if uri was set or
{uri: list of :class:`mopidy.models.Track`} if uris was set.
.. versionadded:: 1.0
The ``uris`` argument.
.. deprecated:: 1.0
The ``uri`` argument. Use ``uris`` instead.'

def lookup(self, uri=None, uris=None):

    if (sum(((o is not None) for o in [uri, uris])) != 1):
        raise ValueError(u'Exactly    one    of    "uri"    or    "uris"    must    be    set')
    ((uris is None) or validation.check_uris(uris))
    ((uri is None) or validation.check_uri(uri))
    if uri:
        deprecation.warn(u'core.library.lookup:uri_arg')
    if (uri is not None):
        uris = [uri]
    futures = {}
    results = {u: [] for u in uris}
    for (backend, backend_uris) in self._get_backends_to_uris(uris).items():
        if backend_uris:
            for u in backend_uris:
                futures[(backend, u)] = backend.library.lookup(u)
    for ((backend, u), future) in futures.items():
        with _backend_error_handling(backend):
            result = future.get()
            if (result is not None):
                validation.check_instances(result, models.Track)
                results[u] = [r for r in result if r.uri]
    if uri:
        return results[uri]
    return results
