@@ -50,12 +50,15 @@ oldest version currently supported (see the
5050
5151## Dependency management
5252
53- [ poetry ] ( https://https://python-poetry.org/ ) for dependency management:
53+ [ uv ] ( https://docs.astral.sh/uv/ ) is used for dependency management and provides fast package installation :
5454
55- ```
56- % brew install poetry
57- % cd appmap-python
58- % poetry install
55+ ``` bash
56+ # Install uv (macOS/Linux)
57+ curl -LsSf https://astral.sh/uv/install.sh | sh
58+
59+ # Install dependencies
60+ cd appmap-python
61+ uv sync --all-extras
5962```
6063
6164### wrapt
@@ -69,64 +72,63 @@ To update `wrapt`, use `tox` (described below) to run the `vendoring` environmen
6972## Linting
7073[ pylint] ( https://www.pylint.org/ ) for linting:
7174
72- ```
73- % cd appmap-python
74- % poetry run pylint appmap
75+ ``` bash
76+ cd appmap-python
77+ uv run tox -e lint
78+
79+ # Or run pylint directly
80+ uv run pylint appmap
7581
7682--------------------------------------------------------------------
7783Your code has been rated at 10.00/10 (previous run: 10.00/10, +0.00)
78-
7984```
8085
81- [ Note that the current configuration has a threshold set which must be met for the Travis build to
82- pass. To make this easier to achieve, a number of checks have both been disabled. They should be
83- reenabled as soon as possible.]
84-
8586
8687## Testing
8788### pytest
8889
89- Note that you must install the dependencies contained in
90- [ requirements-dev.txt] ( requirements-dev.txt ) before running tests. See the explanation in
91- [ pyproject.toml] ( pyproject.toml ) for details.
90+ [ pytest] ( https://docs.pytest.org/en/stable/ ) for testing:
9291
93- Additionally, the tests currently require that you set ` APPMAP=true ` and
94- ` APPMAP_DISPLAY_PARAMS=true ` .
92+ ``` bash
93+ cd appmap-python
9594
96- [ pytest] ( https://docs.pytest.org/en/stable/ ) for testing:
95+ # Run all tests
96+ APPMAP_DISPLAY_PARAMS=true uv run appmap-python pytest
9797
98- ```
99- % cd appmap-python
100- % pip install -r requirements-test.txt
101- % APPMAP=true APPMAP_DISPLAY_PARAMS=true poetry run pytest
98+ # Run tests with a specific Python version
99+ APPMAP_DISPLAY_PARAMS=true uv run --python 3.9 appmap-python pytest
100+
101+ # Run tests in parallel
102+ APPMAP_DISPLAY_PARAMS=true uv run appmap-python pytest -n auto
102103```
103104
104105### tox
105- Additionally, the ` tox ` configuration provides the ability to run the tests for all
106- supported versions of Python and Django.
106+ The ` tox ` configuration provides the ability to run the tests for all supported versions of Python and web frameworks (Django, Flask, SQLAlchemy).
107107
108- ` tox ` requires that all the correct versions of Python to be available to create
109- the test environments. [ pyenv] ( https://github.com/pyenv/pyenv ) is an easy way to manage
110- multiple versions of Python, and the [ xxenv-latest
111- plugin] ( https://github.com/momo-lab/xxenv-latest ) can help get all the latest versions.
108+ With ` uv ` , you don't need to pre-install Python versions - ` uv ` will automatically download and manage them:
112109
110+ ``` bash
111+ cd appmap-python
113112
113+ # Run full test matrix (all Python versions and frameworks)
114+ uv run tox
114115
115- ``` sh
116- % brew install pyenv
117- % git clone https://github.com/momo-lab/xxenv-latest.git " $( pyenv root) " /plugins/xxenv-latest
118- % cd appmap-python
119- % pyenv latest local 3.{9,6,7,8}
120- % for v in 3.{9,6,7,8}; do pyenv latest install $v ; done
121- % poetry run tox
116+ # Run tests for a specific Python version
117+ uv run tox -e py312-web
118+
119+ # Run tests for specific framework
120+ uv run tox -e py312-django5
121+
122+ # Update vendored wrapt dependency
123+ uv run tox -e vendoring sync
122124```
123125
124126## Code Coverage
125127[ coverage] ( https://coverage.readthedocs.io/ ) for coverage:
126128
127- ```
128- % cd appmap-python
129- % poetry run coverage run -m pytest
130- % poetry run coverage html
131- % open htmlcov/index.html
129+ ``` bash
130+ cd appmap-python
131+ uv run coverage run -m pytest
132+ uv run coverage html
133+ open htmlcov/index.html
132134```
0 commit comments