ENH: do not explicitly import spm._spm #9
Merged
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.
See #3
This PR removes the explicit import of
spm._spmand instead lets the wrapped package (in our case, spm-python) implement its ownRuntimeclass. Something like:It also needs each of the
MatlabClasschildren it implements to point to the correct runtime. It's a bit tricky if we don't want to mess with the__init_subclass__business implemented inMatlabClassbut I think it can be done in a not too verbose way using a mixin:I am leaving this as draft as it needs
spm-runtimeto be properly released and published to pypispm-pythonandmpythonto define the runtime and mixin described aboveI've also replaced the local imports (used to break circular imports) with "delayed imports" using a magic class. The (only?) advantage is it allows to have all the imports listed at the top of the file like we're used to. See e.g.
mpython-core/mpython/core/base_types.py
Lines 8 to 15 in ec0f3e5
Happy to discuss! (@johmedr )