type_object: remove layout and base type from PyTypeInfo #1596
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.
This PR removes some associated types from
PyTypeInfo
which are really just implementation details of#[pyclass]
:Layout
: moved toPyClassImpl
. This doesn't make sense in the long term anyway, because if we inherit from native types where we don't know the layout information (Extend Python Class from Rust #991, Support subclassing from native types in abi3 #1344) we need#[pyclass]
to work without layout information.BaseType
- moved toPyClassImpl
. Not all Python types have a base type (e.g.PyAny
), or we might not statically know them (e.g. Extend Python Class from Rust #991). All#[pyclass]
do have a base type and we'll always know what it is.BaseLayout
- removed entirely.Intitializer
- moved toPyClassBaseType
(which is renamed fromPyBaseTypeUtils
).Making this change frees us up to make internal implementation changes to eventually support #991 and #1344.
In addition, it also simplifies a lot of trait bounds dotted around the public interface and simplifies the macros in
types/mod.rs
.