[build-system] requires = ["setuptools>=68"] build-backend = "setuptools.build_meta" [project] name = "uj-mastering-master" version = "0.1.0" requires-python = ">=3.10" # What the *analysis* needs. The GUI stack lives in the `desktop` extra below. # The web UI (web/) is a static site that analyses audio in the browser and needs # none of these; `tests/parity` uses them to check the browser port against # `metrics.py`. dependencies = [ "librosa", "numpy", "matplotlib", # librosa dependency, and colormaps for the colormap helper "mutagen", "pyloudnorm", ] license = {text = "Apache-2.0"} [project.optional-dependencies] # Desktop GUI. Installed with: # uv sync --extra desktop (or `uv sync --all-extras`) desktop = [ "PyQt5>=5.15.10", # 5.15.2 is the only pyqt5-qt5 release with a Windows wheel; later # versions are Linux/macOS only. "PyQt5-Qt5==5.15.2 ; sys_platform == 'win32'", "pyqtgraph>=0.14.0", ] [tool.uv] # Note: `default-groups` cannot name an entry from `[project.optional-dependencies]` # — it only accepts `[dependency-groups]` names, and errors with "Default group # `desktop` ... is not defined in the project's `dependency-groups` table". # Extras must be requested explicitly: # uv sync # analysis only # uv sync --extra desktop # + Qt/pyqtgraph (the GUI; `uv run ujm`) [project.scripts] ujm = "main:main" [tool.setuptools] py-modules = [ "main", "analysis_results_manager", "audio_visualization_widget", "master_core", "metrics", "plotspec", "font_manager", "plot_control_widget", "ref_line_widget", "logger_setup", "setup_fonts", ]