[project]
name = "suno_orpheus"
version = "0.1.0"
description = ""
authors = [
    {name = "Suno", email = "code@suno.ai"},
]
dependencies = [
    "ably>=2.0.12",
    "boto3",
    "clerk-backend-api>=3.1.11",
    "cryptography>=45.0.6",
    "datadog==0.51.0",
    "ddtrace==2.21.1",
    "dotenv>=0.9.9",
    "fastapi",
    "modal>=1.1.1",
    "openai==1.107.2",
    "pydantic>=2.11.7",
    "pyjwt>=2.10.1",
    "pytest-asyncio>=1.1.0",
    "pyahocorasick>=2.2.0,<3",
    "redis==5.2.1",
    "requests>=2.32.4",
    "statsig",
    "structlog>=25.4.0",
    "beautifulsoup4>=4.14.2",
    "sentence-transformers>=5.1.2",
    "numpy>=2.3.4",
]
requires-python = "==3.12"
readme = "README.md"
license = {text = "UNLICENSED"}
[project.optional-dependencies]
worker = [
    "modal==1.1.1",
"redis==5.2.1",
]

[tool.uv]
dev-dependencies = [
    "ruff>=0.12.8",
    "pytest==8.3.5",
    "pyright==1.1.406",
    "modal==1.1.1",
    "setuptools==75.8.2",
    "pytest-cov>=7.0.0",
    "pip-licenses>=5.0.0",
        "deepeval>=3.6.1",	
]

[tool.ruff]
line-length = 105

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
"PLR5501",  # unnecessary branching
# "PLR",
]

lint.ignore = [
# these errors need to be fixed eventually
"E501",  # line-length
]

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

[tool.ruff.format]
exclude = ["suno_orpheus/scripts/*", "*.json.py", "*.txt.py"]

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

[tool.pyright]
include = ["suno_orpheus"]
typeCheckingMode = "standard"

# Start with all checks disabled
reportGeneralTypeIssues = false
reportOptionalSubscript = true
reportOptionalMemberAccess = true
reportOptionalCall = true
reportOptionalIterable = true
reportOptionalContextManager = true
reportOptionalOperand = true
reportArgumentType = true
reportAssignmentType = true
reportReturnType = true
reportAttributeAccessIssue = false
reportIncompatibleMethodOverride = true
reportIncompatibleVariableOverride = true
reportMissingTypeStubs = false
reportUnknownMemberType = false  # 695 errors...
reportUnknownArgumentType = false  # 359 errors
reportUnknownVariableType = false
reportUnknownParameterType = false
reportUnknownLambdaType = true
reportPrivateUsage = true
reportConstantRedefinition = true
reportInvalidTypeForm = true
