Skip to content

Conversation

@chien-liu
Copy link

Summary

This PR addresses issue #135 by refactoring how the leidenalg dependency is managed.

Details

The leidenalg package is currently listed as a mandatory dependency, but it is not used within the core module. Its only usage occurs in tutorial notebooks located under the docs/ directory. Since it is not essential for the primary functionality of the package, I'd suggest to treat it as an optional dependency.

Changes

  • Moved leidenalg from the mandatory dependencies to the extras_require section.
  • Updated relevant documentation to reflect this change.

Impact

This change reduces the dependency footprint for users who do not require the tutorial notebooks, improving installation performance and removing the GPL 2.0 licensed package (i.e. leidenalg) from the dependencies.

@ChuanXu1
Copy link
Collaborator

Thank you for this brilliant PR. Will check and let you known soon:)

@chien-liu
Copy link
Author

Hi ChuanXu. Thank you for looking into this!
Since we already have docs/requirements.txt, should we use it instead of requirements-doc.txt in this MR?

@ChuanXu1
Copy link
Collaborator

Just got time to look at this in detail.

@chien-liu, yes, I agree, adding the extra leidenalg dependency to docs/requirements.txt makes sense.

However, leidenalg isn't only used in the tutorials. In classifier.py, the function sc.tl.leiden can also be called, which depends on leidenalg for some scanpy versions. Given this, do you still think it's best to include leidenalg only in docs/requirements.txt, or should we consider listing it as is in the requirements.txt?

@chien-liu
Copy link
Author

In classifier.py, the function sc.tl.leiden can also be called, which depends on leidenalg for some scanpy versions.

In this case, I’d recommend allowing scanpy to manage its own optional dependencies. In other words, we shouldn't explicitly list leidenalg in requirements.txt, since package managers like pip will handle its installation if it's truly required by the specific scanpy version in use.

In addition, looking at the source of sc.tl.leiden (_leiden.py), it appears that leidenalg is only referenced in a type hint. These hints are safely ignored if the module isn’t available, so this shouldn’t cause any issues for users who don’t install leidenalg.

Happy to hear your thought

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants