How do you guys use tox in development so that it downloads the local versions of packages? I am trying to test some changes that I made to my fork of phoenix but I noticed that tox is downloading some version of the phoenix packages that dont include my changes.
(I am not a python expert but I can share what I know) we use tox to execute scripts and install local development versions of Phoenix for testing and development. If you are modifying the phoenix server or frontend, you can use tox to install and run a local build of the application with your changes included
For example, with tox, uv, and tox-uv, I can run pnpm dev in the app directory to spin up a local build of the frontend (via vite), and the server (via tox and uv), with necessary python app dependencies installed
If you are making changes to the otel or eval packages you must run an additional command to symlink the development folders of those packages for your changes to be reflected
Hopefully this section of the readme can cover any gaps in my explanation https://github.com/Arize-ai/phoenix/blob/main/DEVELOPMENT.md#setting-up-your-macos-development-environment
I am making changes to the eval packages and have added the symlink but and can run python scripts correctly using the local versions using python3 SCRIPT but when i use tox run -e unit_tests -- SOME_TEST_FILE I noticed that ...
the .tox/.../lib contains a version of phoenix that does not contain my changes
I am looking at the tox.ini and Im assuming this is related:
[testenv:unit_tests]
description = Run unit tests
changedir = tests
deps =
-r requirements/unit-tests.txt
commands_pre =
uv pip install --strict --reinstall-package arize-phoenix {toxinidir}
commands =
uv pip list -v
pytest {posargs} unit/ the eval tests are executed via a separate tox command
[testenv:phoenix_evals]
description = Run tests for the arize-phoenix-evals package
changedir = packages/phoenix-evals/
deps =
-r requirements/ci.txt
commands_pre = uv pip install --strict --reinstall-package arize-phoenix-evals .[test]
commands =
uv pip list -v
mypy .
pytest {posargs} .it is my understanding that with the symlinks applied, these should reference your local code
im not 100% on symlinks but ill look into it although at first glance the uv pip install ... arize-phoenix may be the problem
when I run tox r -e phoenix_evals my output confirms that it uses local files as far as I can tell
(see the last line)
also the change im making is adjacent to llm_classify which depends on arize-phoenix so im not sure if I should use phoenix_evals
If your changes are in the src directory, then I would expect to run the unit_tests env, and if they are in the packages/phoenix-evals directory, then I would expect phoenix_evals
