@@ -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
6669pytest
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
109112pytest 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
125128The 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
141135Run linting before committing:
142136
143137``` bash
144138# Check for issues
145139ruff check sarcasm/
146- mypy sarcasm/
147140
148141# Auto-fix many issues (safe fixes only)
149142ruff check --fix sarcasm/
@@ -161,11 +154,8 @@ Documentation is built using Sphinx. To build locally:
161154
1621551 . ** 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
1711612 . ** Build the docs** :
@@ -182,7 +172,7 @@ Documentation is built using Sphinx. To build locally:
182172
183173The 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
1931831 . ** 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
250240If 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
258247uv 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
320305pyinstaller 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
338319pyinstaller sarcasm.spec
0 commit comments