o
    V=ºi»Ÿ  ã                   @   sp  d Z ddlZddlZddlZddlZddlmZ ddlZddl	m
Z
mZmZmZmZmZ ddlmZ ddlmZ ejejejejejejejejejejejeje gZ!g Z"e!D ]@Z#dD ];Z$e %e#¡ &e$¡Z%e 'd¡ (e%¡Z)e" *ej+g e%d	�ej+d
e%d	�e)e) ,d¡e) ,d¡j-e) ,d¡ddd…ddd…f g¡ q[qWg 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Z1ej+e/e %e.¡ &d4¡d	�ej+e1e %e0¡ &d4¡d	�ej+e/e %e.¡ &d5¡d	�ej+e1e %e0¡ &d5¡d	�ej2d(d6gd	�gZ3G d7d8„ d8eƒZ4d9d:„ Z5d;d<„ Z6d=d>„ Z7d?d@„ Z8dAdB„ Z9dCdD„ Z:dEdF„ Z;dGdH„ Z<ej=j>dIdJ„ ƒZ?dKdL„ Z@ej%dMd*dN�ZAe %dOdPgdQdQgd(dRgdSœ¡ZBe %dTdUgdQeBgdVœ¡ZCe %g dW¢dQgd dVœ¡ZDe %dOdPgdQdQgd(dRgdXdYgdZœ¡ZEe %g g dd[œ¡ZFej= Gd\eAeBeCeDeEeFg¡d]d^„ ƒZHd_d`„ ZIdadb„ ZJdcdd„ ZKej= Gd\e %ej%dOejfdPejfdTejfgd*dN�de¡e %dfe %dOdPgdgdggddgddhœde¡difg¡e %djg¡e %dfe %e %e %dOdPgdgdggddgddhœ¡def¡dif¡fg¡e %dOe %e %e %e %dOeLfdPe %dOdPgdgdggddgddhœ¡fg¡def¡dif¡dkf¡fg¡g¡dldm„ ƒZMdndo„ ZNdpdq„ ZOej= Gdrdsdg¡dtdu„ ƒZPdvdw„ ZQdxdy„ ZRg dz¢ZSg d{¢ZTd|d}„ ZUd~d„ ZVd€d�„ ZWd‚dƒ„ ZXd„d…„ ZYd†d‡„ ZZdˆd‰„ Z[dŠd‹„ Z\dŒd�„ Z]ej=j^e %ej_¡j`dk dŽd��ej=j>ed�d‘�d’d“„ ƒƒƒZad”d•„ Zbd–d—„ Zcej= Gd˜e %dOdPgedej%d™dšd›idœ�gdVœ¡d*fej%eLdšd›idœ�d1fej%d�eLdžffgdšd›idœ�d1fe %dOdPgede %dTgej%eLi dœ�gdVœ¡gdVœ¡d1fg¡ej=j^e�o-ejejfdŸkd d��d¡d¢„ ƒƒZgdS )£a¹D   Test the .npy file format.

Set up:

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

Test the magic string writing.

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

Test the magic string reading.

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

Test the header writing.

    >>> for arr in basic_arrays + record_arrays:
    ...     f = BytesIO()
    ...     format.write_array_header_1_0(f, arr)   # XXX: arr is not a dict, items gets called on it
    ...     print(repr(f.getvalue()))
    ...
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '|u1', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '|u1', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '|i1', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '|i1', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<u2', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<u2', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<u2', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<u2', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<u2', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<u2', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>u2', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>u2', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>u2', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>u2', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>u2', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>u2', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<i2', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<i2', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<i2', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<i2', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<i2', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<i2', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>i2', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>i2', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>i2', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>i2', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>i2', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>i2', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<u4', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<u4', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<u4', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<u4', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<u4', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<u4', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>u4', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>u4', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>u4', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>u4', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>u4', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>u4', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<i4', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<i4', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<i4', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<i4', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<i4', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<i4', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>i4', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>i4', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>i4', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>i4', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>i4', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>i4', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<u8', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<u8', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<u8', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<u8', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<u8', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<u8', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>u8', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>u8', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>u8', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>u8', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>u8', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>u8', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<i8', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<i8', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<i8', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<i8', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<i8', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<i8', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>i8', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>i8', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>i8', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>i8', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>i8', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>i8', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<f4', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<f4', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<f4', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<f4', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<f4', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<f4', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>f4', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>f4', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>f4', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>f4', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>f4', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>f4', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<f8', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<f8', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<f8', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<f8', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<f8', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<f8', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>f8', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>f8', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>f8', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>f8', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>f8', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>f8', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<c8', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<c8', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<c8', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<c8', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<c8', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<c8', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>c8', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>c8', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>c8', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>c8', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>c8', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>c8', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<c16', 'fortran_order': False, 'shape': (0,)}             \n"
    "F\x00{'descr': '<c16', 'fortran_order': False, 'shape': ()}               \n"
    "F\x00{'descr': '<c16', 'fortran_order': False, 'shape': (15,)}            \n"
    "F\x00{'descr': '<c16', 'fortran_order': False, 'shape': (3, 5)}           \n"
    "F\x00{'descr': '<c16', 'fortran_order': True, 'shape': (5, 3)}            \n"
    "F\x00{'descr': '<c16', 'fortran_order': False, 'shape': (3, 3)}           \n"
    "F\x00{'descr': '>c16', 'fortran_order': False, 'shape': (0,)}             \n"
    "F\x00{'descr': '>c16', 'fortran_order': False, 'shape': ()}               \n"
    "F\x00{'descr': '>c16', 'fortran_order': False, 'shape': (15,)}            \n"
    "F\x00{'descr': '>c16', 'fortran_order': False, 'shape': (3, 5)}           \n"
    "F\x00{'descr': '>c16', 'fortran_order': True, 'shape': (5, 3)}            \n"
    "F\x00{'descr': '>c16', 'fortran_order': False, 'shape': (3, 3)}           \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': 'O', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': 'O', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "v\x00{'descr': [('x', '<i4', (2,)), ('y', '<f8', (2, 2)), ('z', '|u1')],\n 'fortran_order': False,\n 'shape': (2,)}         \n"
    "\x16\x02{'descr': [('x', '<i4', (2,)),\n           ('Info',\n            [('value', '<c16'),\n             ('y2', '<f8'),\n             ('Info2',\n              [('name', '|S2'),\n               ('value', '<c16', (2,)),\n               ('y3', '<f8', (2,)),\n               ('z3', '<u4', (2,))]),\n             ('name', '|S2'),\n             ('z2', '|b1')]),\n           ('color', '|S2'),\n           ('info', [('Name', '<U8'), ('Value', '<c16')]),\n           ('y', '<f8', (2, 2)),\n           ('z', '|u1')],\n 'fortran_order': False,\n 'shape': (2,)}      \n"
    "v\x00{'descr': [('x', '>i4', (2,)), ('y', '>f8', (2, 2)), ('z', '|u1')],\n 'fortran_order': False,\n 'shape': (2,)}         \n"
    "\x16\x02{'descr': [('x', '>i4', (2,)),\n           ('Info',\n            [('value', '>c16'),\n             ('y2', '>f8'),\n             ('Info2',\n              [('name', '|S2'),\n               ('value', '>c16', (2,)),\n               ('y3', '>f8', (2,)),\n               ('z3', '>u4', (2,))]),\n             ('name', '|S2'),\n             ('z2', '|b1')]),\n           ('color', '|S2'),\n           ('info', [('Name', '>U8'), ('Value', '>c16')]),\n           ('y', '>f8', (2, 2)),\n           ('z', '|u1')],\n 'fortran_order': False,\n 'shape': (2,)}      \n"
é    N)ÚBytesIO)Úassert_Úassert_array_equalÚassert_raisesÚassert_raises_regexÚassert_warnsÚIS_PYPY)Úrequires_memory)Úformatz<>iÜ  ©Údtypeé
   )é   é2   éÿÿÿÿé   )©ÚxÚi4©r   ©ÚyÚf8©r   r   ©ÚzÚu1é   g      @g      @é   é   g      @g      @é	   r   ZInfo)ÚvalueÚc16)Úy2r   ZInfo2)©ÚnameÚS2)r!   r"   r   )Zy3r   r   )Zz3Zu4r   r$   )Zz2Úb1)Úcolorr&   Úinfo)ÚNameZU8)ÚValuer"   r   r   ù              @Únny              @é   ÚNNTÚcc)r/   r,   ù              @Zooy              @ÚOOFÚdd)r2   r1   ú<ú>)Úc©z<f8©é   r   c                       s   e Zd Zd‡ fdd„	Z‡  ZS )ÚBytesIOSRandomSizeNc                    s    dd l }| d|¡}tƒ  |¡S )Nr   r.   )ÚrandomÚrandintÚsuperÚread)ÚselfÚsizer;   ©Ú	__class__© úaC:\Users\psant\Downloads\PAF backend\school\venv\Lib\site-packages\numpy/lib/tests/test_format.pyr>   ‘  s   zBytesIOSRandomSize.read©N)Ú__name__Ú
__module__Ú__qualname__r>   Ú__classcell__rC   rC   rA   rD   r:   �  s    r:   c                 C   s0   t ƒ }t || ¡ t | ¡ ƒ}tj|dd�}|S )NT©Úallow_pickle©r   r
   Úwrite_arrayÚgetvalueÚ
read_array©ÚarrÚfÚf2Úarr2rC   rC   rD   Ú	roundtrip—  s
   rU   c                 C   s,   t ƒ }t || ¡ t| ¡ ƒ}t |¡}|S rE   )r   r
   rM   r:   rN   rO   rP   rC   rC   rD   Úroundtrip_randsizeŸ  s
   
rV   c                 C   s4   t ƒ }t || ¡ t | ¡ dd… ƒ}t |¡}|S )Nr   r   rL   rP   rC   rC   rD   Úroundtrip_truncated§  s
   
rW   c                 C   s   t | |kƒ d S rE   )r   )Zo1Zo2rC   rC   rD   Úassert_equal_°  s   rX   c                  C   s$   t t D ]} t| ƒ}t| |ƒ qd S rE   )Úbasic_arraysÚrecord_arraysrU   r   ©rQ   rT   rC   rC   rD   Útest_roundtrip´  s   þr\   c                  C   s.   t t D ]} | jtkrt| ƒ}t| |ƒ qd S rE   )rY   rZ   r   ÚobjectrV   r   r[   rC   rC   rD   Útest_roundtrip_randsizeº  s   

€ýr^   c                  C   s$   t D ]} | jtkrttt| ƒ qd S rE   )rY   r   r]   r   Ú
ValueErrorrW   ©rQ   rC   rC   rD   Útest_roundtrip_truncatedÁ  s
   
€þra   c                  C   s4   t jdt  ttjd f¡d�} t| ƒ}t| |ƒ d S )Nr.   r   )ÚnpÚonesr   Ústrr
   ÚBUFFER_SIZErU   r   )Zlong_str_arrZlong_str_arr2rC   rC   rD   Útest_long_strÇ  s   rf   c           
   	   C   sD  t tt ƒD ]™\}}|jjrqtj | d|› d�¡}tj | d|› d�¡}t|dƒ�}t	 
||¡ W d   ƒ n1 s;w   Y  |jjoH|jj }t	j|d|j|j|d�}||d< | ¡  t|dƒ�}| ¡ }W d   ƒ n1 sqw   Y  t|dƒ�}| ¡ }	W d   ƒ n1 sŠw   Y  t||	ƒ t	j|d	d
�}| ¡  qd S )NÚnormalz.npyZmemmapÚwbúw+)Úmoder   ÚshapeÚfortran_order.ÚrbÚr)rj   )Ú	enumeraterY   rZ   r   Z	hasobjectÚosÚpathÚjoinÚopenr
   rM   ÚflagsÚf_contiguousÚc_contiguousÚopen_memmaprk   Úflushr>   rX   )
ÚtmpdirÚirQ   ZnfnZmfnÚfprl   ÚmaZnormal_bytesZmemmap_bytesrC   rC   rD   Útest_memmap_roundtripÎ  s2   ÿÿÿ
ÿ
ÿ

ær}   c                 C   sj   t j dd¡}tj | d¡}t j||d� t  |¡�}|d }W d   ƒ n1 s)w   Y  t||ƒ d S )NéÈ   zcompressed.npzr`   rQ   )	rb   r;   Zrandrp   rq   rr   Zsavez_compressedÚloadr   )ry   rQ   Únpz_fileÚnpzÚarr1rC   rC   rD   Útest_compressed_roundtripí  s   
ÿrƒ   z
i1, i4, i1)ZalignÚaÚbr   é   )ÚnamesÚformatsÚoffsetsr6   Úd)r‡   rˆ   )r„   Ú r…   ZaaZbb)r‡   rˆ   r‰   Útitles)r‡   rˆ   ÚitemsizeÚdtc                 C   s‚   t  d|¡}tdƒD ]}|d ||< q
tj | d¡}t j||d� t  |¡�}|d }W d   ƒ n1 s5w   Y  t||ƒ d S )Nr   r9   zaligned.npzr`   rQ   )	rb   ÚzerosÚrangerp   rq   rr   Úsavezr   r   )ry   rŽ   rQ   rz   r€   r�   r‚   rC   rC   rD   Útest_load_padded_dtype  s   
ÿr’   c                  C   s:   d} t j t j t¡d| ¡}t |¡}t|t d¡ƒ d S )Nzwin64python2.npyÚdatar   )	rp   rq   rr   ÚdirnameÚ__file__rb   r   r   rc   )Úfnamerq   r“   rC   rC   rD   Ú%test_python2_python3_interoperability  s   
r—   c               	   C   s€  t j t j t¡d¡} tjd tddgtd�}dD ]¥}t j | |¡}dD ]T}tj	|d|d�}| 
d	¡r;|d
 }| ¡  n|}|dkri| d¡ritt|d tƒƒ t|d d… |d d… ƒ t|d  |¡|d ƒ q#tt|d tƒƒ t||ƒ q#| d¡r½| 
d	¡r©tj	|dd�}tt|jd
ƒ | ¡  tj	|dddd�}tt|jd
ƒ | ¡  qtttj	|dd� tttj	|dddd� qd S )Nr“   u   å„ªè‰¯s   ä¸�è‰¯r   )úpy2-objarr.npyúpy2-objarr.npzzpy3-objarr.npyzpy3-objarr.npz)ÚbytesÚlatin1T©rK   Úencodingz.npzr   r›   Zpy2r   r   rJ   F)rK   Úfix_importsr�   )rp   rq   rr   r”   r•   rb   Úarrayr�   r]   r   ÚendswithÚcloseÚ
startswithr   Ú
isinstancerd   r   Úencoderš   r   ÚUnicodeErrorÚ__getitem__ÚImportError)Údata_dirÚexpectedr–   rq   r�   Zdata_fr“   rC   rC   rD   Útest_pickle_python2_python3  sN   
ÿþ




ÿ

ÿ
þ€ßrª   c                 C   s¶   t j t j t¡d¡}t j |d¡}tttj|ddd� t j |d¡}tj|ddd��}tt|j	dƒ W d   ƒ n1 s=w   Y  t j | d¡}tttj
|tjd gtd	�dd
� d S )Nr“   r˜   Fr›   rœ   r™   r   zpickle-disabled.npyr   rJ   )rp   rq   rr   r”   r•   r   r_   rb   r   r¦   ÚsaverŸ   r]   )ry   r¨   rq   rR   rC   rC   rD   Útest_pickle_disallowF  s   
ÿÿ
ÿr¬   )r   r   Úi1)r‡   rˆ   r‰   r�   )r   )r   r7   r   r8   c                 C   s8   t  | j¡}t|| ƒ t d| ¡}t|ƒ}t||ƒ d S )Nr   )r
   Zdescr_to_dtypeÚdescrrX   rb   r�   rU   r   )rŽ   Údt1r‚   rT   rC   rC   rD   Útest_descr_to_dtypeU  s
   2
r°   c                  C   sî   t ƒ } dd„ tdƒD ƒ}tjd|d�}tj| |dd� tjdd	��}t d
dt	¡ t | |¡ t
|d jt	u ƒ W d   ƒ n1 sBw   Y  |  d¡ |  ¡ }t
t|ƒtj dkƒ |  d¡ tj| dd�}t||ƒ tttj| |dƒ d S )Nc                 S   ó   g | ]
}d | d t f‘qS ©z%déd   ©Úfloat©Ú.0rz   rC   rC   rD   Ú
<listcomp>�  ó    z$test_version_2_0.<locals>.<listcomp>éô  éè  r   ©r   r   ©ÚversionT©ÚrecordÚalwaysr‹   r   é@ ©Úmax_header_size©r.   r   )r   r�   rb   rc   r
   rM   ÚwarningsÚcatch_warningsÚfilterwarningsÚUserWarningr   ÚcategoryÚseekÚreadlineÚlenÚARRAY_ALIGNrO   r   r   r_   )rR   rŽ   rŠ   ÚwÚheaderÚnrC   rC   rD   Útest_version_2_0�  s    ý


rÒ   c              	   C   s,  dd„ t dƒD ƒ}tjd|d�}tj | d¡}tj | d¡}tttj	|d|j
|jd	d
� tj	|d|j
|jdd
�}||d< | ¡  tj	|ddd�}t||ƒ tjdd��,}t ddt¡ tj	|d|j
|jd d
�}t|d jtu ƒ ||d< | ¡  W d   ƒ n1 s‚w   Y  tj	|ddd�}t||ƒ d S )Nc                 S   r±   r²   r´   r¶   rC   rC   rD   r¸   ¨  r¹   z+test_version_2_0_memmap.<locals>.<listcomp>rº   r»   r   zversion2_01.npyzversion2_02.npyri   rÅ   )rj   r   rk   r¾   r¼   .rn   rÂ   )rj   rÄ   Tr¿   rÁ   r‹   r   )r�   rb   rc   rp   rq   rr   r   r_   r
   rw   r   rk   rx   r   rÆ   rÇ   rÈ   rÉ   r   rÊ   )ry   rŽ   rŠ   Ztf1Ztf2r|   rÏ   rC   rC   rD   Útest_version_2_0_memmap¦  s2   ÿÿ
ÿ
úrÓ   Ú	mmap_modern   c                 C   s  t j | d¡}tjddd d d�}tjtdd�� t ||¡ W d   ƒ n1 s*w   Y  tj	t
d	d�� tj||d
� W d   ƒ n1 sHw   Y  tj	t
d	d�� tj||dd� W d   ƒ n1 sgw   Y  tj||dd�}t||ƒ tj||dd�}t||ƒ d S )Nzlarge_header.npyr.   úi,é'  rz   r   ú.*format 2.0©ÚmatchúHeader.*large)rÔ   é N  )rÔ   rÄ   T)rÔ   rK   é ¿ )rp   rq   rr   rb   rŸ   ÚpytestÚwarnsrÉ   r«   Úraisesr_   r   r   )ry   rÔ   rR   rQ   ÚresrC   rC   rD   Útest_huge_headerÄ  s   ÿÿÿ
rá   c                 C   s  t j | d¡}tjddd d d�}tjtdd�� tj||d	� W d   ƒ n1 s+w   Y  tj	t
d
d�� t |¡d  W d   ƒ n1 sIw   Y  tj	t
d
d�� tj|dd�d  W d   ƒ n1 siw   Y  tj|dd�d }t||ƒ tj|dd�d }t||ƒ d S )Nzlarge_header.npzr.   rÕ   rÖ   rz   r   r×   rØ   r`   rÚ   rQ   rÛ   rÃ   TrJ   rÜ   )rp   rq   rr   rb   rŸ   rÝ   rÞ   rÉ   r‘   rß   r_   r   r   )ry   rR   rQ   rà   rC   rC   rD   Útest_huge_header_npzØ  s   ÿÿÿ
râ   c               	   C   s´   t ƒ } t d¡}tj| |dd� t | |¡ tj| |d d� t | |¡ tj| |dd� t | |¡ g d¢}|D ]}ttdƒ� tj| ||d� W d   ƒ q81 sRw   Y  q8d S )Nr.   rÅ   r½   r¼   ))r.   r.   )r   r   )r   r.   r   )éÿ   rã   z we only support format version.*)r   rb   Úaranger
   rM   r   r_   )rR   rQ   Zbad_versionsr¾   rC   rC   rD   Útest_write_versionì  s    
ÿþÿrå   )s   “NUMPYs   “NUMPY  s   “NUMPY s   “NUMPY s   “NUMPYs   “NUMPYÿÿ)s   ’NUMPY s    NUMPY s   “numpy s   “MATLB s   “NUMPYs   “NUMPYó    c                  C   s¢   t ƒ } t ƒ }tjdtd�}tj| |dd� tj||dd� |  d¡ | d¡ t | ¡}t |¡}t|dkƒ t|dkƒ t|  	¡ tj
kƒ t| 	¡ tj
kƒ d S )N©r   r†   r   rÅ   r½   r¼   r   )r   rb   rc   rµ   r
   rM   rË   Z
read_magicr   ÚtellÚ	MAGIC_LEN)Ús1Ús2rQ   Zversion1Zversion2rC   rC   rD   Útest_read_magic  s   



rì   c                  C   s$   t D ]} t| ƒ}tttj|ƒ qd S rE   )Úmalformed_magicr   r   r_   r
   rO   ©ÚmagicrR   rC   rC   rD   Útest_read_magic_bad_magic.  s   þrð   c                  C   s(   t t D ]} t| ƒ}tttj|ƒ qd S rE   )Úbad_version_magicrí   r   r   r_   r
   rO   rî   rC   rC   rD   Útest_read_version_1_0_bad_magic4  s   þrò   c                   C   sD   t ttjddƒ t ttjddƒ t ttjddƒ t ttjddƒ d S )Nr   r.   é   )r   r_   r
   rï   rC   rC   rC   rD   Útest_bad_magic_args:  s   rô   c                  C   sF   t ƒ } dddœ}t | |¡ t ƒ } dddd dœ}tttj| |ƒ d S )Nr.   r   )r„   r…   A   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxró   )r„   r…   r6   )r   r
   Úwrite_array_header_1_0r   r_   ©ÚsrŠ   rC   rC   rD   Útest_large_headerA  s   
rø   c                  C   ór   t ƒ } tjdtd�}tj| |dd� |  tj¡ t | ¡\}}}t	|  
¡ tj dkƒ t	|||fddtfkƒ d S )Nrç   r   rÅ   r½   r   F)r   rb   rc   rµ   r
   rM   rË   ré   Úread_array_header_1_0r   rè   rÎ   ©r÷   rQ   rk   Zfortranr   rC   rC   rD   Útest_read_array_header_1_0K  ó   rü   c                  C   rù   )Nrç   r   r¼   r½   r   F)r   rb   rc   rµ   r
   rM   rË   ré   Zread_array_header_2_0r   rè   rÎ   rû   rC   rC   rD   Útest_read_array_header_2_0X  rý   rþ   c                  C   sœ   t ƒ } tttj| ƒ t dƒ} tttj| ƒ t dƒ} tttj| ƒ dddœ}t ƒ } t | |¡ tttj| ƒ dddddœ}t ƒ } t | |¡ tttj| ƒ d S )	Nó   1s    ©r.   r   r   )rk   r®   Fr   )rk   rl   r®   Zextrakey)r   r   r_   r
   rú   rõ   rö   rC   rC   rD   Útest_bad_headere  s(   ÿýr  c                 C   sþ   t jdks
t jdkrt d¡ tj | d¡}zdd l}| ddd|g¡ W n t	y3   t d	¡ Y nw t
|d
ƒ�}| d¡ t d¡}t ||¡ W d   ƒ n1 sTw   Y  t
|dƒ�}| d¡ t |¡}W d   ƒ n1 ssw   Y  t||ƒ d S )NÚwin32Úcygwinz)Unknown if Windows has sparse filesystemsZsparse_filer   Útruncatez-sZ
5368709120zCould not create 5GB large filerh   l        r9   rm   )ÚsysÚplatformrÝ   Úskiprp   rq   rr   Ú
subprocessÚ
check_callÚ	Exceptionrs   rË   rb   rä   r«   r   r   )ry   Ztf_nameÚsprR   rŠ   rn   rC   rC   rD   Útest_large_file_support€  s&   
ÿ

ý
þr  ztest requires 64-bit system)Úreasonl        )Z
free_bytesc                 C   sÈ   d}z
t j|t jd�}W n ty   t d¡ Y nw tj | d¡}t	|dƒ�}t j
||d� W d   ƒ n1 s9w   Y  ~t	|dƒ�}t  |¡d }W d   ƒ n1 sVw   Y  |j|ksbJ ‚d S )	N)i   @r   r   zCould not create large fileZlarge_archiverh   r`   rm   rQ   )rb   ÚemptyÚuint8ÚMemoryErrorrÝ   r  rp   rq   rr   rs   r‘   r   rk   )ry   rk   r„   r–   rR   Znew_arC   rC   rD   Útest_large_archive™  s   ÿÿÿr  c                 C   sH   t j | d¡}t |¡ t |¡�	}W d   ƒ d S 1 sw   Y  d S )Nznothing.npz)rp   rq   rr   rb   r‘   r   )ry   r–   ZnpsrC   rC   rD   Útest_empty_npz³  s
   
"ÿr  c              	   C   s  t jg d¢dtfdtfgd�}tj | d¡}t|dƒ�}tj||dd� W d   ƒ n1 s.w   Y  t|d	ƒ�}t 	|¡}W d   ƒ n1 sHw   Y  t
||ƒ t|dƒ�-}ttƒ� tj||d d� W d   ƒ n1 sow   Y  W d   ƒ d S W d   ƒ d S 1 s‡w   Y  d S )
N)©r.   r   r   r  r   Úintu   æ•´å½¢r   zunicode.npyrh   )r   r   r½   rm   )rb   rŸ   r  rp   rq   rr   rs   r
   rM   rO   r   r   rÉ   )ry   rQ   r–   rR   rT   rC   rC   rD   Útest_unicode_field_names»  s(   
þû	ÿÿ

ÿÿ"ÿr  zdt, failZS3ZsomeÚstuff)ÚmetadataZsubarrayr   )é   r   r   zPyPy bug in error formattingc                 C   sÎ   t jd| d�}tƒ }ttƒ� t  ||¡ W d   ƒ n1 sw   Y  | d¡ |rGttƒ� t  	|¡ W d   ƒ d S 1 s@w   Y  d S t  	|¡}ddl
m} t||ƒ ||jƒs^J ‚||jƒreJ ‚d S )Nr   r   r   )Ú_has_metadata)rb   rc   r   r   rÉ   r«   rË   r   r_   r   Znumpy.lib.formatr  r   r   )rŽ   ZfailrQ   ÚbufrT   r  rC   rC   rD   Útest_metadata_dtypeÓ  s   
ÿ

"ÿ

r  )hÚ__doc__r  rp   rÆ   rÝ   Úior   Znumpyrb   Znumpy.testingr   r   r   r   r   r   Znumpy.testing._private.utilsr	   Z	numpy.libr
   r  Zint8Zuint16Zint16Zuint32Zint32Zuint64Zint64Zfloat32Zfloat64Z	complex64Z
complex128r]   ZscalarsrY   ZscalarZendianr   Znewbyteorderrä   ZastypeÚbasicÚextendrŸ   ZreshapeÚTZPdescrZPbufferTZNdescrZNbufferTr�   rZ   r:   rU   rV   rW   rX   r\   r^   ra   rf   ÚmarkZslowr}   rƒ   r¯   Zdt2Zdt3Zdt4Zdt5Zdt6Zparametrizer’   r—   rª   r¬   r  r°   rÒ   rÓ   rá   râ   rå   rñ   rí   rì   rð   rò   rô   rø   rü   rþ   r  r  ZskipifZintpr�   r  r  r  rµ   Úimplementationr¾   r  rC   rC   rC   rD   Ú<module>   s„     ó
ôýý
÷
þï&ÿ&ÿúû
	

ÿÿ
/þýüýûú


ýû
øýþø
õòÿã
1


ÿÿÿ
ÿþú
ÿ