# coding=utf-8
# *** WARNING: this file was generated by pulumi-language-python. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import copy
import warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
from . import _utilities

__all__ = [
    'RangeResult',
    'AwaitableRangeResult',
    'range',
    'range_output',
]

@pulumi.output_type
class RangeResult:
    def __init__(__self__, result=None):
        if result and not isinstance(result, list):
            raise TypeError("Expected argument 'result' to be a list")
        pulumi.set(__self__, "result", result)

    @property
    @pulumi.getter
    def result(self) -> Sequence[float]:
        return pulumi.get(self, "result")


class AwaitableRangeResult(RangeResult):
    # pylint: disable=using-constant-test
    def __await__(self):
        if False:
            yield self
        return RangeResult(
            result=self.result)


def range(limit: Optional[float] = None,
          start: Optional[float] = None,
          step: Optional[float] = None,
          opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableRangeResult:
    """
    Generates a list of numbers using a start value, a limit value, and a step value.
    Start and step may be omitted, in which case start defaults to zero and step defaults to either one or negative one
    depending on whether limit is greater than or less than start.
    """
    __args__ = dict()
    __args__['limit'] = limit
    __args__['start'] = start
    __args__['step'] = step
    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke('std:index:range', __args__, opts=opts, typ=RangeResult).value

    return AwaitableRangeResult(
        result=pulumi.get(__ret__, 'result'))


@_utilities.lift_output_func(range)
def range_output(limit: Optional[pulumi.Input[float]] = None,
                 start: Optional[pulumi.Input[Optional[float]]] = None,
                 step: Optional[pulumi.Input[Optional[float]]] = None,
                 opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[RangeResult]:
    """
    Generates a list of numbers using a start value, a limit value, and a step value.
    Start and step may be omitted, in which case start defaults to zero and step defaults to either one or negative one
    depending on whether limit is greater than or less than start.
    """
    ...
