Source code for kfp.components.yaml_component

# Copyright 2021 The Kubeflow Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Functions for loading component from yaml."""

__all__ = [
    'load_component_from_text',
    'load_component_from_url',
    'load_component_from_file',
]

from kfp.components import base_component
from kfp.components import structures


class YamlComponent(base_component.BaseComponent):
    """Component defined YAML component spec."""

    def execute(self, *args, **kwargs):
        pass


[docs]def load_component_from_text(text: str) -> base_component.BaseComponent: """Loads component from text.""" return YamlComponent( structures.ComponentSpec.load_from_component_yaml(text))
[docs]def load_component_from_file(file_path: str) -> base_component.BaseComponent: """Loads component from file. Args: file_path: A string containing path to the YAML file. """ with open(file_path, 'rb') as component_stream: return load_component_from_text(component_stream.read())
[docs]def load_component_from_url(url: str, auth=None) -> base_component.BaseComponent: """Loads component from url. Args: url: A string containing path to the url containing YAML file. auth: The authentication credentials necessary for url access. """ if url is None: raise TypeError if url.startswith('gs://'): #Replacing the gs:// URI with https:// URI (works for public objects) url = 'https://storage.googleapis.com/' + url[len('gs://'):] import requests resp = requests.get(url, auth=auth) resp.raise_for_status() return load_component_from_text(resp.content)