All right, I didn't touch the code today, so here are some thoughts on what I should be working on after I clean up the api module.
For virtual environments, I'm going to want some way to determine the Python executable to use. That's going to determine the path it attempts, as well as providing a modification to the virtual environment path and action name.
As I said before, for locating files to process or report, I'm going to want a "project" protocol to modify paths specific to a command.
Thinking about the divisions more, code that needs a Project is going to need Python information for almost the same reason.
I hadn't anticipated that, and that feels like it'll be awkward if I rush into it.
Okay, so, the higher-level abstractions should be constructing their own virtual environments, which means they need an ability to take Python objects, but not all commands should be duplicated by Python version, which means that the interface for getting them in is to set up arbitrary "shapes" of Python containers in the constructor. So, technically, it's not "required", it's just that you can't actually do anything if you don't somehow have access to one.
Anyway, thinking about the sort-to-medium term plans for this:
- Break up the api module.
- Create (and test!) abstractions for the two repos I want this working with.
- Cut an initial release.
- (Possibly lower priority) See if I can get this working with a PyPy 2 repo so I can mess with fancy JIT interpreter stuff later. This would be a good proof of concept for Python objects, because I'm not at all interested in getting the runner to work with Python 2, so all pytest etc invocations need a custom path in this scenario.
- Add support for other tools. I have no interest in "mandating" a specific ecosystem for the task runner, so long as the stuff I use works, so I might as well see what is needed to work with, for example, pylint, ward, hammet, mamba, ptr, mutmut, cosmic ray, semgrep, hypothesis...
Anyway, I let this go late, so I should wrap up, like, right now right now.