Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
neon_fixtures.py has grown to unmanageable size. It attracts conflicts.
When adding specific utils under for example
fixtures/pageserver
things sometimes need to import stuff fromneon_fixtures.py
which creates circular import. This is usually only needed for type annotations, sotyping.TYPE_CHECKING
flag can mask the issue. Nevertheless I believe that splitting neon_fixtures.py into smaller parts is a better approach.Currently the PR contains small things, but I plan to continue and move NeonEnv to its own
fixtures.env
module. To keep the diff small I think this PR can already be merged to cause less conflicts.UPD: it looks like currently its not really possible to fully avoid usage of
typing.TYPE_CHECKING
, because some components directly depend on each other. I e Env -> Cli -> Env cycle. But its still worth it to avoid it in as many places as possible. And decreasing neon_fixture's size still makes sense.