HOME


sh-3ll 1.0
DIR:/usr/local/lib64/python3.6/site-packages/numpy/lib/tests/__pycache__/
Upload File :
Current File : //usr/local/lib64/python3.6/site-packages/numpy/lib/tests/__pycache__/test_format.cpython-36.pyc
3

���h���@sddZddlZddlZddlZddlZddlZddlZddlmZddl	Z
ddlmZm
Z
mZmZmZddlmZdadd�Zdd	�Ze
je
je
je
je
je
je
je
je
je
je
j e
j!e"g
Z#gZ$x�e#D]�Z%x~d
D]vZ&e
j'e%�j(e&�Z'e
j)d�j*e'�Z+e$j,e
j-ge'd�e
j-d
e'd�e+e+j.d��e+j.d��j/e+j.d��ddd��ddd�fg�q�Wq�Wd�d�d�gZ0ddgddgddggdfddgddgddggdfgZ1d�d d�d�d$d�d�d�d�gfd�d�gfd�d-d�d�gfd�d�gZ2ddgd1dd2d1d3gddgddgfd4d5fd6d�ddgddggdfddgd7dd8d7d9gddgddgfd:d;fd<d�ddgddggdfgZ3e
j-e1e
j'e0�j(d=�d�e
j-e3e
j'e2�j(d=�d�e
j-e1e
j'e0�j(d>�d�e
j-e3e
j'e2�j(d>�d�e
j4dd�gd�gZ5GdBdC�dCe�Z6dDdE�Z7dFdG�Z8dHdI�Z9dJdK�Z:dLdM�Z;dNdO�Z<dPdQ�Z=dRdS�Z>ej?j@dTdU��ZAdVdW�ZBe
j'dXd5dY�ZCe
j'dZd[gddgdd\gd]��ZDe
j'd?d^gdeDgd_��ZEe
j'dZd`d[gdgdd_��ZFe
j'dZd[gddgdd\gdadbgdc��ZGe
j'ggddd��ZHej?jIdeeCeDeEeFeGeHg�dfdg��ZJdhdi�ZKdjdk�ZLdldm�ZMej?jIdee
j'e
j'dZe
jfd[e
jfd?e
jfgd5dY�dɃe
j'de
j'dZd[gdndngddgddo�dʃd�fg�e
j'd�g�e
j'de
j'e
j'e
j'dZd[gdndngddgddo��d�f�d�f�fg�e
j'dZe
j'e
j'e
j'e
j'dZeNfd[e
j'dZd[gdndngddgddo��fg�d�f�d�f�d�f�fg�g�dpdq��ZOdrds�ZPej?j@dtdu��ZQdvdw�ZRdxdydzd{d|d}gZSd~dd�d�d�d�d�gZTd�d��ZUd�d��ZVd�d��ZWd�d��ZXd�d��ZYd�d��ZZd�d��Z[d�d��Z\d�d��Z]ej?j^e
j'e
j_�j`dkd�d��ej?j@d�d����Zad�d��Zbd�d��Zcej?jId�e
j'dZd[gede
j'd�d�d�id��gd_��d5fe
j'eNd�d�id��d;fe
j'd�eNd�ffgd�d�id��d;fe
j'dZd[gede
j'd?ge
j'eNid��gd_��gd_��d;fg�d�d���ZedS)�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)�formatcCstj�adS)N)�tempfile�mkdtemp�tempdir�rr�</tmp/pip-build-5_djhm0z/numpy/numpy/lib/tests/test_format.py�setup_module*srcCs&tdk	r"tjjt�r"tjt�dadS)N)r�os�path�isdir�shutil�rmtreerrrr
�teardown_module/s
rz<>i�)�dtype�
��2���x�i4�y�f8�z�u1�g@g@��g@g@�	ZInfo�value�c16�y2ZInfo2�name�S2�y3�z3�u4�z2�b1�color�info�Name�U8�Value�@�nny@�NNT�cc�@Zooy@�OOF�dd�<�>�c�<f8�cseZdZd�fdd�	Z�ZS)�BytesIOSRandomSizeNcs$ddl}|jd|�}tt|�j|�S)Nrr)�random�randint�superr@�read)�self�sizerA)�	__class__rr
rD�szBytesIOSRandomSize.read)N)�__name__�
__module__�__qualname__rD�
__classcell__rr)rGr
r@�sr@cCs0t�}tj||�t|j��}tj|dd�}|S)NT)�allow_pickle)rr�write_array�getvalue�
read_array)�arr�f�f2�arr2rrr
�	roundtrip�s
rTcCs,t�}tj||�t|j��}tj|�}|S)N)rrrMr@rNrO)rPrQrRrSrrr
�roundtrip_randsize�s

rUcCs4t�}tj||�t|j�dd��}tj|�}|S)Nrr���)rrrMrNrO)rPrQrRrSrrr
�roundtrip_truncated�s

rWcCst||k�dS)N)r)Zo1Zo2rrr
�
assert_equal_�srXcCs(x"ttD]}t|�}t||�q
WdS)N)�basic_arrays�
record_arraysrTr)rPrSrrr
�test_roundtrip�sr[cCs2x,ttD] }|jtkr
t|�}t||�q
WdS)N)rYrZr�objectrUr)rPrSrrr
�test_roundtrip_randsize�s
r]cCs(x"tD]}|jtkrttt|�qWdS)N)rYrr\r�
ValueErrorrW)rPrrr
�test_roundtrip_truncated�s

r_cCs4tjdtjttjdf�d�}t|�}t||�dS)Nr)r)�np�onesr�strr�BUFFER_SIZErTr)Zlong_str_arrZ
long_str_arr2rrr
�
test_long_str�srdcCs�tjdkptjdks�x�ttD]�}|jjr,qtjjt	d�}tjjt	d�}t
|d�}ztj||�Wd|j
�X|jjo~|jj}tj|d|j|j|d�}||d<~t
|d	�}|j�}|j
�t
|d	�}|j�}|j
�t||�tj|d
d�}~qWdS)N�win32�cygwinz
normal.npyz
memmap.npy�wbzw+)�moder�shape�
fortran_order.�rb�r)rh)�sys�platformrYrZrZ	hasobjectrr�joinr�openrrM�close�flags�f_contiguous�c_contiguous�open_memmaprirDrX)rPZnfnZmfn�fprj�maZnormal_bytesZmemmap_bytesrrr
�test_memmap_roundtrip�s0




rxcCsFtjjdd�}tjjtd�}tj||d�tj|�d}t	||�dS)N��zcompressed.npz)rPrP)
r`rAZrandrrrorZsavez_compressed�loadr)rP�npz_file�arr1rrr
�test_compressed_roundtrips
r}z
i1, i4, i1)Zalign�a�b�)�names�formats�offsets�d)r�r��ZaaZbb)r�r�r��titles)r�r��itemsize�dtcCsbtjd|�}xtd�D]}|d||<qWtjjtd�}tj||d�tj|�d}t	||�dS)Nr!r?zaligned.npz)rPrP)
r`�zeros�rangerrror�savezrzr)r�rP�ir{r|rrr
�test_load_padded_dtypesr�cCs:d}tjjtjjt�d|�}tj|�}t|tjd��dS)Nzwin64python2.npy�datar)	rrro�dirname�__file__r`rzrra)�fnamerr�rrr
�%test_python2_python3_interoperability(s
r�c	Cs�tjjtjjt�d�}tjdtddgtd�}�xZdD�]P}tjj||�}x�dD]�}tj	|d|d�}|j
d
�r~|d}|j�n|}|d
kr�|jd�r�t
t|dt��t|dd�|dd��t|dj|�|d�qNt
t|dt��t||�qNW|jd�r4|j
d
��r^tj	|dd�}tt|jd�|j�tj	|ddd
d�}tt|jd�|j�q4tttj	|dd�tttj	|ddd
d�q4WdS)Nr�u優良s不良)r�py2-objarr.npy�py2-objarr.npz�py3-objarr.npy�py3-objarr.npz�bytes�latin1T)rL�encodingz.npzrZpy2r!r)rLF)rL�fix_importsr�)r�r�r�r�)r�r�rVrVrVrV)rrror�r�r`�arrayr�r\rz�endswithrq�
startswithr�
isinstancerbr�encoder�r�UnicodeError�__getitem__�ImportError)�data_dir�expectedr�rr�Zdata_fr�rrr
�test_pickle_python2_python3.sB









r�cCs�tjjtjjt�d�}tjj|d�}tttj|ddd�tjj|d�}tj|ddd�}tt|j	d�tjjt
d�}tttj|tjdgt
d	�dd
�dS)Nr�zpy2-objarr.npyFr�)rLr�zpy2-objarr.npzrzpickle-disabled.npy)r)rL)rrror�r�rr^r`rzr�r�saver�r\)r�rrQrrr
�test_pickle_disallow]s

r��i1)r�r�r�r�cCs8tj|j�}t||�tjd|�}t|�}t||�dS)Nr!)rZdescr_to_dtype�descrrXr`r�rTr)r��dt1r|rSrrr
�test_descr_to_dtypels
2
r�cCs�t�}dd�td�D�}tjd|d�}tj||dd�tjd	d
��2}tjddt	�tj||�t
|djt	k�WdQRX|jd�|j
�}t
t|�tjdk�|jd�tj|�}t||�tttj||d�dS)NcSsg|]}d|dtf�qS)z%d�d)�float)�.0r�rrr
�
<listcomp>�sz$test_version_2_0.<locals>.<listcomp>i�i�)rrr)�versionT)�record�alwaysr�r)rr)rr)rr�r`rarrM�warnings�catch_warnings�filterwarnings�UserWarningr�category�seek�readline�len�ARRAY_ALIGNrOrrr^)rQr�r��w�header�nrrr
�test_version_2_0�s



r�cCs�dd�td�D�}tjd|d�}tjddtd�}tttj	|d	|j
|jdd�tj	|d	|j
|jdd�}||d<~tj
dd��H}tjddt�tj	|d	|j
|jdd�}t|djtk�||d<~WdQRXtj	|dd�}t||�dS)NcSsg|]}d|dtf�qS)z%dr�)r�)r�r�rrr
r��sz+test_version_2_0_memmap.<locals>.<listcomp>i�i�)rr�Zmmap)�dirzw+rr)rhrrir�r.T)r�r�rl)rh)rr)rr)r�r`rar	�mktemprrr^rrurrir�r�r�r�rr�r)r�r��tfrwr�rrr
�test_version_2_0_memmap�s$r�c
Cs�t�}tjd�}tj||dd�tj||�tj||dd�tj||�tj||dd�tj||�d	d
ddd
g}x2|D]*}ttd��tj|||d�WdQRXqxWdS)Nrr)r�r�z we only support format version.*)rr)rr)rr)rr)rr)rr)r�r�)rr`�arangerrMrr^)rQrPZbad_versionsr�rrr
�test_write_version�s"

r�s�NUMPYs�NUMPYs�NUMPYs�NUMPYs�NUMPYs�NUMPY��s�NUMPYsNUMPYs�numpys�MATLBs�NUMPYs�NUMPY�cCs�t�}t�}tjdtd�}tj||d	d�tj||d
d�|jd�|jd�tj|�}tj|�}t|dk�t|dk�t|j	�tj
k�t|j	�tj
k�dS)
Nr!r�)rrr)r�r)r!r�)rr)rr)rr)rr)rr`rar�rrMr�Z
read_magicr�tell�	MAGIC_LEN)�s1�s2rPZversion1Zversion2rrr
�test_read_magics



r�cCs(x"tD]}t|�}tttj|�qWdS)N)�malformed_magicrrr^rrO)�magicrQrrr
�test_read_magic_bad_magics
r�cCs,x&ttD]}t|�}tttj|�q
WdS)N)�bad_version_magicr�rrr^rrO)r�rQrrr
�test_read_version_1_0_bad_magic!sr�cCsDtttjdd�tttjdd�tttjdd�tttjdd�dS)Nr�rVrV)rr^rr�rrrr
�test_bad_magic_args'sr�cCsJt�}ddd�}tj||�t�}dddddd�}tttj||�dS)Nrr)r~rrr�)r~rr=)rr�write_array_header_1_0rr^)�sr�rrr
�test_large_header.s
r�cCsrt�}tjdtd�}tj||d	d�|jtj�tj|�\}}}t	|j
�tjdk�t	|||fd
dtfk�dS)Nr!r�)rrr)r�F)r!r�)rr)r!r�)rr`rar�rrMr�r��read_array_header_1_0rr�r�)r�rPri�fortranrrrr
�test_read_array_header_1_08sr�cCsrt�}tjdtd�}tj||d	d�|jtj�tj|�\}}}t	|j
�tjdk�t	|||fd
dtfk�dS)Nr!r�)rrr)r�F)r!r�)rr)r!r�)rr`rar�rrMr�r�Zread_array_header_2_0rr�r�)r�rPrir�rrrr
�test_read_array_header_2_0Esr�cCs�t�}tttj|�td�}tttj|�td�}tttj|�d	dd�}t�}tj||�tttj|�d
dddd�}t�}tj||�tttj|�dS)N�1srrr)rir�F)rirjr�Zextrakey)rr)rrrV)rrr^rr�r�)r�r�rrr
�test_bad_headerRs$r�cCs�tjdkstjdkrtjd�tjjtd�}yddl}|j	ddd|g�Wnt
k
rhtjd	�YnXt|d
��&}|jd�t
jd�}t
j||�WdQRXt|d
��}|jd�t
j|�}WdQRXt||�dS)Nrerfz)Unknown if Windows has sparse filesystemsZsparse_filer�truncatez-sZ
5368709120zCould not create 5GB large filerglr?rk)rmrn�pytest�skiprrror�
subprocess�
check_call�	Exceptionrpr�r`r�r�rzr)Ztf_name�sprQr�rlrrr
�test_large_file_supportms 



r�ztest requires 64-bit system)�reasoncCs�ytjdtjd�}Wntk
r2tjd�YnXtjjt	d�}t
|d��}tj||d�WdQRXt
|d��}tj|�d	}WdQRXt
|j|jk�dS)Nrr)rzCould not create large fileZ
large_archiverg)rPrkrP�@)r�r)r`�empty�uint8�MemoryErrorr�r�rrrorrpr�rzrri)r~r�rQZnew_arrr
�test_large_archive�sr�cCs&tjjtd�}tj|�tj|�dS)Nznothing.npz)rrrorr`r�rz)r�rrr
�test_empty_npz�s
r�c!Cs�tjdd
ddgdtfdtfgd�}tjjtd�}t|d��}tj	||dd
�WdQRXt|d��}tj
|�}WdQRXt||�t|d��*}tt
��tj	||dd
�WdQRXWdQRXdS)Nrr!r�intu整形)rzunicode.npyrgr)r�rk)rr!)rr)rr!)rr)r!r)r`r�r�rrrorrprrMrOrrr�)rPr�rQrSrrr
�test_unicode_field_names�s 

r�zdt, failZS3Zsome�stuff)�metadataZsubarraycCs�tjd|d�}t�}tt��tj||�WdQRX|jd�|rbtt��tj	|�WdQRXn>tj	|�}ddl
m}t||�||j
�s�t�||j
�s�t�dS)Nr)rr)�
_has_metadata)r`rarrr�r�r�rr^rzZnumpy.lib.formatr�rr�AssertionError)r�ZfailrP�bufrSr�rrr
�test_metadata_dtype�s




r�)rr)rr)rrrV�r)rrr��rr)rrr�)rr �r)rrr�)r%r&)r'r)r(r)�r)r%r&r��r)r*rr��r)r+r,r�)r(r))r-r.)r/r))r1r2)r3r&�rr)rrr�)rr )r6r4)r9r8�r?�r>r��r)r=r�r�)r!)r!)r#�r?�r>r��r)rr�r)r!)r#)r!)r#)r?)r)f�__doc__rmrrr	r�r��iorZnumpyr`Z
numpy.testingrrrrrZ	numpy.librrrrr�Zint8Zuint16Zint16Zuint32Zint32Zuint64Zint64Zfloat32Zfloat64Z	complex64Z
complex128r\ZscalarsrYZscalarZendianrZnewbyteorderr�Zastype�basic�extendr�Zreshape�TZPdescrZPbufferTZNdescrZNbufferTr�rZr@rTrUrWrXr[r]r_rd�markZslowrxr}r�Zdt2Zdt3Zdt4Zdt5Zdt6Zparametrizer�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�ZskipifZintpr�r�r�r�r�r�rrrr
�<module>sL	


*&&	&	"/






&