[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "sunoGPT"
version = "0.1.0"
description = ""
authors = [
    {name = "Suno", email = "code@suno.ai"},
]
dependencies = [
    "torch>=2.5.0,<3",
    "transformers>=4.46.0,<5.0",
    "ruff>=0.1.9", 
    "pytest",
]
requires-python = ">=3.10,<3.11"

[tool.setuptools]
packages = ["sunoGPT"]

[tool.ruff]
line-length = 105
exclude = [
"suno_utils/worker/assets",  # contains a bunch of .py files that aren't actually python
"*.json.py",  # contains a bunch of .py files that aren't actually python
"*.txt.py",  # contains a bunch of .py files that aren't actually python
]  
lint.ignore-init-module-imports = true

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.ruff.format]
exclude = ["suno_utils/slurm_scripts/*"]