##################################################################################
#                       Auto-generated Metaflow stub file                        #
# MF version: 2.12.8                                                             #
# Generated on 2024-07-16T15:51:55.417818                                        #
##################################################################################

from __future__ import annotations

import typing
if typing.TYPE_CHECKING:
    import metaflow._vendor.click.types
    import metaflow.parameters
    import metaflow.exception
    import metaflow.metaflow_current

inf: float

JSONType: metaflow.parameters.JSONTypeClass

current: metaflow.metaflow_current.Current

class MetaflowException(Exception, metaclass=type):
    def __init__(self, msg = "", lineno = None):
        ...
    def __str__(self):
        ...
    ...

class FilePathClass(metaflow._vendor.click.types.ParamType, metaclass=type):
    def __init__(self, is_text, encoding):
        ...
    def convert(self, value, param, ctx):
        ...
    def __str__(self):
        ...
    def __repr__(self):
        ...
    ...

ARGO_EVENTS_EVENT: None

ARGO_EVENTS_EVENT_BUS: str

ARGO_EVENTS_EVENT_SOURCE: None

ARGO_EVENTS_INTERNAL_WEBHOOK_URL: None

ARGO_EVENTS_SERVICE_ACCOUNT: None

ARGO_EVENTS_WEBHOOK_AUTH: str

ARGO_WORKFLOWS_ENV_VARS_TO_SKIP: str

ARGO_WORKFLOWS_KUBERNETES_SECRETS: str

ARGO_WORKFLOWS_UI_URL: None

AWS_SECRETS_MANAGER_DEFAULT_REGION: None

AZURE_STORAGE_BLOB_SERVICE_ENDPOINT: None

CARD_AZUREROOT: None

CARD_GSROOT: None

CARD_S3ROOT: None

DATASTORE_SYSROOT_AZURE: None

DATASTORE_SYSROOT_GS: None

DATASTORE_SYSROOT_S3: None

DATATOOLS_S3ROOT: None

DEFAULT_METADATA: str

DEFAULT_SECRETS_BACKEND_TYPE: None

GCP_SECRET_MANAGER_PREFIX: None

AZURE_KEY_VAULT_PREFIX: None

KUBERNETES_FETCH_EC2_METADATA: bool

KUBERNETES_LABELS: str

KUBERNETES_NAMESPACE: str

KUBERNETES_NODE_SELECTOR: str

KUBERNETES_SANDBOX_INIT_SCRIPT: None

KUBERNETES_SECRETS: str

S3_ENDPOINT_URL: None

S3_SERVER_SIDE_ENCRYPTION: None

SERVICE_HEADERS: dict

SERVICE_INTERNAL_URL: None

UI_URL: None

BASH_SAVE_LOGS: str

def deploy_time_eval(value):
    ...

def parse_kube_keyvalue_list(items: typing.List[str], requires_both: bool = True):
    ...

def validate_kube_labels(labels: typing.Optional[typing.Dict[str, typing.Optional[str]]]) -> bool:
    """
    Validate label values.
    
    This validates the kubernetes label values.  It does not validate the keys.
    Ideally, keys should be static and also the validation rules for keys are
    more complex than those for values.  For full validation rules, see:
    
    https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#syntax-and-character-set
    """
    ...

class ArgoClient(object, metaclass=type):
    def __init__(self, namespace = None):
        ...
    def get_workflow(self, name):
        ...
    def get_workflow_template(self, name):
        ...
    def get_workflow_templates(self):
        ...
    def register_workflow_template(self, name, workflow_template):
        ...
    def delete_cronworkflow(self, name):
        """
        Issues an API call for deleting a cronworkflow
        
        Returns either the successful API response, or None in case the resource was not found.
        """
        ...
    def delete_workflow_template(self, name):
        """
        Issues an API call for deleting a cronworkflow
        
        Returns either the successful API response, or None in case the resource was not found.
        """
        ...
    def terminate_workflow(self, name):
        ...
    def suspend_workflow(self, name):
        ...
    def unsuspend_workflow(self, name):
        ...
    def trigger_workflow_template(self, name, parameters = {}):
        ...
    def schedule_workflow_template(self, name, schedule = None, timezone = None):
        ...
    def register_sensor(self, name, sensor = None):
        ...
    def delete_sensor(self, name):
        """
        Issues an API call for deleting a sensor
        
        Returns either the successful API response, or None in case the resource was not found.
        """
        ...
    ...

class ArgoWorkflowsException(metaflow.exception.MetaflowException, metaclass=type):
    ...

class ArgoWorkflowsSchedulingException(metaflow.exception.MetaflowException, metaclass=type):
    ...

class ArgoWorkflows(object, metaclass=type):
    def __init__(self, name, graph, flow, code_package_sha, code_package_url, production_token, metadata, flow_datastore, environment, event_logger, monitor, tags = None, namespace = None, username = None, max_workers = None, workflow_timeout = None, workflow_priority = None, auto_emit_argo_events = False, notify_on_error = False, notify_on_success = False, notify_slack_webhook_url = None, notify_pager_duty_integration_key = None):
        ...
    def __str__(self):
        ...
    def deploy(self):
        ...
    @staticmethod
    def list_templates(flow_name, all = False):
        ...
    @staticmethod
    def delete(name):
        ...
    @classmethod
    def terminate(cls, flow_name, name):
        ...
    @staticmethod
    def get_workflow_status(flow_name, name):
        ...
    @staticmethod
    def suspend(name):
        ...
    @staticmethod
    def unsuspend(name):
        ...
    @classmethod
    def trigger(cls, name, parameters = None):
        ...
    def schedule(self):
        ...
    def trigger_explanation(self):
        ...
    @classmethod
    def get_existing_deployment(cls, name):
        ...
    @classmethod
    def get_execution(cls, name):
        ...
    def list_to_prose(self, items, singular):
        ...
    ...

class WorkflowTemplate(object, metaclass=type):
    def __init__(self):
        ...
    def metadata(self, object_meta):
        ...
    def spec(self, workflow_spec):
        ...
    def to_json(self):
        ...
    def __str__(self):
        ...
    ...

class ObjectMeta(object, metaclass=type):
    def __init__(self):
        ...
    def annotation(self, key, value):
        ...
    def annotations(self, annotations):
        ...
    def generate_name(self, generate_name):
        ...
    def label(self, key, value):
        ...
    def labels(self, labels):
        ...
    def name(self, name):
        ...
    def namespace(self, namespace):
        ...
    def to_json(self):
        ...
    def __str__(self):
        ...
    ...

class WorkflowSpec(object, metaclass=type):
    def __init__(self):
        ...
    def active_deadline_seconds(self, active_deadline_seconds):
        ...
    def automount_service_account_token(self, mount = True):
        ...
    def arguments(self, arguments):
        ...
    def archive_logs(self, archive_logs = True):
        ...
    def entrypoint(self, entrypoint):
        ...
    def parallelism(self, parallelism):
        ...
    def pod_metadata(self, metadata):
        ...
    def priority(self, priority):
        ...
    def workflow_metadata(self, workflow_metadata):
        ...
    def service_account_name(self, service_account_name):
        ...
    def templates(self, templates):
        ...
    def hooks(self, hooks):
        ...
    def to_json(self):
        ...
    def __str__(self):
        ...
    ...

class Metadata(object, metaclass=type):
    def __init__(self):
        ...
    def annotation(self, key, value):
        ...
    def annotations(self, annotations):
        ...
    def label(self, key, value):
        ...
    def labels(self, labels):
        ...
    def labels_from(self, labels_from):
        ...
    def to_json(self):
        ...
    def __str__(self):
        ...
    ...

class Template(object, metaclass=type):
    def __init__(self, name):
        ...
    def active_deadline_seconds(self, active_deadline_seconds):
        ...
    def dag(self, dag_template):
        ...
    def container(self, container):
        ...
    def http(self, http):
        ...
    def inputs(self, inputs):
        ...
    def outputs(self, outputs):
        ...
    def fail_fast(self, fail_fast = True):
        ...
    def metadata(self, metadata):
        ...
    def service_account_name(self, service_account_name):
        ...
    def retry_strategy(self, times, minutes_between_retries):
        ...
    def empty_dir_volume(self, name, medium = None, size_limit = None):
        """
        Create and attach an emptyDir volume for Kubernetes.
        
        Parameters:
        -----------
        name: str
            name for the volume
        size_limit: int (optional)
            sizeLimit (in MiB) for the volume
        medium: str (optional)
            storage medium of the emptyDir
        """
        ...
    def pvc_volumes(self, pvcs = None):
        """
        Create and attach Persistent Volume Claims as volumes.
        
        Parameters:
        -----------
        pvcs: Optional[Dict]
            a dictionary of pvc's and the paths they should be mounted to. e.g.
            {"pv-claim-1": "/mnt/path1", "pv-claim-2": "/mnt/path2"}
        """
        ...
    def node_selectors(self, node_selectors):
        ...
    def tolerations(self, tolerations):
        ...
    def to_json(self):
        ...
    def __str__(self):
        ...
    ...

class Inputs(object, metaclass=type):
    def __init__(self):
        ...
    def parameters(self, parameters):
        ...
    def to_json(self):
        ...
    def __str__(self):
        ...
    ...

class Outputs(object, metaclass=type):
    def __init__(self):
        ...
    def parameters(self, parameters):
        ...
    def to_json(self):
        ...
    def __str__(self):
        ...
    ...

class Parameter(object, metaclass=type):
    def __init__(self, name):
        ...
    def value(self, value):
        ...
    def default(self, value):
        ...
    def valueFrom(self, value_from):
        ...
    def description(self, description):
        ...
    def to_json(self):
        ...
    def __str__(self):
        ...
    ...

class DAGTemplate(object, metaclass=type):
    def __init__(self):
        ...
    def fail_fast(self, fail_fast = True):
        ...
    def tasks(self, tasks):
        ...
    def to_json(self):
        ...
    def __str__(self):
        ...
    ...

class DAGTask(object, metaclass=type):
    def __init__(self, name):
        ...
    def arguments(self, arguments):
        ...
    def dependencies(self, dependencies):
        ...
    def template(self, template):
        ...
    def inline(self, template):
        ...
    def with_param(self, with_param):
        ...
    def to_json(self):
        ...
    def __str__(self):
        ...
    ...

class Arguments(object, metaclass=type):
    def __init__(self):
        ...
    def parameters(self, parameters):
        ...
    def to_json(self):
        ...
    def __str__(self):
        ...
    ...

class Sensor(object, metaclass=type):
    def __init__(self):
        ...
    def metadata(self, object_meta):
        ...
    def spec(self, sensor_spec):
        ...
    def to_json(self):
        ...
    def __str__(self):
        ...
    ...

class SensorSpec(object, metaclass=type):
    def __init__(self):
        ...
    def replicas(self, replicas = 1):
        ...
    def template(self, sensor_template):
        ...
    def trigger(self, trigger):
        ...
    def dependencies(self, dependencies):
        ...
    def event_bus_name(self, event_bus_name):
        ...
    def to_json(self):
        ...
    def __str__(self):
        ...
    ...

class SensorTemplate(object, metaclass=type):
    def __init__(self):
        ...
    def service_account_name(self, service_account_name):
        ...
    def metadata(self, object_meta):
        ...
    def container(self, container):
        ...
    def to_json(self):
        ...
    def __str__(self):
        ...
    ...

class EventDependency(object, metaclass=type):
    def __init__(self, name):
        ...
    def event_source_name(self, event_source_name):
        ...
    def event_name(self, event_name):
        ...
    def filters(self, event_dependency_filter):
        ...
    def transform(self, event_dependency_transformer = None):
        ...
    def filters_logical_operator(self, logical_operator):
        ...
    def to_json(self):
        ...
    def __str__(self):
        ...
    ...

class EventDependencyFilter(object, metaclass=type):
    def __init__(self):
        ...
    def exprs(self, exprs):
        ...
    def context(self, event_context):
        ...
    def to_json(self):
        ...
    def __str__(self):
        ...
    ...

class Trigger(object, metaclass=type):
    def __init__(self):
        ...
    def template(self, trigger_template):
        ...
    def parameters(self, trigger_parameters):
        ...
    def policy(self, trigger_policy):
        ...
    def to_json(self):
        ...
    def __str__(self):
        ...
    ...

class TriggerTemplate(object, metaclass=type):
    def __init__(self, name):
        ...
    def argo_workflow_trigger(self, argo_workflow_trigger):
        ...
    def conditions_reset(self, cron, timezone):
        ...
    def to_json(self):
        ...
    def __str__(self):
        ...
    ...

class ArgoWorkflowTrigger(object, metaclass=type):
    def __init__(self):
        ...
    def source(self, source):
        ...
    def parameters(self, trigger_parameters):
        ...
    def to_json(self):
        ...
    def __str__(self):
        ...
    ...

class TriggerParameter(object, metaclass=type):
    def __init__(self):
        ...
    def src(self, dependency_name, value, data_key = None, data_template = None):
        ...
    def dest(self, dest):
        ...
    def to_json(self):
        ...
    def __str__(self):
        ...
    ...

class Http(object, metaclass=type):
    def __init__(self, method):
        ...
    def header(self, header, value):
        ...
    def body(self, body):
        ...
    def url(self, url):
        ...
    def success_condition(self, success_condition):
        ...
    def to_json(self):
        ...
    def __str__(self):
        ...
    ...

class LifecycleHook(object, metaclass=type):
    def __init__(self):
        ...
    def expression(self, expression):
        ...
    def template(self, template):
        ...
    def to_json(self):
        ...
    def __str__(self):
        ...
    ...

