@@ -3332,26 +3332,17 @@ def _upcast_err(err):
33323332            """ 
33333333            Safely handle tuple of containers that carry units. 
33343334
3335-             If the units are carried on the values then casting to object 
3336-             arrays preserves the units, but if the units are on the containers 
3337-             this will not work. 
3338- 
33393335            This function covers the case where the input to the xerr/yerr is a 
33403336            length 2 tuple of equal length ndarray-subclasses that carry the 
33413337            unit information in the container. 
33423338
3343-             We defer coercing the units to be consistent to the underlying unit 
3339+             If we have a tuple of nested numpy array (subclasses), we defer 
3340+             coercing the units to be consistent to the underlying unit 
33443341            library (and implicitly the broadcasting). 
33453342
3346-             If we do not have a tuple of nested numpy array (subclasses), 
3347-             fallback to casting to an object array. 
3348- 
3343+             Otherwise, fallback to casting to an object array. 
33493344            """ 
33503345
3351-             # we are here because we the container is not a numpy array, but it 
3352-             # _is_ iterable (likely a list or a tuple but maybe something more 
3353-             # exotic) 
3354- 
33553346            if  (
33563347                    # make sure it is not a scalar 
33573348                    np .iterable (err ) and 
@@ -3363,14 +3354,17 @@ def _upcast_err(err):
33633354                    # fails. 
33643355                    isinstance (cbook .safe_first_element (err ), np .ndarray )
33653356            ):
3366-                 # grab the type of the first element, we will try to promote 
3367-                 # the outer container to match the inner container 
3357+                 # Get the type of the first element 
33683358                atype  =  type (cbook .safe_first_element (err ))
3369-                 # you can not directly pass data  to the init of `np.ndarray`  
3359+                 # Promote the outer container  to match  the inner container  
33703360                if  atype  is  np .ndarray :
3361+                     # Converts using np.asarray, because data cannot 
3362+                     # be directly passed to init of np.ndarray 
33713363                    return  np .asarray (err , dtype = object )
3372-                 # but you can for unyt and astropy uints 
3364+                 # If atype is not np.ndarray, directly pass data to init. 
3365+                 # This works for types such as unyts and astropy units 
33733366                return  atype (err )
3367+             # Otherwise wrap it in an object array 
33743368            return  np .asarray (err , dtype = object )
33753369
33763370        if  xerr  is  not None  and  not  isinstance (xerr , np .ndarray ):
0 commit comments