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.
Resolves #680
Related to #436
ForeignKey
static typing in joinsThe 'holy grail' for Piccolo for a long time has been to get 'perfect' static typing for
ForeignKey
columns.If there was some kind of
Proxy
type in thetyping
module, it would be easy, but there isn't. Here's a related issue (python/typing#802) for anyone who wants to track the progress.I've come up with a solution. This query will continue to work:
But this PR allows you to do this:
Note the addition of the
_
after the foreign key. It then has perfect static typing.To remember the syntax,
._.
looks a bit like a connector in a diagram.When Python adds a
Proxy
type to the typingmodule
, we can makeBand.manager.name
behave the same asBand.manager._.name
, but for now I think it's the best solution.With perfect static typing of foreign keys, it is really cool, because Mypy and Pylance will detect any column name typos when doing joins.
get_related
This PR also improves the typing for
get_related
. For example:In the above example, the type for
manager
isManager | None
.Remaining tasks