@@ -325,31 +325,30 @@ def _asarray(
325
325
else :
326
326
COPY_FALSE = (False ,)
327
327
COPY_TRUE = (True ,)
328
- if copy in COPY_FALSE :
328
+ if copy in COPY_FALSE and namespace != "dask.array" :
329
329
# copy=False is not yet implemented in xp.asarray
330
330
raise NotImplementedError ("copy=False is not yet implemented" )
331
- if (hasattr (xp , "ndarray" ) and isinstance (obj , xp .ndarray )) or hasattr (obj , "__array__" ):
332
- #print('hit me')
331
+ if (hasattr (xp , "ndarray" ) and isinstance (obj , xp .ndarray )):
333
332
if dtype is not None and obj .dtype != dtype :
334
333
copy = True
335
- #print(copy)
336
334
if copy in COPY_TRUE :
337
- copy_kwargs = {}
338
- if namespace != "dask.array" :
339
- copy_kwargs ["copy" ] = True
340
- else :
341
- # No copy kw in dask.asarray so we go thorugh np.asarray first
342
- # (like dask also does) but copy after
343
- if dtype is None :
344
- # Same dtype copy is no-op in dask
345
- #print("in here?")
346
- return obj .copy ()
347
- import numpy as np
348
- #print(obj)
349
- obj = np .asarray (obj ).copy ()
350
- #print(obj)
351
- return xp .array (obj , dtype = dtype , ** copy_kwargs )
335
+ return xp .array (obj , copy = True , dtype = dtype )
352
336
return obj
337
+ elif namespace == "dask.array" :
338
+ if copy in COPY_TRUE :
339
+ if dtype is None :
340
+ return obj .copy ()
341
+ # Go through numpy, since dask copy is no-op by default
342
+ import numpy as np
343
+ obj = np .array (obj , dtype = dtype , copy = True )
344
+ return xp .array (obj , dtype = dtype )
345
+ else :
346
+ import dask .array as da
347
+ import numpy as np
348
+ if not isinstance (obj , da .Array ):
349
+ obj = np .asarray (obj , dtype = dtype )
350
+ return da .from_array (obj )
351
+ return obj
353
352
354
353
return xp .asarray (obj , dtype = dtype , ** kwargs )
355
354
0 commit comments