mopidy / mopidy-scrobbler

Mopidy extension for scrobbling played tracks to Last.fm
https://mopidy.com/ext/scrobbler/
Apache License 2.0
66 stars 14 forks source link

Plugin gets disabled due to outdated Python dependencies on Arch Linux #39

Closed JoshMock closed 1 year ago

JoshMock commented 1 year ago

Running Mopidy with the scrobbler plugin on Arch Linux, which is a rolling update distribution, and a recent update has caused mopidy-scrobbler to get disabled at startup. From my systemd journal:

Disabled extension scrobbler: (rfc3986 2.0.0 (/usr/lib/python3.10/site-packages), Requirement.parse('rfc3986[idna2008]<2,>=1.3'), {'httpx'})

I know there's not a maintainer for this project at the moment, so if I can find the time I might try to contribute a patch for this and consider becoming a maintainer eventually. :heart:

jodal commented 1 year ago

Hum, this seems odd, as the scrobbler extension only has dependencies with a lower version bound, ref https://github.com/mopidy/mopidy-scrobbler/blob/master/setup.cfg#L29-L32. Maybe there's another package in the dependency chain that needs to be updated on Arch?

Could you provide the output of mopidy deps?

JoshMock commented 1 year ago

mopidy deps output:

Executable: /usr/bin/mopidy
Platform: Linux-5.19.12-arch1-1-x86_64-with-glibc2.36
Python: CPython 3.10.7 from /usr/lib/python3.10
Mopidy: 3.3.0 from /usr/lib/python3.10/site-packages
  Pykka: 3.1.1 from /usr/lib/python3.10/site-packages
  requests: 2.28.1 from /usr/lib/python3.10/site-packages
    idna: 3.4 from /usr/lib/python3.10/site-packages
    urllib3: 1.26.12 from /usr/lib/python3.10/site-packages
  setuptools: 63.0.0 from /usr/lib/python3.10/site-packages
  tornado: 6.2 from /usr/lib/python3.10/site-packages
Mopidy-MPRIS: 3.0.3 from /usr/lib/python3.10/site-packages
  Mopidy: 3.3.0 from /usr/lib/python3.10/site-packages
  Pykka: 3.1.1 from /usr/lib/python3.10/site-packages
  setuptools: 63.0.0 from /usr/lib/python3.10/site-packages
  pydbus: 0.6.0 from /usr/lib/python3.10/site-packages
Mopidy-Bookmarks: 0.1.4 from /home/joshmock/.local/lib/python3.10/site-packages
  Mopidy: 3.3.0 from /usr/lib/python3.10/site-packages
  Pykka: 3.1.1 from /usr/lib/python3.10/site-packages
  setuptools: 63.0.0 from /usr/lib/python3.10/site-packages
  peewee: 3.15.0 from /home/joshmock/.local/lib/python3.10/site-packages
Mopidy-MPD: 3.3.0 from /usr/lib/python3.10/site-packages
  Mopidy: 3.3.0 from /usr/lib/python3.10/site-packages
  Pykka: 3.1.1 from /usr/lib/python3.10/site-packages
  setuptools: 63.0.0 from /usr/lib/python3.10/site-packages
Mopidy-Bandcamp: 1.1.5 from /home/joshmock/.local/lib/python3.10/site-packages
  setuptools: 63.0.0 from /usr/lib/python3.10/site-packages
  Mopidy: 3.3.0 from /usr/lib/python3.10/site-packages
  Pykka: 3.1.1 from /usr/lib/python3.10/site-packages
Mopidy-Scrobbler: 2.0.1 from /usr/lib/python3.10/site-packages
  Mopidy: 3.3.0 from /usr/lib/python3.10/site-packages
  Pykka: 3.1.1 from /usr/lib/python3.10/site-packages
  setuptools: 63.0.0 from /usr/lib/python3.10/site-packages
  pylast: 5.0.0 from /usr/lib/python3.10/site-packages
    httpx: 0.23.0 from /usr/lib/python3.10/site-packages
      certifi: 2022.9.24 from /usr/lib/python3.10/site-packages
      sniffio: 1.3.0 from /usr/lib/python3.10/site-packages
      rfc3986: 2.0.0 from /usr/lib/python3.10/site-packages
      httpcore: 0.15.0 from /usr/lib/python3.10/site-packages
        h11: 0.13.0 from /usr/lib/python3.10/site-packages
        sniffio: 1.3.0 from /usr/lib/python3.10/site-packages
        anyio: 3.6.1 from /usr/lib/python3.10/site-packages
          idna: 3.4 from /usr/lib/python3.10/site-packages
          sniffio: 1.3.0 from /usr/lib/python3.10/site-packages
        certifi: 2022.9.24 from /usr/lib/python3.10/site-packages
Mopidy-Mowecl: 0.4.3 from /home/joshmock/.local/lib/python3.10/site-packages
  Mopidy: 3.3.0 from /usr/lib/python3.10/site-packages
  Pykka: 3.1.1 from /usr/lib/python3.10/site-packages
  setuptools: 63.0.0 from /usr/lib/python3.10/site-packages
  Mopidy-Bookmarks: 0.1.4 from /home/joshmock/.local/lib/python3.10/site-packages
    Mopidy: 3.3.0 from /usr/lib/python3.10/site-packages
    Pykka: 3.1.1 from /usr/lib/python3.10/site-packages
    setuptools: 63.0.0 from /usr/lib/python3.10/site-packages
    peewee: 3.15.0 from /home/joshmock/.local/lib/python3.10/site-packages
Mopidy-Tidal: 0.3.1 from /usr/lib/python3.10/site-packages
  setuptools: 63.0.0 from /usr/lib/python3.10/site-packages
  Mopidy: 3.3.0 from /usr/lib/python3.10/site-packages
  Pykka: 3.1.1 from /usr/lib/python3.10/site-packages
  tidalapi: 0.7.0 from /usr/lib/python3.10/site-packages
    requests: 2.28.1 from /usr/lib/python3.10/site-packages
      idna: 3.4 from /usr/lib/python3.10/site-packages
      urllib3: 1.26.12 from /usr/lib/python3.10/site-packages
    python-dateutil: 2.8.2 from /usr/lib/python3.10/site-packages
      six: 1.16.0 from /usr/lib/python3.10/site-packages
  requests: 2.28.1 from /usr/lib/python3.10/site-packages
    idna: 3.4 from /usr/lib/python3.10/site-packages
    urllib3: 1.26.12 from /usr/lib/python3.10/site-packages
Mopidy-YouTube: 3.5 from /usr/lib/python3.10/site-packages
  beautifulsoup4: 4.11.1 from /usr/lib/python3.10/site-packages
    soupsieve: 2.3.2.post1 from /usr/lib/python3.10/site-packages
  cachetools: 5.2.0 from /usr/lib/python3.10/site-packages
  Mopidy: 3.3.0 from /usr/lib/python3.10/site-packages
  Pykka: 3.1.1 from /usr/lib/python3.10/site-packages
  requests: 2.28.1 from /usr/lib/python3.10/site-packages
    idna: 3.4 from /usr/lib/python3.10/site-packages
    urllib3: 1.26.12 from /usr/lib/python3.10/site-packages
  setuptools: 63.0.0 from /usr/lib/python3.10/site-packages
Mopidy-Beets: 4.0.1 from /usr/lib/python3.10/site-packages
  Mopidy: 3.3.0 from /usr/lib/python3.10/site-packages
  Pykka: 3.1.1 from /usr/lib/python3.10/site-packages
  requests: 2.28.1 from /usr/lib/python3.10/site-packages
    idna: 3.4 from /usr/lib/python3.10/site-packages
    urllib3: 1.26.12 from /usr/lib/python3.10/site-packages
  setuptools: 63.0.0 from /usr/lib/python3.10/site-packages
GStreamer: 1.20.3.0 from /usr/lib/python3.10/site-packages/gi
  Detailed information: 
    Python wrapper: python-gi 3.42.2
    Relevant elements:
      Found:
        uridecodebin
        souphttpsrc
        appsrc
        alsasink
        osssink
        oss4sink
        pulsesink
        id3demux
        id3v2mux
        lamemp3enc
        mpegaudioparse
        mpg123audiodec
        vorbisdec
        vorbisenc
        vorbisparse
        oggdemux
        oggmux
        oggparse
        flacdec
        flacparse
        shout2send
      Not found:
        flump3dec
        mad
JoshMock commented 1 year ago

it's interesting that a couple of the core plugins like bookmarks are found in /home/joshmock/.local/lib/python3.10/site-packages rather than /usr/lib/python3.10/site-packages. I run asdf to manage multiple Python versions but I'm nearly certain I installed all Mopidy dependencies via pacman or the AUR rather than pip.

jodal commented 1 year ago

Since you have the latest httpx, there's nothing to upgrade there. httpx' efforts to support rfc3896 >= 2.0 is tracked at https://github.com/encode/httpx/issues/2169

If you somehow can manage to downgrade rfc3896 to < 2.0, that should temporarily fix your problem.

JoshMock commented 1 year ago

Thanks @jodal! Heavy emphasis on "somehow can manage to downgrade." Python dependency management is hard.

JoshMock commented 1 year ago

Ended up being easier than expected. h11 needed a downgrade too. Didn't know that --upgrade also works for downgrades. :smile:

pip install --upgrade rfc3986==1.5.0
pip install --upgrade h11==0.12.0
bigodel commented 1 year ago

hey there. i've stumbled upon this problem and i solved it by doing the downgrading, but i have also checked and httpx no longer requires rfc3986, but still this problem persists. i'm not familiar with python's dependency management, but it seems that it should be pulling the latest version of pylast, which in turn pulls the latest version of httpx, which doesn't have rfc3986 as a dependecy, hence this shouldn't be an issue anymore