Compare commits

..

No commits in common. "5f1682c0c675122ca890916243ca0737af75abb9" and "373f4eeb239005943701b3b8c88bf3ab7103e8e3" have entirely different histories.

5 changed files with 245 additions and 52 deletions

View File

@ -609,6 +609,12 @@ class Settings(dbtables.SettingsTable):
class Tracks(dbtables.TracksTable): class Tracks(dbtables.TracksTable):
def __repr__(self) -> str:
return (
f"<Track(id={self.id}, title={self.title}, "
f"artist={self.artist}, path={self.path}>"
)
def __init__( def __init__(
self, self,
session: Session, session: Session,

244
poetry.lock generated
View File

@ -1,9 +1,10 @@
# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. # This file is automatically @generated by Poetry and should not be changed by hand.
[[package]] [[package]]
name = "alabaster" name = "alabaster"
version = "0.7.16" version = "0.7.16"
description = "A light, configurable Sphinx theme" description = "A light, configurable Sphinx theme"
category = "dev"
optional = false optional = false
python-versions = ">=3.9" python-versions = ">=3.9"
files = [ files = [
@ -15,6 +16,7 @@ files = [
name = "alchemical" name = "alchemical"
version = "1.0.1" version = "1.0.1"
description = "Modern SQLAlchemy simplified" description = "Modern SQLAlchemy simplified"
category = "main"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
@ -32,6 +34,7 @@ docs = ["sphinx"]
name = "alembic" name = "alembic"
version = "1.13.1" version = "1.13.1"
description = "A database migration tool for SQLAlchemy." description = "A database migration tool for SQLAlchemy."
category = "main"
optional = false optional = false
python-versions = ">=3.8" python-versions = ">=3.8"
files = [ files = [
@ -51,6 +54,7 @@ tz = ["backports.zoneinfo"]
name = "asttokens" name = "asttokens"
version = "2.4.1" version = "2.4.1"
description = "Annotate AST trees with source code positions" description = "Annotate AST trees with source code positions"
category = "dev"
optional = false optional = false
python-versions = "*" python-versions = "*"
files = [ files = [
@ -69,6 +73,7 @@ test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"]
name = "babel" name = "babel"
version = "2.14.0" version = "2.14.0"
description = "Internationalization utilities" description = "Internationalization utilities"
category = "dev"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
@ -83,6 +88,7 @@ dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"]
name = "beautifulsoup4" name = "beautifulsoup4"
version = "4.12.3" version = "4.12.3"
description = "Screen-scraping library" description = "Screen-scraping library"
category = "dev"
optional = false optional = false
python-versions = ">=3.6.0" python-versions = ">=3.6.0"
files = [ files = [
@ -104,6 +110,7 @@ lxml = ["lxml"]
name = "black" name = "black"
version = "24.3.0" version = "24.3.0"
description = "The uncompromising code formatter." description = "The uncompromising code formatter."
category = "dev"
optional = false optional = false
python-versions = ">=3.8" python-versions = ">=3.8"
files = [ files = [
@ -137,6 +144,8 @@ mypy-extensions = ">=0.4.3"
packaging = ">=22.0" packaging = ">=22.0"
pathspec = ">=0.9.0" pathspec = ">=0.9.0"
platformdirs = ">=2" platformdirs = ">=2"
tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""}
[package.extras] [package.extras]
colorama = ["colorama (>=0.4.3)"] colorama = ["colorama (>=0.4.3)"]
@ -148,6 +157,7 @@ uvloop = ["uvloop (>=0.15.2)"]
name = "certifi" name = "certifi"
version = "2024.2.2" version = "2024.2.2"
description = "Python package for providing Mozilla's CA Bundle." description = "Python package for providing Mozilla's CA Bundle."
category = "dev"
optional = false optional = false
python-versions = ">=3.6" python-versions = ">=3.6"
files = [ files = [
@ -159,6 +169,7 @@ files = [
name = "charset-normalizer" name = "charset-normalizer"
version = "3.3.2" version = "3.3.2"
description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
category = "dev"
optional = false optional = false
python-versions = ">=3.7.0" python-versions = ">=3.7.0"
files = [ files = [
@ -258,6 +269,7 @@ files = [
name = "cheap-repr" name = "cheap-repr"
version = "0.5.1" version = "0.5.1"
description = "Better version of repr/reprlib for short, cheap string representations." description = "Better version of repr/reprlib for short, cheap string representations."
category = "dev"
optional = false optional = false
python-versions = "*" python-versions = "*"
files = [ files = [
@ -272,6 +284,7 @@ tests = ["Django", "Django (<2)", "Django (<3)", "chainmap", "numpy (>=1.16.3)",
name = "click" name = "click"
version = "8.1.7" version = "8.1.7"
description = "Composable command line interface toolkit" description = "Composable command line interface toolkit"
category = "dev"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
@ -286,6 +299,7 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""}
name = "colorama" name = "colorama"
version = "0.4.6" version = "0.4.6"
description = "Cross-platform colored terminal text." description = "Cross-platform colored terminal text."
category = "main"
optional = false optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
files = [ files = [
@ -297,6 +311,7 @@ files = [
name = "colorlog" name = "colorlog"
version = "6.8.2" version = "6.8.2"
description = "Add colours to the output of Python's logging module." description = "Add colours to the output of Python's logging module."
category = "main"
optional = false optional = false
python-versions = ">=3.6" python-versions = ">=3.6"
files = [ files = [
@ -314,6 +329,7 @@ development = ["black", "flake8", "mypy", "pytest", "types-colorama"]
name = "coverage" name = "coverage"
version = "7.4.4" version = "7.4.4"
description = "Code coverage measurement for Python" description = "Code coverage measurement for Python"
category = "dev"
optional = false optional = false
python-versions = ">=3.8" python-versions = ">=3.8"
files = [ files = [
@ -371,6 +387,9 @@ files = [
{file = "coverage-7.4.4.tar.gz", hash = "sha256:c901df83d097649e257e803be22592aedfd5182f07b3cc87d640bbb9afd50f49"}, {file = "coverage-7.4.4.tar.gz", hash = "sha256:c901df83d097649e257e803be22592aedfd5182f07b3cc87d640bbb9afd50f49"},
] ]
[package.dependencies]
tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.11.0a6\" and extra == \"toml\""}
[package.extras] [package.extras]
toml = ["tomli"] toml = ["tomli"]
@ -378,6 +397,7 @@ toml = ["tomli"]
name = "decorator" name = "decorator"
version = "5.1.1" version = "5.1.1"
description = "Decorators for Humans" description = "Decorators for Humans"
category = "dev"
optional = false optional = false
python-versions = ">=3.5" python-versions = ">=3.5"
files = [ files = [
@ -389,6 +409,7 @@ files = [
name = "docutils" name = "docutils"
version = "0.20.1" version = "0.20.1"
description = "Docutils -- Python Documentation Utilities" description = "Docutils -- Python Documentation Utilities"
category = "dev"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
@ -400,6 +421,7 @@ files = [
name = "entrypoints" name = "entrypoints"
version = "0.4" version = "0.4"
description = "Discover and load entry points from installed packages." description = "Discover and load entry points from installed packages."
category = "dev"
optional = false optional = false
python-versions = ">=3.6" python-versions = ">=3.6"
files = [ files = [
@ -407,10 +429,26 @@ files = [
{file = "entrypoints-0.4.tar.gz", hash = "sha256:b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4"}, {file = "entrypoints-0.4.tar.gz", hash = "sha256:b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4"},
] ]
[[package]]
name = "exceptiongroup"
version = "1.2.0"
description = "Backport of PEP 654 (exception groups)"
category = "dev"
optional = false
python-versions = ">=3.7"
files = [
{file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"},
{file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"},
]
[package.extras]
test = ["pytest (>=6)"]
[[package]] [[package]]
name = "executing" name = "executing"
version = "2.0.1" version = "2.0.1"
description = "Get the currently executing AST node of a frame, and other information" description = "Get the currently executing AST node of a frame, and other information"
category = "dev"
optional = false optional = false
python-versions = ">=3.5" python-versions = ">=3.5"
files = [ files = [
@ -425,6 +463,7 @@ tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipyth
name = "flake8" name = "flake8"
version = "7.0.0" version = "7.0.0"
description = "the modular source code checker: pep8 pyflakes and co" description = "the modular source code checker: pep8 pyflakes and co"
category = "dev"
optional = false optional = false
python-versions = ">=3.8.1" python-versions = ">=3.8.1"
files = [ files = [
@ -441,6 +480,7 @@ pyflakes = ">=3.2.0,<3.3.0"
name = "flakehell" name = "flakehell"
version = "0.9.0" version = "0.9.0"
description = "Flake8 wrapper to make it nice and configurable" description = "Flake8 wrapper to make it nice and configurable"
category = "dev"
optional = false optional = false
python-versions = ">=3.5" python-versions = ">=3.5"
files = [ files = [
@ -464,6 +504,7 @@ docs = ["alabaster", "pygments-github-lexers", "recommonmark", "sphinx"]
name = "furo" name = "furo"
version = "2023.9.10" version = "2023.9.10"
description = "A clean customisable Sphinx documentation theme." description = "A clean customisable Sphinx documentation theme."
category = "dev"
optional = false optional = false
python-versions = ">=3.8" python-versions = ">=3.8"
files = [ files = [
@ -481,6 +522,7 @@ sphinx-basic-ng = "*"
name = "greenlet" name = "greenlet"
version = "3.0.3" version = "3.0.3"
description = "Lightweight in-process concurrent programming" description = "Lightweight in-process concurrent programming"
category = "main"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
@ -552,6 +594,7 @@ test = ["objgraph", "psutil"]
name = "idna" name = "idna"
version = "3.6" version = "3.6"
description = "Internationalized Domain Names in Applications (IDNA)" description = "Internationalized Domain Names in Applications (IDNA)"
category = "dev"
optional = false optional = false
python-versions = ">=3.5" python-versions = ">=3.5"
files = [ files = [
@ -563,6 +606,7 @@ files = [
name = "imagesize" name = "imagesize"
version = "1.4.1" version = "1.4.1"
description = "Getting image size from png/jpeg/jpeg2000/gif file" description = "Getting image size from png/jpeg/jpeg2000/gif file"
category = "dev"
optional = false optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
files = [ files = [
@ -570,10 +614,31 @@ files = [
{file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"},
] ]
[[package]]
name = "importlib-metadata"
version = "7.1.0"
description = "Read metadata from Python packages"
category = "dev"
optional = false
python-versions = ">=3.8"
files = [
{file = "importlib_metadata-7.1.0-py3-none-any.whl", hash = "sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570"},
{file = "importlib_metadata-7.1.0.tar.gz", hash = "sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2"},
]
[package.dependencies]
zipp = ">=0.5"
[package.extras]
docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
perf = ["ipython"]
testing = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"]
[[package]] [[package]]
name = "iniconfig" name = "iniconfig"
version = "2.0.0" version = "2.0.0"
description = "brain-dead simple config-ini parsing" description = "brain-dead simple config-ini parsing"
category = "dev"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
@ -585,6 +650,7 @@ files = [
name = "ipdb" name = "ipdb"
version = "0.13.13" version = "0.13.13"
description = "IPython-enabled pdb" description = "IPython-enabled pdb"
category = "dev"
optional = false optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
files = [ files = [
@ -593,50 +659,53 @@ files = [
] ]
[package.dependencies] [package.dependencies]
decorator = {version = "*", markers = "python_version >= \"3.11\""} decorator = {version = "*", markers = "python_version > \"3.6\""}
ipython = {version = ">=7.31.1", markers = "python_version >= \"3.11\""} ipython = {version = ">=7.31.1", markers = "python_version > \"3.6\""}
tomli = {version = "*", markers = "python_version > \"3.6\" and python_version < \"3.11\""}
[[package]] [[package]]
name = "ipython" name = "ipython"
version = "8.23.0" version = "8.18.1"
description = "IPython: Productive Interactive Computing" description = "IPython: Productive Interactive Computing"
category = "dev"
optional = false optional = false
python-versions = ">=3.10" python-versions = ">=3.9"
files = [ files = [
{file = "ipython-8.23.0-py3-none-any.whl", hash = "sha256:07232af52a5ba146dc3372c7bf52a0f890a23edf38d77caef8d53f9cdc2584c1"}, {file = "ipython-8.18.1-py3-none-any.whl", hash = "sha256:e8267419d72d81955ec1177f8a29aaa90ac80ad647499201119e2f05e99aa397"},
{file = "ipython-8.23.0.tar.gz", hash = "sha256:7468edaf4f6de3e1b912e57f66c241e6fd3c7099f2ec2136e239e142e800274d"}, {file = "ipython-8.18.1.tar.gz", hash = "sha256:ca6f079bb33457c66e233e4580ebfc4128855b4cf6370dddd73842a9563e8a27"},
] ]
[package.dependencies] [package.dependencies]
colorama = {version = "*", markers = "sys_platform == \"win32\""} colorama = {version = "*", markers = "sys_platform == \"win32\""}
decorator = "*" decorator = "*"
exceptiongroup = {version = "*", markers = "python_version < \"3.11\""}
jedi = ">=0.16" jedi = ">=0.16"
matplotlib-inline = "*" matplotlib-inline = "*"
pexpect = {version = ">4.3", markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\""} pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""}
prompt-toolkit = ">=3.0.41,<3.1.0" prompt-toolkit = ">=3.0.41,<3.1.0"
pygments = ">=2.4.0" pygments = ">=2.4.0"
stack-data = "*" stack-data = "*"
traitlets = ">=5.13.0" traitlets = ">=5"
typing-extensions = {version = "*", markers = "python_version < \"3.12\""} typing-extensions = {version = "*", markers = "python_version < \"3.10\""}
[package.extras] [package.extras]
all = ["ipython[black,doc,kernel,matplotlib,nbconvert,nbformat,notebook,parallel,qtconsole]", "ipython[test,test-extra]"] all = ["black", "curio", "docrepr", "exceptiongroup", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.22)", "pandas", "pickleshare", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio (<0.22)", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"]
black = ["black"] black = ["black"]
doc = ["docrepr", "exceptiongroup", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinxcontrib-jquery", "stack-data", "typing-extensions"] doc = ["docrepr", "exceptiongroup", "ipykernel", "matplotlib", "pickleshare", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio (<0.22)", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "typing-extensions"]
kernel = ["ipykernel"] kernel = ["ipykernel"]
matplotlib = ["matplotlib"]
nbconvert = ["nbconvert"] nbconvert = ["nbconvert"]
nbformat = ["nbformat"] nbformat = ["nbformat"]
notebook = ["ipywidgets", "notebook"] notebook = ["ipywidgets", "notebook"]
parallel = ["ipyparallel"] parallel = ["ipyparallel"]
qtconsole = ["qtconsole"] qtconsole = ["qtconsole"]
test = ["pickleshare", "pytest (<8)", "pytest-asyncio (<0.22)", "testpath"] test = ["pickleshare", "pytest (<7.1)", "pytest-asyncio (<0.22)", "testpath"]
test-extra = ["curio", "ipython[test]", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.23)", "pandas", "trio"] test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.22)", "pandas", "pickleshare", "pytest (<7.1)", "pytest-asyncio (<0.22)", "testpath", "trio"]
[[package]] [[package]]
name = "jedi" name = "jedi"
version = "0.19.1" version = "0.19.1"
description = "An autocompletion tool for Python that can be used for text editors." description = "An autocompletion tool for Python that can be used for text editors."
category = "dev"
optional = false optional = false
python-versions = ">=3.6" python-versions = ">=3.6"
files = [ files = [
@ -656,6 +725,7 @@ testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"]
name = "jinja2" name = "jinja2"
version = "3.1.3" version = "3.1.3"
description = "A very fast and expressive template engine." description = "A very fast and expressive template engine."
category = "dev"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
@ -673,6 +743,7 @@ i18n = ["Babel (>=2.7)"]
name = "line-profiler" name = "line-profiler"
version = "4.1.2" version = "4.1.2"
description = "Line-by-line profiler" description = "Line-by-line profiler"
category = "dev"
optional = false optional = false
python-versions = ">=3.6" python-versions = ">=3.6"
files = [ files = [
@ -745,6 +816,7 @@ tests-strict = ["coverage[toml] (==5.3)", "pytest (==4.6.0)", "pytest (==4.6.0)"
name = "mako" name = "mako"
version = "1.3.2" version = "1.3.2"
description = "A super-fast templating language that borrows the best ideas from the existing templating languages." description = "A super-fast templating language that borrows the best ideas from the existing templating languages."
category = "main"
optional = false optional = false
python-versions = ">=3.8" python-versions = ">=3.8"
files = [ files = [
@ -764,6 +836,7 @@ testing = ["pytest"]
name = "markdown-it-py" name = "markdown-it-py"
version = "3.0.0" version = "3.0.0"
description = "Python port of markdown-it. Markdown parsing, done right!" description = "Python port of markdown-it. Markdown parsing, done right!"
category = "main"
optional = false optional = false
python-versions = ">=3.8" python-versions = ">=3.8"
files = [ files = [
@ -788,6 +861,7 @@ testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"]
name = "markupsafe" name = "markupsafe"
version = "2.1.5" version = "2.1.5"
description = "Safely add untrusted strings to HTML/XML markup." description = "Safely add untrusted strings to HTML/XML markup."
category = "main"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
@ -857,6 +931,7 @@ files = [
name = "matplotlib-inline" name = "matplotlib-inline"
version = "0.1.6" version = "0.1.6"
description = "Inline Matplotlib backend for Jupyter" description = "Inline Matplotlib backend for Jupyter"
category = "dev"
optional = false optional = false
python-versions = ">=3.5" python-versions = ">=3.5"
files = [ files = [
@ -871,6 +946,7 @@ traitlets = "*"
name = "mccabe" name = "mccabe"
version = "0.7.0" version = "0.7.0"
description = "McCabe checker, plugin for flake8" description = "McCabe checker, plugin for flake8"
category = "dev"
optional = false optional = false
python-versions = ">=3.6" python-versions = ">=3.6"
files = [ files = [
@ -882,6 +958,7 @@ files = [
name = "mdurl" name = "mdurl"
version = "0.1.2" version = "0.1.2"
description = "Markdown URL utilities" description = "Markdown URL utilities"
category = "main"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
@ -893,6 +970,7 @@ files = [
name = "mutagen" name = "mutagen"
version = "1.47.0" version = "1.47.0"
description = "read and write audio tags for many formats" description = "read and write audio tags for many formats"
category = "main"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
@ -904,6 +982,7 @@ files = [
name = "mypy" name = "mypy"
version = "1.9.0" version = "1.9.0"
description = "Optional static typing for Python" description = "Optional static typing for Python"
category = "dev"
optional = false optional = false
python-versions = ">=3.8" python-versions = ">=3.8"
files = [ files = [
@ -938,6 +1017,7 @@ files = [
[package.dependencies] [package.dependencies]
mypy-extensions = ">=1.0.0" mypy-extensions = ">=1.0.0"
tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
typing-extensions = ">=4.1.0" typing-extensions = ">=4.1.0"
[package.extras] [package.extras]
@ -950,6 +1030,7 @@ reports = ["lxml"]
name = "mypy-extensions" name = "mypy-extensions"
version = "1.0.0" version = "1.0.0"
description = "Type system extensions for programs checked with the mypy type checker." description = "Type system extensions for programs checked with the mypy type checker."
category = "dev"
optional = false optional = false
python-versions = ">=3.5" python-versions = ">=3.5"
files = [ files = [
@ -961,6 +1042,7 @@ files = [
name = "mysqlclient" name = "mysqlclient"
version = "2.2.4" version = "2.2.4"
description = "Python interface to MySQL" description = "Python interface to MySQL"
category = "main"
optional = false optional = false
python-versions = ">=3.8" python-versions = ">=3.8"
files = [ files = [
@ -979,6 +1061,7 @@ files = [
name = "numpy" name = "numpy"
version = "1.26.4" version = "1.26.4"
description = "Fundamental package for array computing in Python" description = "Fundamental package for array computing in Python"
category = "main"
optional = false optional = false
python-versions = ">=3.9" python-versions = ">=3.9"
files = [ files = [
@ -1024,6 +1107,7 @@ files = [
name = "obsws-python" name = "obsws-python"
version = "1.7.0" version = "1.7.0"
description = "A Python SDK for OBS Studio WebSocket v5.0" description = "A Python SDK for OBS Studio WebSocket v5.0"
category = "main"
optional = false optional = false
python-versions = ">=3.9" python-versions = ">=3.9"
files = [ files = [
@ -1032,6 +1116,7 @@ files = [
] ]
[package.dependencies] [package.dependencies]
tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""}
websocket-client = "*" websocket-client = "*"
[package.extras] [package.extras]
@ -1041,6 +1126,7 @@ dev = ["black", "isort", "pytest", "pytest-randomly"]
name = "packaging" name = "packaging"
version = "24.0" version = "24.0"
description = "Core utilities for Python packages" description = "Core utilities for Python packages"
category = "dev"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
@ -1050,23 +1136,25 @@ files = [
[[package]] [[package]]
name = "parso" name = "parso"
version = "0.8.4" version = "0.8.3"
description = "A Python Parser" description = "A Python Parser"
category = "dev"
optional = false optional = false
python-versions = ">=3.6" python-versions = ">=3.6"
files = [ files = [
{file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, {file = "parso-0.8.3-py2.py3-none-any.whl", hash = "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75"},
{file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, {file = "parso-0.8.3.tar.gz", hash = "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0"},
] ]
[package.extras] [package.extras]
qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] qa = ["flake8 (==3.8.3)", "mypy (==0.782)"]
testing = ["docopt", "pytest"] testing = ["docopt", "pytest (<6.0.0)"]
[[package]] [[package]]
name = "pathspec" name = "pathspec"
version = "0.12.1" version = "0.12.1"
description = "Utility library for gitignore style pattern matching of file paths." description = "Utility library for gitignore style pattern matching of file paths."
category = "dev"
optional = false optional = false
python-versions = ">=3.8" python-versions = ">=3.8"
files = [ files = [
@ -1078,6 +1166,7 @@ files = [
name = "pdbp" name = "pdbp"
version = "1.5.0" version = "1.5.0"
description = "pdbp (Pdb+): A drop-in replacement for pdb and pdbpp." description = "pdbp (Pdb+): A drop-in replacement for pdb and pdbpp."
category = "dev"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
@ -1094,6 +1183,7 @@ tabcompleter = ">=1.3.0"
name = "pexpect" name = "pexpect"
version = "4.9.0" version = "4.9.0"
description = "Pexpect allows easy control of interactive console applications." description = "Pexpect allows easy control of interactive console applications."
category = "dev"
optional = false optional = false
python-versions = "*" python-versions = "*"
files = [ files = [
@ -1108,6 +1198,7 @@ ptyprocess = ">=0.5"
name = "platformdirs" name = "platformdirs"
version = "4.2.0" version = "4.2.0"
description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
category = "dev"
optional = false optional = false
python-versions = ">=3.8" python-versions = ">=3.8"
files = [ files = [
@ -1123,6 +1214,7 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-
name = "pluggy" name = "pluggy"
version = "1.4.0" version = "1.4.0"
description = "plugin and hook calling mechanisms for python" description = "plugin and hook calling mechanisms for python"
category = "dev"
optional = false optional = false
python-versions = ">=3.8" python-versions = ">=3.8"
files = [ files = [
@ -1138,6 +1230,7 @@ testing = ["pytest", "pytest-benchmark"]
name = "prompt-toolkit" name = "prompt-toolkit"
version = "3.0.43" version = "3.0.43"
description = "Library for building powerful interactive command lines in Python" description = "Library for building powerful interactive command lines in Python"
category = "dev"
optional = false optional = false
python-versions = ">=3.7.0" python-versions = ">=3.7.0"
files = [ files = [
@ -1152,6 +1245,7 @@ wcwidth = "*"
name = "psutil" name = "psutil"
version = "5.9.8" version = "5.9.8"
description = "Cross-platform lib for process and system monitoring in Python." description = "Cross-platform lib for process and system monitoring in Python."
category = "main"
optional = false optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
files = [ files = [
@ -1180,6 +1274,7 @@ test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"]
name = "ptyprocess" name = "ptyprocess"
version = "0.7.0" version = "0.7.0"
description = "Run a subprocess in a pseudo terminal" description = "Run a subprocess in a pseudo terminal"
category = "dev"
optional = false optional = false
python-versions = "*" python-versions = "*"
files = [ files = [
@ -1189,19 +1284,20 @@ files = [
[[package]] [[package]]
name = "pudb" name = "pudb"
version = "2024.1" version = "2023.1"
description = "A full-screen, console-based Python debugger" description = "A full-screen, console-based Python debugger"
category = "dev"
optional = false optional = false
python-versions = "~=3.8" python-versions = "~=3.8"
files = [ files = [
{file = "pudb-2024.1.tar.gz", hash = "sha256:fc9d6a976a59b590764c8379ec200fecd47faa84259b64efd8cd86066a0af338"}, {file = "pudb-2023.1.tar.gz", hash = "sha256:15df3c603aba87a918a666ef8e1bf63f764238cc3589db3c5b7a5f1b01ea2f03"},
] ]
[package.dependencies] [package.dependencies]
jedi = ">=0.18,<1" jedi = ">=0.18,<1"
packaging = ">=20.0" packaging = ">=20.0"
pygments = ">=2.7.4" pygments = ">=2.7.4"
urwid = ">=2.4" urwid = ">=1.1.1"
urwid_readline = "*" urwid_readline = "*"
[package.extras] [package.extras]
@ -1211,6 +1307,7 @@ completion = ["shtab"]
name = "pure-eval" name = "pure-eval"
version = "0.2.2" version = "0.2.2"
description = "Safely evaluate AST nodes without side effects" description = "Safely evaluate AST nodes without side effects"
category = "dev"
optional = false optional = false
python-versions = "*" python-versions = "*"
files = [ files = [
@ -1225,6 +1322,7 @@ tests = ["pytest"]
name = "pycodestyle" name = "pycodestyle"
version = "2.11.1" version = "2.11.1"
description = "Python style guide checker" description = "Python style guide checker"
category = "dev"
optional = false optional = false
python-versions = ">=3.8" python-versions = ">=3.8"
files = [ files = [
@ -1236,6 +1334,7 @@ files = [
name = "pydub" name = "pydub"
version = "0.25.1" version = "0.25.1"
description = "Manipulate audio with an simple and easy high level interface" description = "Manipulate audio with an simple and easy high level interface"
category = "main"
optional = false optional = false
python-versions = "*" python-versions = "*"
files = [ files = [
@ -1247,6 +1346,7 @@ files = [
name = "pydub-stubs" name = "pydub-stubs"
version = "0.25.1.1" version = "0.25.1.1"
description = "Stub-only package containing type information for pydub" description = "Stub-only package containing type information for pydub"
category = "dev"
optional = false optional = false
python-versions = ">=3.8,<4.0" python-versions = ">=3.8,<4.0"
files = [ files = [
@ -1261,6 +1361,7 @@ typing-extensions = ">=4.0.0"
name = "pydymenu" name = "pydymenu"
version = "0.5.2" version = "0.5.2"
description = "A pythonic wrapper interface for fzf, dmenu, and rofi." description = "A pythonic wrapper interface for fzf, dmenu, and rofi."
category = "main"
optional = false optional = false
python-versions = "*" python-versions = "*"
files = [ files = [
@ -1275,6 +1376,7 @@ rich = "*"
name = "pyflakes" name = "pyflakes"
version = "3.2.0" version = "3.2.0"
description = "passive checker of Python programs" description = "passive checker of Python programs"
category = "dev"
optional = false optional = false
python-versions = ">=3.8" python-versions = ">=3.8"
files = [ files = [
@ -1286,6 +1388,7 @@ files = [
name = "pyfzf" name = "pyfzf"
version = "0.3.1" version = "0.3.1"
description = "Python wrapper for junegunn's fuzzyfinder (fzf)" description = "Python wrapper for junegunn's fuzzyfinder (fzf)"
category = "main"
optional = false optional = false
python-versions = "*" python-versions = "*"
files = [ files = [
@ -1297,6 +1400,7 @@ files = [
name = "pygame" name = "pygame"
version = "2.5.2" version = "2.5.2"
description = "Python Game Development" description = "Python Game Development"
category = "main"
optional = false optional = false
python-versions = ">=3.6" python-versions = ">=3.6"
files = [ files = [
@ -1363,6 +1467,7 @@ files = [
name = "pygments" name = "pygments"
version = "2.17.2" version = "2.17.2"
description = "Pygments is a syntax highlighting package written in Python." description = "Pygments is a syntax highlighting package written in Python."
category = "main"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
@ -1378,6 +1483,7 @@ windows-terminal = ["colorama (>=0.4.6)"]
name = "pyqt6" name = "pyqt6"
version = "6.6.1" version = "6.6.1"
description = "Python bindings for the Qt cross platform application toolkit" description = "Python bindings for the Qt cross platform application toolkit"
category = "main"
optional = false optional = false
python-versions = ">=3.6.1" python-versions = ">=3.6.1"
files = [ files = [
@ -1395,6 +1501,7 @@ PyQt6-sip = ">=13.6,<14"
name = "pyqt6-qt6" name = "pyqt6-qt6"
version = "6.6.3" version = "6.6.3"
description = "The subset of a Qt installation needed by PyQt6." description = "The subset of a Qt installation needed by PyQt6."
category = "main"
optional = false optional = false
python-versions = "*" python-versions = "*"
files = [ files = [
@ -1408,6 +1515,7 @@ files = [
name = "pyqt6-sip" name = "pyqt6-sip"
version = "13.6.0" version = "13.6.0"
description = "The sip module support for PyQt6" description = "The sip module support for PyQt6"
category = "main"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
@ -1438,6 +1546,7 @@ files = [
name = "pyqt6-webengine" name = "pyqt6-webengine"
version = "6.6.0" version = "6.6.0"
description = "Python bindings for the Qt WebEngine framework" description = "Python bindings for the Qt WebEngine framework"
category = "main"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
@ -1456,6 +1565,7 @@ PyQt6-WebEngine-Qt6 = ">=6.6.0"
name = "pyqt6-webengine-qt6" name = "pyqt6-webengine-qt6"
version = "6.6.3" version = "6.6.3"
description = "The subset of a Qt installation needed by PyQt6-WebEngine." description = "The subset of a Qt installation needed by PyQt6-WebEngine."
category = "main"
optional = false optional = false
python-versions = "*" python-versions = "*"
files = [ files = [
@ -1469,6 +1579,7 @@ files = [
name = "pyqtgraph" name = "pyqtgraph"
version = "0.13.4" version = "0.13.4"
description = "Scientific Graphics and GUI Library for Python" description = "Scientific Graphics and GUI Library for Python"
category = "main"
optional = false optional = false
python-versions = ">=3.9" python-versions = ">=3.9"
files = [ files = [
@ -1483,6 +1594,7 @@ numpy = ">=1.22.0"
name = "pyreadline3" name = "pyreadline3"
version = "3.4.1" version = "3.4.1"
description = "A python implementation of GNU readline." description = "A python implementation of GNU readline."
category = "dev"
optional = false optional = false
python-versions = "*" python-versions = "*"
files = [ files = [
@ -1494,6 +1606,7 @@ files = [
name = "pytest" name = "pytest"
version = "8.1.1" version = "8.1.1"
description = "pytest: simple powerful testing with Python" description = "pytest: simple powerful testing with Python"
category = "dev"
optional = false optional = false
python-versions = ">=3.8" python-versions = ">=3.8"
files = [ files = [
@ -1503,9 +1616,11 @@ files = [
[package.dependencies] [package.dependencies]
colorama = {version = "*", markers = "sys_platform == \"win32\""} colorama = {version = "*", markers = "sys_platform == \"win32\""}
exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""}
iniconfig = "*" iniconfig = "*"
packaging = "*" packaging = "*"
pluggy = ">=1.4,<2.0" pluggy = ">=1.4,<2.0"
tomli = {version = ">=1", markers = "python_version < \"3.11\""}
[package.extras] [package.extras]
testing = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] testing = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"]
@ -1514,6 +1629,7 @@ testing = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygm
name = "pytest-cov" name = "pytest-cov"
version = "5.0.0" version = "5.0.0"
description = "Pytest plugin for measuring coverage." description = "Pytest plugin for measuring coverage."
category = "dev"
optional = false optional = false
python-versions = ">=3.8" python-versions = ">=3.8"
files = [ files = [
@ -1532,6 +1648,7 @@ testing = ["fields", "hunter", "process-tests", "pytest-xdist", "virtualenv"]
name = "pytest-qt" name = "pytest-qt"
version = "4.4.0" version = "4.4.0"
description = "pytest support for PyQt and PySide applications" description = "pytest support for PyQt and PySide applications"
category = "dev"
optional = false optional = false
python-versions = ">=3.8" python-versions = ">=3.8"
files = [ files = [
@ -1551,6 +1668,7 @@ doc = ["sphinx", "sphinx-rtd-theme"]
name = "python-levenshtein" name = "python-levenshtein"
version = "0.12.2" version = "0.12.2"
description = "Python extension for computing string edit distances and similarities." description = "Python extension for computing string edit distances and similarities."
category = "main"
optional = false optional = false
python-versions = "*" python-versions = "*"
files = [ files = [
@ -1562,13 +1680,14 @@ setuptools = "*"
[[package]] [[package]]
name = "python-slugify" name = "python-slugify"
version = "8.0.4" version = "6.1.2"
description = "A Python slugify application that also handles Unicode" description = "A Python slugify application that also handles Unicode"
category = "main"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
files = [ files = [
{file = "python-slugify-8.0.4.tar.gz", hash = "sha256:59202371d1d05b54a9e7720c5e038f928f45daaffe41dd10822f3907b937c856"}, {file = "python-slugify-6.1.2.tar.gz", hash = "sha256:272d106cb31ab99b3496ba085e3fea0e9e76dcde967b5e9992500d1f785ce4e1"},
{file = "python_slugify-8.0.4-py2.py3-none-any.whl", hash = "sha256:276540b79961052b66b7d116620b36518847f52d5fd9e3a70164fc8c50faa6b8"}, {file = "python_slugify-6.1.2-py2.py3-none-any.whl", hash = "sha256:7b2c274c308b62f4269a9ba701aa69a797e9bca41aeee5b3a9e79e36b6656927"},
] ]
[package.dependencies] [package.dependencies]
@ -1581,6 +1700,7 @@ unidecode = ["Unidecode (>=1.1.1)"]
name = "python-vlc" name = "python-vlc"
version = "3.0.20123" version = "3.0.20123"
description = "VLC bindings for python." description = "VLC bindings for python."
category = "main"
optional = false optional = false
python-versions = "*" python-versions = "*"
files = [ files = [
@ -1592,6 +1712,7 @@ files = [
name = "requests" name = "requests"
version = "2.31.0" version = "2.31.0"
description = "Python HTTP for Humans." description = "Python HTTP for Humans."
category = "dev"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
@ -1613,6 +1734,7 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
name = "rich" name = "rich"
version = "13.7.1" version = "13.7.1"
description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal"
category = "main"
optional = false optional = false
python-versions = ">=3.7.0" python-versions = ">=3.7.0"
files = [ files = [
@ -1631,6 +1753,7 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"]
name = "setuptools" name = "setuptools"
version = "69.2.0" version = "69.2.0"
description = "Easily download, build, install, upgrade, and uninstall Python packages" description = "Easily download, build, install, upgrade, and uninstall Python packages"
category = "main"
optional = false optional = false
python-versions = ">=3.8" python-versions = ">=3.8"
files = [ files = [
@ -1647,6 +1770,7 @@ testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jar
name = "six" name = "six"
version = "1.16.0" version = "1.16.0"
description = "Python 2 and 3 compatibility utilities" description = "Python 2 and 3 compatibility utilities"
category = "dev"
optional = false optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
files = [ files = [
@ -1658,6 +1782,7 @@ files = [
name = "snoop" name = "snoop"
version = "0.4.3" version = "0.4.3"
description = "Powerful debugging tools for Python" description = "Powerful debugging tools for Python"
category = "dev"
optional = false optional = false
python-versions = "*" python-versions = "*"
files = [ files = [
@ -1679,6 +1804,7 @@ tests = ["Django", "birdseye", "littleutils", "numpy (>=1.16.5)", "pandas (>=0.2
name = "snowballstemmer" name = "snowballstemmer"
version = "2.2.0" version = "2.2.0"
description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms."
category = "dev"
optional = false optional = false
python-versions = "*" python-versions = "*"
files = [ files = [
@ -1690,6 +1816,7 @@ files = [
name = "soupsieve" name = "soupsieve"
version = "2.5" version = "2.5"
description = "A modern CSS selector implementation for Beautiful Soup." description = "A modern CSS selector implementation for Beautiful Soup."
category = "dev"
optional = false optional = false
python-versions = ">=3.8" python-versions = ">=3.8"
files = [ files = [
@ -1701,6 +1828,7 @@ files = [
name = "sphinx" name = "sphinx"
version = "7.2.6" version = "7.2.6"
description = "Python documentation generator" description = "Python documentation generator"
category = "dev"
optional = false optional = false
python-versions = ">=3.9" python-versions = ">=3.9"
files = [ files = [
@ -1714,6 +1842,7 @@ babel = ">=2.9"
colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""}
docutils = ">=0.18.1,<0.21" docutils = ">=0.18.1,<0.21"
imagesize = ">=1.3" imagesize = ">=1.3"
importlib-metadata = {version = ">=4.8", markers = "python_version < \"3.10\""}
Jinja2 = ">=3.0" Jinja2 = ">=3.0"
packaging = ">=21.0" packaging = ">=21.0"
Pygments = ">=2.14" Pygments = ">=2.14"
@ -1735,6 +1864,7 @@ test = ["cython (>=3.0)", "filelock", "html5lib", "pytest (>=4.6)", "setuptools
name = "sphinx-basic-ng" name = "sphinx-basic-ng"
version = "1.0.0b2" version = "1.0.0b2"
description = "A modern skeleton for Sphinx themes." description = "A modern skeleton for Sphinx themes."
category = "dev"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
@ -1752,6 +1882,7 @@ docs = ["furo", "ipython", "myst-parser", "sphinx-copybutton", "sphinx-inline-ta
name = "sphinxcontrib-applehelp" name = "sphinxcontrib-applehelp"
version = "1.0.8" version = "1.0.8"
description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books"
category = "dev"
optional = false optional = false
python-versions = ">=3.9" python-versions = ">=3.9"
files = [ files = [
@ -1768,6 +1899,7 @@ test = ["pytest"]
name = "sphinxcontrib-devhelp" name = "sphinxcontrib-devhelp"
version = "1.0.6" version = "1.0.6"
description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp documents" description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp documents"
category = "dev"
optional = false optional = false
python-versions = ">=3.9" python-versions = ">=3.9"
files = [ files = [
@ -1784,6 +1916,7 @@ test = ["pytest"]
name = "sphinxcontrib-htmlhelp" name = "sphinxcontrib-htmlhelp"
version = "2.0.5" version = "2.0.5"
description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files"
category = "dev"
optional = false optional = false
python-versions = ">=3.9" python-versions = ">=3.9"
files = [ files = [
@ -1800,6 +1933,7 @@ test = ["html5lib", "pytest"]
name = "sphinxcontrib-jsmath" name = "sphinxcontrib-jsmath"
version = "1.0.1" version = "1.0.1"
description = "A sphinx extension which renders display math in HTML via JavaScript" description = "A sphinx extension which renders display math in HTML via JavaScript"
category = "dev"
optional = false optional = false
python-versions = ">=3.5" python-versions = ">=3.5"
files = [ files = [
@ -1814,6 +1948,7 @@ test = ["flake8", "mypy", "pytest"]
name = "sphinxcontrib-qthelp" name = "sphinxcontrib-qthelp"
version = "1.0.7" version = "1.0.7"
description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp documents" description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp documents"
category = "dev"
optional = false optional = false
python-versions = ">=3.9" python-versions = ">=3.9"
files = [ files = [
@ -1830,6 +1965,7 @@ test = ["pytest"]
name = "sphinxcontrib-serializinghtml" name = "sphinxcontrib-serializinghtml"
version = "1.1.10" version = "1.1.10"
description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)" description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)"
category = "dev"
optional = false optional = false
python-versions = ">=3.9" python-versions = ">=3.9"
files = [ files = [
@ -1846,6 +1982,7 @@ test = ["pytest"]
name = "sqlalchemy" name = "sqlalchemy"
version = "2.0.29" version = "2.0.29"
description = "Database Abstraction Library" description = "Database Abstraction Library"
category = "main"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
@ -1933,6 +2070,7 @@ sqlcipher = ["sqlcipher3_binary"]
name = "stack-data" name = "stack-data"
version = "0.6.3" version = "0.6.3"
description = "Extract data from python stack frames and tracebacks for informative displays" description = "Extract data from python stack frames and tracebacks for informative displays"
category = "dev"
optional = false optional = false
python-versions = "*" python-versions = "*"
files = [ files = [
@ -1952,6 +2090,7 @@ tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"]
name = "stackprinter" name = "stackprinter"
version = "0.2.12" version = "0.2.12"
description = "Debug-friendly stack traces, with variable values and semantic highlighting" description = "Debug-friendly stack traces, with variable values and semantic highlighting"
category = "main"
optional = false optional = false
python-versions = ">=3.4" python-versions = ">=3.4"
files = [ files = [
@ -1963,6 +2102,7 @@ files = [
name = "tabcompleter" name = "tabcompleter"
version = "1.3.0" version = "1.3.0"
description = "tabcompleter --- Autocompletion in the Python console." description = "tabcompleter --- Autocompletion in the Python console."
category = "dev"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
@ -1977,6 +2117,7 @@ pyreadline3 = {version = "*", markers = "platform_system == \"Windows\""}
name = "text-unidecode" name = "text-unidecode"
version = "1.3" version = "1.3"
description = "The most basic Text::Unidecode port" description = "The most basic Text::Unidecode port"
category = "main"
optional = false optional = false
python-versions = "*" python-versions = "*"
files = [ files = [
@ -1988,6 +2129,7 @@ files = [
name = "thefuzz" name = "thefuzz"
version = "0.19.0" version = "0.19.0"
description = "Fuzzy string matching in python" description = "Fuzzy string matching in python"
category = "main"
optional = false optional = false
python-versions = "*" python-versions = "*"
files = [ files = [
@ -2002,6 +2144,7 @@ speedup = ["python-levenshtein (>=0.12)"]
name = "tinytag" name = "tinytag"
version = "1.10.1" version = "1.10.1"
description = "Read music meta data and length of MP3, OGG, OPUS, MP4, M4A, FLAC, WMA and Wave files" description = "Read music meta data and length of MP3, OGG, OPUS, MP4, M4A, FLAC, WMA and Wave files"
category = "main"
optional = false optional = false
python-versions = ">=2.7" python-versions = ">=2.7"
files = [ files = [
@ -2016,6 +2159,7 @@ tests = ["flake8", "pytest", "pytest-cov"]
name = "toml" name = "toml"
version = "0.10.2" version = "0.10.2"
description = "Python Library for Tom's Obvious, Minimal Language" description = "Python Library for Tom's Obvious, Minimal Language"
category = "dev"
optional = false optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
files = [ files = [
@ -2023,10 +2167,23 @@ files = [
{file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
] ]
[[package]]
name = "tomli"
version = "2.0.1"
description = "A lil' TOML parser"
category = "main"
optional = false
python-versions = ">=3.7"
files = [
{file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
{file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
]
[[package]] [[package]]
name = "traitlets" name = "traitlets"
version = "5.14.2" version = "5.14.2"
description = "Traitlets Python configuration system" description = "Traitlets Python configuration system"
category = "dev"
optional = false optional = false
python-versions = ">=3.8" python-versions = ">=3.8"
files = [ files = [
@ -2042,6 +2199,7 @@ test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,
name = "types-psutil" name = "types-psutil"
version = "5.9.5.20240316" version = "5.9.5.20240316"
description = "Typing stubs for psutil" description = "Typing stubs for psutil"
category = "main"
optional = false optional = false
python-versions = ">=3.8" python-versions = ">=3.8"
files = [ files = [
@ -2051,19 +2209,21 @@ files = [
[[package]] [[package]]
name = "typing-extensions" name = "typing-extensions"
version = "4.11.0" version = "4.10.0"
description = "Backported and Experimental Type Hints for Python 3.8+" description = "Backported and Experimental Type Hints for Python 3.8+"
category = "main"
optional = false optional = false
python-versions = ">=3.8" python-versions = ">=3.8"
files = [ files = [
{file = "typing_extensions-4.11.0-py3-none-any.whl", hash = "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a"}, {file = "typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475"},
{file = "typing_extensions-4.11.0.tar.gz", hash = "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0"}, {file = "typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb"},
] ]
[[package]] [[package]]
name = "urllib3" name = "urllib3"
version = "2.2.1" version = "2.2.1"
description = "HTTP library with thread-safe connection pooling, file post, and more." description = "HTTP library with thread-safe connection pooling, file post, and more."
category = "dev"
optional = false optional = false
python-versions = ">=3.8" python-versions = ">=3.8"
files = [ files = [
@ -2081,6 +2241,7 @@ zstd = ["zstandard (>=0.18.0)"]
name = "urwid" name = "urwid"
version = "2.6.10" version = "2.6.10"
description = "A full-featured console (xterm et al.) user interface library" description = "A full-featured console (xterm et al.) user interface library"
category = "dev"
optional = false optional = false
python-versions = ">3.7" python-versions = ">3.7"
files = [ files = [
@ -2106,6 +2267,7 @@ zmq = ["zmq"]
name = "urwid-readline" name = "urwid-readline"
version = "0.14" version = "0.14"
description = "A textbox edit widget for urwid that supports readline shortcuts" description = "A textbox edit widget for urwid that supports readline shortcuts"
category = "dev"
optional = false optional = false
python-versions = "*" python-versions = "*"
files = [ files = [
@ -2122,6 +2284,7 @@ dev = ["black", "pytest"]
name = "wcwidth" name = "wcwidth"
version = "0.2.13" version = "0.2.13"
description = "Measures the displayed width of unicode strings in a terminal" description = "Measures the displayed width of unicode strings in a terminal"
category = "dev"
optional = false optional = false
python-versions = "*" python-versions = "*"
files = [ files = [
@ -2133,6 +2296,7 @@ files = [
name = "websocket-client" name = "websocket-client"
version = "1.7.0" version = "1.7.0"
description = "WebSocket client for Python with low level API options" description = "WebSocket client for Python with low level API options"
category = "main"
optional = false optional = false
python-versions = ">=3.8" python-versions = ">=3.8"
files = [ files = [
@ -2145,7 +2309,23 @@ docs = ["Sphinx (>=6.0)", "sphinx-rtd-theme (>=1.1.0)"]
optional = ["python-socks", "wsaccel"] optional = ["python-socks", "wsaccel"]
test = ["websockets"] test = ["websockets"]
[[package]]
name = "zipp"
version = "3.18.1"
description = "Backport of pathlib-compatible object wrapper for zip files"
category = "dev"
optional = false
python-versions = ">=3.8"
files = [
{file = "zipp-3.18.1-py3-none-any.whl", hash = "sha256:206f5a15f2af3dbaee80769fb7dc6f249695e940acca08dfb2a4769fe61e538b"},
{file = "zipp-3.18.1.tar.gz", hash = "sha256:2884ed22e7d8961de1c9a05142eb69a247f120291bc0206a00a7642f09b5b715"},
]
[package.extras]
docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"]
[metadata] [metadata]
lock-version = "2.0" lock-version = "2.0"
python-versions = "^3.11" python-versions = "^3.9"
content-hash = "aa2d4520ee27e7045be959a5255c88e2c6ac83d3c5af7464d5649363018b2644" content-hash = "e8a4a3f4b5dd70bd5fb2ab420b4de6e3304a15be383233bb01b966e047700cd1"

View File

@ -5,48 +5,48 @@ description = "Music player for internet radio"
authors = ["Keith Edmunds <kae@midnighthax.com>"] authors = ["Keith Edmunds <kae@midnighthax.com>"]
[tool.poetry.dependencies] [tool.poetry.dependencies]
python = "^3.11" python = "^3.9"
tinytag = "^1.10.1" tinytag = "^1.7.0"
SQLAlchemy = "^2.0.29" SQLAlchemy = "^2.0.22"
python-vlc = "^3.0.20123" python-vlc = "^3.0.12118"
mysqlclient = "^2.2.4" mysqlclient = "^2.1.0"
mutagen = "^1.47.0" mutagen = "^1.45.1"
alembic = "^1.13.1" alembic = "^1.7.5"
psutil = "^5.9.8" psutil = "^5.9.0"
pydub = "^0.25.1" pydub = "^0.25.1"
types-psutil = "^5.9.5.20240316" types-psutil = "^5.8.22"
python-slugify = "^8.0.4" python-slugify = "^6.1.2"
thefuzz = "^0.19.0" thefuzz = "^0.19.0"
python-Levenshtein = "^0.12.2" python-Levenshtein = "^0.12.2"
pyfzf = "^0.3.1" pyfzf = "^0.3.1"
pydymenu = "^0.5.2" pydymenu = "^0.5.2"
stackprinter = "^0.2.10" stackprinter = "^0.2.10"
obsws-python = "^1.7.0" obsws-python = "^1.4.2"
pyqt6 = "^6.6.1" pyqt6 = "^6.5.0"
pyqt6-webengine = "^6.6.0" pyqt6-webengine = "^6.5.0"
pygame = "^2.5.2" pygame = "^2.4.0"
pyqtgraph = "^0.13.3" pyqtgraph = "^0.13.3"
colorlog = "^6.8.2" colorlog = "^6.8.0"
alchemical = "^1.0.1" alchemical = "^1.0.1"
[tool.poetry.dev-dependencies] [tool.poetry.dev-dependencies]
ipdb = "^0.13.9" ipdb = "^0.13.9"
pytest-qt = "^4.4.0" pytest-qt = "^4.0.2"
pydub-stubs = "^0.25.1" pydub-stubs = "^0.25.1"
line-profiler = "^4.1.2" line-profiler = "^4.0.2"
flakehell = "^0.9.0" flakehell = "^0.9.0"
[tool.poetry.group.dev.dependencies] [tool.poetry.group.dev.dependencies]
pudb = "*" pudb = "^2023.1"
sphinx = "^7.0.1" sphinx = "^7.0.1"
furo = "^2023.5.20" furo = "^2023.5.20"
black = "^24.2.0"
flakehell = "^0.9.0" flakehell = "^0.9.0"
mypy = "^1.7.0" mypy = "^1.7.0"
pdbp = "^1.5.0" pdbp = "^1.5.0"
pytest-cov = "^5.0.0" pytest-cov = "^5.0.0"
pytest = "^8.1.1" pytest = "^8.1.1"
snoop = "^0.4.3" snoop = "^0.4.3"
black = "^24.3.0"
[build-system] [build-system]
requires = ["poetry-core>=1.0.0"] requires = ["poetry-core>=1.0.0"]

View File

@ -46,7 +46,7 @@ class TestMMModels(unittest.TestCase):
def test_track_repr(self): def test_track_repr(self):
with db.Session() as session: with db.Session() as session:
session.add(self.track1) session.add(self.track1)
_ = str(self.track1) _ =str(self.track1)
def test_notecolours_get_colour(self): def test_notecolours_get_colour(self):
"""Create a colour record and retrieve all colours""" """Create a colour record and retrieve all colours"""

View File

@ -1,4 +1,5 @@
# Standard library imports # Standard library imports
import datetime as dt
import os import os
import unittest import unittest
@ -63,6 +64,12 @@ class MyTestCase(unittest.TestCase):
def down(self): def down(self):
db.drop_all() db.drop_all()
# @with_updown
# def test_some_property(self):
# with self.qtbot.waitSignal(self.widget.my_signal, timeout=300):
# self.widget.do_thing()
# self.assertEqual(self.widget.get_thing(), 'foo')
@with_updown @with_updown
def test_init(self): def test_init(self):
"""Just check we can create a playlist_tab""" """Just check we can create a playlist_tab"""