
    m[h                     v   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mZ ddlmZ ej,                  ej.                  ej0                  ej2                  ej4                  ej6                  ej8                  ej:                  ej<                  ej>                  ej@                  ejB                  e"gZ#g Z$e#D ]  Z%dD ]  Z& ejN                  e%      jQ                  e&      Z' ejR                  d      jU                  e'      Z+e$jY                   ejZ                  g e'	       ejZ                  d
e'	      e+e+j]                  d      e+j]                  d      j^                  e+j]                  d      ddddddf   g         g dZ0ddgddgddggdfddgddgddggdfgZ1dddddg dfddgfdd d!d"gfd#d$gZ2d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Z3 ejZ                  e1 ejN                  e0      jQ                  d4      	       ejZ                  e3 ejN                  e2      jQ                  d4      	       ejZ                  e1 ejN                  e0      jQ                  d5      	       ejZ                  e3 ejN                  e2      jQ                  d5      	       ejh                  d(d6g	      gZ5 G d7 d8e      Z6d9 Z7d: Z8d; Z9d< Z:d= Z;d> Z<d? Z=d@ Z>dA Z?ej                  j                  edBC      ej                  j                  dD               ZCdE ZD ejN                  dFd*G      ZE ejN                  dHdIgdJdJgd(dKgdL      ZF ejN                  dMdNgdJeFgdO      ZG ejN                  g dPdJgdz  dO      ZH ejN                  dHdIgdJdJgd(dKgdQdRgdS      ZI ejN                  g g ddT      ZJej                  j                  dUeEeFeGeHeIeJg      dV        ZLej                  j                  ej                  dWk\  dXC      ej                  j                  edYC      dZ               ZOd[ ZPd\ ZQej                  j                  dU ejN                   ejN                  dHej.                  fdIej2                  fdMej6                  fgd*G      d]       ejN                  d^ ejN                  dHdIgd_d_gddgdd`d]      dafg       ejN                  dbg       ejN                  d^ ejN                   ejN                   ejN                  dHdIgd_d_gddgdd`      d]f      daf      fg       ejN                  dH ejN                   ejN                   ejN                   ejN                  dHeRfdI ejN                  dHdIgd_d_gddgdd`      fg      d]f      daf      dcf      fg      g      dd        ZSde ZTej                  j                  edBC      df        ZUej                  j                  dgdhdg      di        ZVdj ZWdk ZXg dlZYg dmZZdn Z[do Z\dp Z]dq Z^dr Z_ds Z`dt Zadu Zbdv Zcej                  j                  edwC      ej                  j                  e dxC      ej                  j                   edyz      d{                             Zdd| Zed} Zfd~ Zgej                  j                  dU ejN                  dHdIgeh ejN                  dddi      gdO       ejN                  eRddi       ejN                  deRdffgddi       ejN                  dHdIgeh ejN                  dMg ejN                  eRi       gdO      gdO      g      ej                  j                  exr ej                  j                  dk  dC      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)format)IS_64BITIS_PYPYIS_WASMassert_assert_array_equalassert_raisesassert_raises_regexassert_warns)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)r9   r6                 @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   r8   )randomrandintsuperread)selfsizerH   	__class__s      g/var/www/html/p-interativo-gestao-midia/env/lib/python3.12/site-packages/numpy/lib/tests/test_format.pyrK   zBytesIOSRandomSize.read  s%    ~~a&w|D!!    N)__name__
__module____qualname__rK   __classcell__)rN   s   @rO   rF   rF     s    " "rP   rF   c                     t               }t        j                  ||        t        |j                               }t        j                  |d      }|S )NTallow_pickler   r   write_arraygetvalue
read_arrayarrff2arr2s       rO   	roundtriprb     s@    	A
q#		BRd3DKrP   c                     t               }t        j                  ||        t        |j	                               }t        j
                  |      }|S rQ   )r   r   rZ   rF   r[   r\   r]   s       rO   roundtrip_randsizerd     s>    	A
q#	AJJL	)BR DKrP   c                     t               }t        j                  ||        t        |j                         dd       }t        j                  |      }|S )Nr   r   rY   r]   s       rO   roundtrip_truncatedrf     sE    	A
q#	a#	$BR DKrP   c                      t        | |k(         y rQ   )r   )o1o2s     rO   assert_equal_rj     s    B"HrP   c                  V    t         t        z   D ]  } t        |       }t        | |        y rQ   )basic_arraysrecord_arraysrb   r	   r^   ra   s     rO   test_roundtripro     s$    m+~3% ,rP   c                  ~    t         t        z   D ]-  } | j                  t        k7  st	        |       }t        | |       / y rQ   )rl   rm   r   objectrd   r	   rn   s     rO   test_roundtrip_randsizerr     s1    m+99%c*DsD) ,rP   c                  l    t         D ]+  } | j                  t        k7  st        t        t
        |        - y rQ   )rl   r   rq   r
   
ValueErrorrf   r^   s    rO   test_roundtrip_truncatedrv     s%    99*&93? rP   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)rl   r   rq   openr   rZ   seekosSEEK_ENDtruncatepytestraisesrt   rM   r\   )tmp_pathpathr^   r_   _s        rO   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 )Nr8   r   )nponesr   strr   BUFFER_SIZErb   r	   )long_str_arrlong_str_arr2s     rO   test_long_strr     s?    771BHHc63E3E3I-J$KLLl+M|]3rP   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memmaprx   w+)moder   shapefortran_order.ry   r)r   )	enumeraterl   rm   r   	hasobjectr~   r   joinr|   r   rZ   flagsf_contiguousc_contiguousopen_memmapr   flushrK   rj   )
tmpdirir^   nfnmfnfpr   manormal_bytesmemmap_bytess
             rO   test_memmap_roundtripr     sW    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.npzru   r^   )	r   rH   randr~   r   r   savez_compressedloadr	   )r   r^   npz_filenpzarr1s        rO   test_compressed_roundtripr     sj    
))..c
"Cww||F$45Hc*		c5z 
sD! 
	s   -BBz
i1, i4, i1)alignabr      )namesformatsoffsetsrA   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    rD   zaligned.npzru   r^   )	r   zerosranger~   r   r   savezr   r	   )r   r   r^   r   r   r   r   s          rO   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\.rz   r   )r~   r   r   dirname__file__r   warnsUserWarningr   r   r	   r   )fnamer   r   s      rO   %test_python2_python3_interoperabilityr   /  sj     E77<<165AD	k)C	Dwwt} 
EtRWWQZ( 
E	Ds    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rX   encodingz.npzr   r   py2r    r   rW   F)rX   fix_importsr   )r~   r   r   r   r   r   arrayr   rq   r   endswithclose
startswithr   
isinstancer   r	   encoder   r
   UnicodeError__getitem__ImportError)data_direxpectedr   r   r   data_fr   s          rO   test_pickle_python2_python3r   9  s    ww||BGGOOH5v>Hxxun46$&H6ww||He,+H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 ," E"~~f%wwt$7lD,<,<cB

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

lBGGT+/1k277D+/U'/1C6rP   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   rW   )r~   r   r   r   r   r
   rt   r   r   r   saver   rq   )r   r   r   r_   s       rO   test_pickle_disallowr   h  s    ww||BGGOOH5v>H77<<"23D*bggt$x9 77<<"23D	EH	=j!--5 
> 77<< 56D*bggtRXXtfF-K$&	 
>	=s   <D==E)r    r   i1)r   r   r   r   )r"   )r   rB   r   rC   c                     t        j                  | j                        }t        ||        t	        j
                  d|       }t        |      }t        ||       y )Nr    )r   descr_to_dtypedescrrj   r   r   rb   r	   )r   dt1r   ra   s       rO   test_descr_to_dtyper   w  sE    b 


)C#r88Ar?DT?DtT"rP   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r8   r   )r   r   floatr   r   r   rZ   warningscatch_warningsfilterwarningsr   r   categoryr}   readlinelenARRAY_ALIGNr\   r	   r
   rt   )r_   r   r   r   wheaderns          rO   test_version_2_0r    s   	A-23Z	8ZD1HU
#ZB	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
   rt   r   r   r   r   r   r	   r   r   r   r   r   r   )r   r   r   r   tf1tf2r   r  s           rO   test_version_2_0_memmapr    s    .33Z	8ZD1HU
#ZB	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.npyr8   i,'  r   r   .*format 2.0rz   Header.*large)r   N  )r  r   T)r  rX     )r~   r   r   r   r   r   r   r   r   r   rt   r   r	   )r   r  r_   r^   ress        rO   test_huge_headerr    s    
V/0A
((1D5L3.
/C	k	8
3 
9 
z	9
Y' 
: 
z	9
Y> 
: ''!yt
<CsC 
''!y&
ACsC  
9	8 
:	9 
:	9s$   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.npzr8   r  r  r   r   r  rz   ru   r  r^   r  r   TrW   r  )r~   r   r   r   r   r   r   r   r   r   rt   r   r	   )r   r_   r^   r  s       rO   test_huge_header_npzr    s    
V/0A
((1D5L3.
/C	k	8
 
9 
z	9

5 
: 
z	9
5)%0 
: ''!$
'
.CsC 
''!V
,U
3CsC  
9	8 
:	9 
:	9s$   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)Nr8   r   r   r   ))r8   r8   )r   r   )r   r8   r   )   r  z we only support format version.*)r   r   aranger   rZ   r   rt   )r_   r^   bad_versionsr   s       rO   test_write_versionr    s    	A
))A,C
q#v.
q#
q#t,
q#
q#v.
q#L   !CEq#w7E E  E Es   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   NUMPYrP   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   rZ   r}   
read_magicr   tell	MAGIC_LEN)s1s2r^   version1version2s        rO   test_read_magicr&  ;  s    	B	B
''&
&C
r3/
r3/GGAJGGAJ  $H  $HHHBGGI)))*BGGI)))*rP   c                  n    t         D ],  } t        |       }t        t        t        j
                  |       . y rQ   )malformed_magicr   r
   rt   r   r\   magicr_   s     rO   test_read_magic_bad_magicr+  P  s'     ENj&"3"3Q7 !rP   c                  |    t         t        z   D ],  } t        |       }t        t        t
        j                  |       . y rQ   )bad_version_magicr(  r   r
   rt   r   r\   r)  s     rO   test_read_version_1_0_bad_magicr.  V  s,    "_4ENj&"3"3Q7 5rP   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   r8      )r
   rt   r   r*   rP   rO   test_bad_magic_argsr2  \  sJ    *fllB2*fllC3*fllAr2*fllAs3rP   c                      t               } dddd}t        j                  | |       t               } ddz  dfg|d<   t        t        t        j                  | |       y )Nr1  Fz<i8r   r   r      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr0  r   )r   r   write_array_header_1_0r
   rt   sr   s     rO   test_large_headerr9  c  sU    	Auu=A
!!!Q'	As?E*+AgJ*f;;QBrP   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   rZ   r}   r!  read_array_header_1_0r   r   r  r8  r^   r   fortranr   s        rO   test_read_array_header_1_0r>  m      	A
''&
&C
q#v.FF6"88;E7EAFFHv)))Q./UGU#u'==>rP   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   rZ   r}   r!  read_array_header_2_0r   r   r  r<  s        rO   test_read_array_header_2_0rB  z  r?  rP   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), }                    
r8   r   Fr   r   )r   r   r   extrakey)r   r
   rt   r   r;  r6  r7  s     rO   test_bad_headerrG    s    	A*f::A>A*f::A> 	A*f::A>
 		"	A *f::A>	A 		A
!!!Q'*f::A>rP   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 filerx   l        rD   ry   )sysplatformr   skipr~   r   r   
subprocess
check_call	Exceptionr|   r}   r   r  r   r   r	   )r   tf_namespr_   r   r   s         rO   test_large_file_supportrU    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_archiverx   ru   ry   r^   )r   emptyuint8MemoryErrorr   rO  r~   r   r   r|   r   r   r   )r   r   r   r   r_   new_as         rO   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      rO   test_empty_npzr`    s;    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)r8   r    rE  rb  rE  intu   整形r   zunicode.npyrx   )r    r   r   ry   )r   r   rc  r~   r   r   r|   r   rZ   r\   r	   r   r   )r   r^   r   r_   ra   s        rO   test_unicode_field_namesrd    s    
((  
	GMC GGLL/E	eT	a1c62 
	eT	a  # 
sD! 
eT	a+&q#t4 ' 
	 
			 '& 
	s<   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      )Trh  rg  )T   ri  r   r    r4  )
r   r   GROWTH_AXIS_MAX_DIGITSr   r6  r   r   rc  r  r[   )is_fortran_arraydtype_spaceexpected_header_lengthr   rM   r   s         rO   test_header_growth_axisrp    s    *O_B=+'= %*&*G*G$HI$HqRU$HIDB))"&6!TT1I!1C+$5s#;"<=/  r{{}%)???? JB 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)r   r   r   r   r   r   r}   r   numpy.lib._utils_implrx  r	   r   )r   r^   bufra   rx  s        rO   test_metadata_dtyper{    s     ''"B
C
)C	k	"
S 
#HHQK 773<D3sD!#399444$

222 
#	"s   C		C)l__doc__r~   rM  r   ior   r   numpyr   	numpy.libr   numpy.testingr   r   r   r   r	   r
   r   r   numpy.testing._private.utilsr   rZ  int8uint16int16uint32int32uint64int64float32float64	complex64
complex128rq   scalarsrl   scalarendianr   newbyteorderr  astypebasicextendr   reshapeTPdescrPbufferTNdescrNbufferTr   rm   rF   rb   rd   rf   rj   ro   rr   rv   r   r   markskipifslowr   r   r   dt2dt3dt4dt5dt6parametrizer   version_infoxfailr   r   r   rc  r   r  r  r  r  r  r-  r(  r&  r+  r.  r2  r9  r>  rB  rG  rU  r]  r`  rd  rp  r   implementationr   r{  r1  rP   rO   <module>r     s-	  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),1^& BHHXRXXRWW~RXXRXX  $% 	
 BHHsHBHHSz*.*+Q*+
     BHH    BHHsHBHHBHHSz"&"#Q"#% &  	 		
 	 	 

 
 BHH	hbhhBHHBHHc
hbhh#s48$<45q645(7 8 9  	 	   
  	
 ;/  /`#a/`#@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/	3rP   