chore(deps): bump mloda to 0.10.0#83
Merged
Merged
Conversation
Raise the mloda floor from 0.9.0 to 0.10.0 and refresh the lock. Improvements surfaced by the bump: - MyComputeFramework used `uuid: UUID = uuid4()` as a default. Python evaluates a default once at import, so every instance shared a single uuid. mloda keys compute-framework instances by uuid, so any plugin generated from this template inherited the collision. Default to None and mint a fresh uuid per instance instead. - Modernize the signature to `X | None` per the repo type-hint rule. - Bump the stale mloda version example in the issue template. 0.10.0 needs no migration here: the breaking changes (PROPERTY_MAPPING flattened form, input-feature option forwarding, allow_empty_result) do not touch the template's surface. Full tox gate and pip-audit are green.
Adopt the isolated_plugin_registry fixture that mloda 0.10 ships as a pytest plugin (auto-registered, no conftest wiring). The entry-point test called PluginLoader.all(force_reload=True) and mutated the process-global registry with no teardown, leaking into every later test. Also drop the last typing.Set from the example extender, and remove the now-stale "mloda 0.9" version strings from the pyproject comment and README so they cannot drift from the declared floor.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
What
Raises the mloda floor from
0.9.0to0.10.0and refreshesuv.lock.Improvements surfaced by the bump
Fixed a shared-UUID bug in the example ComputeFramework.
MyComputeFramework.__init__declareduuid: UUID = uuid4(). Python evaluates a default once at import, so every instance constructed without an explicit uuid shared a single id:mloda keys compute-framework instances by uuid (
cfw_collection[cfw_uuid],worker_manager.process_register,track_data_to_drop), so colliding ids silently overwrite each other. The engine itself always passes an explicit uuid, so nothing in mloda regresses, but every plugin generated from this template inherited the footgun for any direct instantiation. Now defaults toNoneand mints a fresh uuid per instance. Two tests pin it, and both fail against the old default.Adopted
isolated_plugin_registry. mloda 0.10 ships this fixture as a pytest plugin (auto-registered, no conftest wiring).test_plugin_loader_discovers_example_classescalledPluginLoader.all(force_reload=True)and mutated the process-global registry with no teardown, leaking into every test that ran after it.Housekeeping: dropped the last
typing.Setfrom the example extender, and removed the stalemloda 0.9version strings from the pyproject comment and README so they cannot drift from the declared floor.Migration: none needed
0.10.0's breaking changes (PROPERTY_MAPPING flattened form removed, input-feature option forwarding now default,
allow_empty_resultretired, HashableDict rejected as a credential value, chained extender failures breaking by default) do not touch the template's surface. The placeholder FeatureGroup defines onlycalculate_feature, andMyExtender.wraps()returns an empty set, so it is never invoked.Considered and deliberately skipped as scope creep for a minimal template:
property_spec,validate_native_data, and the new Extender introspection helpers. Each would mean inventing an options or data surface the scaffold intentionally omits.Follow-up for mloda core
The same
uuid: UUID = uuid4()default exists upstream onComputeFramework.__init__itself, so a plugin author who subclasses without writing an__init__still inherits the shared default.compute_framework.pyalso has a deadif self.uuid is None: raiseguard, suggesting the base was meant to acceptUUID | None. Worth a separate issue.Verification
toxgreen (19 passed, ruff format, ruff check, mypy --strict, bandit) andtox -e security(pip-audit) clean. Reviewed by an independent Claude Opus agent and bycodex review.