Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migration to tox #51

Open
webknjaz opened this issue Oct 7, 2024 · 4 comments
Open

Migration to tox #51

webknjaz opened this issue Oct 7, 2024 · 4 comments
Assignees
Labels
enhancement New feature or request

Comments

@webknjaz
Copy link
Member

webknjaz commented Oct 7, 2024

I'd like to do $sbj to the extent possible. It's hard to complete such a change in long-existing projects for a number of reasons, since it's a bit complicated when it comes to C-extensions. But I think the ecosystem is in a better place today than it was when I last considered it (like tox devenv, for example). I've also gained some experience with tox+Cython elsewhere, which makes me think that using tox (a Python-aware workflow tool) is generally better than GNU/make (which is generic and is just a dumb command runner mostly).

We can keep tox invocations wrapped with make if someone wants that, but in general, I consider make impractical in the Python world. It originally exists in aiohttp-adjacent projects because of CPython Core Devs' prior habit.

@bdraco @Dreamsorcerer I'll be counting on your DX feedback in related PRs, specifically around working with C-extensions. But the scafolding I'm hoping to mostly source from my other projects, as it's pretty well-composed already. The only thing I didn't really hash out is the build options (python vs. compiled extension). So it'd be the only thing that will need extra thought.

@webknjaz webknjaz added the enhancement New feature or request label Oct 7, 2024
@webknjaz webknjaz self-assigned this Oct 7, 2024
@bdraco
Copy link
Member

bdraco commented Oct 7, 2024

tox always seemed like another layer of complexity to debug when there is a large dep chain. I don’t think we have that problem here.

another concern is it tends to slow things down. I wonder if https://github.com/tox-dev/tox-uv if ready for prime time

would like to be mindful of the inverse relationship between CI run time/test invocation complexity and contributor participation

@webknjaz
Copy link
Member Author

webknjaz commented Oct 7, 2024

I've been using it for like a decade and sometimes contributed to it. Makefile also adds a layer of complexity, and virtualenvs do too for that matter.

tox-uv is probably good, but I haven't had time to play with uv. Though, since Hynek says it's good, I think there's no reason to be conservative about it. FWIW, tox caches the venvs so it only influences the first run and anything that invalidates the cache. And tox 4 was heavily refactored by Bernát and improved a number of things.

Tox's main idea is to actually keep the CI and dev env experience in sync as much as possible.
Still, with the tox devenv feature, it'll give you an old-good virtualenv with everything pre-installed, for experiments. So you shouldn't lose anything in experience.

Additionally, I have an interesting approach with heavily-pinned DIY pip-tools-managed lockfiles that ties well into the infra.

@webknjaz
Copy link
Member Author

webknjaz commented Nov 8, 2024

I'm adding this to the sprint with the understanding that this is difficult and should be worked on in small portions. Somebody will need to pair/consult with me to understand the exact vision I have in mind.

@webknjaz
Copy link
Member Author

Linking some of my points from the past: aio-libs/aiohttp#3419 (comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
Development

No branches or pull requests

2 participants