Skip to content

Commit d7e1186

Browse files
committed
docs: update development setup instructions to streamline environment creation and dependency installation
1 parent 9146adb commit d7e1186

1 file changed

Lines changed: 27 additions & 46 deletions

File tree

docs/development.md

Lines changed: 27 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,20 @@ This guide is intended for developers who want to contribute to SarcAsM or publi
2121
cd SarcAsM
2222
```
2323

24-
3. **Create a development environment**:
24+
3. **Create a development environment and install**:
2525
```bash
2626
uv venv --python 3.10
2727
source .venv/bin/activate # On macOS/Linux
2828
# Or: .venv\Scripts\activate # On Windows
29+
30+
# Install with all development dependencies and documentation extras
31+
uv sync --extra docs
2932
```
3033

31-
4. **Install in development mode with all extras**:
32-
```bash
33-
uv pip install -e ".[dev,test,docs]"
34-
```
35-
36-
This installs the package in editable mode with development, testing, and documentation dependencies. Changes to the code are immediately reflected.
34+
This installs the package in editable mode with:
35+
- Core dependencies
36+
- Development dependencies (from `[dependency-groups]`: pytest, ruff, notebook)
37+
- Documentation dependencies (from `[project.optional-dependencies]`: sphinx, etc.)
3738

3839
### Using conda (Alternative)
3940

@@ -49,19 +50,21 @@ This guide is intended for developers who want to contribute to SarcAsM or publi
4950
conda activate sarcasm-dev
5051
```
5152

52-
3. **Install in development mode with all extras**:
53+
3. **Install in development mode**:
5354
```bash
54-
pip install -e ".[dev,test,docs]"
55+
# With pip 25.1+ (supports dependency groups)
56+
pip install -e . --group dev --extra docs
57+
58+
# With older pip (fallback - requires manual dependency install)
59+
pip install -e .
60+
pip install pytest pytest-cov pytest-xdist ruff notebook sphinx sphinx-rtd-theme sphinx-autoapi nbsphinx myst-parser
5561
```
5662

5763
## Running Tests
5864

59-
SarcAsM uses pytest for testing. To run tests:
65+
SarcAsM uses pytest for testing. Development dependencies (including pytest) are automatically installed with `uv sync`.
6066

6167
```bash
62-
# Install test dependencies (if not already installed)
63-
uv pip install -e ".[test]"
64-
6568
# Run all tests
6669
pytest
6770

@@ -104,7 +107,7 @@ pytest -vv
104107

105108
**Common Workflows:**
106109

107-
```bash
110+
```python
108111
# Debug a single failing test with full output
109112
pytest tests/test_structure.py::test_failing_function -vv -l
110113

@@ -124,26 +127,16 @@ Test data should be placed in the `test_data/` directory. If test data is missin
124127

125128
The project uses several tools for code quality:
126129

127-
* **mypy** for type checking (configuration in `mypy.ini`)
128-
* **ruff** for linting (configuration in `pyproject.toml`)
130+
* **ruff** for linting and formatting (configuration in `pyproject.toml`)
129131
* **pytest** for testing (configuration in `pytest.ini`)
130132

131-
Install development tools:
132-
133-
```bash
134-
# With uv (recommended)
135-
uv pip install -e ".[dev]"
136-
137-
# With pip
138-
pip install -e ".[dev]"
139-
```
133+
Development tools are automatically installed with `uv sync` [web:20].
140134

141135
Run linting before committing:
142136

143137
```bash
144138
# Check for issues
145139
ruff check sarcasm/
146-
mypy sarcasm/
147140

148141
# Auto-fix many issues (safe fixes only)
149142
ruff check --fix sarcasm/
@@ -161,11 +154,8 @@ Documentation is built using Sphinx. To build locally:
161154

162155
1. **Install documentation dependencies**:
163156
```bash
164-
# With uv (recommended)
165-
uv pip install -e ".[docs]"
166-
167-
# With pip
168-
pip install -e ".[docs]"
157+
# With uv (recommended) - includes dev dependencies + docs
158+
uv sync --extra docs
169159
```
170160

171161
2. **Build the docs**:
@@ -182,7 +172,7 @@ Documentation is built using Sphinx. To build locally:
182172

183173
The documentation is automatically built and deployed to ReadTheDocs on each commit to the main branch.
184174

185-
**Note:** The `pyproject.toml` defines all documentation dependencies in the `[project.optional-dependencies.docs]` section.
175+
**Note:** The `pyproject.toml` defines documentation dependencies in the `[project.optional-dependencies.docs]` section [web:20].
186176

187177
## Publishing to PyPI
188178

@@ -191,7 +181,7 @@ SarcAsM uses GitHub Actions for automated publishing to PyPI. The workflow is tr
191181
### Automated Publishing via Git Tags (Recommended)
192182

193183
1. **Update version number** in `pyproject.toml`:
194-
```toml
184+
```
195185
[project]
196186
name = "sarc-asm"
197187
version = "X.Y.Z" # Update this
@@ -250,9 +240,8 @@ git show vX.Y.Z
250240
If you need to publish manually:
251241

252242
```bash
253-
# Install build tools
254-
# With uv (recommended)
255-
uv pip install build twine
243+
# Install build tools (if not already installed)
244+
uv sync --extra app
256245

257246
# Build the package
258247
uv build
@@ -310,11 +299,7 @@ On a Windows machine:
310299

311300
```bash
312301
# Install PyInstaller
313-
# With uv (recommended)
314-
uv pip install pyinstaller
315-
316-
# With pip
317-
pip install pyinstaller
302+
uv sync --extra app
318303

319304
# Build the executable
320305
pyinstaller sarcasm.spec
@@ -328,11 +313,7 @@ On a macOS machine:
328313

329314
```bash
330315
# Install PyInstaller
331-
# With uv (recommended)
332-
uv pip install pyinstaller
333-
334-
# With pip
335-
pip install pyinstaller
316+
uv sync --extra app
336317

337318
# Build the application
338319
pyinstaller sarcasm.spec

0 commit comments

Comments
 (0)