From 84dbc76fb5bb466a69637cdefa59dac569ccb46c Mon Sep 17 00:00:00 2001 From: nathom Date: Wed, 23 Jun 2021 19:01:12 -0700 Subject: [PATCH] Migrate to poetry Signed-off-by: nathom --- .github/workflows/python-publish.yml | 27 +--- .gitignore | 4 - poetry.lock | 209 +++++++++++++++++++++++++++ pyproject.toml | 39 +++++ setup.py | 53 ------- 5 files changed, 253 insertions(+), 79 deletions(-) create mode 100644 poetry.lock create mode 100644 pyproject.toml delete mode 100644 setup.py diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index 1a03a7b..7d64776 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -1,31 +1,14 @@ -# This workflow will upload a Python Package using Twine when a release is created -# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries - -name: Upload Python Package - +name: Upload Streamrip to pypi on: release: types: [created] jobs: - deploy: - + build: runs-on: ubuntu-latest - steps: - uses: actions/checkout@v2 - - name: Set up Python - uses: actions/setup-python@v2 + - name: Build and publish to pypi + uses: JRubics/poetry-publish@v1.6 with: - python-version: '3.x' - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install setuptools wheel twine - - name: Build and publish - env: - TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} - TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} - run: | - python setup.py sdist bdist_wheel - twine upload dist/* + pypi_token: ${{ secrets.PYPI_TOKEN }} diff --git a/.gitignore b/.gitignore index 817777d..43f2052 100644 --- a/.gitignore +++ b/.gitignore @@ -19,7 +19,3 @@ StreamripDownloads *.pyc *test.py /.mypy_cache -/streamrip/test.yaml -/pyproject.toml -/poetry.lock -/pyproject2.toml diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 0000000..025f09c --- /dev/null +++ b/poetry.lock @@ -0,0 +1,209 @@ +[[package]] +name = "certifi" +version = "2021.5.30" +description = "Python package for providing Mozilla's CA Bundle." +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "chardet" +version = "4.0.0" +description = "Universal encoding detector for Python 2 and 3" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "click" +version = "8.0.1" +description = "Composable command line interface toolkit" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.4" +description = "Cross-platform colored terminal text." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "idna" +version = "2.10" +description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "mutagen" +version = "1.45.1" +description = "read and write audio tags for many formats" +category = "main" +optional = false +python-versions = ">=3.5, <4" + +[[package]] +name = "pathvalidate" +version = "2.4.1" +description = "pathvalidate is a Python library to sanitize/validate a string such as filenames/file-paths/etc." +category = "main" +optional = false +python-versions = ">=3.5" + +[package.extras] +test = ["allpairspy", "click", "faker", "pytest (>=6.0.1)", "pytest-discord (>=0.0.6)", "pytest-md-report (>=0.0.12)"] + +[[package]] +name = "pick" +version = "1.0.0" +description = "pick an option in the terminal with a simple GUI" +category = "main" +optional = false +python-versions = ">=3.5" + +[package.dependencies] +windows-curses = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "requests" +version = "2.25.1" +description = "Python HTTP for Humans." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[package.dependencies] +certifi = ">=2017.4.17" +chardet = ">=3.0.2,<5" +idna = ">=2.5,<3" +urllib3 = ">=1.21.1,<1.27" + +[package.extras] +security = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)"] +socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] + +[[package]] +name = "simple-term-menu" +version = "1.2.1" +description = "A Python package which creates simple interactive menus on the command line." +category = "main" +optional = false +python-versions = "~=3.5" + +[[package]] +name = "tomlkit" +version = "0.7.2" +description = "Style preserving TOML library" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "tqdm" +version = "4.61.1" +description = "Fast, Extensible Progress Meter" +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" + +[package.extras] +dev = ["py-make (>=0.1.0)", "twine", "wheel"] +notebook = ["ipywidgets (>=6)"] +telegram = ["requests"] + +[[package]] +name = "urllib3" +version = "1.26.5" +description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" + +[package.extras] +brotli = ["brotlipy (>=0.6.0)"] +secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] +socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] + +[[package]] +name = "windows-curses" +version = "2.2.0" +description = "Support for the standard curses module on Windows" +category = "main" +optional = false +python-versions = "*" + +[metadata] +lock-version = "1.1" +python-versions = "^3.8" +content-hash = "a32e56def426809c20924e370d316663d2369853defcd590ee0c78aaef237ad3" + +[metadata.files] +certifi = [ + {file = "certifi-2021.5.30-py2.py3-none-any.whl", hash = "sha256:50b1e4f8446b06f41be7dd6338db18e0990601dce795c2b1686458aa7e8fa7d8"}, + {file = "certifi-2021.5.30.tar.gz", hash = "sha256:2bbf76fd432960138b3ef6dda3dde0544f27cbf8546c458e60baf371917ba9ee"}, +] +chardet = [ + {file = "chardet-4.0.0-py2.py3-none-any.whl", hash = "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5"}, + {file = "chardet-4.0.0.tar.gz", hash = "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa"}, +] +click = [ + {file = "click-8.0.1-py3-none-any.whl", hash = "sha256:fba402a4a47334742d782209a7c79bc448911afe1149d07bdabdf480b3e2f4b6"}, + {file = "click-8.0.1.tar.gz", hash = "sha256:8c04c11192119b1ef78ea049e0a6f0463e4c48ef00a30160c704337586f3ad7a"}, +] +colorama = [ + {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, + {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, +] +idna = [ + {file = "idna-2.10-py2.py3-none-any.whl", hash = "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0"}, + {file = "idna-2.10.tar.gz", hash = "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6"}, +] +mutagen = [ + {file = "mutagen-1.45.1-py3-none-any.whl", hash = "sha256:9c9f243fcec7f410f138cb12c21c84c64fde4195481a30c9bfb05b5f003adfed"}, + {file = "mutagen-1.45.1.tar.gz", hash = "sha256:6397602efb3c2d7baebd2166ed85731ae1c1d475abca22090b7141ff5034b3e1"}, +] +pathvalidate = [ + {file = "pathvalidate-2.4.1-py3-none-any.whl", hash = "sha256:f5dde7efeeb4262784c5e1331e02752d07c1ec3ee5ea42683fe211155652b808"}, + {file = "pathvalidate-2.4.1.tar.gz", hash = "sha256:3c9bd94c7ec23e9cfb211ffbe356ae75f979d6c099a2c745ee9490f524f32468"}, +] +pick = [ + {file = "pick-1.0.0-py2.py3-none-any.whl", hash = "sha256:f32c8bd0fd943490c29e461a8168f4ac267247aaa6a7fc9dd327f97832842b5f"}, + {file = "pick-1.0.0.tar.gz", hash = "sha256:03f13d4f5bfe74db4b969fb74c0ef110ec443978419d6c0f1f375a0d49539034"}, +] +requests = [ + {file = "requests-2.25.1-py2.py3-none-any.whl", hash = "sha256:c210084e36a42ae6b9219e00e48287def368a26d03a048ddad7bfee44f75871e"}, + {file = "requests-2.25.1.tar.gz", hash = "sha256:27973dd4a904a4f13b263a19c866c13b92a39ed1c964655f025f3f8d3d75b804"}, +] +simple-term-menu = [ + {file = "simple-term-menu-1.2.1.tar.gz", hash = "sha256:cd6790bea2b04b480238e36f37e957963a2bee6a47f42357f516c8f3e0d6bd88"}, + {file = "simple_term_menu-1.2.1-py3-none-any.whl", hash = "sha256:b9710f4820c7707ab45c81e4d8e63fc99b0b84878018aea2f6db229e111f8f21"}, +] +tomlkit = [ + {file = "tomlkit-0.7.2-py2.py3-none-any.whl", hash = "sha256:173ad840fa5d2aac140528ca1933c29791b79a374a0861a80347f42ec9328117"}, + {file = "tomlkit-0.7.2.tar.gz", hash = "sha256:d7a454f319a7e9bd2e249f239168729327e4dd2d27b17dc68be264ad1ce36754"}, +] +tqdm = [ + {file = "tqdm-4.61.1-py2.py3-none-any.whl", hash = "sha256:aa0c29f03f298951ac6318f7c8ce584e48fa22ec26396e6411e43d038243bdb2"}, + {file = "tqdm-4.61.1.tar.gz", hash = "sha256:24be966933e942be5f074c29755a95b315c69a91f839a29139bf26ffffe2d3fd"}, +] +urllib3 = [ + {file = "urllib3-1.26.5-py2.py3-none-any.whl", hash = "sha256:753a0374df26658f99d826cfe40394a686d05985786d946fbe4165b5148f5a7c"}, + {file = "urllib3-1.26.5.tar.gz", hash = "sha256:a7acd0977125325f516bda9735fa7142b909a8d01e8b2e4c8108d0984e6e0098"}, +] +windows-curses = [ + {file = "windows_curses-2.2.0-cp36-cp36m-win32.whl", hash = "sha256:1452d771ec6f9b3fef037da2b169196a9a12be4e86a6c27dd579adac70c42028"}, + {file = "windows_curses-2.2.0-cp36-cp36m-win_amd64.whl", hash = "sha256:fc0be372fe6da3c39d7093154ce029115a927bf287f34b4c615e2b3f8c23dfaa"}, + {file = "windows_curses-2.2.0-cp37-cp37m-win32.whl", hash = "sha256:267544e4f60c09af6505e50a69d7f01d7f8a281cf4bd4fc7efc3b32b9a4ef64e"}, + {file = "windows_curses-2.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c5cd032bc7d0f03224ab55c925059d98e81795098d59bbd10f7d05c7ea9677ce"}, + {file = "windows_curses-2.2.0-cp38-cp38-win32.whl", hash = "sha256:84336fe470fa07288daec5c684dec74c0766fec6b3511ccedb4c494804acfbb7"}, + {file = "windows_curses-2.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:c4a8ce00e82635f06648cc40d99f470be4e3ffeb84f9f7ae9d6a4f68ec6361e7"}, + {file = "windows_curses-2.2.0-cp39-cp39-win32.whl", hash = "sha256:9aa6ff60be76f5de696dc6dbf7897e3b1e6abcf4c0f741e9a0ee22cd6ef382f8"}, + {file = "windows_curses-2.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:389228a3df556102e72450f599283094168aa82eee189f501ad9f131a0fc92e1"}, +] diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..fa60180 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,39 @@ +[tool.poetry] +name = "streamrip" +version = "0.6.1" +description = "A fast, all-in-one music ripper for Qobuz, Deezer, Tidal, and SoundCloud" +authors = ["nathom "] +license = "GPL-3.0-only" +readme = "README.md" +homepage = "https://github.com/nathom/streamrip" +repository = "https://github.com/nathom/streamrip" +include = ["streamrip/config.toml"] +keywords = ["hi-res", "free", "music", "download", "tqdm"] +classifiers = [ + "License :: OSI Approved :: GNU General Public License (GPL)", + "Operating System :: OS Independent", +] + +[tool.poetry.scripts] +rip = "streamrip.cli:main" + +[tool.poetry.dependencies] +python = "^3.8" +requests = "^2.25.1" +mutagen = "^1.45.1" +click = "^8.0.1" +tqdm = "^4.61.1" +tomlkit = "^0.7.2" +pathvalidate = "^2.4.1" +simple-term-menu = {version = "^1.2.1", platform = 'linux or darwin'} +pick = {version = "^1.0.0", platform = 'win32 or cygwin'} +windows-curses = {version = "^2.2.0", platform = 'win32 or cygwin'} + +[tool.poetry.urls] +"Bug Reports" = "https://github.com/nathom/streamrip/issues" + +[tool.poetry.dev-dependencies] + +[build-system] +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api" diff --git a/setup.py b/setup.py deleted file mode 100644 index d84708f..0000000 --- a/setup.py +++ /dev/null @@ -1,53 +0,0 @@ -from setuptools import find_packages, setup - -pkg_name = "streamrip" - - -def read_file(fname): - with open(fname, "r") as f: - return f.read() - - -requirements = read_file("requirements.txt").strip().split() -requirements.append("simple-term-menu; platform_system == 'Linux'") -requirements.append("simple-term-menu; platform_system == 'Darwin'") -requirements.append("pick; platform_system == 'Windows'") -# Needed for pick to work -requirements.append("windows-curses; platform_system == 'Windows'") - -# required for click colors -# can be removed when click v8.0 is released -requirements.append("colorama; platform_system == 'Windows'") - - -# https://github.com/pypa/sampleproject/blob/main/setup.py -setup( - name=pkg_name, - version="0.6.1", - author="Nathan", - author_email="nathanthomas707@gmail.com", - keywords="lossless, hi-res, qobuz, tidal, deezer, audio, convert, soundcloud, mp3", - description="A stream downloader for Qobuz, Tidal, SoundCloud, and Deezer.", - long_description=read_file("README.md"), - long_description_content_type="text/markdown", - install_requires=requirements, - include_package_data=True, # Include config.toml - py_modules=["streamrip"], - entry_points={ - "console_scripts": [ - "rip = streamrip.cli:main", - ], - }, - packages=find_packages(), - classifiers=[ - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", - "License :: OSI Approved :: GNU General Public License (GPL)", - "Operating System :: OS Independent", - ], - python_requires=">=3.8", - project_urls={ - "Source": "https://github.com/nathom/streamrip", - "Bug Reports": "https://github.com/nathom/streamrip/issues", - }, -)