diff --git a/pkgs/by-name/sp/spotdl/package.nix b/pkgs/by-name/sp/spotdl/package.nix index 7abb861e6d2e..99fb2cd777b4 100644 --- a/pkgs/by-name/sp/spotdl/package.nix +++ b/pkgs/by-name/sp/spotdl/package.nix @@ -8,14 +8,14 @@ python3Packages.buildPythonApplication (finalAttrs: { pname = "spotdl"; - version = "4.4.4"; + version = "4.5.0"; pyproject = true; src = fetchFromGitHub { owner = "spotDL"; repo = "spotify-downloader"; tag = "v${finalAttrs.version}"; - hash = "sha256-GKkkYA1Z6YsthIKE8Hf/vKRHU7kPCKabOh28i/JSSOc="; + hash = "sha256-u5t8t9NJq+h/ujeLObKDCQG4brTqwdjSDslemmhePdc="; }; build-system = with python3Packages; [ hatchling ]; @@ -35,19 +35,20 @@ python3Packages.buildPythonApplication (finalAttrs: { pykakasi python-multipart python-slugify - pytube rapidfuzz requests rich soundcloud-v2 spotipy + spotipyfree syncedlyrics uvicorn websockets yt-dlp ytmusicapi ] - ++ python-slugify.optional-dependencies.unidecode; + ++ python-slugify.optional-dependencies.unidecode + ++ yt-dlp.optional-dependencies.default; nativeCheckInputs = with python3Packages; [ pyfakefs diff --git a/pkgs/development/python-modules/readerwriterlock/default.nix b/pkgs/development/python-modules/readerwriterlock/default.nix new file mode 100644 index 000000000000..68ebefb26605 --- /dev/null +++ b/pkgs/development/python-modules/readerwriterlock/default.nix @@ -0,0 +1,47 @@ +{ + buildPythonPackage, + fetchFromGitHub, + lib, + pythonOlder, + setuptools, + typing-extensions, + unittestCheckHook, +}: + +buildPythonPackage (finalAttrs: { + pname = "readerwriterlock"; + version = "1.0.9"; + pyproject = true; + + src = fetchFromGitHub { + owner = "elarivie"; + repo = "pyReaderWriterLock"; + tag = "v${finalAttrs.version}"; + hash = "sha256-8FC+4aDgGpF1BmOdlkFtMy7OfWdSmvn9fjKXSmmeJlg="; + }; + + build-system = [ setuptools ]; + + dependencies = [ + typing-extensions + ]; + + pythonImportsCheck = [ "readerwriterlock" ]; + + nativeCheckInputs = [ + unittestCheckHook + ]; + + unittestFlags = [ "tests" ]; + + # RuntimeError: There is no current event loop in thread 'MainThread'. + doCheck = pythonOlder "3.14"; + + meta = { + changelog = "https://github.com/elarivie/pyReaderWriterLock/blob/${finalAttrs.src.tag}/CHANGELOG.md"; + description = "Python 3 implementation of the Readers-writers problem"; + homepage = "https://github.com/elarivie/pyReaderWriterLock"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.dotlambda ]; + }; +}) diff --git a/pkgs/development/python-modules/spotapi/default.nix b/pkgs/development/python-modules/spotapi/default.nix new file mode 100644 index 000000000000..77f379bca7aa --- /dev/null +++ b/pkgs/development/python-modules/spotapi/default.nix @@ -0,0 +1,64 @@ +{ + beautifulsoup4, + buildPythonPackage, + colorama, + fetchPypi, + lib, + pillow, + pymongo, + pyotp, + readerwriterlock, + redis, + requests, + setuptools, + tls-client, + typing-extensions, + validators, + websockets, +}: + +buildPythonPackage (finalAttrs: { + pname = "spotapi"; + version = "1.2.7"; + pyproject = true; + + # no tags on GitHub + src = fetchPypi { + inherit (finalAttrs) pname version; + hash = "sha256-x4UA65A4UvxqlDN5upHsPPa5yv8gKZw3kqLou/1xVtY="; + }; + + build-system = [ setuptools ]; + + dependencies = [ + beautifulsoup4 + colorama + pillow + pyotp + readerwriterlock + requests + tls-client + typing-extensions + validators + ] + # optional dependencies are always imported + ++ lib.concatAttrValues finalAttrs.passthru.optional-dependencies; + + optional-dependencies = { + pymongo = [ pymongo ]; + redis = [ redis ]; + websocket = [ websockets ]; + }; + + pythonImportsCheck = [ "spotapi" ]; + + # upstream has no unit tests + doCheck = false; + + meta = { + description = "Python wrapper for the public & private Spotify API"; + homepage = "https://github.com/Aran404/SpotAPI"; + license = lib.licenses.gpl3Only; + maintainers = [ lib.maintainers.dotlambda ]; + }; +}) diff --git a/pkgs/development/python-modules/spotipyfree/default.nix b/pkgs/development/python-modules/spotipyfree/default.nix new file mode 100644 index 000000000000..11a0aec1df39 --- /dev/null +++ b/pkgs/development/python-modules/spotipyfree/default.nix @@ -0,0 +1,39 @@ +{ + buildPythonPackage, + fetchPypi, + lib, + pymongo, + setuptools, + spotapi, +}: + +buildPythonPackage (finalAttrs: { + pname = "spotipyfree"; + version = "1.5.0"; + pyproject = true; + + # no tags on GitHub + src = fetchPypi { + inherit (finalAttrs) pname version; + hash = "sha256-MwqdvhpMWjGlH8mB2yGUWPghNLllUcbZ6jZjpftpYRk="; + }; + + build-system = [ setuptools ]; + + dependencies = [ + pymongo + spotapi + ]; + + pythonImportsCheck = [ "SpotipyFree" ]; + + # upstream has no tests + doCheck = false; + + meta = { + description = "Spotipy-compatible wrapper using SpotAPI"; + homepage = "https://github.com/TzurSoffer/spotipyFree"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.dotlambda ]; + }; +}) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index a47636eaae59..358f80d4d22b 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -16800,6 +16800,8 @@ self: super: with self; { readchar = callPackage ../development/python-modules/readchar { }; + readerwriterlock = callPackage ../development/python-modules/readerwriterlock { }; + readlike = callPackage ../development/python-modules/readlike { }; readmdict = callPackage ../development/python-modules/readmdict { }; @@ -18590,10 +18592,14 @@ self: super: with self; { splunk-sdk = callPackage ../development/python-modules/splunk-sdk { }; + spotapi = callPackage ../development/python-modules/spotapi { }; + spotifyaio = callPackage ../development/python-modules/spotifyaio { }; spotipy = callPackage ../development/python-modules/spotipy { }; + spotipyfree = callPackage ../development/python-modules/spotipyfree { }; + spsdk = callPackage ../development/python-modules/spsdk { }; spsdk-mcu-link = callPackage ../development/python-modules/spsdk-mcu-link { };