-
Notifications
You must be signed in to change notification settings - Fork 906
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
Overview: Kedro's dependencies and what to do about Cookiecutter #3967
Comments
I wonder if we can invoke cookiecutter via |
Notice that both |
I cannot join today Tech Design and I will watch the recording. I leave some comment on the issue to clarify:
cookiecutter is not needed as a "runtime" dependencies, by runtime I mean kedro run . If user still need to use kedro new or kedro pipeline createthen cookiecutter is needed. To me the problem right now it that user cannot INSTALL kedro without installing cookiecutter, thus either solutions that I propose can address this with different tradeoff (see the summary):
I will not consider this option unless we aim as expanding the feature. For example, there has been quite a lot of issue running kedro new in databricks (network, permission issues). Do we have alternative that can handle this better?
This is explains mostly in Spike: Make cookiecutter optional / not a core dependency of kedro
Pro:
Con:
Pro:
Con:
|
One last idea - |
Here's the summary of what we discussed on the Tech Design session on Jun 26th: Some interesting remarks:
Proposed solutions:
|
To clarify on the two packages solution, there are 2 approaches:
Indeed, they're generated from the same codebase but they don't depend on each other, see fastapi/fastapi#11503. Compare https://pyoven.org/package/fastapi with https://pyoven.org/package/fastapi-slim .
There is https://anaconda.org/conda-forge/dask, depending on Other packages doing the same:
The " |
Thanks you so much for the great write-up of the problem and the discussion summary @lrcouto 👏 ⭐ I'd like to look at this with a short-term and long-term solution view.
Aside from these two solutions, we might need to find an alternative for cookiecutter if it is indeed being maintained less and less. I don't think that necessarily solves any of our issues though, because it would just replace the |
I am leaning towards separating Kedro in two packages as a solution as well. Out of those, I think having |
IMO the rich issue is not a big problem, isn't the original focus making install
@merelcht What's the reason behind this? As I remember you support the "kedro[new]" approach more originally. (I'll catch up on the recording tomorrow). |
They are two separate problems but they are related to each other. The reason why we couldn't fully make Rich optional was because Cookiecutter uses it as a dependency. |
Here are our plans going forward, decided on the meeting today, July 4th. Regarding the short-term, immediate Rich issue, we have decided that patching Cookiecutter might not be worth the "hackiness" of the solution. We've decided to rely for now on instructing users to downgrade Cookiecutter if they desire to uninstall Rich. For a longer term solution, we are leaning towards the two-package approach. Besides the reasons already mentioned on previous comments, it would also offer the most seamless experience to users, as the effect of a Kedro installation would remain mostly the same. I will be closing this issue for now, and we will start future steps for designing and implementing this more permanent solution. |
Sorry for responding on a closed ticket, but just wanted to clarify my position on the long-term solution. When I said " I'm starting to like the multiple packages solution" above, I actually meant the idea of having an approach where it's possible to not install everything that is part of Kedro. So either the split dependencies or the multiple packages. My main preference still goes to the split dependencies ( |
For whenever this may be revisited: https://www.reddit.com/r/Python/comments/1guf2fh/comment/lxtndnr/ got me thinking that |
The original issue: Kedro has a lot of dependencies
Attempting to remove Rich
kedro
#2928)The Cookiecutter Issue
cookiecutter
optional / not a core dependency ofkedro
#3884 (comment))kedro new
onwards is building up a data structure to be passed as a parameter to thecookiecutter()
function, which handles the creation itself from the desired template.Current ideas for solutions
pip install kedro[new]
(Spike: Makecookiecutter
optional / not a core dependency ofkedro
#3884 (comment))kedro
andkedro-core
, letting the user choose which one fits their needs. (Also Spike: Makecookiecutter
optional / not a core dependency ofkedro
#3884 (comment))Further questions to discuss
The text was updated successfully, but these errors were encountered: