
    Bwg                        d Z ddl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	m
Z
mZmZmZmZmZmZ ddl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=ej|                  j                  edAB      ej|                  j                  dC               ZAdD ZB ejL                  dEd*F      ZC ejL                  dGdHgdIdIgd(dJgdK      ZD ejL                  dLdMgdIeDgdN      ZE ejL                  g dOdIgdz  dN      ZF ejL                  dGdHgdIdIgd(dJgdPdQgdR      ZG ejL                  g g ddS      ZHej|                  j                  dTeCeDeEeFeGeHg      dU        ZJej|                  j                  ej                  dVk\  dWB      ej|                  j                  edXB      dY               ZMdZ ZNd[ ZOej|                  j                  dT ejL                   ejL                  dGej,                  fdHej0                  fdLej4                  fgd*F      d\       ejL                  d] ejL                  dGdHgd^d^gddgdd_d\      d`fg       ejL                  dag       ejL                  d] ejL                   ejL                   ejL                  dGdHgd^d^gddgdd_      d\f      d`f      fg       ejL                  dG ejL                   ejL                   ejL                   ejL                  dGePfdH ejL                  dGdHgd^d^gddgdd_      fg      d\f      d`f      dbf      fg      g      dc        ZQdd ZRej|                  j                  edAB      de        ZSej|                  j                  dfdgdg      dh        ZTdi ZUdj ZVg dkZWg dlZXdm ZYdn ZZdo Z[dp Z\dq Z]dr Z^ds Z_dt Z`du Zaej|                  j                  edvB      ej|                  j                   ejL                  ej                        j                  dk  dwB      ej|                  j                   edxy      dz                             Zdd{ Zed| Zfd} Zgej|                  j                  dT ejL                  dGdHgeh ejL                  d~ddi      gdN       ejL                  ePddi       ejL                  dePdffgddi       ejL                  dGdHgeh ejL                  dLg ejL                  ePi       gdN      gdN      g      ej|                  j                  exr ej                  j                  dk  dB      d               Zky)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)assert_assert_array_equalassert_raisesassert_raises_regexassert_warnsIS_PYPYIS_WASM)requires_memory)formatz<>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      R/var/www/horilla/myenv/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                      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memmapwbw+)moder   shapefortran_order.rbr)r   )	enumeraterk   rl   r   	hasobjectospathjoinopenr   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]   )	rw   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]   )	rw   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\.matchr   )r   r   r   dirname__file__pytestwarnsUserWarningrw   r   r   rx   )fnamer   r   s      rN   %test_python2_python3_interoperabilityr     so     E77<<165AD	k)C	D wwt}tRWWQZ( s    BB'c            	         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   rw   arrayr   rp   r   endswithclose
startswithr   
isinstancery   r   encoder   r   UnicodeError__getitem__ImportError)data_direxpectedr   r   r   data_fr   s          rN   test_pickle_python2_python3r     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   rw   r   r   saver   rp   )r   r   r   r^   s       rN   test_pickle_disallowr   K  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   r   i1)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   rw   r   ra   r   )r   dt1r   r`   s       rN   test_descr_to_dtyper   Z  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   floatrw   rx   r   rY   warningscatch_warningsfilterwarningsr   r   categoryseek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   rw   rx   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.0r   Header.*large)r   N  )r  r   T)r  rW     )r   r   r   rw   r   r   r   r   r   raisesrs   r   r   )r   r  r^   r]   ress        rN   test_huge_headerr    s   
V/0A
((1DJsN
+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  r   rt   r	  r]   r
  r   TrV   r  )r   r   r   rw   r   r   r   r   r   r  rs   r   r   )r   r^   r]   r  s       rN   test_huge_header_npzr    s   
V/0A
((1DJsN
+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   rw   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   rw   rx   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$  4  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'  :  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_argsr+  @  sJ    *fllB2*fllC3*fllAr2*fllAs3rO   c                      t               } t               ddd}t        j                  | |       t               } ddz  dfg|d<   t	        t
        t        j                  | |       y )NFz<i8r   r   r      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr)  r   )r   tupler   write_array_header_1_0r   rs   sr   s     rN   test_large_headerr3  G  sW    	A'EEBA
!!!Q'	A3;&'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   rw   rx   r   r   rY   r   r  read_array_header_1_0r   r  r   r2  r]   r   fortranr   s        rN   test_read_array_header_1_0r8  Q      	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   rw   rx   r   r   rY   r   r  read_array_header_2_0r   r  r   r6  s        rN   test_read_array_header_2_0r<  ^  r9  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   r5  r0  r1  s     rN   test_bad_headerrA  k  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   truncatez-s
5368709120zCould not create 5GB large filer   l        rC   r   )sysplatformr   skipr   r   r   
subprocess
check_call	Exceptionr   r   rw   r  r   r   r   )r   tf_namespr^   r   r   s         rN   test_large_file_supportrP    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_bytesc                    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_archiver   rt   r   r]   )rw   emptyuint8MemoryErrorr   rJ  r   r   r   r   r   r   r   )r   r   r   r   r^   new_as         rN   test_large_archiverX    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   rw   r   r   )r   r   npss      rN   test_empty_npzr[    sF    GGLL/EHHUO	 3  s   AAc                 B   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        t              5  t        j                  ||d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   gxY w# 1 sw Y   *xY w# 1 sw Y   y xY w)
N)r7   r   r?  r]  r?  intu   整形r   zunicode.npyr   )r   r   r   r   )rw   r   r^  r   r   r   r   r   rY   r[   r   r   r   )r   r]   r   r^   r`   s        rN   test_unicode_field_namesr_    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<   C1C=7DD	 D1C:=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      )Trc  rb  )T   rd  r   r    r-  )
r   r   GROWTH_AXIS_MAX_DIGITSr   r0  rw   r   r^  r   rZ   )is_fortran_arraydtype_spaceexpected_header_lengthr   rL   r   s         rN   test_header_growth_axisrk    s    *O_B @=+'= %*&*G*G$HIqRUI 	@DB))"&6!TT1I!1COS#9":;/  r{{}%)????	@@ Js   B/S3somestuff)metadatasubarrayr   )   r   r    zPyPy bug in error formattingc                    t        j                  d|       }t               }t        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)rw   rx   r   r   r   r   r   r   numpy.lib._utils_implrs  r   r   )r   r]   bufr`   rs  s        rN   test_metadata_dtyperv    s     ''"B
C
)C	k	" 
SHHQK 773<D3sD!#399444$

222 s   C		C)l__doc__rH  r   r   r   ior   numpyrw   numpy.testingr   r   r   r   r   r	   r
   numpy.testing._private.utilsr   	numpy.libr   rU  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}   markskipifslowr   r   r   dt2dt3dt4dt5dt6parametrizer   version_infoxfailr   r   r   r^  r   r   r  r  r  r  r&  r!  r  r$  r'  r+  r3  r8  r<  rA  rP  intpr   rX  r[  r_  rk  r   implementationr   rv  r*  rO   rN   <module>r     sM	  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" "&*@4 G$CD  E<" bhh|4(bhh#stq6# $ bhh#ss<=bhhTF1H=>bhh#stq6dD\; < bhh:;S#sC=>" ?" C$$/G7#FG) H H),1^& BHHXRXXRWW~RXXRXX  $% 	
 BHHsHBHHs3i)-d)*1)*
     BHH    BHHsHBHHBHHs3i!%d!"1!"$ %  	 		
 	 	 

 
 BHH	hbhhBHHBHHc
hbhhS	37+34Q%34(6 7 8  	 	   
  	
 ;/  /b#c/b#@2 G$CD E< sDk2! 3!&!(86 +*884C
?
??:2 GO4HBHHRWW%..28  :I&  ' : 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   