truss
truss copied to clipboard
[RFC] move to PEP 621 compliant package manager for better extras
:rocket: What
The current way of managing dependencies is getting in our way of handling dependencies in a sane way. The poetry dependencies groups don't map to extras that are pip installable. The extras management in poetry is too hard to maintain (have to mark each dependency as optional, then enumerate each one in the extras list to be included in, which is too error prone).
PEP 621 solves with with a stand [project] metadata which includes dependencies and optional-dependencies which automatically map to extras. Additionally, rye manages the dev-dependencies for us which can be used for linting/test/etc.
In our case, everything that will run in the CLI (chains and cli commends) needs to be included in dependencies. Everything not needed for the CLI but needed for other features (like the context-builder or server or cache-warmer) can be move into an extras group that we can pip to install easily via pip install "truss[server]"