[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "ultimate-rvc" version = "0.1.24" description = "Ultimate RVC" readme = "README.md" requires-python = "==3.12.*" dependencies = [ # General "lib==4.0.0", #Validation "pydantic==2.9.2", # CLI "typer==0.12.5", # Networking "requests==2.32.3", "yt_dlp==2024.11.4", "nodejs-wheel-binaries==22.11.0", # TODO add these later # "deemix", # "wget", # "flask", # "beautifulsoup4", # "pypresence", # Data science "numpy==1.26.4", "scipy==1.14.1", "matplotlib==3.9.2", "tqdm==4.66.6", "gradio==5.6.0", # Machine learning "torch==2.5.1+cu124", "torchaudio==2.5.1+cu124", "torchcrepe==0.0.23", "fairseq-fixed==0.12.3.1", "faiss-cpu==1.9.0", # Version of onnxruntime-gpu needs to align with what # version audio-separator package uses. "onnxruntime-gpu==1.19.2", "tensorboardX==2.6.2.2", # TODO add these later # "tensorboard", # "torchfcpe", # "local-attention", # "libf0", # "einops", # "numba; sys_platform == 'linux'", # "numba==0.57.0; sys_platform == 'darwin' or sys_platform == 'win32'", # Audio "static-ffmpeg==2.7", "static-sox==1.0.1", "typed-ffmpeg==2.1.0", "soundfile==0.12.1", "librosa==0.10.2", "sox==1.5.0", "pydub==0.25.1", "pydub-stubs==0.25.1.2", "pedalboard==0.9.16", "audio-separator[gpu]==0.24.1", "praat-parselmouth==0.4.5", "pyworld-fixed==0.3.8", "diffq==0.2.4" # TODO add the later # "noisereduce", # "audio_upscaler==0.1.4", # "edge-tts==6.1.9", # "ffmpeg-python>=0.2.0", # "ffmpy==0.3.1" ] [project.scripts] urvc = "ultimate_rvc.cli.main:app" urvc-web = "ultimate_rvc.web.main:app_wrapper" [tool.uv] environments = ["sys_platform == 'win32'", "sys_platform == 'linux'"] cache-dir = "./uv/cache" compile-bytecode = true [tool.uv.sources] torch = { index = "torch-cu124"} torchaudio = { index = "torch-cu124"} diffq = { url = "https://huggingface.co/JackismyShephard/ultimate-rvc/resolve/main/diffq-0.2.4-cp312-cp312-win_amd64.whl", marker = "sys_platform == 'win32'"} [[tool.uv.index]] name = "torch-cu124" url = "https://download.pytorch.org/whl/cu124" explicit = true [tool.pyright] stubPath = "src/ultimate_rvc/stubs" pythonVersion = "3.12" pythonPlatform = "All" typeCheckingMode = "strict" ignore = ["**/.venv"] exclude = ["./uv"] [tool.black] target-version = ['py312'] preview = true enable-unstable-feature = ["string_processing"] [tool.ruff] target-version = "py312" fix = true required-version = ">=0.5.7" [tool.ruff.format] docstring-code-format = true preview = true [tool.ruff.lint] select = ["ALL"] extend-select = ["I"] ignore = [ # Ignore missing blank before between class name and docstring "D203", # Do not require a description after summary line in docstring "D205", # Do not require summary line to be located on first physical line of docstring "D212", # Do not require docstring section names to end with colon "D416", # Ignore TODO notes "FIX002", "TD002", "TD003", "TD004", # Ignore missing copyright notice "CPY001", # Ignore function signatures with too many arguments "PLR0913", # ignore function signatures with too many positional arguments "PLR0917", # Ignore boolean positional argument in function signature "FBT002", "FBT001", ] unfixable = ["F401"] preview = true [tool.ruff.lint.flake8-annotations] #ignore-fully-untyped = true [tool.ruff.lint.isort] relative-imports-order = "closest-to-furthest" section-order = [ "future", "typing", "standard-library", "third-party", "networking", "validation", "data-science", "machine-learning", "audio", "cli", "first-party", "ultimate_rvc", "local-folder", ] [tool.ruff.lint.isort.sections] "typing" = ["typing", "typing_extensions"] "networking" = [ "requests", "yt_dlp", "deemix", "wget", "flask", "beautifulsoup4", "pypresence", ] "validation" = ["pydantic"] "data-science" = [ "numpy", "scipy", "matplotlib", "tqdm", "pandas", "gradio" ] "machine-learning" = [ "torch", "torchaudio", "torchcrepe", "fairseq", "faiss", "tensorboard", "torchfcpe", "local_attention", "libf0", "einops", "numba", ] "audio" = [ "static_ffmpeg", "static_sox", "ffmpeg", "soundfile", "librosa", "sox", "pydub", "pedalboard", "audio_separator", "parselmouth", "pyworld", "noisereduce", "audio_upscaler", "edge_tts", "ffmpy", ] "cli" = ["typer", "rich"] "ultimate_rvc" = ["ultimate_rvc"] [tool.ruff.lint.pycodestyle] max-doc-length = 72