@@ -378,20 +378,19 @@ cdef class usm_ndarray:
378378 if (typenum < 0 ):
379379 if typenum == - 2 :
380380 raise ValueError (
381- " Data type '" + str (dtype) +
382- " ' can only have native byteorder."
381+ f" Data type '{dtype}' can only have native byteorder."
383382 )
384383 elif typenum == - 1 :
385384 raise ValueError (
386- " Data type '" + str ( dtype) + " ' is not understood."
385+ f " Data type '{ dtype} ' is not understood."
387386 )
388387 raise TypeError (
389388 f" Expected string or a dtype object, got {type(dtype)}"
390389 )
391390 itemsize = type_bytesize(typenum)
392391 if (itemsize < 1 ):
393392 raise TypeError (
394- " dtype=" + np.dtype(dtype).name + " is not supported."
393+ f " dtype={ np.dtype(dtype).name} is not supported."
395394 )
396395 # allocate host C-arrays for shape, strides
397396 err = _from_input_shape_strides(
@@ -406,11 +405,11 @@ cdef class usm_ndarray:
406405 " array failed." )
407406 elif err == ERROR_INCORRECT_ORDER:
408407 raise ValueError (
409- " Unsupported order='{}' given. "
410- " Supported values are 'C' or 'F'." .format(order) )
408+ f " Unsupported order='{order }' given. "
409+ " Supported values are 'C' or 'F'." )
411410 elif err == ERROR_UNEXPECTED_STRIDES:
412411 raise ValueError (
413- " strides={} is not understood" .format(strides) )
412+ f " strides={strides } is not understood" )
414413 else :
415414 raise InternalUSMArrayError(
416415 " .. while processing shape and strides." )
@@ -421,6 +420,21 @@ cdef class usm_ndarray:
421420 elif isinstance (buffer , (str , bytes)):
422421 if isinstance (buffer , bytes):
423422 buffer = buffer .decode(" UTF-8" )
423+ if strides is not None and ary_min_displacement < 0 :
424+ self ._cleanup()
425+ raise ValueError (
426+ f" strides={strides} result in a negative memory "
427+ " displacement and are not allowed when allocating "
428+ " new memory" )
429+ if strides is not None and (
430+ (ary_max_displacement - ary_min_displacement + 1 ) > ary_nelems
431+ ):
432+ self ._cleanup()
433+ raise ValueError (
434+ f" strides={strides} is incompatible with "
435+ f" shape={shape} when allocating new memory because "
436+ " the memory footprint exceeds the number of elements"
437+ )
424438 _offset = - ary_min_displacement
425439 if (buffer == " shared" ):
426440 _buffer = dpmem.MemoryUSMShared(ary_nbytes,
@@ -434,24 +448,24 @@ cdef class usm_ndarray:
434448 else :
435449 self ._cleanup()
436450 raise ValueError (
437- " buffer='{}' is not understood. "
451+ f " buffer='{buffer }' is not understood. "
438452 " Recognized values are 'device', 'shared', 'host', "
439453 " an instance of `MemoryUSM*` object, or a usm_ndarray"
440- " " .format(buffer )
441454 )
442455 elif isinstance (buffer , usm_ndarray):
443456 if not buffer .flags.writable:
444457 writable_flag = 0
445458 _buffer = buffer .usm_data
446459 else :
447460 self ._cleanup()
448- raise ValueError (" buffer='{}' was not understood." .format( buffer ) )
461+ raise ValueError (f " buffer='{buffer }' was not understood." )
449462 if (shape_to_elem_count(nd, shape_ptr) > 0 and
450463 (_offset + ary_min_displacement < 0 or
451464 (_offset + ary_max_displacement + 1 ) * itemsize > _buffer.nbytes)):
452465 self ._cleanup()
453- raise ValueError ((" buffer='{}' can not accommodate "
454- " the requested array." ).format(buffer ))
466+ raise ValueError (
467+ f" buffer='{buffer}' can not accommodate the requested array."
468+ )
455469 is_fp64 = (typenum == UAR_DOUBLE or typenum == UAR_CDOUBLE)
456470 is_fp16 = (typenum == UAR_HALF)
457471 if (is_fp64 or is_fp16):
@@ -640,9 +654,8 @@ cdef class usm_ndarray:
640654 if (not isinstance (self .base_, dpmem._memory._Memory)):
641655 raise InternalUSMArrayError(
642656 " Invalid instance of usm_ndarray encountered. "
643- " Private field base_ has an unexpected type {}." .format(
644- type (self .base_)
645- )
657+ " Private field base_ has an unexpected type "
658+ f" {type(self.base_)}."
646659 )
647660 ary_iface = self .base_.__sycl_usm_array_interface__
648661 mem_ptr = < char * > (< size_t> ary_iface[" data" ][0 ])
@@ -803,7 +816,7 @@ cdef class usm_ndarray:
803816 self .strides_ = strides_ptr
804817 else :
805818 raise InternalUSMArrayError(
806- " Encountered in shape setter, error code {err}" .format(err)
819+ f " Encountered in shape setter, error code {err}"
807820 )
808821
809822 @property
@@ -1905,7 +1918,7 @@ cdef api object UsmNDArray_MakeSimpleFromPtr(
19051918 cdef int itemsize = type_bytesize(typenum)
19061919 if (itemsize < 1 ):
19071920 raise ValueError (
1908- " dtype with typenum=" + str ( typenum) + " is not supported."
1921+ f " dtype with typenum={ typenum} is not supported."
19091922 )
19101923 cdef size_t nbytes = (< size_t> itemsize) * nelems
19111924 cdef c_dpmem._Memory mobj
@@ -1961,7 +1974,7 @@ cdef api object UsmNDArray_MakeFromPtr(
19611974
19621975 if (itemsize < 1 ):
19631976 raise ValueError (
1964- " dtype with typenum=" + str ( typenum) + " is not supported."
1977+ f " dtype with typenum={ typenum} is not supported."
19651978 )
19661979 if (nd < 0 ):
19671980 raise ValueError (" Dimensionality must be non-negative" )
0 commit comments