K i'dZddlZddlZddlmcmZddlZddlmZddlm Z m Z m Z m Z m Z ddlmZmZmZmZmZmZgdZddlmZgd ZeezZdd Zdd Zdd Zd ZddZddZeZ ddZ!e!Z" ddZ#ddZ$ddZ%ddZ&ddZ'ddZ(ddZ)y)zMiscellaneous functions for testing masked arrays and subclasses :author: Pierre Gerard-Marchant :contact: pierregm_at_uga_dot_edu N)ndarray)assert_assert_allcloseassert_array_almost_equal_nulp assert_raises build_err_msg)filledgetmaskmask_ormasked masked_arraynomask)almostapproxassert_almost_equalassert_array_almost_equalassert_array_approx_equalassert_array_compareassert_array_equalassert_array_less assert_close assert_equalassert_equal_recordsassert_mask_equalassert_not_equalfail_if_array_equal)TestCase)rrrrrctt|t|}t|}t|}|jjdk(s|jjdk(r$t j ||jStt|d||jt j}tt|d|djt j} t jtj|| z ||tj| zz} | jS)a Returns true if all components of a and b are equal to given tolerances. If fill_value is True, masked values considered equal. Otherwise, masked values are considered unequal. The relative error rtol should be positive and << 1.0 The absolute error atol comes into play for those elements of b that are very small or zero; it says how small a must be also. OFcopymaskr )r r r dtypecharnpequalravelrastypefloat64 less_equalumathabsolute) ab fill_valuertolatolmd1d2xyds X/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/numpy/ma/testutils.pyrr-s  GAJ'A B B xx}}rxx}}3xxB%%''Re!,j  fRZZ |BU3Q7>>rzzJA ennQU+TD5>>!;L4L-LMA 779cptt|t|}t|}t|}|jjdk(s|jjdk(r$t j ||jStt|d||jt j}tt|d|djt j}t jt j||z |d| zk} | jS)z Returns True if a and b are equal up to decimal places. If fill_value is True, masked values considered equal. Otherwise, masked values are considered unequal. r Fr!r $@) r r r r$r%r&r'r(rr)r*aroundabs) r.r/decimalr0r3r4r5r6r7r8s r9rrEs  GAJ'A B B xx}}rxx}}3xxB%%''Re!,j  fRZZ |BU3Q7>>rzzJA "&&Q-)Twh-??A 779r:c tt|t||tt|D]}t||||d|d|y)z; Asserts the equality of two non-array sequences. item= N)rlenrange)actualdesirederr_msgks r9_assert_equal_on_sequencesrIZsS Vc'lG4 3w< FVAY eA57),DEFr:c^t|j|j|jjD]t}tj||tj||}}|t us8|t usAttj||tj||vy)zI Asserts that two records are equal. Pretty crude for now. N)rr$namesoperatorgetitemr )r.r/fafbfs r9rrds!''" WW]]I$$Q*H,<,rZ)rErFr?rGrjrds r9rrsx&"**%GRZZ)H('18'K K ) ' :C Wv%& 0A 5S!! 6r:c~tt|t|}t|d|dd}t|d|dd}|tur|tus|tur%|turt ||g|||d}t |t jj||j||j||||S)zn Asserts that comparison between two masked arrays is satisfied. The comparison is elementwise. F)r"r# keep_masksubokrU)rGrjrVrKrGrjrV) r r rr rr`r&testingrr ) comparisonr6r7rGrjrVr0r3rds r9rrs  GAJ'AQUe5IAQUe5IA fqF{6kAKQFGW#)=o :: * *:+,88J+?+,88J+?3:3:6 + KKr:cBttj||||dy)z@ Checks the elementwise equality of two masked arrays. Arrays are not equalroN)rrL__eq__r6r7rGrjs r9rrs !Q!(' 68r:c,d}t|||||dy)zT Raises an assertion error if two masked arrays are not equal elementwise. cBtjt|| S)N)r&allrrUs r9comparez$fail_if_array_equal..comparesFF6!Q<(()r:rsroNr)r6r7rGrjrys r9rrs *!Q 68r:c2fd}t|||||dy)| Checks the equality of two masked arrays, up to given number odecimals. The equality is checked elementwise. c(t||d zS).comparesa11r:Arrays are not almost equalroNrzr6r7r?rGrjrys ` r9rrs2!Q =?r:c2fd}t|||||dy)r|ct||S)r~)rrs r9ryz*assert_array_almost_equal..compare saG$$r:rroNrzrs ` r9rrs%!Q =?r:cBttj||||dy)z7 Checks that x is smaller than y elementwise. zArrays are not less-orderedroN)rrL__lt__rus r9rrs !Q!(' =?r:c|turt|tu|turt|tut|||y)z- Asserts the equality of two masks. rTN)rrr)m1m2rGs r9rrs6  V|f  V|f r2w/r:)Tgh㈵>g:0yE>)T)rS)rST)rSTrST)rST)rrST)*__doc__rLnumpyr&numpy._core.umath_corer, numpy.testingrrrrrrcorer r r r rr __all__maskedunittestr__some__from_testing__all__rrrIrrrhrrrrrrrrrrr:r9rs !!IH  . .0*F I$8N"4! " # MO$(K288 ? ?? 0r: