From c05ce38159e75a24b17318e380332e722a18b199 Mon Sep 17 00:00:00 2001 From: Joevidev <45459512+joevidev@users.noreply.github.com> Date: Thu, 17 Jul 2025 05:45:40 -0500 Subject: [PATCH] feat: Add uv for faster and more efficient package management (#156) * refactor: pyproject.toml to use Hatchling as the build backend and update project metadata - Changed build backend from setuptools to hatchling. - Updated project name, description, authors, and dependencies. - Added project URLs and scripts section for SuperClaude. - Configured versioning and build targets for wheel and sdist. * feat: Update installation instructions in README.md to reflect new package management commands using 'uv' instead of 'pip'. * feat: Add uv.lock file to manage package dependencies and versions for SuperClaude * fix: Update library usage guidelines in RULES.md to reference pyproject.toml instead of requirements.txt --- README.md | 4 +-- SuperClaude/Core/RULES.md | 2 +- pyproject.toml | 61 +++++++++++++++++++++++++++++++++++++-- uv.lock | 42 +++++++++++++++++++++++++++ 4 files changed, 104 insertions(+), 5 deletions(-) create mode 100644 uv.lock diff --git a/README.md b/README.md index 0aedeba..0b155da 100644 --- a/README.md +++ b/README.md @@ -98,14 +98,14 @@ SuperClaude installation is a **two-step process**: **Option A: From PyPI (Recommended)** ```bash -pip install SuperClaude +uv add SuperClaude ``` **Option B: From Source** ```bash git clone https://github.com/NomenAK/SuperClaude.git cd SuperClaude -pip install . +uv sync ``` ### 🔧 UV / UVX Setup Guide diff --git a/SuperClaude/Core/RULES.md b/SuperClaude/Core/RULES.md index 5b1aa11..f91d5cb 100644 --- a/SuperClaude/Core/RULES.md +++ b/SuperClaude/Core/RULES.md @@ -19,7 +19,7 @@ Simple actionable rules for Claude Code SuperClaude framework operation. - Never commit automatically unless explicitly requested ### Framework Compliance -- Check package.json/requirements.txt before using libraries +- Check package.json/pyproject.toml before using libraries - Follow existing project patterns and conventions - Use project's existing import styles and organization - Respect framework lifecycles and best practices diff --git a/pyproject.toml b/pyproject.toml index 3292c83..70aa1fa 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,4 +1,61 @@ [build-system] -requires = ["setuptools>=61.0"] -build-backend = "setuptools.build_meta" +requires = ["hatchling"] +build-backend = "hatchling.build" + +[project] +name = "SuperClaude" +dynamic = ["version"] +description = "SuperClaude Framework Management Hub" +readme = "README.md" +license = {text = "MIT"} +authors = [ + {name = "Mithun Gowda B", email = "contact@superclaude.dev"}, + {name = "NomenAK", email = "contact@superclaude.dev"}, +] +requires-python = ">=3.8" +dependencies = [ + "setuptools>=45.0.0", +] +classifiers = [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", +] + +[project.urls] +Homepage = "https://github.com/NomenAK/SuperClaude" +Repository = "https://github.com/NomenAK/SuperClaude" +"Bug Tracker" = "https://github.com/NomenAK/SuperClaude/issues" +"GitHub" = "https://github.com/NomenAK/SuperClaude" +"Mithun Gowda B" = "https://github.com/mithun50" +"NomenAK" = "https://github.com/NomenAK" + +[project.scripts] +SuperClaude = "SuperClaude.__main__:main" + +[tool.hatch.version] +path = "VERSION" +pattern = "(?P.*)" + +[tool.hatch.build.targets.wheel] +packages = ["SuperClaude"] + +[tool.hatch.build.targets.sdist] +include = [ + "SuperClaude/", + "config/", + "profiles/", + "setup/", + "VERSION", + "README.md", + "LICENSE", + "MANIFEST.in", +] diff --git a/uv.lock b/uv.lock new file mode 100644 index 0000000..47513f2 --- /dev/null +++ b/uv.lock @@ -0,0 +1,42 @@ +version = 1 +revision = 1 +requires-python = ">=3.8" +resolution-markers = [ + "python_full_version >= '3.9'", + "python_full_version < '3.9'", +] + +[[package]] +name = "setuptools" +version = "75.3.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.9'", +] +sdist = { url = "https://files.pythonhosted.org/packages/5c/01/771ea46cce201dd42cff043a5eea929d1c030fb3d1c2ee2729d02ca7814c/setuptools-75.3.2.tar.gz", hash = "sha256:3c1383e1038b68556a382c1e8ded8887cd20141b0eb5708a6c8d277de49364f5", size = 1354489 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/65/3f0dba35760d902849d39d38c0a72767794b1963227b69a587f8a336d08c/setuptools-75.3.2-py3-none-any.whl", hash = "sha256:90ab613b6583fc02d5369cbca13ea26ea0e182d1df2d943ee9cbe81d4c61add9", size = 1251198 }, +] + +[[package]] +name = "setuptools" +version = "80.9.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.9'", +] +sdist = { url = "https://files.pythonhosted.org/packages/18/5d/3bf57dcd21979b887f014ea83c24ae194cfcd12b9e0fda66b957c69d1fca/setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c", size = 1319958 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/dc/17031897dae0efacfea57dfd3a82fdd2a2aeb58e0ff71b77b87e44edc772/setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922", size = 1201486 }, +] + +[[package]] +name = "superclaude" +source = { editable = "." } +dependencies = [ + { name = "setuptools", version = "75.3.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "setuptools", version = "80.9.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, +] + +[package.metadata] +requires-dist = [{ name = "setuptools", specifier = ">=45.0.0" }]