o
    ʩZhD                     @   s  d Z ddlZddlZddlZddlZddlmZ ddlZddl	m
Z
mZmZmZmZmZmZ ddlmZ ddlmZ ejejeje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]qYg dZ/ddgddgddggdfddgddgddggdfgZ0dddddg dfddgfdd d!d"gfd#d$gZ1ddgd%dd&d%d'gddgd(dgfd)d*fd+d,ddgddggdfddgd-dd.d-d/gddgdd(gfd0d1fd2d3ddgddggdfgZ2ej,e0e&e/'d4d	ej,e2e&e1'd4d	ej,e0e&e/'d5d	ej,e2e&e1'd5d	ej3d(d6gd	gZ4G d7d8 d8eZ5d9d: Z6d;d< Z7d=d> Z8d?d@ Z9dAdB Z:dCdD Z;dEdF Z<dGdH Z=ej>j?edIdJej>j@dKdL ZAdMdN ZBej&dOd*dPZCe&dQdRgdSdSgd(dTgdUZDe&dVdWgdSeDgdXZEe&g dYdSgd dXZFe&dQdRgdSdSgd(dTgdZd[gd\ZGe&g g dd]ZHej>Id^eCeDeEeFeGeHgd_d` ZJej>j?ejKdakdbdJej>jLedcdJddde ZMdfdg ZNdhdi ZOej>Id^e&ej&dQejfdRejfdVejfgd*dPdje&dke&dQdRgdldlgddgddmdjdnfge&doge&dke&e&e&dQdRgdldlgddgddmdjfdnffge&dQe&e&e&e&dQePfdRe&dQdRgdldlgddgddmfgdjfdnfdpffggdqdr ZQdsdt ZRej>j?edIdJdudv ZSej>Idwdxdgdydz ZTd{d| ZUd}d~ ZVg dZWg dZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd Zaej>j?eddJej>j?e&ejbjcdk ddJej>j@edddd Zddd Zedd Zfdd Zgej>Ide&dQdRgehej&dddidgdXd*fej&ePddidd1fej&dePdffgddidd1fe&dQdRgehe&dVgej&ePi dgdXgdXd1fgej>j?eo^ejijjdkddJdd ZkdS )aD   Test the .npy file format.

Set up:

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

Test the magic string writing.

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

Test the magic string reading.

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

Test the header writing.

    >>> for arr in basic_arrays + record_arrays:
    ...     f = BytesIO()
    ...     format.write_array_header_1_0(f, arr)   # XXX: arr is not a dict, items gets called on it
    ...     print(repr(f.getvalue()))
    ...
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '|u1', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '|u1', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '|i1', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '|i1', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<u2', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<u2', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<u2', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<u2', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<u2', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<u2', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>u2', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>u2', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>u2', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>u2', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>u2', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>u2', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<i2', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<i2', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<i2', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<i2', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<i2', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<i2', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>i2', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>i2', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>i2', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>i2', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>i2', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>i2', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<u4', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<u4', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<u4', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<u4', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<u4', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<u4', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>u4', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>u4', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>u4', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>u4', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>u4', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>u4', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<i4', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<i4', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<i4', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<i4', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<i4', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<i4', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>i4', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>i4', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>i4', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>i4', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>i4', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>i4', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<u8', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<u8', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<u8', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<u8', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<u8', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<u8', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>u8', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>u8', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>u8', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>u8', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>u8', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>u8', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<i8', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<i8', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<i8', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<i8', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<i8', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<i8', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>i8', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>i8', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>i8', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>i8', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>i8', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>i8', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<f4', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<f4', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<f4', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<f4', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<f4', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<f4', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>f4', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>f4', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>f4', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>f4', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>f4', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>f4', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<f8', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<f8', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<f8', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<f8', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<f8', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<f8', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>f8', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>f8', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>f8', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>f8', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>f8', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>f8', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<c8', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<c8', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<c8', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<c8', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<c8', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<c8', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>c8', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>c8', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>c8', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>c8', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>c8', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>c8', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<c16', 'fortran_order': False, 'shape': (0,)}             \n"
    "F\x00{'descr': '<c16', 'fortran_order': False, 'shape': ()}               \n"
    "F\x00{'descr': '<c16', 'fortran_order': False, 'shape': (15,)}            \n"
    "F\x00{'descr': '<c16', 'fortran_order': False, 'shape': (3, 5)}           \n"
    "F\x00{'descr': '<c16', 'fortran_order': True, 'shape': (5, 3)}            \n"
    "F\x00{'descr': '<c16', 'fortran_order': False, 'shape': (3, 3)}           \n"
    "F\x00{'descr': '>c16', 'fortran_order': False, 'shape': (0,)}             \n"
    "F\x00{'descr': '>c16', 'fortran_order': False, 'shape': ()}               \n"
    "F\x00{'descr': '>c16', 'fortran_order': False, 'shape': (15,)}            \n"
    "F\x00{'descr': '>c16', 'fortran_order': False, 'shape': (3, 5)}           \n"
    "F\x00{'descr': '>c16', 'fortran_order': True, 'shape': (5, 3)}            \n"
    "F\x00{'descr': '>c16', 'fortran_order': False, 'shape': (3, 3)}           \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': 'O', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': 'O', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "v\x00{'descr': [('x', '<i4', (2,)), ('y', '<f8', (2, 2)), ('z', '|u1')],\n 'fortran_order': False,\n 'shape': (2,)}         \n"
    "\x16\x02{'descr': [('x', '<i4', (2,)),\n           ('Info',\n            [('value', '<c16'),\n             ('y2', '<f8'),\n             ('Info2',\n              [('name', '|S2'),\n               ('value', '<c16', (2,)),\n               ('y3', '<f8', (2,)),\n               ('z3', '<u4', (2,))]),\n             ('name', '|S2'),\n             ('z2', '|b1')]),\n           ('color', '|S2'),\n           ('info', [('Name', '<U8'), ('Value', '<c16')]),\n           ('y', '<f8', (2, 2)),\n           ('z', '|u1')],\n 'fortran_order': False,\n 'shape': (2,)}      \n"
    "v\x00{'descr': [('x', '>i4', (2,)), ('y', '>f8', (2, 2)), ('z', '|u1')],\n 'fortran_order': False,\n 'shape': (2,)}         \n"
    "\x16\x02{'descr': [('x', '>i4', (2,)),\n           ('Info',\n            [('value', '>c16'),\n             ('y2', '>f8'),\n             ('Info2',\n              [('name', '|S2'),\n               ('value', '>c16', (2,)),\n               ('y3', '>f8', (2,)),\n               ('z3', '>u4', (2,))]),\n             ('name', '|S2'),\n             ('z2', '|b1')]),\n           ('color', '|S2'),\n           ('info', [('Name', '>U8'), ('Value', '>c16')]),\n           ('y', '>f8', (2, 2)),\n           ('z', '|u1')],\n 'fortran_order': False,\n 'shape': (2,)}      \n"
    N)BytesIO)assert_assert_array_equalassert_raisesassert_raises_regexassert_warnsIS_PYPYIS_WASM)requires_memory)formatz<>i  dtype
   )   2      )xi4r   yf8r   r   zu1   g      @g      @      g      @g      @	   r   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)r0   r-                 @Zooy              @OOFdd)r3   r2   <>)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__ R/var/www/html/lang_env/lib/python3.10/site-packages/numpy/lib/tests/test_format.pyr?     s   zBytesIOSRandomSize.readN)__name__
__module____qualname__r?   __classcell__rD   rD   rB   rE   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arr2rD   rD   rE   	roundtrip  s
   rV   c                 C   s,   t  }t||  t| }t|}|S rF   )r   r   rN   r;   rO   rP   rQ   rD   rD   rE   roundtrip_randsize  s
   
rW   c                 C   s4   t  }t||  t | dd }t|}|S )Nr   r   rM   rQ   rD   rD   rE   roundtrip_truncated  s
   
rX   c                 C   s   t | |k d S rF   )r   )Zo1o2rD   rD   rE   assert_equal_  s   rZ   c                  C   s$   t t D ]} t| }t| | qd S rF   )basic_arraysrecord_arraysrV   r   rR   rU   rD   rD   rE   test_roundtrip  s   r^   c                  C   s.   t t D ]} | jtkrt| }t| | qd S rF   )r[   r\   r   objectrW   r   r]   rD   rD   rE   test_roundtrip_randsize  s   

r`   c                  C   s$   t D ]} | jtkrttt|  qd S rF   )r[   r   r_   r   
ValueErrorrX   rR   rD   rD   rE   test_roundtrip_truncated  s
   
rc   c                  C   s4   t jdt ttjd fd} t| }t| | d S )Nr/   r   )nponesr   strr   BUFFER_SIZErV   r   )Zlong_str_arrZlong_str_arr2rD   rD   rE   test_long_str  s   rh   zmemmap doesn't work correctly)reasonc           
   	   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 sw   Y  t||	 t	j|d	d
}|  qd S )Nnormalz.npyZmemmapwbw+)moder   shapefortran_order.rbr)rm   )	enumerater[   r\   r   Z	hasobjectospathjoinopenr   rN   flagsf_contiguousc_contiguousopen_memmaprn   flushr?   rZ   )
tmpdirirR   ZnfnZmfnfpro   maZnormal_bytesZmemmap_bytesrD   rD   rE   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.npzrb   rR   )	rd   r<   Zrandrs   rt   ru   Zsavez_compressedloadr   )r|   rR   npz_filenpzarr1rD   rD   rE   test_compressed_roundtrip  s   
r   z
i1, i4, i1)alignabr      )namesformatsoffsetsr7   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   r:   zaligned.npzrb   rR   )	rd   zerosrangers   rt   ru   savezr   r   )r|   r   rR   r}   r   r   r   rD   rD   rE   test_load_padded_dtype  s   
r   )r      zsee gh-23988z!Emscripten NODEFS has a buggy dupc                  C   sh   d} t jt jtd| }tjtdd t	|}W d    n1 s%w   Y  t
|td d S )Nzwin64python2.npydatazReading.*this warning\.matchr   )rs   rt   ru   dirname__file__pytestwarnsUserWarningrd   r   r   re   )fnamert   r   rD   rD   rE   %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	rt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rL   encodingz.npzr   r   py2r   r   rK   F)rL   fix_importsr   )rs   rt   ru   r   r   rd   arrayr   r_   r   endswithclose
startswithr   
isinstancerf   r   encoder   r   UnicodeError__getitem__ImportError)data_direxpectedr   rt   r   Zdata_fr   rD   rD   rE   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   rK   )rs   rt   ru   r   r   r   ra   rd   r   r   saver   r_   )r|   r   rt   rS   rD   rD   rE   test_pickle_disallowJ  s   

r   )r   r   i1)r   r   r   r   )r    )r   r8   r   r9   c                 C   s8   t | j}t||  td| }t|}t|| d S )Nr   )r   Zdescr_to_dtypedescrrZ   rd   r   rV   r   )r   dt1r   rU   rD   rD   rE   test_descr_to_dtypeY  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%dd   float.0r}   rD   rD   rE   
<listcomp>      z$test_version_2_0.<locals>.<listcomp>    r   r   r   versionTrecordalwaysr   r   @ max_header_sizer/   r   )r   r   rd   re   r   rN   warningscatch_warningsfilterwarningsr   r   categoryseekreadlinelenARRAY_ALIGNrP   r   r   ra   )rS   r   r   wheadernrD   rD   rE   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 sw   Y  tj	|ddd}t|| d S )Nc                 S   r   r   r   r   rD   rD   rE   r     r   z+test_version_2_0_memmap.<locals>.<listcomp>r   r   r   zversion2_01.npyzversion2_02.npyrl   r   )rm   r   rn   r   r   .rq   r   )rm   r   Tr   r   r   r   )r   rd   re   rs   rt   ru   r   ra   r   rz   r   rn   r{   r   r   r   r   r   r   r   )r|   r   r   Ztf1Ztf2r   r   rD   rD   rE   test_version_2_0_memmap  s2   

r   	mmap_moderq   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,'  r}   r   .*format 2.0r   Header.*large)r    N  )r   r   T)r   rL     )rs   rt   ru   rd   r   r   r   r   r   raisesra   r   r   )r|   r   rS   rR   resrD   rD   rE   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   r}   r   r   r   rb   r   rR   r   r   TrK   r   )rs   rt   ru   rd   r   r   r   r   r   r   ra   r   r   )r|   rS   rR   r   rD   rD   rE   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    n1 sRw   Y  q8d S )Nr/   r   r   r   ))r/   r/   )r   r   )r   r/   r   )   r   z we only support format version.*)r   rd   aranger   rN   r   ra   )rS   rR   Zbad_versionsr   rD   rD   rE   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   rd   re   r   r   rN   r   Z
read_magicr   tell	MAGIC_LEN)s1s2rR   Zversion1Zversion2rD   rD   rE   test_read_magic  s   



r   c                  C   s$   t D ]} t| }tttj| qd S rF   )malformed_magicr   r   ra   r   rP   magicrS   rD   rD   rE   test_read_magic_bad_magic3  s   r   c                  C   s(   t t D ]} t| }tttj| qd S rF   )bad_version_magicr   r   r   ra   r   rP   r   rD   rD   rE   test_read_version_1_0_bad_magic9  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   ra   r   r   rD   rD   rD   rE   test_bad_magic_args?  s   r   c                  C   sL   t  } t ddd}t| | t  } dd dfg|d< tttj| | d S )NFz<i8rn   ro   r   A   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr   r   )r   tupler   write_array_header_1_0r   ra   sr   rD   rD   rE   test_large_headerF  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   rd   re   r   r   rN   r   r   read_array_header_1_0r   r   r   r   rR   rn   fortranr   rD   rD   rE   test_read_array_header_1_0P     r  c                  C   r  )Nr   r   r   r   r   F)r   rd   re   r   r   rN   r   r   Zread_array_header_2_0r   r   r   r  rD   rD   rE   test_read_array_header_2_0]  r  r  c                  C   s   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| | tttj|  d S )	N   1s    s@   NUMPY 6 {'descr': 'x', 'shape': (1, 2), }                    
r/   r   Fr   r   )rn   ro   r   Zextrakey)r   r   ra   r   r  r   r   rD   rD   rE   test_bad_headerj  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 filerk   l        r:   rp   )sysplatformr   skiprs   rt   ru   
subprocess
check_call	Exceptionrv   r   rd   r   r   r   r   )r|   Ztf_namesprS   r   rq   rD   rD   rE   test_large_file_support  s&   



r  zflaky on PyPyztest requires 64-bit systeml        )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_archiverk   rb   rp   rR   )rd   emptyuint8MemoryErrorr   r  rs   rt   ru   rv   r   r   rn   )r|   rn   r   r   rS   Znew_arD   rD   rE   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)rs   rt   ru   rd   r   r   )r|   r   ZnpsrD   rD   rE   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 sw   Y  d S )
N)r/   r   r	  r  r	  intu   整形r   zunicode.npyrk   )r   r   r   rp   )rd   r   r  rs   rt   ru   rv   r   rN   rP   r   r   r   )r|   rR   r   rS   rU   rD   rD   rE   test_unicode_field_names  s(   
	

"r  c                  C   s   g dg dg dg dfD ]9\} }}dd t tjD D ])}t }t|| r+d|fn|df| td| tfgd	 t|	 |ksFJ qqd S )
N)F      )F      )Tr   r  )T   r!  c                 S   s   g | ]}d | qS )r   rD   r   rD   rD   rE   r     s    z+test_header_growth_axis.<locals>.<listcomp>r    r   )
r   r   ZGROWTH_AXIS_MAX_DIGITSr   r   rd   r   r  r   rO   )Zis_fortran_arrayZdtype_spaceZexpected_header_lengthrA   r~   rD   rD   rE   test_header_growth_axis  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|jusaJ ||j|ju skJ d S )Nr   r   r   )drop_metadata)rd   re   r   r   r   r   r   r   ra   r   Znumpy.lib.utilsr(  r   r   )r   ZfailrR   bufrU   r(  rD   rD   rE   test_metadata_dtype  s   


"

r*  )l__doc__r  rs   r   r   ior   numpyrd   Znumpy.testingr   r   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scalarsr[   ZscalarZendianr   Znewbyteorderr   Zastypebasicextendr   ZreshapeTZPdescrZPbufferTZNdescrZNbufferTr   r\   r;   rV   rW   rX   rZ   r^   r`   rc   rh   markZskipifZslowr   r   r   Zdt2Zdt3Zdt4Zdt5Zdt6Zparametrizer   version_infoZxfailr   r   r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r
  r  Zintpr   r  r  r  r$  r   implementationr   r*  rD   rD   rD   rE   <module>   s    $


&&
	

/





1





