Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Optimizing the Package Size #15

Open
6 tasks
kkiani opened this issue Sep 9, 2024 · 1 comment
Open
6 tasks

Optimizing the Package Size #15

kkiani opened this issue Sep 9, 2024 · 1 comment
Labels
feature/core-api Changes and suggestion to the core API interface feature/toolset-integration Features for integrating with already available toolset

Comments

@kkiani
Copy link
Contributor

kkiani commented Sep 9, 2024

Description:

To reduce the package size for users, we need to optimize dependency management. Currently, all dependencies are installed regardless of use case, which can unnecessarily bloat the package. For example, if a user is developing a Flask application with Damavand, they don’t need to install PySpark, which is used for Sparkle applications.

Proposed Solution:

Implement optional dependencies in the setup using pip’s extras feature (e.g., pip install damavand[Sparkle]).
Allow users to install only the necessary dependencies based on their specific use case, such as Sparkle for PySpark applications or Flask for web applications.

Tasks:

  • Define optional dependencies for different use cases.
  • Ensure that core functionality remains intact while users can selectively install additional integrations (e.g., Sparkle, Flask).
  • Test installation paths for different use cases to ensure smooth user experience.

Acceptance Criteria:

  • Package size is reduced by making unnecessary dependencies optional.
  • Users can install Damavand with specific dependencies based on their application needs.
  • Documentation is updated to reflect the usage of optional dependencies.
@kkiani kkiani added feature/core-api Changes and suggestion to the core API interface feature/toolset-integration Features for integrating with already available toolset labels Sep 9, 2024
@kkiani
Copy link
Contributor Author

kkiani commented Sep 10, 2024

PDM optional dependencies should address this needs. For example to make sparkle an optional depenedency:

# first remove sparkle and pyspark from main dependencies
pdm remove pyspark
pdm remove sparkle

# add sparkle as optional dependency
pdm add -G spark "git+https://github.com/DataChefHQ/sparkle.git"

However, the CI/CD needs to be updated to install all optional dependencies.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature/core-api Changes and suggestion to the core API interface feature/toolset-integration Features for integrating with already available toolset
Projects
None yet
Development

No branches or pull requests

1 participant