-
Notifications
You must be signed in to change notification settings - Fork 914
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
Make core config accessible in dict get way #1870
Conversation
Signed-off-by: Merel Theisen <merel.theisen@quantumblack.com>
Signed-off-by: Merel Theisen <merel.theisen@quantumblack.com>
Signed-off-by: Merel Theisen <merel.theisen@quantumblack.com>
Signed-off-by: Merel Theisen <merel.theisen@quantumblack.com>
Signed-off-by: Merel Theisen <merel.theisen@quantumblack.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I like the direction of this change and it should make it easier towards customisable path for all configurations ⭐️.
This is just something always in my mind since this question almost come up every week and I always has to point people to make a copy & paste CustomTemplateConfigLoader
. Would be great if we can do something about it while we are making changes to these classes. This is definitely out of scope of this PR, but I just want bring it out so we can see if there are any opportunity to improve it.
#1527
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
tl;dr: I think this is a good start, definitely an improvement or where things are now and probably fine to merge after thinking about the inheritance a bit more, but I'm not sure exactly how the next step will work. I'd feel more confident about it if @idanov could weight in with his thoughts!
I think there were a few major requirements here:
- enable access through getitem syntax:
config_loader["params"]
etc. ✅ - change all our
.get
calls to__getitem__
✅ - maintain backwards compatibility so that 3rd party
.get
calls don't need to change ✅
So I think that in basic terms we've achieved what we wanted to here.
But I'm left with several questions about exactly how it should be done:
- what should
AbstractConfigLoader
inherit from? IMO at the moment it should just beABC
still. I would personally leave the dictionary inheritance for the future if and when it becomes a purely dict-like object - where should the
__getitem__
definition go - abstract config loader or the implementations? At the moment it's just copied and pasted between the implementations which seems a bit unDRY. - likewise do
core_config_patterns
belong in the abstract class or the implementations? - is the intention to remove
.get
entirely in the future?
tbh these points are all kind of moot though given that it's not at all clear what the abstract config loader is actually for currently...
More practically, what is actually the expected user journey following this change if I want to (a) add spark config and (b) add *parameters
as a glob pattern? This is #1864 but it feels a bit hard to judge the proposed change here without understanding how that would work. Currently I think it would be something like this:
class MyConfigLoader(ConfigLoader):
def __init__(...):
super().__init__(...)
self.core_config_patterns.append("*parameters")
self.core_config_patterns["spark"] = ["spark*", ...]
# really we should have another object that's not called "core" to add spark to
I believe @idanov's plan was instead of doing class inheritance to make this patterns dictionary directly accessible in settings.py. But I don't quite see how that works. Would we then want to pass the patterns into the constructor of ConfigLoader
? And how would that eventually enable different sort of config, e.g. database vs. file? We don't need to have it all worked out now, but I'd personally feel more comfortable with this change if I could see better what the ultimate consequence will look like.
As always, thank you for your thorough comments and feedback @AntonyMilneQB ⭐
Yes I think that would make sense, see my earlier comment: #1870 (comment)
These are good questions, my feeling is it should be in the loader implementations because it's too specific to be in the abstract class. As in the mapping from "params" to the parameter regexes isn't something the abstract implementation should care about or anyone inheriting from it. But I also agree that it's not clear what the role of the
Yes as far as I understand it, and instead just leverage the
I coded this up in an older (less clean) branch: https://github.com/kedro-org/kedro/compare/abstract-config-loader, but essentially you would have something like this in
and inside the
So you can add whatever custom config you have as well as overwrite any of the "core" config locations. |
I just want to point out that with this PR, we already assume @MerelTheisenQB @AntonyMilneQB
This won't work if a user inherit |
Yes you're right. I think for the time being though we should not get too stuck on "if users inherit from |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Awesome, such a small code change enabling so much extra functionality!
Could you add a very short description of this to the RELEASE.md?
Co-authored-by: Ivan Danov <idanov@users.noreply.github.com>
Signed-off-by: Merel Theisen <merel.theisen@quantumblack.com>
Signed-off-by: Merel Theisen <merel.theisen@quantumblack.com>
Signed-off-by: Merel Theisen <merel.theisen@quantumblack.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice PR! I think the development notes needed to be updated. I would add that the config_pattern
is now an argument, although it's not configurable in settings.py
yet. Maybe we need to update the RELEASE.md
too?
Signed-off-by: Merel Theisen <merel.theisen@quantumblack.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Awesome! Should we add a small section in the docs to show how to change file patterns through settings.py
?
Co-authored-by: Ivan Danov <idanov@users.noreply.github.com>
Signed-off-by: Merel Theisen <merel.theisen@quantumblack.com> Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com>
Signed-off-by: Merel Theisen <merel.theisen@quantumblack.com> Signed-off-by: nickolasrm <nickolasrochamachado@gmail.com>
* Release/0.18.3 (#1856) * Update release version and release notes Signed-off-by: Nok Chan <nok.lam.chan@quantumblack.com> * Update missing release notes Signed-off-by: Nok Chan <nok.lam.chan@quantumblack.com> * update vresion Signed-off-by: Nok Chan <nok.lam.chan@quantumblack.com> * update release notes Signed-off-by: Nok Chan <nok.lam.chan@quantumblack.com> Signed-off-by: Nok Chan <nok.lam.chan@quantumblack.com> Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Remove comment from code example Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Remove more comments Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Add YAML formatting Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Add missing import Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Remove even more comments Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Remove more even more comments Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Add pickle requirement to extras_require Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Try fix YAML docs Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Try fix YAML docs pt 2 Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Fix code snippets in docs (#1876) * Fix code snippets Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Separate code blocks Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Lint Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Fix issue with specifying format for SparkHiveDataSet (#1857) Signed-off-by: jstammers <jimmy.stammers@cgastrategy.com> Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Update RELEASE.md (#1883) * Update RELEASE.md * fix broken link * Update RELEASE.md Co-authored-by: Merel Theisen <49397448+MerelTheisenQB@users.noreply.github.com> Co-authored-by: Merel Theisen <49397448+MerelTheisenQB@users.noreply.github.com> Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Deprecate `kedro test` and `kedro lint` (#1873) * Deprecating `kedro test` and `kedro lint` Signed-off-by: Nok Chan <nok.lam.chan@quantumblack.com> * Deprecate commands Signed-off-by: Nok Chan <nok.lam.chan@quantumblack.com> * Make kedro looks prettier * Update Linting Signed-off-by: Nok <nok_lam_chan@mckinsey.com> Signed-off-by: Nok Chan <nok.lam.chan@quantumblack.com> Signed-off-by: Nok <nok_lam_chan@mckinsey.com> Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Fix micro package pull from PyPI (#1848) Signed-off-by: Florian Gaudin-Delrieu <florian.gaudindelrieu@gmail.com> Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Update Error message for `VersionNotFoundError` to handle Permission related issues better (#1881) * Update message for VersionNotFoundError Signed-off-by: Ankita Katiyar <110245118+ankatiyar@users.noreply.github.com> * Add test for VersionNotFoundError for cloud protocols * Update test_data_catalog.py Update NoVersionFoundError test * minor linting update * update docs link + styling changes * Revert "update docs link + styling changes" This reverts commit 6088e00. * Update test with styling changes * Update RELEASE.md Signed-off-by: ankatiyar <ankitakatiyar2401@gmail.com> Signed-off-by: Ankita Katiyar <110245118+ankatiyar@users.noreply.github.com> Signed-off-by: ankatiyar <ankitakatiyar2401@gmail.com> Co-authored-by: Ahdra Merali <90615669+AhdraMeraliQB@users.noreply.github.com> Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Update experiment tracking documentation with working examples (#1893) Signed-off-by: Merel Theisen <merel.theisen@quantumblack.com> Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Add NHS AI Lab and ReSpo.Vision to companies list (#1878) Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Document how users can use pytest instead of kedro test (#1879) * Add best_practices.md with introductory sections Signed-off-by: Jannic Holzer <jannic.holzer@quantumblack.com> * Add pytest and pytest-cov sections Signed-off-by: Jannic Holzer <jannic.holzer@quantumblack.com> * Add pytest-cov coverage report Signed-off-by: Jannic Holzer <jannic.holzer@quantumblack.com> * Add sections on pytest-cov Signed-off-by: Jannic Holzer <jannic.holzer@quantumblack.com> * Add automated_testing to index.rst Signed-off-by: Jannic Holzer <jannic.holzer@quantumblack.com> * Reformat third-party library names and clean grammar. Signed-off-by: Jannic Holzer <jannic.holzer@quantumblack.com> * Add link to virtual environment docs Signed-off-by: Jannic Holzer <jannic.holzer@quantumblack.com> * Add example of good test naming Signed-off-by: Jannic Holzer <jannic.holzer@quantumblack.com> * Improve link accessibility Signed-off-by: Jannic Holzer <jannic.holzer@quantumblack.com> * Improve pytest docs link accessibility Signed-off-by: Jannic Holzer <jannic.holzer@quantumblack.com> * Add reminder link to virtual environment docs Signed-off-by: Jannic Holzer <jannic.holzer@quantumblack.com> * Fix formatting in link to coverage docs Signed-off-by: Jannic Holzer <jannic.holzer@quantumblack.com> * Remove reference to /src under 'Run your tests' Signed-off-by: Jannic Holzer <jannic.holzer@quantumblack.com> * Modify references to <project_name> to <package_name> Signed-off-by: Jannic Holzer <jannic.holzer@quantumblack.com> * Fix sentence structure Signed-off-by: Jannic Holzer <jannic.holzer@quantumblack.com> * Fix broken databricks doc link Signed-off-by: Jannic Holzer <jannic.holzer@quantumblack.com> Signed-off-by: Jannic Holzer <jannic.holzer@quantumblack.com> Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Capitalise Kedro-Viz in the "Visualize layers" section (#1899) * Capitalised kedro-viz Signed-off-by: yash6318 <yash.agrawal.cse21@iitbhu.ac.in> * capitalised Kedro viz Signed-off-by: yash6318 <yash.agrawal.cse21@iitbhu.ac.in> * Updated set_up_experiment_tracking.md Co-authored-by: Deepyaman Datta <deepyaman.datta@utexas.edu> Signed-off-by: yash6318 <yash.agrawal.cse21@iitbhu.ac.in> Signed-off-by: yash6318 <yash.agrawal.cse21@iitbhu.ac.in> Co-authored-by: Deepyaman Datta <deepyaman.datta@utexas.edu> Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Fix linting on autmated test page (#1906) Signed-off-by: Merel Theisen <merel.theisen@quantumblack.com> Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Add _SINGLE_PROCESS property to CachedDataSet (#1905) Signed-off-by: Carla Vieira <carlaprv@hotmail.com> Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Update the tutorial of "Visualise pipelines" (#1913) * Change a file extention to match the previous article Signed-off-by: dinotuku <kuan.tung@epfl.ch> * Add a missing import Signed-off-by: dinotuku <kuan.tung@epfl.ch> * Change both preprocessed datasets to parquet files Signed-off-by: dinotuku <kuan.tung@epfl.ch> * Change data type to ParquetDataSet for parquet files Signed-off-by: dinotuku <kuan.tung@epfl.ch> * Add a note for installing seaborn if it is not installed Signed-off-by: dinotuku <kuan.tung@epfl.ch> Signed-off-by: dinotuku <kuan.tung@epfl.ch> Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Document how users can use linting tools instead of `kedro lint` (#1904) * Add documentation for linting tools Signed-off-by: Ankita Katiyar <ankitakatiyar2401@gmail.com> * Revert changes to commands_reference.md Signed-off-by: Ankita Katiyar <ankitakatiyar2401@gmail.com> * Update linting docs with suggestions Signed-off-by: Ankita Katiyar <ankitakatiyar2401@gmail.com> * Update linting doc Signed-off-by: Ankita Katiyar <ankitakatiyar2401@gmail.com> Signed-off-by: Ankita Katiyar <ankitakatiyar2401@gmail.com> Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Make core config accessible in dict get way (#1870) Signed-off-by: Merel Theisen <merel.theisen@quantumblack.com> Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Create dependabot.yml configuration file for version updates (#1862) * Create dependabot.yml configuration file * Update dependabot.yml Signed-off-by: SajidAlamQB <90610031+SajidAlamQB@users.noreply.github.com> * add target-branch Signed-off-by: SajidAlamQB <90610031+SajidAlamQB@users.noreply.github.com> * Update dependabot.yml Signed-off-by: SajidAlamQB <90610031+SajidAlamQB@users.noreply.github.com> * limit dependabot to just dependency folder Signed-off-by: SajidAlamQB <90610031+SajidAlamQB@users.noreply.github.com> * Update test_requirements.txt Signed-off-by: SajidAlamQB <90610031+SajidAlamQB@users.noreply.github.com> * Update MANIFEST.in Signed-off-by: SajidAlamQB <90610031+SajidAlamQB@users.noreply.github.com> * fix e2e Signed-off-by: SajidAlamQB <90610031+SajidAlamQB@users.noreply.github.com> * Update continue_config.yml Signed-off-by: SajidAlamQB <90610031+SajidAlamQB@users.noreply.github.com> * Update requirements.txt Signed-off-by: SajidAlamQB <90610031+SajidAlamQB@users.noreply.github.com> * Update requirements.txt Signed-off-by: SajidAlamQB <90610031+SajidAlamQB@users.noreply.github.com> * fix link Signed-off-by: SajidAlamQB <90610031+SajidAlamQB@users.noreply.github.com> * revert Signed-off-by: SajidAlamQB <90610031+SajidAlamQB@users.noreply.github.com> * Delete requirements.txt Signed-off-by: SajidAlamQB <90610031+SajidAlamQB@users.noreply.github.com> Signed-off-by: SajidAlamQB <90610031+SajidAlamQB@users.noreply.github.com> Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Update dependabot config (#1928) Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Update robots.txt (#1929) Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * fix broken link (#1950) Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Update dependabot.yml config (#1938) * Update dependabot.yml Signed-off-by: SajidAlamQB <90610031+SajidAlamQB@users.noreply.github.com> * pin jupyterlab_services to requirments Signed-off-by: SajidAlamQB <90610031+SajidAlamQB@users.noreply.github.com> * lint Signed-off-by: SajidAlamQB <90610031+SajidAlamQB@users.noreply.github.com> Signed-off-by: SajidAlamQB <90610031+SajidAlamQB@users.noreply.github.com> Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Update setup.py Jinja2 dependencies (#1954) Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Update pip-tools requirement from ~=6.5 to ~=6.9 in /dependency (#1957) Updates the requirements on [pip-tools](https://github.com/jazzband/pip-tools) to permit the latest version. - [Release notes](https://github.com/jazzband/pip-tools/releases) - [Changelog](https://github.com/jazzband/pip-tools/blob/master/CHANGELOG.md) - [Commits](jazzband/pip-tools@6.5.0...6.9.0) --- updated-dependencies: - dependency-name: pip-tools dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Update toposort requirement from ~=1.5 to ~=1.7 in /dependency (#1956) Updates the requirements on [toposort]() to permit the latest version. --- updated-dependencies: - dependency-name: toposort dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Sajid Alam <90610031+SajidAlamQB@users.noreply.github.com> Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Add deprecation warning to package_name argument in session create() (#1953) Signed-off-by: Merel Theisen <merel.theisen@quantumblack.com> Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Remove redundant `resolve_load_version` call (#1911) * remove a redundant function call Signed-off-by: Nok Chan <nok.lam.chan@quantumblack.com> * Remove redundant resolove_load_version & fix test Signed-off-by: Nok Chan <nok.lam.chan@quantumblack.com> * Fix HoloviewWriter tests with more specific error message pattern & Lint Signed-off-by: Nok Chan <nok.lam.chan@quantumblack.com> * Rename tests Signed-off-by: Nok Chan <nok.lam.chan@quantumblack.com> Signed-off-by: Nok Chan <nok.lam.chan@quantumblack.com> Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Make docstring in test starter match real starters (#1916) Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> * Try to fix formatting error Signed-off-by: Merel Theisen <merel.theisen@quantumblack.com> * Specify pickle import Signed-off-by: Nok Chan <nok.lam.chan@quantumblack.com> Signed-off-by: Ahdra Merali <ahdra.merali@quantumblack.com> Signed-off-by: jstammers <jimmy.stammers@cgastrategy.com> Signed-off-by: Nok <nok_lam_chan@mckinsey.com> Signed-off-by: Florian Gaudin-Delrieu <florian.gaudindelrieu@gmail.com> Signed-off-by: Ankita Katiyar <110245118+ankatiyar@users.noreply.github.com> Signed-off-by: ankatiyar <ankitakatiyar2401@gmail.com> Signed-off-by: Merel Theisen <merel.theisen@quantumblack.com> Signed-off-by: Jannic Holzer <jannic.holzer@quantumblack.com> Signed-off-by: yash6318 <yash.agrawal.cse21@iitbhu.ac.in> Signed-off-by: Carla Vieira <carlaprv@hotmail.com> Signed-off-by: dinotuku <kuan.tung@epfl.ch> Signed-off-by: Ankita Katiyar <ankitakatiyar2401@gmail.com> Signed-off-by: SajidAlamQB <90610031+SajidAlamQB@users.noreply.github.com> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Nok <mediumnok@gmail.com> Co-authored-by: Jimmy Stammers <jimmy.stammers@gmail.com> Co-authored-by: Merel Theisen <49397448+MerelTheisenQB@users.noreply.github.com> Co-authored-by: Florian Gaudin-Delrieu <9217921+FlorianGD@users.noreply.github.com> Co-authored-by: Ankita Katiyar <110245118+ankatiyar@users.noreply.github.com> Co-authored-by: Yetunde Dada <43755008+yetudada@users.noreply.github.com> Co-authored-by: Jannic <37243923+jmholzer@users.noreply.github.com> Co-authored-by: Yash Agrawal <96697569+yash6318@users.noreply.github.com> Co-authored-by: Deepyaman Datta <deepyaman.datta@utexas.edu> Co-authored-by: Carla Vieira <carlaprv@hotmail.com> Co-authored-by: Kuan Tung <kuan.tung@epfl.ch> Co-authored-by: Sajid Alam <90610031+SajidAlamQB@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Merel Theisen <49397448+merelcht@users.noreply.github.com> Co-authored-by: Merel Theisen <merel.theisen@quantumblack.com>
Description
#1863
Development notes
AbstractConfigLoader
to inherit fromUserDict
KedroContext
toConfigLoader
andTemplatedConfigLoader
config_patterns
is added as an argument to theConfigLoader
andTemplatedConfigLoader
To discuss
Is allowing users to access config in this way something we want for the future
0.19.0
version as well? How does this allow for using non file based config, e.g stored in a database?Discussion summary
ConfigLoader
andTemplatedConfigLoader
and not to theAbstractConfigLoader
to not make add assumptions about file based config in the base abstract class.ConfigLoader
will enable users to implement their own DB access so they can load their config.0.19.0
we will remove the custom.get()
method and rely onOmegaConf
for loading the actual config.Checklist
RELEASE.md
file