Насколько маленьким может быть минимальный конвейер KEDRO, готов к упаковке? Я сделал один в 4 файла, которые вы можете установить. Это всего лишь 35 строк Python, 8 в setup.py
и 27 в mini_kedro_pipiple.py
Отказ
У меня есть все для этого поста, размещенного в этом Gihub Repo Вы можете вилить это, клонировать его или просто следовать.
Установка
pip install git+https://github.com/WaylonWalker/mini-kedro-pipeline
Оговорки
Этот репо представляет собой минимальное количество структуры для создания конвейера Kedro, которые могут быть разделены по всему проектам. Его установочный и падает прямо в ваш крюксс
или Run.py
модули. Это не прогонзурный трубопровод. В этот момент Я думаю, что конфигурационный загрузчик должен иметь файл конфигурации журнала.
Это разделяемый трубопровод, который можно использовать во многих различных проектах.
Применение
# hooks.py import mini_kedro_project as mkp class ProjectHooks: @hook_impl def register_pipelines(self) -> Dict[str, Pipeline]: """Register the project's pipeline. Returns: A mapping from a pipeline name to a ``Pipeline`` object. """ return {"__default__": Pipeline([]), "mkp": mkp.pipeline}
Реализация
Это опирается на другой пост, который я сделал о создании минимального пакета Python. Я не уверен, что его следует назвать пакетом, это модуль, но что вы называете его после того, как вы построите его и разместите его на Pypi?
Минимальный пакет Python Что нужно для создания установочного пакета Python, которая может быть размещена на Pypi? Что такое минимальный пакет Python Read More Waylonwalker.com |
Структура каталогов
. ├── .gitignore ├── README.md ├── setup.py └── my_pipeline.py
setup.py
Это очень минимальное setup.py
Отказ Этого достаточно, чтобы вы начали с пакета, который вы можете поделиться в своей команде. На практике есть немного больше, что вы можете включить в качестве вашего проекта.
from setuptools import setup setup( name="MiniKedroPipeline", version="0.1.0", py_modules=["mini_kedro_pipeline"], install_requires=["kedro"], )
mini_kedro_pipeline.py
Трубопровод Mini Kedro выглядит как любой набор узлов в вашем проекте. Многие проекты будут отделять узлы и функции, я предпочитаю держать их близко друг к другу. Рекомендация по умолчанию также имеет create_pipelines
Функция, которая возвращает трубопровод.
Этот паттерн создает Singleton, если вы должны были ссылаться на тот же трубопровод в нескольких местах в одном и том же запущенном интерпретатере и изменять тот, который вы столкнулись с проблемами. Я не предвижу себя в этом вопросе, но, возможно, так как больше функций становятся доступными, я передумаю.
""" An example of a minimal kedro pipeline project """ from kedro.pipeline import Pipeline, node __version__ = "0.1.0" __author__ = "Waylon S. Walker" nodes = [] def create_data(): "creates a dictionary of sample data" return {"beans": range(10)} nodes.append(node(create_data, None, "raw_data", name="create_raw_data")) def mult_data(data): "multiplies each record of each item by 100" return {item: [i * 100 for i in data[item]] for item in data} nodes.append(node(mult_data, "raw_data", "mult_data", name="create_mult_data")) pipeline = Pipeline(nodes)
Поделитесь своими трубопроводами
Идите и делитесь своими трубопроводами по всему проектам. Дайте мне знать, вы делитесь трубопроводами или каталогами по всему проектам?
Оригинал: “https://dev.to/waylonwalker/minimal-kedro-pipeline-c6g”