Getting Started
Development Setup
Setting up your environment to develop and test Featuresmith
Featuresmith uses a monorepo structure managed by uv workspaces. Follow this guide to set up a clean, isolated local development environment.
Prerequisites
- Python 3.11 or higher installed on your system.
- Astral
uvinstalled (see uv docs). - Git for source control.
1. Clone and Sync Workspace
Clone the repository and run uv sync to automatically create a virtual environment and link all local packages:
bash
git clone https://github.com/adityagangwani30/FeatureSmith.gitcd FeatureSmithuv sync2. Install Pre-commit Hooks
We use pre-commit hooks to enforce formatting (Ruff) and static typing (Mypy) before code is committed:
bash
uv run pre-commit install3. Running Checks and Tests
Ensure your configuration is correct by running the test suite and linters:
bash
# Run formatting checksuv run ruff format . --check# Run linter checksuv run ruff check .# Run type checksuv run mypy .# Run import boundary constraintsuv run lint-imports# Run test suiteuv run pytestWindows Environment Note: If pytest encounters permissions or lockout issues with standard system temp directories, point the temp folders directly inside the workspace:
$env:TMP=".pytest_tmp"; $env:TEMP=".pytest_tmp"; uv run pytest