def to_config(path: Text, artifact_store_path: Text = None, metadata_store: Optional[Type[ZenMLMetadataStore]] = None, pipelines_dir: Text = None): """ Creates a default .zenml config at path/zenml/.zenml_config. Args: path (str): path to a directory. metadata_store: metadata store definition. artifact_store_path (str): path where to store artifacts. pipelines_dir (str): path where to store pipeline configs. """ config_dir_path = os.path.join(path, ZENML_DIR_NAME) config_path = os.path.join(config_dir_path, ZENML_CONFIG_NAME) if path_utils.file_exists(config_path): raise AssertionError(f'.zenml file already exists at ' f'{config_path}. ' f'Cannot replace. Please delete the ' f'{config_dir_path} directory first.') # Create config dir path_utils.create_dir_if_not_exists(config_dir_path) if artifact_store_path is None: artifact_store_path = \ os.path.join(config_dir_path, ARTIFACT_STORE_DEFAULT_DIR) else: # if provided, then resolve it absolutely artifact_store_path = path_utils.resolve_relative_path( artifact_store_path) # create artifact_store path path_utils.create_dir_if_not_exists(artifact_store_path) if metadata_store is None: uri = os.path.join(artifact_store_path, ML_METADATA_SQLITE_DEFAULT_NAME) from zenml.metadata import \ SQLiteMetadataStore metadata_dict = SQLiteMetadataStore(uri).to_config() else: metadata_dict = metadata_store.to_config() if pipelines_dir is None: pipelines_dir = os.path.join(path, PIPELINES_DEFAULT_DIR_NAME) else: # if provided, still resolve pipelines_dir = path_utils.resolve_relative_path(pipelines_dir) path_utils.create_dir_if_not_exists(pipelines_dir) config_dict = { ARTIFACT_STORE_KEY: artifact_store_path, METADATA_KEY: metadata_dict, PIPELINES_DIR_KEY: pipelines_dir, } # Write initial config yaml_utils.write_yaml(config_path, config_dict)
def __init__(self, uri: Text): """Constructor for MySQL MetadataStore for ZenML""" if path_utils.is_remote(uri): raise Exception(f'URI {uri} is a non-local path. A sqlite store ' f'can only be local paths') # Resolve URI if relative URI provided self.uri = path_utils.resolve_relative_path(uri) super().__init__()