#848 occurred because we had a dependency on packaging in code but did not declare it in pyproject.toml. The test passed because packaging was pulled in through a transitive dependency. This bug tracks adding a presubmit to ensure that dependencies used in code are explicitly declared as direct dependencies in pyproject.toml. We may achieve this by having a presubmit where we install dependencies with the --no-deps options to ensure that we're not pulling in transitive dependencies.