[tool.pdm]

[tool.pdm.dev-dependencies]
dev = [
    "ruff>=0.1.9",
    "pytest>=7.3.2",
    "pyright>=1.1.371",
]

[tool.uv]
dev-dependencies = [
    "ruff>=0.1.9",
    "pytest>=7.3.2",
    "pyright>=1.1.371",
    "pip-licenses>=5.0.0",
]

[project]
name = "suno_analytics"
version = "0.0.1"
description = ""
authors = [
    {name = "Suno", email = "code@suno.ai"},
]
dependencies = [
    "boto3>=1,<2",
    "gast<=0.5.3",  # pinned to solve this problem: https://github.com/scipy/scipy/issues/21100
    "jupyter>=1,<2",
    "matplotlib>=3.9,<4",
    "numpy<2",  # just pinning for consistency with other projects, no other reason afaik not to move to 2.
    "pandas>=2,<3",
    "psycopg2-binary",
    "seaborn>=0.13,<1",
    "sqlalchemy>=2",
    "tqdm>=4, <5",
    "scipy~=1.9.3",
    "scikit-learn==1.3.0",
]
requires-python = ">=3.10,<3.11"
readme = "README.md"
license = {text = "UNLICENSED"}
[build-system]
requires = ["pdm-pep517>=1.0"]
build-backend = "pdm.pep517.api"

[tool.ruff]
line-length = 105

exclude = [
"*.ipynb"
]  


lint.select = [
# "A",  # flake8-builtins
# "B",  # bugbear
# "C",  # complexity
# "D",  # pydocstyle
"E",  # pyflakes errors
"F",  # pyflakes
# "G",  # logging format
"I",  # imports, fixable
#  "N",  # variable names
# "Q",  # flake quotes
# "S",  # security
# "T",  # print statements
# "W",  # warnings, fixable
# "ANN",  # annotations
# "ARG",  # unused arguments
# "BLE",  # blind exceptions
# "DTZ",  # datetimes
# "EM", # string formatting in execptions, fixable
# "ERA",  # commented code
# "EXE",  # flake8 executables
# "FBT",  # boolean traps
# "ICN",  # import conventions
# "ISC",  # implicit string concatenation
# "NPY",  # numpy specific rules
# "PD",  # pandas rules
# "PGH", # blanket type ignores
# "PIE",  # misc linting
# "PL",  # refactoring
# "PT",  # unittest-style asserts
# "PTH",  # pathlib
# "RET",  # return statements
# "RSE",  # raise statements
# "RUF",  # ruff-specific rules
# "SIM",  # simplifications
# "SLF",  # check for access of private class attributes
# "TCH",  # type-checking
# "TRY",  # try-statement linting
# "UP",  # pyupgrade
# "YTT",  # sys.version lints
]

lint.ignore = [
# these errors need to be fixed eventually
# "E402",
# "E501",
# "E711",
# "E722",
# "E741",
# "F403",
# "F811",
# "F841",
]

lint.unfixable = [
"F841",  # don't let ruff remove unused variables by default-- results are often very confusing.
]

[tool.black]
line-length = 105

[tool.pdm.scripts]
test = "pytest -s"

[tool.pytest.ini_options]
markers = [
    "slow: marks tests as slow (deselect with '-m \"not slow\"')",
    "serial",
]

[tool.pyright]
include = ["suno_analytics"]
