ó
šxŠ\c           @   sø  d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l m Z m Z m Z m	 Z	 d  d l
 m Z m Z m Z d  d l m Z m Z d  d l j j Z e j d e	 d d d g d d	 d
 ƒe	 d d d g d d	 d ƒe	 d d d g d d	 d ƒe	 d d d g d ƒ e	 e e e g d ƒ e	 e j d d d ƒƒ e	 e j d d d d d ƒƒ e	 e j d d d ƒƒ g ƒ d „  ƒ Z e j d e e g ƒ d „  ƒ Z d „  Z d „  Z d „  Z d  „  Z  e j! j" d! e j# d d" d# g ƒ e j# d d" d# g d	 e$ ƒg ƒ d$ „  ƒ Z% e j! j" d% d& d' e j& d ƒ g ƒ d( „  ƒ Z' d) „  Z( e j! j" d* d` d e j) f d, e j* d- f d- e j& d. ƒ f g ƒ d/ „  ƒ Z+ e j! j" d% d d0 d- d- d1 e j& d. ƒ e j& d. d d2 ƒe  j  d3 d d ƒ e j& d. d d4 ƒj, ƒ  e j- d5 ƒ e  j. d ƒ e j/ d. d6 d7 ƒe j0 d8 d ƒ e j) e j* d g ƒ d9 „  ƒ Z1 e j! j" d% d& d' e j& d ƒ g ƒ d: „  ƒ Z2 d; „  Z3 d< „  Z4 e j! j" d= e	 d d d g ƒ e	 d, d> d? g ƒ e	 d, d> e j) g ƒ e	 d, d> d? g d@ d> dA dB g ƒe	 d d d g ƒ e	 d e j) d g ƒ e	 d d d g ƒ e	 e e e g ƒ e	 ƒ  e d d d g ƒ e e e e g ƒ e i d d d g dC 6d d d g dD 6ƒ e ƒ  e j5 ƒ  e j6 ƒ  e j7 ƒ  e j8 ƒ  e j9 ƒ  e j: ƒ  e	 e j: ƒ  ƒ e	 e j d d d d d ƒƒ e j; e< d& ƒ d' dE dF g e j d d d ƒg ƒ e j; e j= e> dG ƒ ƒ e< d ƒ g ƒ g ƒ dH „  ƒ Z? dI „  Z@ e j! j" d= e	 g  d	 dJ ƒe	 g  d	 dK ƒe g  ƒ g ƒ dL „  ƒ ZA e j! j" dM e	 d d d d g ƒ e	 dN dO dP dQ g ƒ e	 e j d8 d d" ƒƒ g ƒ e j! j" dR e e g ƒ dS „  ƒ ƒ ZB dT „  ZC e j! jD dU ƒ e j! j" d= e j& d ƒ e jE ƒ  g ƒ dV „  ƒ ƒ ZF dW „  ZG dX „  ZH dY „  ZI dZ „  ZJ e j! j" d[ e< d\ ƒ ƒ e j! j" d] d8 d g ƒ d^ „  ƒ ƒ ZK d_ „  ZL d S(a   iÿÿÿÿN(   t	   DataFramet   Indext
   MultiIndext   Series(   t   _hash_scalart
   hash_tuplet   hash_tuples(   t
   hash_arrayt   hash_pandas_objectt   paramsi   i   i   t   dtypet   int32g      @g      @t   float32t   at   bt   ct   categoryt   dt   et   ft   20130101t   periodsi	   t   tzs
   US/Easternt   2000c         C   s   |  j  S(   N(   t   param(   t   request(    (    s=   lib/python2.7/site-packages/pandas/tests/util/test_hashing.pyt   series   s    
c         C   s   |  j  S(   N(   R   (   R   (    (    s=   lib/python2.7/site-packages/pandas/tests/util/test_hashing.pyt   index   s    c         K   s2   t  |  |  } t  |  |  } t j | | ƒ d S(   så   
    Check that hashing an objects produces the same value each time.

    Parameters
    ----------
    obj : object
        The object to hash.
    kwargs : kwargs
        Keyword arguments to pass to the hashing function.
    N(   R   t   tmt   assert_series_equal(   t   objt   kwargsR   R   (    (    s=   lib/python2.7/site-packages/pandas/tests/util/test_hashing.pyt   _check_equal   s    c         C   sb   t  |  t ƒ s^ t |  d t ƒ} t |  d t ƒ} t |  ƒ r^ | | k j ƒ  s[ t ‚ q^ n  d S(   s   
    Check the hash of an object with and without its index is not the same.

    Parameters
    ----------
    obj : object
        The object to hash.
    R   N(   t
   isinstanceR   R   t   Truet   Falset   lent   allt   AssertionError(   R   R   R   (    (    s=   lib/python2.7/site-packages/pandas/tests/util/test_hashing.pyt   _check_not_equal_with_index/   s
    	c          C   sb   t  t d d d g ƒ ƒ }  t t j d d d g d d ƒd	 d d d g ƒ} t j |  | ƒ d  S(
   Nt   foot   bart   bazIØ7qG÷1I6j=!ÙInF•EÆ¡R
   t   uint64R   (   R   R   R   t   npt   arrayR   R   (   t   resultt   expected(    (    s=   lib/python2.7/site-packages/pandas/tests/util/test_hashing.pyt   test_consistency@   s
    c         C   s)   |  j  } t j t | ƒ t | ƒ ƒ d  S(   N(   t   valuesR   t   assert_numpy_array_equalR   (   R   t   arr(    (    s=   lib/python2.7/site-packages/pandas/tests/util/test_hashing.pyt   test_hash_arrayJ   s    	t   arr2i   t   Allc         C   s>   t  t j d d d g ƒ ƒ } t  |  ƒ } t j | | ƒ d  S(   Nt   3t   4R6   (   R   R,   R-   R   R2   (   R5   t   result1t   result2(    (    s=   lib/python2.7/site-packages/pandas/tests/util/test_hashing.pyt   test_hash_array_mixedO   s    t   vali   R(   c         C   s0   d } t  j t d | ƒ t |  ƒ Wd  QXd  S(   Ns   must pass a ndarray-liket   match(   t   pytestt   raisest	   TypeErrorR   (   R<   t   msg(    (    s=   lib/python2.7/site-packages/pandas/tests/util/test_hashing.pyt   test_hash_array_errorsZ   s    c          C   sm   d d d g }  t  |  ƒ } t t j |  ƒ ƒ j } t j | | ƒ t  |  d ƒ } | | d k si t ‚ d  S(	   Ni   t   onet   twoi   i    (   i   RC   (   i   RD   (   i   RC   (   R   R   R   t   from_tuplesR1   R   R2   R&   (   t   tuplesR.   R/   (    (    s=   lib/python2.7/site-packages/pandas/tests/util/test_hashing.pyt   test_hash_tuplesa   s    t   tupRC   g      ð?t   As
   2012-01-01c         C   s5   t  |  ƒ } t |  g ƒ d } | | k s1 t ‚ d  S(   Ni    (   R   R   R&   (   RH   R.   R/   (    (    s=   lib/python2.7/site-packages/pandas/tests/util/test_hashing.pyt   test_hash_tuplel   s    gffffffö?u   As   Europe/BrusselsiÜ  t   ESTs   1 dayst   freqt   Di    c         C   sN   t  |  ƒ } t t j |  g d t ƒd t ƒ} | d | d k sJ t ‚ d  S(   NR
   t
   categorizei    (   R   R   R,   R-   t   objectR"   R&   (   R<   R.   R/   (    (    s=   lib/python2.7/site-packages/pandas/tests/util/test_hashing.pyt   test_hash_scalarx   s    	$c         C   s0   d } t  j t d | ƒ t |  ƒ Wd  QXd  S(   Ns'   must be convertible to a list-of-tuplesR=   (   R>   R?   R@   R   (   R<   RA   (    (    s=   lib/python2.7/site-packages/pandas/tests/util/test_hashing.pyt   test_hash_tuples_err‡   s    c          C   sU   t  j d d d	 d
 g ƒ }  |  j t k s0 t ‚ t |  ƒ } | j t k sQ t ‚ d  S(   Niv   iØ  iì   i3   iÌ   if   (   iv   iØ  (   iì   iv   (   i3   iÌ   (   if   i3   (   R   RE   t	   is_uniqueR"   R&   R   (   t   miR.   (    (    s=   lib/python2.7/site-packages/pandas/tests/util/test_hashing.pyt   test_multiindex_uniqueŽ   s
    c       	   C   s3  t  d d d d g d d d g g d d	 d d	 d g d d	 d	 d g g d
 d d g ƒ }  |  j ƒ  } |  j | ƒ sx t ‚ t |  j ƒ j t | j ƒ ƒ sŸ t ‚ t |  d t ƒj } |  j } t	 j
 | | ƒ t | d t ƒj } | j } t	 j
 | | ƒ |  j } | j } t	 j
 t j | ƒ t j | ƒ ƒ d  S(   Nt   levelsR   R   R   i   i   i   t   codesi    t   namest   col1t   col2R   (   R   t   _sort_levels_monotonict   equalsR&   R   R1   R   R#   t   _hashed_valuesR   R2   R,   t   sort(   RS   t   reconsR/   R.   (    (    s=   lib/python2.7/site-packages/pandas/tests/util/test_hashing.pyt   test_multiindex_objects—   s    $$'				R   g      ø?gš™™™™™	@R   gš™™™™™ñ?gffffff
@t   xt   yR)   R*   t   aabcc         C   s   t  |  d | ƒt |  ƒ d  S(   NR   (   R    R'   (   R   R   (    (    s=   lib/python2.7/site-packages/pandas/tests/util/test_hashing.pyt   test_hash_pandas_object³   s    c         C   s   t  |  d | ƒt |  ƒ d  S(   NR   (   R    R'   (   R   R   (    (    s=   lib/python2.7/site-packages/pandas/tests/util/test_hashing.pyt   test_hash_pandas_object2Ò   s    t   float64RO   c         C   s   t  |  d | ƒd  S(   NR   (   R    (   R   R   (    (    s=   lib/python2.7/site-packages/pandas/tests/util/test_hashing.pyt   test_hash_pandas_empty_object×   s    t   s1iè  iÐ  i¸  i   RN   c         C   s“   |  j  d ƒ j j |  ƒ } | j j t t |  ƒ ƒ ƒ } t |  d | ƒ} t | d | ƒ} t | d | ƒ} t j | | ƒ t j | | ƒ d  S(   NR   RN   (   t   astypet   catt   set_categoriest   listt   reversedR   R   R   (   Rg   RN   t   s2t   s3t   h1t   h2t   h3(    (    s=   lib/python2.7/site-packages/pandas/tests/util/test_hashing.pyt   test_categorical_consistencyß   s    
c       	   C   s½   t  j j d d d d d d g d t  j d d	 d
 d d ƒƒ}  t |  d t ƒ} t  j j d d g d t  j d ƒ g ƒ}  t |  d t ƒ} | d | k s£ t ‚ | d | k s¹ t ‚ d  S(   Niÿÿÿÿi    i   i   i   i   t
   categoriess
   2012-01-01R   i   t   namet   BRN   (   t   pdt   Categoricalt
   from_codest
   date_rangeR   R#   t	   TimestampR&   (   R   R/   R.   (    (    s=   lib/python2.7/site-packages/pandas/tests/util/test_hashing.pyt%   test_categorical_with_nan_consistencyõ   s    		s   ignore:\nPanel:FutureWarningc         C   s0   d } t  j t d | ƒ t |  ƒ Wd  QXd  S(   Ns   Unexpected type for hashingR=   (   R>   R?   R@   R   (   R   RA   (    (    s=   lib/python2.7/site-packages/pandas/tests/util/test_hashing.pyt   test_pandas_errors  s    c          C   sR   t  t d ƒ ƒ }  t |  d d ƒ} t |  d d ƒ} | | k j ƒ  sN t ‚ d  S(   Nt   abct   hash_keyt   9876543210123456t   9876543210123465(   R   Rk   R   R%   R&   (   R   R   R   (    (    s=   lib/python2.7/site-packages/pandas/tests/util/test_hashing.pyt   test_hash_keys  s    c          C   sB   d }  t  j t d |  ƒ! t t t d ƒ ƒ d d ƒWd  QXd  S(   Ns&   key should be a 16-byte string encodedR=   R}   R~   R(   (   R>   R?   t
   ValueErrorR   R   Rk   (   RA   (    (    s=   lib/python2.7/site-packages/pandas/tests/util/test_hashing.pyt   test_invalid_key  s    c         C   s2   t  t d ƒ ƒ j j d ƒ } t | d |  ƒd  S(   NR}   t   utf8R   (   R   Rk   t   strt   encodeR    (   R   R   (    (    s=   lib/python2.7/site-packages/pandas/tests/util/test_hashing.pyt   test_already_encoded!  s    c         C   s,   t  t d ƒ ƒ } t | d |  d d ƒd  S(   NR}   R   t   encodingt   ascii(   R   Rk   R    (   R   R   (    (    s=   lib/python2.7/site-packages/pandas/tests/util/test_hashing.pyt   test_alternate_encoding'  s    t   l_expi   t   l_addc         C   sR   d |  d | } t  j | d ƒ } t | d ƒ } | d | d k sN t ‚ d  S(   Ni   i   R„   i    i   (   R   t   rands_arrayR   R&   (   R‹   RŒ   t   lengtht   sR.   (    (    s=   lib/python2.7/site-packages/pandas/tests/util/test_hashing.pyt   test_same_len_hash_collisions,  s    c          C   só   d d g }  t  t j |  d d !d t ƒd ƒ } t j d g d t j ƒ} t j | | ƒ t  t j |  d d !d t ƒd ƒ } t j d	 g d t j ƒ} t j | | ƒ t  t j |  d t ƒd ƒ } t j | t j | | g d
 d ƒƒ d  S(   Ns   Ingrid-9Z9fKIZmkO7i7Cn51Li34pJm44fgX6DYGBNj3VPlOH50m7HnBlPxfIwFMrcNJNMP6PSgLmwWnInciMWrCSAlLEvt7JkJl4IxiMrVbXSa8ZQoVaq5xoQPjltuJEfwdNlO6jo8qRRHvD8sBEBMQASrRa6TsdaPTPCBo3nwIBpE7YzzmyH0vMBhjQZLx1aCT7faSEx7PgFxQhHdKFWROcysamgy9iVj8DO2Fmwg1NNl93rIAqC3mdqfrCxrzfvIY8aJdzin2cHVzy3QUJxZgHvtUtOLxoqnUHsYbNTeq0xcLXpTZEZCxD4PGubIuCNf32c33M7HFsnjWSEjE2yVdWKhmSVodyF8hFYVmhYnMCztQnJrt3O8ZvVRXd5IKwlLexiSp4h888w7SzAIcKgc3g5XQJf6MlSMftDXm9lIsE1mJNiJEv6uY6pgvC3fUPhatlR5JPpVAHNSbSEE73MBzJrhCAbOLXQumyOXigZuPoME7QgJcBalliQol7YZ9s   Tim-b9MddTxOWW2AT1Py6vtVbZwGAmYCjbp89p8mxsiFoVX4FyDOF3wFiAkyQTUgwg9sVqVYOZo09Dh1AzhFHbgij52ylF0SEwgzjzHH8TGY8Lypart4p4onnDoDvVMBa0kdthVGKl6K0BDVGzyOXPXKpmnMF1H6rJzqHJ0HywfwS4XYpVwlAkoeNsiicHkJUFdUAhG229INzvIAiJuAHeJDUoyO4DCBqtoZ5TDend6TK7Y914yHlfH3g1WZu5LksKv68VQHJriWFYusW5e6ZZ6dKaMjTwEGuRgdT66iU5nqWTHRH8WSzpXoCFwGcTOwyuqPSe0fTe21DVtJn1FKj9F9nEnR9xOvJUO7E0piCIF4Ad9yAIDY4DBimpsTfKXCu1vdHpKYerzbndfuFe5AhfMduLYZJi5iAw8qKSwR5h86ttXV0Mc0QmXz8dsRvDgxjXSmupPxBggdlqUlC828hXiTPD7am0yETBV0F3bEtvPiNJfremszcV8NcqAoARMei    i   R
   R„   l   éîrIU} i   l   pXð^»ì t   axis(	   R   R,   t   asarrayRO   R-   R+   R   R2   t   concatenate(   t   hashesR9   t	   expected1R:   t	   expected2R.   (    (    s=   lib/python2.7/site-packages/pandas/tests/util/test_hashing.pyt   test_hash_collisions6  s    	%%(   i   RC   (M   t   datetimet   numpyR,   R>   t   pandasRv   R    R   R   R   t   pandas.core.util.hashingR   R   R   t   pandas.utilR   R   t   pandas.util.testingt   utilt   testingR   t   fixturet   NoneR"   R#   Ry   t   timedelta_rangeR   R   R    R'   R0   R4   t   markt   parametrizeR-   RO   R;   Rz   RB   RG   t   nant   NaTRJ   t   to_pydatetimet	   Timedeltat	   timedeltat   Periodt   IntervalRP   RQ   RT   R_   t   makeMissingDataframet   makeMixedDataFramet   makeTimeDataFramet   makeTimeSeriest   makeTimedeltaIndext   makePeriodIndext   from_productt   ranget   CategoricalIndexRk   Rc   Rd   Rf   Rr   R{   t   filterwarningst	   makePanelR|   R   Rƒ   R‡   RŠ   R   R—   (    (    (    s=   lib/python2.7/site-packages/pandas/tests/util/test_hashing.pyt   <module>   s¦   "	*!			
	-	0	$
!!0			!)						9	9'	6				'	