Make CIMA imports lazy to remove hard dependency#1
Open
johnfmarkham wants to merge 1 commit into
Open
Conversation
CIMA is only needed when 'volume' is requested in getClusterFeatures. Move the three used CIMA imports inside that branch so that importing smlm_simulator does not require CIMA to be installed. Also removes two unused top-level imports (clusters, DensityProprieties) that were imported from CIMA but never referenced anywhere in the package. Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
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.
Summary
various.pyimported five symbols fromCIMAat module level, so installing or importingsmlm_simulatorunconditionally requiredCIMA— even for users who never callgetClusterFeatureswith'volume'inselected_features.TransformBlurrer,MapFeatures,SegmentXYZ) are moved inside theif 'volume' in selected_featuresbranch where they are actually used.clusters,DensityProprieties) were unused anywhere in the package and are simply removed.Behaviour change
None.
CIMAis still imported automatically whenevergetClusterFeatures(..., selected_features=[..., 'volume', ...])is called, exactly as before. All other call paths are unaffected.Motivation
CIMAhas its own heavyweight dependencies and is tied to a specific Python version, making it difficult to installsmlm_simulatorin environments that don't need the volume-computation feature. Lazy imports are the standard Python pattern for optional heavy dependencies.🤖 Generated with Claude Code