o
    d                  	   @   sl  d dl mZ d dlZd dlZd dlZd dlmZmZm	Z	 d dl
mZ ejdddgddggdd gddggddgdd ggdd gdd gggejdddgd	d
 Zejdddgddggdd gddggddgdd ggdd gdd gggejdddgejdddgdd Zdd Zdd Zdd Zejdg ddd Zdd Zdd Zdd  Zd!d" ZdS )#    )timezoneN)Series
date_rangeperiod_rangezfirst_slice,second_slice   fillc                 C   s&  | t |  }| t |  }|j|||d\}}|jj|j|d}	|d urQ|j|	}
|j|	}t|
dkr@||
|k s@J t|dkrQ|||k sQJ ||	}||	}|d uri||}||}t	
|| t	
|| |jdks|J |jdksJ |jdksJ |jdksJ d S )N)joinZ
fill_valuehowr   ts)slicealignindexr
   
differencelenreindexallfillnatmassert_series_equalname)datetime_seriesfirst_slicesecond_slice	join_typer   abaaab
join_indexZdiff_aZdiff_beaeb r$   Z/app/.heroku/python/lib/python3.10/site-packages/pandas/tests/series/methods/test_align.py
test_align   s,   



r&   methodpadbfilllimit   c                 C   s   | t |  }| t |  }|j||||d\}}	|jj|j|d}
||
}||
}|j||d}|j||d}t|| t|	| d S )N)r
   r'   r*   r   )r'   r*   )r   r   r   r
   r   r   r   r   )r   r   r   r   r'   r*   r   r   r   r    r!   r"   r#   r$   r$   r%   test_align_fill_method7   s   

r,   c                 C   sn  | d d   }|   }|j|dd\}}d|d d< |d d dk r'J |   }|j|ddd\}}d|d d< |rJ|d d dk rIJ n|d d dk sVJ |   }| d d   }|j|dd\}}d|d d< |d d dk r}J |   }| d d   }|j|ddd\}}d|d d< |r|d d dk rJ d S |d d dk sJ d S )	N   leftr
   F)r
   copyright   r   )r0   r   anyr   )r   using_copy_on_writer   r   ra_rbr$   r$   r%   test_align_nocopyU   s.   r8   c                 C   s   | j | dd\}}|j| ju sJ |j| ju sJ | j | dd\}}|s6|j| jus,J |j| jus4J d S |j| ju s>J |j| ju sFJ d S )NF)r0   T)r   r   )r   r4   r   r   r$   r$   r%   test_align_same_indexy   s   r9   c                  C   sv  t jjtdtdtdgdd} t jtddd}ttjddd	| d
}ttjddd	|d
}|j|dd\}}|j|dd\}}|}t	
|| t	
|| tddddtjtjgd | d
}	t	
|	| t	
|	| |j|dd\}}|j|dd\}}t jjtdtdtdgdd}
tg d|
d
}t	
|| t	
|| tg dd |
d
}	t	
|	| t	
|	| d S )Nr   r2   r   r   cnamesr   )r      Zint64)Zdtyper   r.   r/   r1   r   r+   )r   r+   r   r2            	   )r   r   r+   r+   )pd
MultiIndexZfrom_productrangeIndexr   npZaranger   r   r   nan)Zmidxidxs1s2Zres1lZres1rZres2lZres2rZexplexprZexp_idxr$   r$   r%   test_align_multiindex   s2    rN   )Zbackfillr)   r(   ZffillNc                 C   sZ   t tdtdd}tjdtdtdd}|j|| d\}}t|| t|| d S )Nr2   r?   g        )r   columns)r'   )r   rF   rD   Z	DataFramer   r   r   Zassert_frame_equal)r'   serZdfZ
result_serZ	result_dfr$   r$   r%    test_align_with_dataframe_method   s
   rQ   c                  C   sh   t ddddd} ttjt| | d}|d}||\}}|jj	t
ju s)J |jj	t
ju s2J d S )NZ2001r-   Hz
US/Eastern)Zperiodsfreqtzr?   z
US/Central)r   r   rH   randomrandnr   Z
tz_convertr   r   rT   r   utc)Zidx1rP   Zser_centralZnew1Znew2r$   r$   r%   %test_align_dt64tzindex_mismatched_tzs   s   
rX   c                 C   sB   t dddd}ttjt||d}|j|d d d | d d S )Nz1/1/2000z1/1/2010A)rS   r?   r   r/   )r   r   rH   rU   rV   r   r   )r   rngr   r$   r$   r%   test_align_periodindex   s   r[   c                  C   s   t dgtjjdgddgdd} t dgtjjdgg d	dd}| |\}}t dgtjjd
gg ddd}t dgtjjd
gg ddd}t|| t|| d S )Nr   )r+   r2   r   r;   r<   r?   r+   r+   r   r2   r:   )r+   r2   r   )r   r;   r   r   rD   rE   from_tuplesr   r   r   )r.   r1   result_leftresult_rightexpected_rightexpected_leftr$   r$   r%   test_align_left_fewer_levels   s    rc   c                  C   s   t dgtjjdgg ddd} t dgtjjdgg ddd}| |\}}t dgtjjd	gg d
dd}t dgtjjd	gg d
dd}t|| t|| d S )Nr   )r+      r2   )r   dr;   r<   r?   r+   r\   r:   )r+   r2   rd   r   )r   r;   re   r   r]   )r.   r1   r_   r`   rb   ra   r$   r$   r%   &test_align_left_different_named_levels   s   rf   )datetimer   numpyrH   ZpytestZpandasrD   r   r   r   Zpandas._testingZ_testingr   markZparametrizer&   r,   r8   r9   rN   rQ   rX   r[   rc   rf   r$   r$   r$   r%   <module>   sH    		$#

