
    C>qj                     r   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 ddlmZ ej(                  ej*                  ej,                  ej.                  ej0                  ej2                  ej4                  ej6                  ej8                  ej:                  ej<                  ej>                  e gZ!g Z"e!D ]  Z#dD ]  Z$ ejJ                  e#      jM                  e$      Z% ejN                  d      jQ                  e%      Z)e"jU                   ejV                  g e%	       ejV                  d
e%	      e)e)jY                  d      e)jY                  d      jZ                  e)jY                  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Z/dddddg dfddgfdd d!d"gfd#d$gZ0d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Z1 ejV                  e/ ejJ                  e.      jM                  d4      	       ejV                  e1 ejJ                  e0      jM                  d4      	       ejV                  e/ ejJ                  e.      jM                  d5      	       ejV                  e1 ejJ                  e0      jM                  d5      	       ejd                  d(d6g	      gZ3 G d7 d8e      Z4d9 Z5d: Z6d; Z7d< Z8d= Z9d> Z:d? Z;d@ Z<dA Z=ej|                  j                  edBC      ej|                  j                  dD               ZAdE ZB ejJ                  dFd*G      ZC ejJ                  dHdIgdJdJgd(dKgdL      ZD ejJ                  dMdNgdJeDgdO      ZE ejJ                  g dPdJgdz  dO      ZF ejJ                  dHdIgdJdJgd(dKgdQdRgdS      ZG ejJ                  g g ddT      ZHej|                  j                  dUeCeDeEeFeGeHg      dV        ZJej|                  j                  dW      dX        ZLdY ZMej|                  j                  dU ejJ                  dHej*                  fdIej.                  fdMej2                  fgd*G       ejJ                  dZ ejJ                  dHdIgd[d[gddgdd\d]f      d^fg       ejJ                  d_g       ejJ                  dZ ejJ                   ejJ                   ejJ                  dHdIgd[d[gddgdd\      d]f      d^f      fg       ejJ                  dH ejJ                   ejJ                   ejJ                   ejJ                  dHeNfdI ejJ                  dHdIgd[d[gddgdd\      fg      d]f      d^f      d`f      fg      g      da        ZOdb ZPej|                  j                  edBC      dc        ZQej|                  j                  dddedg      df        ZRdg ZSdh ZTg diZUg djZVdk ZWdl ZXdm ZYdn ZZdo Z[dp Z\dq Z]dr Z^ds Z_ej|                  j                  e dtC      ej|                  j                   eduv      ej|                  j                  dwC      dx                             Zady Zbdz Zcd{ Zdej|                  j                  dU ejJ                  dHdIgee ejJ                  d|d}d~i      gdO       ejJ                  eNd}d~i       ejJ                  deNdffgd}d~i       ejJ                  dHdIgee ejJ                  dMg ejJ                  eNi       gdO      gdO      g      d        Zfy)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()
    ...     # XXX: arr is not a dict, items gets called on it
    ...     format.write_array_header_1_0(f, arr)
    ...     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_WASMassert_assert_array_equalassert_raisesassert_raises_regex)requires_memoryz<>i  dtype
   )   2      )xi4r   yf8r   r   zu1   g      @g      @      g      @g      @	   r   Info)valuec16)y2r   Info2)nameS2)r#   r$   r   )y3r   r   )z3u4r   r'   )z2b1)colorr)   info)NameU8)Valuer$   r   r                 @nny              @   NNTcc)r7   r4                 @ooy              @OOFdd)r;   r9   <>)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   r6   )randomrandintsuperread)selfsizerF   	__class__s      Z/opt/rentech/trading_bot/.venv/lib/python3.12/site-packages/numpy/lib/tests/test_format.pyrI   zBytesIOSRandomSize.read  s%    ~~a&w|D!!    N)__name__
__module____qualname__rI   __classcell__)rL   s   @rM   rD   rD     s    " "rN   rD   c                     t               }t        j                  ||        t        |j                               }t        j                  |d      }|S )NTallow_pickler   r   write_arraygetvalue
read_arrayarrff2arr2s       rM   	roundtripr`     s@    	A
q#		BRd3DKrN   c                     t               }t        j                  ||        t        |j	                               }t        j
                  |      }|S rO   )r   r   rX   rD   rY   rZ   r[   s       rM   roundtrip_randsizerb     s>    	A
q#	AJJL	)BR DKrN   c                     t               }t        j                  ||        t        |j                         dd       }t        j                  |      }|S )Nr   r   rW   r[   s       rM   roundtrip_truncatedrd     sE    	A
q#	a#	$BR DKrN   c                      t        | |k(         y rO   )r   )o1o2s     rM   assert_equal_rh     s    B"HrN   c                  V    t         t        z   D ]  } t        |       }t        | |        y rO   )basic_arraysrecord_arraysr`   r   r\   r_   s     rM   test_roundtriprm     s)    m+ &~3%&rN   c                  ~    t         t        z   D ]-  } | j                  t        k7  st	        |       }t        | |       / y rO   )rj   rk   r   objectrb   r   rl   s     rM   test_roundtrip_randsizerp     s6    m+ *99%c*DsD)*rN   c                  l    t         D ]+  } | j                  t        k7  st        t        t
        |        - y rO   )rj   r   ro   r	   
ValueErrorrd   r\   s    rM   test_roundtrip_truncatedrt     s,     @99*&93?@rN   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)rj   r   ro   openr   rX   seekosSEEK_ENDtruncatepytestraisesrr   rK   rZ   )tmp_pathpathr\   r]   _s        rM   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 )Nr6   r   )nponesr   strr   BUFFER_SIZEr`   r   )long_str_arrlong_str_arr2s     rM   test_long_strr     s?    771BHHc63E3E3I-J$KLLl+M|]3rN   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memmaprv   w+)moder   shapefortran_order.rw   r)r   )	enumeraterj   rk   r   	hasobjectr|   r   joinrz   r   rX   flagsf_contiguousc_contiguousopen_memmapr   flushrI   rh   )
tmpdirir\   nfnmfnfpr   manormal_bytesmemmap_bytess
             rM   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.npzrs   r\   )	r   rF   randr|   r   r   savez_compressedloadr   )r   r\   npz_filenpzarr1s        rM   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   rB   zaligned.npzrs   r\   )	r   zerosranger|   r   r   savezr   r   )r   r   r\   r   r   r   r   s          rM   test_load_padded_dtyper   !  s    
((1b/C1X QAww||FM2HHHX3		 c5zsD! s   ;BBzJignore:.*align should be passed:numpy.exceptions.VisibleDeprecationWarningc            	         t         j                  j                  t         j                  j                  t              d      } t        j                  d t        ddgt              }dD ]  }t         j                  j                  | |      }dD ]  }t        j                  |d|      }|j                  d	      r|d
   }|j                          n|}|dk(  ra|j                  d      rPt        t        |d   t                     t!        |d d |d d        t!        |d   j#                  |      |d          t        t        |d   t$                     t!        ||        |j                  d      s|j                  d	      rt        j                  |d      }t'        t(        |j*                  d
       |j                          t        j                  |ddd      }t'        t,        |j*                  d
       |j                          t'        t(        t
        j                  |d       t'        t,        t
        j                  |ddd        y )Ndatau   優良s   不良r   )zpy2-np0-objarr.npypy2-objarr.npypy2-objarr.npzzpy3-objarr.npyzpy3-objarr.npz)byteslatin1TrV   encodingz.npzr   r   py2r   r   rU   F)rV   fix_importsr   )r|   r   r   dirname__file__r   arrayr   ro   r   endswithclose
startswithr   
isinstancer   r   encoder   r	   UnicodeError__getitem__ImportError)data_direxpectedfnamer   r   data_fr   s          rM   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#1rN   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   rU   )r|   r   r   r   r   r	   rr   r   r   r   saver   ro   )r   r   r   r]   s       rM   test_pickle_disallowr   ^  s    ww||BGGOOH5v>H77<<"23D*bggt$x9 77<<"23D	EH	= 6j!--56 77<< 56D*bggtRXXtfF-K$&	6 6s   <D==Er   i1)r   r   r   r   )r   )r    )r   r@   r   rA   c                     t        j                  | j                        }t        ||        t	        j
                  d|       }t        |      }t        ||       y )Nr   )r   descr_to_dtypedescrrh   r   r   r`   r   )r   dt1r   r_   s       rM   test_descr_to_dtyper   m  sE    d 


)C#r88Ar?DT?DtT"rN   c                     t               } t        d      D cg c]  }| 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  d     r   r   r   versionTrecordalwaysr   r   @ max_header_sizer6   r   )r   r   floatr   r   r   rX   warningscatch_warningsfilterwarningsUserWarningr   categoryr{   readlinelenARRAY_ALIGNrZ   r   r	   rr   )r]   r   r   r   wheaderns          rM   test_version_2_0r     s!   	A).s	4AaSC<
	4B	4
BA
q!V,		 	 	- ."k:1a !,-. FF1IZZ\FCK&,,,12FF1I!V4Aq! *f00!Q?' 
5. .s   E)2AE..E7c           	         t        d      D cg c]  }| 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   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	   rr   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   tf1tf2r   r   s           rM   test_version_2_0_memmapr    s    */s	4AaSC<
	4B	4
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 
5  s   G/A=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.npyr6   i,'  r   r   .*format 2.0rx   Header.*large)r   N  )r  r   T)r  rV     )r|   r   r   r   r   r   warnsr   r   r   rr   r   r   )r   r  r]   r\   ress        rM   test_huge_headerr    s   
V/0A
((1D5L3.
/C	k	8 
3 
z	9 (
Y'( 
z	9 ?
Y>? ''!yt
<CsC 
''!y&
ACsC  ( (? ?s$   D8EE8EEEc                    t         j                  j                  | d      }t        j                  dddz  dz         }t        j                  t        d      5  t        j                  ||	       d d d        t        j                  t        d
      5  t        j                  |      d    d d d        t        j                  t        d
      5  t        j                  |d      d    d d d        t        j                  |d      d   }t        ||       t        j                  |d      d   }t        ||       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   nxY w)Nzlarge_header.npzr6   r  r  r   r   r	  rx   rs   r
  r\   r  r   TrU   r  )r|   r   r   r   r   r   r  r   r   r   rr   r   r   )r   r]   r\   r  s       rM   test_huge_header_npzr    s   
V/0A
((1D5L3.
/C	k	8 
 
z	9 

5 
z	9 1
5)%01 ''!$
'
.CsC 
''!V
,U
3CsC   1 1s$   E EE E	EE!c                     t               } t        j                  d      }t        j                  | |d       t        j                  | |       t        j                  | |d        t        j                  | |       t        j                  | |d       t        j                  | |       g d}|D ]3  }t        t        d      5  t        j                  | ||       d d d        5 y # 1 sw Y   @xY w)Nr6   r   r   r   ))r6   r6   )r   r   )r   r6   r   )   r  z we only support format version.*)r   r   aranger   rX   r
   rr   )r]   r\   bad_versionsr   s       rM   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   NUMPYrN   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   rX   r{   
read_magicr   tell	MAGIC_LEN)s1s2r\   version1version2s        rM   test_read_magicr   2  s    	B	B
''&
&C
r3/
r3/GGAJGGAJ  $H  $HHHBGGI)))*BGGI)))*rN   c                  n    t         D ],  } t        |       }t        t        t        j
                  |       . y rO   )malformed_magicr   r	   rr   r   rZ   magicr]   s     rM   test_read_magic_bad_magicr%  G  s,      8ENj&"3"3Q78rN   c                  |    t         t        z   D ],  } t        |       }t        t        t
        j                  |       . y rO   )bad_version_magicr"  r   r	   rr   r   rZ   r#  s     rM   test_read_version_1_0_bad_magicr(  M  s1    "_4 8ENj&"3"3Q78rN   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   r6      )r	   rr   r   r$   rN   rM   test_bad_magic_argsr,  S  sJ    *fllB2*fllC3*fllAr2*fllAs3rN   c                      t               } dddd}t        j                  | |       t               } ddz  dfg|d<   t        t        t        j                  | |       y )Nr+  Fz<i8r   r   r      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr*  r   )r   r   write_array_header_1_0r	   rr   sr   s     rM   test_large_headerr3  Z  sU    	Auu=A
!!!Q'	As?E*+AgJ*f;;QBrN   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   rX   r{   r  read_array_header_1_0r   r  r   r2  r\   r   fortranr   s        rM   test_read_array_header_1_0r8  d      	A
''&
&C
q#v.FF6"88;E7EAFFHv)))Q./UGU#u'==>rN   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   rX   r{   r  read_array_header_2_0r   r  r   r6  s        rM   test_read_array_header_2_0r<  q  r9  rN   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), }                    
r6   r   Fr   r   )r   r   r   extrakey)r   r	   rr   r   r5  r0  r1  s     rM   test_bad_headerrA  ~  s    	A*f::A>A*f::A> 	A*f::A>
 		"	A *f::A>	A 		A
!!!Q'*f::A>rN   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 filerv   l        rB   rw   )sysplatformr   skipr|   r   r   
subprocess
check_call	Exceptionrz   r{   r   r  r   r   r   )r   tf_namespr]   r   r   s         rM   test_large_file_supportrO    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test requires 64-bit systeml        )
free_byteszcrashes with low memoryc                    d}	 t        j                  |t         j                        }t        j                  j                  | d      }t        |d      5 }t        j                  |       d d d        ~t        |d      5 }t        j                  |      d   }d d d        j                  |k(  sJ y # t        $ r t	        j
                  d       Y w xY w# 1 sw Y   mxY w# 1 sw Y   KxY w)	N)i   @r   r   zCould not create large filelarge_archiverv   rs   rw   r\   )r   emptyuint8MemoryErrorr   rI  r|   r   r   rz   r   r   r   )r   r   r   r   r]   new_as         rM   test_large_archiverW    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      rM   test_empty_npzrZ    sF    GGLL/EHHUO	 3  s   AAc                 V   t        j                  g ddt        fdt        fg      }t        j                  j                  | d      }t        |d      5 }t        j                  ||d       d d d        t        |d	      5 }t        j                  |      }d d d        t        |       t        |d      5 }t        j                  t              5  t        j                  ||d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   qxY w# 1 sw Y   *xY w# 1 sw Y   y xY w)
N)r6   r   r?  r\  r?  intu   整形r   zunicode.npyrv   )r   r   r   rw   )r   r   r]  r|   r   r   rz   r   rX   rZ   r   r   r  r   )r   r\   r   r]   r_   s        rM   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<   C;D7DD*D;DDD	DD(c                  h   g dg dg dg dfD ]  \  } }}t        t        j                        D cg c]  }d|z  	 c}D ]i  }t               }t        j                  || rd|fn|df| t        j                  d|z  t        fg      d       t        |j                               |k(  riJ   y c c}w )	N)F      )F      )Trb  ra  )T   rc  r   r    r.  )
r   r   GROWTH_AXIS_MAX_DIGITSr   r0  r   r   r]  r   rY   )is_fortran_arraydtype_spaceexpected_header_lengthr   rK   r   s         rM   test_header_growth_axisrj    s    *O_B @=+'= %*&*G*G$HIqRUI 	@DB))"&6!TT1I!1C+$5s#;"<=/  r{{}%)????	@@ Js   B/S3somestuff)metadatasubarrayr   c                    t        j                  d|       }t               }t        j                  t
              5  t        j                  ||       d d d        |j                  d       t        j                  |      }ddl	m
} t        ||        ||j                        |j                  usJ  ||j                        |j                  u sJ y # 1 sw Y   xY w)Nr   r   r   )drop_metadata)r   r   r   r   r  r   r   r{   r   numpy.lib._utils_implrq  r   r   )r   r\   bufr_   rq  s        rM   test_metadata_dtypert    s     ''"B
C
)C	k	" 
SHHQK 773<D3sD!#399444$

222 s   CC)g__doc__r|   rG  r   ior   r   numpyr   	numpy.libr   numpy.testingr   r   r   r   r	   r
   numpy.testing._private.utilsr   rT  int8uint16int16uint32int32uint64int64float32float64	complex64
complex128ro   scalarsrj   scalarendianr   newbyteorderr  astypebasicextendr   reshapeTPdescrPbufferTNdescrNbufferTr   rk   rD   r`   rb   rd   rh   rm   rp   rt   r   r   markskipifslowr   r   r   dt2dt3dt4dt5dt6parametrizer   r   r   r   r]  r   r   r  r  r  r  r'  r"  r   r%  r(  r,  r3  r8  r<  rA  rO  thread_unsaferW  rZ  r^  rj  r   rt  r+  rN   rM   <module>r     s  Ul 
 
       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=>" ?" PR,1R,1^&  BHHsBGGnBHHoBHHo  BHHsHBHHc
*.*+Q*+
      BHH    BHHsHBHHBHHSz"&"#Q"#% &  	 		
 	 	 

 
 BHH	hbhhBHHBHHc
hbhh#s48$<45q645(7 8 9  	 	   
  	
 =0  0b#c0b#@2 G$CD E< sDk2! 3!&!(86 +*884C
?
??:2 L)FGI&";<  = '  H ,5.@ BHHSzxrxx!7+8- 0. / 0BHHSFG,-BHHzC;'(FG3DEBHHSzxrxx3%XRXXcB5O4PQR/  	  	3	3rN   