xarray/core/variable.py
def as_variable(obj, name=None) -> "Union[Variable, IndexVariable]":
    """Convert an object into a Variable.

    Parameters
    ----------
    obj : object
        Object to convert into a Variable.

        - If the object is already a Variable, return a shallow copy.
        - Otherwise, if the object has 'dims' and 'data' attributes, convert
          it into a new Variable.
        - If all else fails, attempt to convert the object into a Variable by
          unpacking it into the arguments for creating a new Variable.
    name : str, optional
        If provided:

        - `obj` can be a 1D array, which is assumed to label coordinate values
          along a dimension of this given name.
        - Variables with name matching one of their dimensions are converted
          into `IndexVariable` objects.

    Returns
    -------
    var : Variable
        The newly created variable.

    """
    from .dataarray import DataArray

    # TODO: consider extending this method to automatically handle Iris and
    if isinstance(obj, DataArray):
        # extract the primary Variable from DataArrays
        obj = obj.variable

    if isinstance(obj, Variable):
        obj = obj.copy(deep=False)
    elif isinstance(obj, tuple):
        try:
            obj = Variable(*obj)
        except (TypeError, ValueError) as error:
            # use .format() instead of % because it handles tuples consistently
            raise error.__class__(
                "Could not convert tuple of form "
                "(dims, data[, attrs, encoding]): "
                "{} to Variable.".format(obj)
            )
    elif utils.is_scalar(obj):
        obj = Variable([], obj)
    elif isinstance(obj, (pd.Index, IndexVariable)) and obj.name is not None:
        obj = Variable(obj.name, obj)
    elif isinstance(obj, (set, dict)):
        raise TypeError("variable {!r} has invalid type {!r}".format(name, type(obj)))
    elif name is not None:
        data = as_compatible_data(obj)
        if data.ndim != 1:
            raise MissingDimensionsError(
                "cannot set variable %r with %r-dimensional data "
                "without explicit dimension names. Pass a tuple of "
                "(dims, data) instead." % (name, data.ndim)
            )
        obj = Variable(name, data, fastpath=True)
    else:
        raise TypeError(
            "unable to convert object into a variable without an "
            "explicit list of dimensions: %r" % obj
        )

    if name is not None and name in obj.dims:
        # convert the Variable into an Index
        if obj.ndim != 1:
            raise MissingDimensionsError(
                "%r has more than 1-dimension and the same name as one of its "
                "dimensions %r. xarray disallows such variables because they "
                "conflict with the coordinates used to label "
                "dimensions." % (name, obj.dims)
            )
        obj = obj.to_index_variable()

    return obj
Convert an object into a Variable.

    Parameters
    ----------
    obj : object
        Object to convert into a Variable.

        - If the object is already a Variable, return a shallow copy.
        - Otherwise, if the object has 'dims' and 'data' attributes, convert
          it into a new Variable.
        - If all else fails, attempt to convert the object into a Variable by
          unpacking it into the arguments for creating a new Variable.
    name : str, optional
        If provided:

        - `obj` can be a 1D array, which is assumed to label coordinate values
          along a dimension of this given name.
        - Variables with name matching one of their dimensions are converted
          into `IndexVariable` objects.

    Returns
    -------
    var : Variable
        The newly created variable.

    
Convert an object into a Variable.
Parameters

obj : object
Object to convert into a Variable.

If the object is already a Variable, return a shallow copy.
Otherwise, if the object has 'dims' and 'data' attributes, convert
it into a new Variable.
If all else fails, attempt to convert the object into a Variable by
unpacking it into the arguments for creating a new Variable.
name : str, optional
If provided.

`obj` can be a 1D array, which is assumed to label coordinate values
along a dimension of this given name.
Variables with name matching one of their dimensions are converted
into `IndexVariable` objects.

Returns

var : Variable
The newly created variable.
Convert an object into a Variable . Parameters obj : object Object to convert into a Variable . If the object is already a Variable return a shallow copy . Otherwise if the object has ' dims ' and ' data ' attributes convert it into a new Variable . If all else fails attempt to convert the object into a Variable by unpacking it into the arguments for creating a new Variable . name : str optional If provided . ` obj ` can be a 1D array which is assumed to label coordinate values along a dimension of this given name . Variables with name matching one of their dimensions are converted into ` IndexVariable ` objects . Returns var : Variable The newly created variable .
def as_variable(obj, name=None) -> "Union[Variable, IndexVariable]":
    from .dataarray import DataArray
    if isinstance(obj, DataArray):
        obj = obj.variable
    if isinstance(obj, Variable):
        obj = obj.copy(deep=False)
    elif isinstance(obj, tuple):
        try:
            obj = Variable(*obj)
        except (TypeError, ValueError) as error:
            raise error.__class__(
                "Could not convert tuple of form "
                "(dims, data[, attrs, encoding]): "
                "{} to Variable.".format(obj)
            )
    elif utils.is_scalar(obj):
        obj = Variable([], obj)
    elif isinstance(obj, (pd.Index, IndexVariable)) and obj.name is not None:
        obj = Variable(obj.name, obj)
    elif isinstance(obj, (set, dict)):
        raise TypeError("variable {!r} has invalid type {!r}".format(name, type(obj)))
    elif name is not None:
        data = as_compatible_data(obj)
        if data.ndim != 1:
            raise MissingDimensionsError(
                "cannot set variable %r with %r-dimensional data "
                "without explicit dimension names. Pass a tuple of "
                "(dims, data) instead." % (name, data.ndim)
            )
        obj = Variable(name, data, fastpath=True)
    else:
        raise TypeError(
            "unable to convert object into a variable without an "
            "explicit list of dimensions: %r" % obj
        )
    if name is not None and name in obj.dims:
        if obj.ndim != 1:
            raise MissingDimensionsError(
                "%r has more than 1-dimension and the same name as one of its "
                "dimensions %r. xarray disallows such variables because they "
                "conflict with the coordinates used to label "
                "dimensions." % (name, obj.dims)
            )
        obj = obj.to_index_variable()
    return obj
def as_variable ( obj , name = None ) -> "Union[Variable, IndexVariable]" : from . dataarray import DataArray if isinstance ( obj , DataArray ) : obj = obj . variable if isinstance ( obj , Variable ) : obj = obj . copy ( deep = False ) elif isinstance ( obj , tuple ) : try : obj = Variable ( * obj ) except ( TypeError , ValueError ) as error : raise error . __class__ ( "Could not convert tuple of form " "(dims, data[, attrs, encoding]): " "{} to Variable." . format ( obj ) ) elif utils . is_scalar ( obj ) : obj = Variable ( [ ] , obj ) elif isinstance ( obj , ( pd . Index , IndexVariable ) ) and obj . name is not None : obj = Variable ( obj . name , obj ) elif isinstance ( obj , ( set , dict ) ) : raise TypeError ( "variable {!r} has invalid type {!r}" . format ( name , type ( obj ) ) ) elif name is not None : data = as_compatible_data ( obj ) if data . ndim != 1 : raise MissingDimensionsError ( "cannot set variable %r with %r-dimensional data " "without explicit dimension names. Pass a tuple of " "(dims, data) instead." % ( name , data . ndim ) ) obj = Variable ( name , data , fastpath = True ) else : raise TypeError ( "unable to convert object into a variable without an " "explicit list of dimensions: %r" % obj ) if name is not None and name in obj . dims : if obj . ndim != 1 : raise MissingDimensionsError ( "%r has more than 1-dimension and the same name as one of its " "dimensions %r. xarray disallows such variables because they " "conflict with the coordinates used to label " "dimensions." % ( name , obj . dims ) ) obj = obj . to_index_variable ( ) return obj
Convert an object into a Variable.
Convert an object into a Variable .
"""Convert an object into a Variable.

    Parameters
    ----------
    obj : object
        Object to convert into a Variable.

        - If the object is already a Variable, return a shallow copy.
        - Otherwise, if the object has 'dims' and 'data' attributes, convert
          it into a new Variable.
        - If all else fails, attempt to convert the object into a Variable by
          unpacking it into the arguments for creating a new Variable.
    name : str, optional
        If provided:

        - `obj` can be a 1D array, which is assumed to label coordinate values
          along a dimension of this given name.
        - Variables with name matching one of their dimensions are converted
          into `IndexVariable` objects.

    Returns
    -------
    var : Variable
        The newly created variable.

    """ # TODO: consider extending this method to automatically handle Iris and # extract the primary Variable from DataArrays # use .format() instead of % because it handles tuples consistently # convert the Variable into an Index
obj
name