
    gi                        d Z ddlZddlZddlZddlmZ ddlZddlZddl	m
Z
 ddlmZmZmZmZmZmZmZ ddlmZ ej*                  ej,                  ej.                  ej0                  ej2                  ej4                  ej6                  ej8                  ej:                  ej<                  ej>                  ej@                  e!gZ"g Z#e"D ]  Z$dD ]  Z% ejL                  e$      jO                  e%      Z& ejP                  d      jS                  e&      Z*e#jW                   ejX                  g e&	       ejX                  d
e&	      e*e*j[                  d      e*j[                  d      j\                  e*j[                  d      ddddddf   g         g dZ/ddgddgddggdfddgddgddggdfgZ0dddddg dfddgfdd d!d"gfd#d$gZ1ddgd%dd&d%d'gddgd(dgfd)d*fd+d,ddgddggdfddgd-dd.d-d/gddgdd(gfd0d1fd2d3ddgddggdfgZ2 ejX                  e0 ejL                  e/      jO                  d4      	       ejX                  e2 ejL                  e1      jO                  d4      	       ejX                  e0 ejL                  e/      jO                  d5      	       ejX                  e2 ejL                  e1      jO                  d5      	       ejf                  d(d6g	      gZ4 G d7 d8e      Z5d9 Z6d: Z7d; Z8d< Z9d= Z:d> Z;d? Z<d@ Z=dA Z>ej~                  j                  edBC      ej~                  j                  dD               ZBdE ZC ejL                  dFd*G      ZD ejL                  dHdIgdJdJgd(dKgdL      ZE ejL                  dMdNgdJeEgdO      ZF ejL                  g dPdJgdz  dO      ZG ejL                  dHdIgdJdJgd(dKgdQdRgdS      ZH ejL                  g g ddT      ZIej~                  j                  dUeDeEeFeGeHeIg      dV        ZKej~                  j                  ej                  dWk\  dXC      ej~                  j                  edYC      dZ               ZNej~                  j                  d[      d\        ZPd] ZQej~                  j                  dU ejL                  dHej,                  fdIej0                  fdMej4                  fgd*G       ejL                  d^ ejL                  dHdIgd_d_gddgdd`daf      dbfg       ejL                  dcg       ejL                  d^ ejL                   ejL                   ejL                  dHdIgd_d_gddgdd`      daf      dbf      fg       ejL                  dH ejL                   ejL                   ejL                   ejL                  dHeRfdI ejL                  dHdIgd_d_gddgdd`      fg      daf      dbf      ddf      fg      g      de        ZSdf ZTej~                  j                  edBC      dg        ZUej~                  j                  dhdidg      dj        ZVdk ZWdl ZXg dmZYg dnZZdo Z[dp Z\dq Z]dr Z^ds Z_dt Z`du Zadv Zbdw Zcej~                  j                  edxC      ej~                  j                  e dyC      ej~                  j                   edz{      ej~                  j                  d|C      d}                                    Zed~ Zfd Zgd Zhej~                  j                  dU ejL                  dHdIgei ejL                  dddi      gdO       ejL                  eRddi       ejL                  deRdffgddi       ejL                  dHdIgei ejL                  dMg ejL                  eRi       gdO      gdO      g      ej~                  j                  exr ej                  j                  dk  dC      d               Zly)aD   Test the .npy file format.

Set up:

    >>> import sys
    >>> from io import BytesIO
    >>> from numpy.lib import format
    >>>
    >>> scalars = [
    ...     np.uint8,
    ...     np.int8,
    ...     np.uint16,
    ...     np.int16,
    ...     np.uint32,
    ...     np.int32,
    ...     np.uint64,
    ...     np.int64,
    ...     np.float32,
    ...     np.float64,
    ...     np.complex64,
    ...     np.complex128,
    ...     object,
    ... ]
    >>>
    >>> basic_arrays = []
    >>>
    >>> for scalar in scalars:
    ...     for endian in '<>':
    ...         dtype = np.dtype(scalar).newbyteorder(endian)
    ...         basic = np.arange(15).astype(dtype)
    ...         basic_arrays.extend([
    ...             np.array([], dtype=dtype),
    ...             np.array(10, dtype=dtype),
    ...             basic,
    ...             basic.reshape((3,5)),
    ...             basic.reshape((3,5)).T,
    ...             basic.reshape((3,5))[::-1,::2],
    ...         ])
    ...
    >>>
    >>> Pdescr = [
    ...     ('x', 'i4', (2,)),
    ...     ('y', 'f8', (2, 2)),
    ...     ('z', 'u1')]
    >>>
    >>>
    >>> PbufferT = [
    ...     ([3,2], [[6.,4.],[6.,4.]], 8),
    ...     ([4,3], [[7.,5.],[7.,5.]], 9),
    ...     ]
    >>>
    >>>
    >>> Ndescr = [
    ...     ('x', 'i4', (2,)),
    ...     ('Info', [
    ...         ('value', 'c16'),
    ...         ('y2', 'f8'),
    ...         ('Info2', [
    ...             ('name', 'S2'),
    ...             ('value', 'c16', (2,)),
    ...             ('y3', 'f8', (2,)),
    ...             ('z3', 'u4', (2,))]),
    ...         ('name', 'S2'),
    ...         ('z2', 'b1')]),
    ...     ('color', 'S2'),
    ...     ('info', [
    ...         ('Name', 'U8'),
    ...         ('Value', 'c16')]),
    ...     ('y', 'f8', (2, 2)),
    ...     ('z', 'u1')]
    >>>
    >>>
    >>> NbufferT = [
    ...     ([3,2], (6j, 6., ('nn', [6j,4j], [6.,4.], [1,2]), 'NN', True), 'cc', ('NN', 6j), [[6.,4.],[6.,4.]], 8),
    ...     ([4,3], (7j, 7., ('oo', [7j,5j], [7.,5.], [2,1]), 'OO', False), 'dd', ('OO', 7j), [[7.,5.],[7.,5.]], 9),
    ...     ]
    >>>
    >>>
    >>> record_arrays = [
    ...     np.array(PbufferT, dtype=np.dtype(Pdescr).newbyteorder('<')),
    ...     np.array(NbufferT, dtype=np.dtype(Ndescr).newbyteorder('<')),
    ...     np.array(PbufferT, dtype=np.dtype(Pdescr).newbyteorder('>')),
    ...     np.array(NbufferT, dtype=np.dtype(Ndescr).newbyteorder('>')),
    ... ]

Test the magic string writing.

    >>> format.magic(1, 0)
    '\x93NUMPY\x01\x00'
    >>> format.magic(0, 0)
    '\x93NUMPY\x00\x00'
    >>> format.magic(255, 255)
    '\x93NUMPY\xff\xff'
    >>> format.magic(2, 5)
    '\x93NUMPY\x02\x05'

Test the magic string reading.

    >>> format.read_magic(BytesIO(format.magic(1, 0)))
    (1, 0)
    >>> format.read_magic(BytesIO(format.magic(0, 0)))
    (0, 0)
    >>> format.read_magic(BytesIO(format.magic(255, 255)))
    (255, 255)
    >>> format.read_magic(BytesIO(format.magic(2, 5)))
    (2, 5)

Test the header writing.

    >>> for arr in basic_arrays + record_arrays:
    ...     f = BytesIO()
    ...     format.write_array_header_1_0(f, arr)   # XXX: arr is not a dict, items gets called on it
    ...     print(repr(f.getvalue()))
    ...
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '|u1', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '|u1', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '|i1', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '|i1', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<u2', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<u2', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<u2', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<u2', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<u2', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<u2', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>u2', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>u2', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>u2', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>u2', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>u2', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>u2', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<i2', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<i2', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<i2', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<i2', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<i2', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<i2', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>i2', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>i2', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>i2', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>i2', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>i2', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>i2', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<u4', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<u4', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<u4', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<u4', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<u4', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<u4', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>u4', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>u4', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>u4', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>u4', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>u4', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>u4', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<i4', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<i4', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<i4', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<i4', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<i4', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<i4', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>i4', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>i4', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>i4', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>i4', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>i4', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>i4', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<u8', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<u8', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<u8', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<u8', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<u8', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<u8', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>u8', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>u8', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>u8', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>u8', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>u8', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>u8', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<i8', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<i8', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<i8', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<i8', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<i8', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<i8', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>i8', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>i8', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>i8', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>i8', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>i8', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>i8', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<f4', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<f4', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<f4', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<f4', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<f4', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<f4', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>f4', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>f4', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>f4', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>f4', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>f4', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>f4', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<f8', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<f8', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<f8', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<f8', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<f8', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<f8', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>f8', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>f8', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>f8', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>f8', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>f8', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>f8', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<c8', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<c8', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<c8', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<c8', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<c8', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<c8', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>c8', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>c8', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>c8', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>c8', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>c8', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>c8', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<c16', 'fortran_order': False, 'shape': (0,)}             \n"
    "F\x00{'descr': '<c16', 'fortran_order': False, 'shape': ()}               \n"
    "F\x00{'descr': '<c16', 'fortran_order': False, 'shape': (15,)}            \n"
    "F\x00{'descr': '<c16', 'fortran_order': False, 'shape': (3, 5)}           \n"
    "F\x00{'descr': '<c16', 'fortran_order': True, 'shape': (5, 3)}            \n"
    "F\x00{'descr': '<c16', 'fortran_order': False, 'shape': (3, 3)}           \n"
    "F\x00{'descr': '>c16', 'fortran_order': False, 'shape': (0,)}             \n"
    "F\x00{'descr': '>c16', 'fortran_order': False, 'shape': ()}               \n"
    "F\x00{'descr': '>c16', 'fortran_order': False, 'shape': (15,)}            \n"
    "F\x00{'descr': '>c16', 'fortran_order': False, 'shape': (3, 5)}           \n"
    "F\x00{'descr': '>c16', 'fortran_order': True, 'shape': (5, 3)}            \n"
    "F\x00{'descr': '>c16', 'fortran_order': False, 'shape': (3, 3)}           \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': 'O', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': 'O', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "v\x00{'descr': [('x', '<i4', (2,)), ('y', '<f8', (2, 2)), ('z', '|u1')],\n 'fortran_order': False,\n 'shape': (2,)}         \n"
    "\x16\x02{'descr': [('x', '<i4', (2,)),\n           ('Info',\n            [('value', '<c16'),\n             ('y2', '<f8'),\n             ('Info2',\n              [('name', '|S2'),\n               ('value', '<c16', (2,)),\n               ('y3', '<f8', (2,)),\n               ('z3', '<u4', (2,))]),\n             ('name', '|S2'),\n             ('z2', '|b1')]),\n           ('color', '|S2'),\n           ('info', [('Name', '<U8'), ('Value', '<c16')]),\n           ('y', '<f8', (2, 2)),\n           ('z', '|u1')],\n 'fortran_order': False,\n 'shape': (2,)}      \n"
    "v\x00{'descr': [('x', '>i4', (2,)), ('y', '>f8', (2, 2)), ('z', '|u1')],\n 'fortran_order': False,\n 'shape': (2,)}         \n"
    "\x16\x02{'descr': [('x', '>i4', (2,)),\n           ('Info',\n            [('value', '>c16'),\n             ('y2', '>f8'),\n             ('Info2',\n              [('name', '|S2'),\n               ('value', '>c16', (2,)),\n               ('y3', '>f8', (2,)),\n               ('z3', '>u4', (2,))]),\n             ('name', '|S2'),\n             ('z2', '|b1')]),\n           ('color', '|S2'),\n           ('info', [('Name', '>U8'), ('Value', '>c16')]),\n           ('y', '>f8', (2, 2)),\n           ('z', '|u1')],\n 'fortran_order': False,\n 'shape': (2,)}      \n"
    N)BytesIO)format)IS_64BITIS_PYPYIS_WASMassert_assert_array_equalassert_raisesassert_raises_regex)requires_memoryz<>i  dtype
   )   2      )xi4r   yf8r   r   zu1   g      @g      @      g      @g      @	   r   Info)valuec16)y2r   Info2)nameS2)r$   r%   r   )y3r   r   )z3u4r   r(   )z2b1)colorr*   info)NameU8)Valuer%   r   r                 @nny              @   NNTcc)r8   r5                 @ooy              @OOFdd)r<   r:   <>)cz<f8   r   c                         e Zd Zd fd	Z xZS )BytesIOSRandomSizec                 N    dd l }|j                  d|      }t        |   |      S )Nr   r7   )randomrandintsuperread)selfsizerG   	__class__s      S/var/www/html/audio_env/lib/python3.12/site-packages/numpy/lib/tests/test_format.pyrJ   zBytesIOSRandomSize.read  s%    ~~a&w|D!!    N)__name__
__module____qualname__rJ   __classcell__)rM   s   @rN   rE   rE     s    " "rO   rE   c                     t               }t        j                  ||        t        |j                               }t        j                  |d      }|S )NTallow_pickler   r   write_arraygetvalue
read_arrayarrff2arr2s       rN   	roundtripra     s@    	A
q#		BRd3DKrO   c                     t               }t        j                  ||        t        |j	                               }t        j
                  |      }|S rP   )r   r   rY   rE   rZ   r[   r\   s       rN   roundtrip_randsizerc     s>    	A
q#	AJJL	)BR DKrO   c                     t               }t        j                  ||        t        |j                         dd       }t        j                  |      }|S )Nr   r   rX   r\   s       rN   roundtrip_truncatedre     sE    	A
q#	a#	$BR DKrO   c                      t        | |k(         y rP   )r   )o1o2s     rN   assert_equal_ri     s    B"HrO   c                  V    t         t        z   D ]  } t        |       }t        | |        y rP   )basic_arraysrecord_arraysra   r	   r]   r`   s     rN   test_roundtriprn     s)    m+ &~3%&rO   c                  ~    t         t        z   D ]-  } | j                  t        k7  st	        |       }t        | |       / y rP   )rk   rl   r   objectrc   r	   rm   s     rN   test_roundtrip_randsizerq     s6    m+ *99%c*DsD)*rO   c                  l    t         D ]+  } | j                  t        k7  st        t        t
        |        - y rP   )rk   r   rp   r
   
ValueErrorre   r]   s    rN   test_roundtrip_truncatedru     s,     @99*&93?@rO   c                 L   | dz  }t         D ]  }|j                  t        k7  st        |d      5 }t	        j
                  ||       d d d        t        |d      5 }|j                  dt        j                         |j                          d d d        t        |d      5 }t        j                  t        |j                  dk(  rdnd	      5  t	        j                  |      }d d d        d d d         y # 1 sw Y   xY w# 1 sw Y   wxY w# 1 sw Y   ,xY w# 1 sw Y   xY w)
Nza.npywbzrb+r   rbr   z9EOF: reading array header, expected (\d+) bytes got (\d+)zFailed to read all data for array\. Expected \(.*?\) = (\d+) elements, could only read (\d+) elements\. \(file seems not fully written\?\)match)rk   r   rp   openr   rY   seekosSEEK_ENDtruncatepytestraisesrs   rL   r[   )tmp_pathpathr]   r^   _s        rN   test_file_truncatedr     s   gD -99dD! +Q""1c*+ dE" ar2;;'

 dD! -Q]] Q:> - ))!,A-- --+ + - -- -s;   C51D-DD"D5C>	D
	DDD#	c                      t        j                  dt        j                  t        t        j
                  dz   f            } t        |       }t        | |       y )Nr7   r   )nponesr   strr   BUFFER_SIZEra   r	   )long_str_arrlong_str_arr2s     rN   test_long_strr     s?    771BHHc63E3E3I-J$KLLl+M|]3rO   zmemmap doesn't work correctly)reasonc                 ~   t        t        t        z         D ]  \  }}|j                  j                  rt
        j                  j                  | d| d      }t
        j                  j                  | d| d      }t        |d      5 }t        j                  ||       d d d        |j                  j                  xr |j                  j                   }t        j                  |d|j                  |j                  |      }||d<   |j!                          t        |d      5 }|j#                         }d d d        t        |d      5 }|j#                         }	d d d        t%        	       t        j                  |d	
      }|j!                           y # 1 sw Y   xY w# 1 sw Y   qxY w# 1 sw Y   XxY w)Nnormalz.npymemmaprw   w+)moder   shapefortran_order.rx   r)r   )	enumeraterk   rl   r   	hasobjectr}   r   joinr{   r   rY   flagsf_contiguousc_contiguousopen_memmapr   flushrJ   ri   )
tmpdirir]   nfnmfnfpr   manormal_bytesmemmap_bytess
             rN   test_memmap_roundtripr     sv    L=89 399ggll6VA3d#34ggll6VA3d#34#t_ 	(r3'	( II""A399+A+A'A 	$cii&)ii}N3

 #t_ 	%779L	%#t_ 	%779L	%lL1 #.

5	( 	(	% 	%	% 	%s$   	F&F'F3F$	'F0	3F<	c                 (   t         j                  j                  dd      }t        j                  j                  | d      }t        j                  ||       t        j                  |      5 }|d   }d d d        t        |       y # 1 sw Y   xY w)N   zcompressed.npzrt   r]   )	r   rG   randr}   r   r   savez_compressedloadr	   )r   r]   npz_filenpzarr1s        rN   test_compressed_roundtripr     sq    
))..c
"Cww||F$45Hc*		 c5zsD! s   -BBz
i1, i4, i1)alignabr      )namesformatsoffsetsr@   d)r   r   )r    r   aabb)r   r   r   titles)r   r   itemsizedtc                 D   t        j                  d|      }t        d      D ]
  }|dz   ||<    t        j                  j                  | d      }t        j                  ||       t        j                  |      5 }|d   }d d d        t        |       y # 1 sw Y   xY w)Nr   rC   zaligned.npzrt   r]   )	r   zerosranger}   r   r   savezr   r	   )r   r   r]   r   r   r   r   s          rN   test_load_padded_dtyper     s    
((1b/C1X QAww||FM2HHHX3		 c5zsD! s   ;BB)r      zsee gh-23988z!Emscripten NODEFS has a buggy dupc                  T   d} t         j                  j                  t         j                  j                  t              d|       }t        j                  t        d      5  t        j                  |      }d d d        t        t        j                  d             y # 1 sw Y   )xY w)Nzwin64python2.npydatazReading.*this warning\.ry   r   )r}   r   r   dirname__file__r   warnsUserWarningr   r   r	   r   )fnamer   r   s      rN   %test_python2_python3_interoperabilityr   +  so     E77<<165AD	k)C	D wwt}tRWWQZ( s    BB'zJignore:.*align should be passed:numpy.exceptions.VisibleDeprecationWarningc            	         t         j                  j                  t         j                  j                  t              d      } t        j                  d t        ddgt              }dD ]  }t         j                  j                  | |      }dD ]  }t        j                  |d|      }|j                  d	      r|d
   }|j                          n|}|dk(  ra|j                  d      rPt        t        |d   t                     t!        |d d |d d        t!        |d   j#                  |      |d          t        t        |d   t$                     t!        ||        |j                  d      s|j                  d	      rt        j                  |d      }t'        t(        |j*                  d
       |j                          t        j                  |ddd      }t'        t,        |j*                  d
       |j                          t'        t(        t
        j                  |d       t'        t,        t
        j                  |ddd        y )Nr   u   優良s   不良r   )zpy2-np0-objarr.npypy2-objarr.npypy2-objarr.npzzpy3-objarr.npyzpy3-objarr.npz)byteslatin1TrW   encodingz.npzr   r   py2r   r   rV   F)rW   fix_importsr   )r}   r   r   r   r   r   arrayr   rp   r   endswithclose
startswithr   
isinstancer   r	   encoder   r
   UnicodeError__getitem__ImportError)data_direxpectedr   r   r   data_fr   s          rN   test_pickle_python2_python3r   5  s   
 ww||BGGOOH5v>Hxxun46$&H6 #1ww||He,+ 	3HWWTxHF~~f%c{8#(8(8(?
47C01"49hsm<"48??8#<hrlK
47E23"42	3" E"~~f%wwt$7lD,<,<cB

wwt$E(02k4+;+;SA

lBGGT+/1k277D+/U'/1C#1rO   c           	         t         j                  j                  t         j                  j                  t              d      }t         j                  j                  |d      }t        t        t        j                  |dd       t         j                  j                  |d      }t        j                  |dd      5 }t        t        |j                  d       d d d        t         j                  j                  | d      }t        t        t        j                  |t        j                  d gt        	      d
       y # 1 sw Y   fxY w)Nr   r   Fr   r   r   r   zpickle-disabled.npyr   rV   )r}   r   r   r   r   r
   rs   r   r   r   saver   rp   )r   r   r   r^   s       rN   test_pickle_disallowr   f  s    ww||BGGOOH5v>H77<<"23D*bggt$x9 77<<"23D	EH	= 6j!--56 77<< 56D*bggtRXXtfF-K$&	6 6s   <D==Er   i1)r   r   r   r   )r   )r!   )r   rA   r   rB   c                     t        j                  | j                        }t        ||        t	        j
                  d|       }t        |      }t        ||       y )Nr   )r   descr_to_dtypedescrri   r   r   ra   r	   )r   dt1r   r`   s       rN   test_descr_to_dtyper   u  sE    d 


)C#r88Ar?DT?DtT"rO   c                     t               } t        d      D cg c]  }d|z  dz  t        f }}t        j                  d|      }t        j                  | |d       t        j                  d	      5 }t        j                  d
dt               t        j                  | |       t        |d   j                  t        u        d d d        | j                  d       | j                         }t        t        |      t
        j                   z  dk(         | j                  d       t        j"                  | d      }t%        ||       t'        t(        t
        j                  | |d       y c c}w # 1 sw Y   xY w)N  %dd     r   r   r   versionTrecordalwaysr   r   @ max_header_sizer7   r   )r   r   floatr   r   r   rY   warningscatch_warningsfilterwarningsr   r   categoryr|   readlinelenARRAY_ALIGNr[   r	   r
   rs   )r^   r   r   r   wheaderns          rN   test_version_2_0r    s$   	A-23Z	8D1HU
#	8B	8
BA
q!V,		 	 	- ."k:1a !,-. FF1IZZ\FCK&,,,12FF1I!V4Aq! *f00!Q?' 
9. .s   E+4AE00E9c           	         t        d      D cg c]  }d|z  dz  t        f }}t        j                  d|      }t        j
                  j                  | d      }t        j
                  j                  | d      }t        t        t        j                  |d|j                  |j                  d	
       t        j                  |d|j                  |j                  d
      }||d<   |j                          t        j                  |dd      }t        ||       t        j                   d      5 }t        j"                  ddt$               t        j                  |d|j                  |j                  d 
      }t'        |d   j(                  t$        u        ||d<   |j                          d d d        t        j                  |dd      }t        ||       y c c}w # 1 sw Y   3xY w)Nr   r   r   r   r   zversion2_01.npyzversion2_02.npyr   r   )r   r   r   r   r   .r   r   )r   r   Tr   r   r   r   )r   r   r   r   r}   r   r   r
   rs   r   r   r   r   r   r	   r   r   r   r   r   r   )r   r   r   r   tf1tf2r   r  s           rN   test_version_2_0_memmapr
    s    .33Z	8D1HU
#	8B	8
BA
'',,v0
1C
'',,v0
1C *f00#D"#''6; 
		Cd!''"#''6
;BBsGHHJ			Cc6	BBr1		 	 	- "k:$agg&'ggt=!,-3

 
		Cc6	BBr15 
9  s   G1A=G  G)	mmap_moder   c                    t         j                  j                  | d      }t        j                  dddz  dz         }t        j                  t        d      5  t        j                  ||       d d d        t        j                  t        d	      5  t        j                  ||
       d d d        t        j                  t        d	      5  t        j                  ||d       d d d        t        j                  ||d      }t        ||       t        j                  ||d      }t        ||       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   jxY w)Nzlarge_header.npyr7   i,'  r   r   .*format 2.0ry   Header.*large)r   N  )r  r   T)r  rW     )r}   r   r   r   r   r   r   r   r   r   rs   r   r	   )r   r  r^   r]   ress        rN   test_huge_headerr    s   
V/0A
((1D5L3.
/C	k	8 
3 
z	9 (
Y'( 
z	9 ?
Y>? ''!yt
<CsC 
''!y&
ACsC  ( (? ?s$   D8EE8EEEc                    t         j                  j                  | d      }t        j                  dddz  dz         }t        j                  t        d      5  t        j                  ||	       d d d        t        j                  t        d
      5  t        j                  |      d    d d d        t        j                  t        d
      5  t        j                  |d      d    d d d        t        j                  |d      d   }t        ||       t        j                  |d      d   }t        ||       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   nxY w)Nzlarge_header.npzr7   r  r  r   r   r  ry   rt   r  r]   r  r   TrV   r  )r}   r   r   r   r   r   r   r   r   r   rs   r   r	   )r   r^   r]   r  s       rN   test_huge_header_npzr    s   
V/0A
((1D5L3.
/C	k	8 
 
z	9 

5 
z	9 1
5)%01 ''!$
'
.CsC 
''!V
,U
3CsC   1 1s$   E EE E	EE!c                     t               } t        j                  d      }t        j                  | |d       t        j                  | |       t        j                  | |d        t        j                  | |       t        j                  | |d       t        j                  | |       g d}|D ]3  }t        t        d      5  t        j                  | ||       d d d        5 y # 1 sw Y   @xY w)Nr7   r   r   r   ))r7   r7   )r   r   )r   r7   r   )   r  z we only support format version.*)r   r   aranger   rY   r   rs   )r^   r]   bad_versionsr   s       rN   test_write_versionr    s    	A
))A,C
q#v.
q#
q#t,
q#
q#v.
q#L   8 !CE 	8q#w7	8 	88	8 	8s   C''C0	)s   NUMPYs   NUMPY  s   NUMPY s   NUMPY s   NUMPYs   NUMPY)s   NUMPY s    NUMPY s   numpy s   MATLB s   NUMPYs   NUMPYrO   c                  :   t               } t               }t        j                  dt              }t	        j
                  | |d       t	        j
                  ||d       | j                  d       |j                  d       t	        j                  |       }t	        j                  |      }t        |dk(         t        |dk(         t        | j                         t        j                  k(         t        |j                         t        j                  k(         y )Nr   r   r   r   r   r   r   )r   r   r   r   r   rY   r|   
read_magicr   tell	MAGIC_LEN)s1s2r]   version1version2s        rN   test_read_magicr%  :  s    	B	B
''&
&C
r3/
r3/GGAJGGAJ  $H  $HHHBGGI)))*BGGI)))*rO   c                  n    t         D ],  } t        |       }t        t        t        j
                  |       . y rP   )malformed_magicr   r
   rs   r   r[   magicr^   s     rN   test_read_magic_bad_magicr*  O  s,      8ENj&"3"3Q78rO   c                  |    t         t        z   D ],  } t        |       }t        t        t
        j                  |       . y rP   )bad_version_magicr'  r   r
   rs   r   r[   r(  s     rN   test_read_version_1_0_bad_magicr-  U  s1    "_4 8ENj&"3"3Q78rO   c                     t        t        t        j                  dd       t        t        t        j                  dd       t        t        t        j                  dd       t        t        t        j                  dd       y )Nr   r7      )r
   rs   r   r)   rO   rN   test_bad_magic_argsr1  [  sJ    *fllB2*fllC3*fllAr2*fllAs3rO   c                      t               } dddd}t        j                  | |       t               } ddz  dfg|d<   t        t        t        j                  | |       y )Nr0  Fz<i8r   r   r      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr/  r   )r   r   write_array_header_1_0r
   rs   sr   s     rN   test_large_headerr8  b  sU    	Auu=A
!!!Q'	As?E*+AgJ*f;;QBrO   c                  x   t               } t        j                  dt              }t	        j
                  | |d       | j                  t        j                         t	        j                  |       \  }}}t        | j                         t        j                  z  dk(         t        |||fddt        fk(         y )Nr  r   r   r   r   F)r   r   r   r   r   rY   r|   r   read_array_header_1_0r   r  r  r7  r]   r   fortranr   s        rN   test_read_array_header_1_0r=  l      	A
''&
&C
q#v.FF6"88;E7EAFFHv)))Q./UGU#u'==>rO   c                  x   t               } t        j                  dt              }t	        j
                  | |d       | j                  t        j                         t	        j                  |       \  }}}t        | j                         t        j                  z  dk(         t        |||fddt        fk(         y )Nr  r   r   r   r   F)r   r   r   r   r   rY   r|   r   read_array_header_2_0r   r  r  r;  s        rN   test_read_array_header_2_0rA  y  r>  rO   c                     t               } t        t        t        j                  |        t        d      } t        t        t        j                  |        t        d      } t        t        t        j                  |        t        d      } t        t        t        j                  |        ddddd}t               } t        j
                  | |       t        t        t        j                  |        y )	N   1s    s@   NUMPY 6 {'descr': 'x', 'shape': (1, 2), }                    
r7   r   Fr   r   )r   r   r   extrakey)r   r
   rs   r   r:  r5  r6  s     rN   test_bad_headerrF    s    	A*f::A>A*f::A> 	A*f::A>
 		"	A *f::A>	A 		A
!!!Q'*f::A>rO   c                    t         j                  dk(  st         j                  dk(  rt        j                  d       t        j
                  j                  | d      }	 dd l}|j                  ddd|g       t        |d
      5 }|j                  d       t        j                  d      }t        j                  ||       d d d        t        |d      5 }|j                  d       t        j                  |      }d d d        t!               y # t        $ r t        j                  d	       Y w xY w# 1 sw Y   uxY w# 1 sw Y   FxY w)Nwin32cygwinz)Unknown if Windows has sparse filesystemssparse_filer   r   z-s
5368709120zCould not create 5GB large filerw   l        rC   rx   )sysplatformr   skipr}   r   r   
subprocess
check_call	Exceptionr{   r|   r   r  r   r   r	   )r   tf_namespr^   r   r   s         rN   test_large_file_supportrT    s   3<<8#;?@ggll6=1G7 	 
z4w?@ 
gt	 	zIIaL
1
 
gt	 	zGGAJ q!  7567 
 s*   D =D3'D?D0/D03D<?Ezflaky on PyPyztest requires 64-bit systeml        )
free_byteszcrashes with low memoryc                    d}	 t        j                  |t         j                        }t        j                  j                  | d      }t        |d      5 }t        j                  |       d d d        ~t        |d      5 }t        j                  |      d   }d d d        j                  |k(  sJ y # t        $ r t	        j
                  d       Y w xY w# 1 sw Y   mxY w# 1 sw Y   KxY w)	N)i   @r   r   zCould not create large filelarge_archiverw   rt   rx   r]   )r   emptyuint8MemoryErrorr   rN  r}   r   r   r{   r   r   r   )r   r   r   r   r^   new_as         rN   test_large_archiver\    s     E3HHU"((+ GGLL1E	eT	 a
 	
	eT	 "a
5!" ;;%  3123
 
" "s)   %B5 CC%5CCC"%C.c                     t         j                  j                  | d      }t        j                  |       t        j
                  |      5 }	 d d d        y # 1 sw Y   y xY w)Nznothing.npz)r}   r   r   r   r   r   )r   r   npss      rN   test_empty_npzr_    sF    GGLL/EHHUO	 3  s   AAc                 V   t        j                  g ddt        fdt        fg      }t        j                  j                  | d      }t        |d      5 }t        j                  ||d       d d d        t        |d	      5 }t        j                  |      }d d d        t        |       t        |d      5 }t        j                  t              5  t        j                  ||d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   qxY w# 1 sw Y   *xY w# 1 sw Y   y xY w)
N)r7   r   rD  ra  rD  intu   整形r   zunicode.npyrw   )r   r   r   rx   )r   r   rb  r}   r   r   r{   r   rY   r[   r	   r   r   r   )r   r]   r   r^   r`   s        rN   test_unicode_field_namesrc    s
   
((  
	GMC GGLL/E	eT	 3a1c623	eT	 $a  #$sD! 
eT	 5a\\+& 	5q#t4	55 53 3$ $	5 	55 5s<   C;D7DD*D;DDD	DD(c                  h   g dg dg dg dfD ]  \  } }}t        t        j                        D cg c]  }d|z  	 c}D ]i  }t               }t        j                  || rd|fn|df| t        j                  d|z  t        fg      d       t        |j                               |k(  riJ   y c c}w )	N)F      )F      )Trg  rf  )T   rh  r   r    r3  )
r   r   GROWTH_AXIS_MAX_DIGITSr   r5  r   r   rb  r  rZ   )is_fortran_arraydtype_spaceexpected_header_lengthr   rL   r   s         rN   test_header_growth_axisro    s    *O_B @=+'= %*&*G*G$HIqRUI 	@DB))"&6!TT1I!1C+$5s#;"<=/  r{{}%)????	@@ Js   B/S3somestuff)metadatasubarrayr   )   r   r    zPyPy bug in error formattingc                    t        j                  d|       }t               }t        j                  t
              5  t        j                  ||       d d d        |j                  d       t        j                  |      }ddl	m
} t        ||        ||j                        |j                  usJ  ||j                        |j                  u sJ y # 1 sw Y   xY w)Nr   r   r   )drop_metadata)r   r   r   r   r   r   r   r|   r   numpy.lib._utils_implrw  r	   r   )r   r]   bufr`   rw  s        rN   test_metadata_dtyperz    s     ''"B
C
)C	k	" 
SHHQK 773<D3sD!#399444$

222 s   CC)m__doc__r}   rL  r   ior   r   numpyr   	numpy.libr   numpy.testingr   r   r   r   r	   r
   r   numpy.testing._private.utilsr   rY  int8uint16int16uint32int32uint64int64float32float64	complex64
complex128rp   scalarsrk   scalarendianr   newbyteorderr  astypebasicextendr   reshapeTPdescrPbufferTNdescrNbufferTr   rl   rE   ra   rc   re   ri   rn   rq   ru   r   r   markskipifslowr   r   r   dt2dt3dt4dt5dt6parametrizer   version_infoxfailr   r   r   r   rb  r   r  r
  r  r  r  r,  r'  r%  r*  r-  r1  r8  r=  rA  rF  rT  thread_unsafer\  r_  rc  ro  r   implementationr   rz  r0  rO   rN   <module>r     sj	  Rf 
 
        9 HHGGIIHHIIHHIIHHJJJJLLMM
  F  --f5		$&&u-BHHRu%BHHRu%MM(#MM(#%%MM(#DbD#A#I.
 	6
 Vr2hR!1%Vr2hR!1%( 	   	!
 		 	   #
( Vb"tb"XBx!Q8$E	:R2r(+Q0Vb"tb"XBx!Q8$F	:R2r(+Q0 BHHXXRXXf-::3?@BHHXXRXXf-::3?@BHHXXRXXf-::3?@BHHXXRXXf-::3?@BHHQ123" "&*@
-24 G$CD  E<" bhh|4(bhh#stq6# $ bhh#ss<=bhhTFQJ?@bhh#stq6dD\; < bhh:;S#sC=>" ?" C$$/G7#FG) H H) PR,1R,1^&  BHHsBGGnBHHoBHHo  BHHsHBHHc
*.*+Q*+
      BHH    BHHsHBHHBHHSz"&"#Q"#% &  	 		
 	 	 

 
 BHH	hbhhBHHBHHc
hbhh#s48$<45q645(7 8 9  	 	   
  	
 =0  0b#c0b#@2 G$CD E< sDk2! 3!&!(86 +*884C
?
??:2 GO4L)FGI&";<  = '  H 5
 ,5.@ BHHSzxrxx!7+8- 0. / 0BHHSFG,-BHHzC;'(FG3DEBHHSzxrxx3%XRXXcB5O4PQR/  	  	 GG 2 2 : :i G-  /3/	3rO   