
    DUf                        d dl Z d dlZd dlZd dlZd dlZd dlZd dlZddlmZ d Z	d Z
dgZej        j        r+e                    d           e                    d           nBej        j        r6ej        j        s*e                    d	           e                    d
           ej                            e          Zd eD             Zd Zd ZdZdZd d d edZd Zd Zd ZdS )    N   )test_tempdirc                      t           j                            t                    st          j        dt          z             t          j        t                     d S )Nzmkdir -p %s)ospathexistsr   system
pybedtoolsset_tempdir     V/var/www/html/software/conda/lib/python3.11/site-packages/pybedtools/test/test_iter.pysetup_moduler   
   sD    7>>,'' 0
	-,.///<(((((r   c                      t           j                            t                    rt          j        dt          z             t          j                     d S )Nzrm -r %s)r   r   r   r   r	   r
   cleanupr   r   r   teardown_moduler      sB    	w~~l## -
	*|+,,,r   ztest_cases.yamlztest_merge227.yamlztest_shuffle227.yamlztest_merge215.yamlztest_shuffle215.yamlc                 X    g | ]'}t           j                            t          |          (S r   )r   r   jointhis_dir.0is     r   
<listcomp>r       s(    @@@aXq))@@@r   c                 D   t           j                                        }t          j        |d          5 }t	          | j        d          5 }|                    |           ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   t          j        |          S )z^
    Gzips a file to a tempfile, and returns a new BedTool using the gzipped
    version.
    wbrbN)r
   BedTool_tmpgzipopenfn
writelines)xgzfnout_in_s       r   gzr'   #   s   
 ""$$D	4		 !$!$ 	!OOC   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!! ! ! ! ! ! ! ! ! ! ! ! ! ! ! d###s5   B
A, B,A0	0B3A0	4BB
Bc                     d}|                                  D ]v}|                    d          }t          |          dk    r+d|v r|                    d          }n|                                }d                    |          dz   }||z  }w|S )z
    Replaces spaces with tabs, removes spurious newlines, and lstrip()s each
    line. Makes it really easy to create BED files on the fly for testing and
    checking.
     z
r   	
)
splitlinesstriplensplitr   )r#   sr   s      r   fixr1   /   s     	A\\^^  GGFOOq66Q;;
 199AA		AIIaLL4	QHr   )
bam_to_bed)filenamec                 4    t          j        | j                  S N)r
   r   r!   r#   s    r   <lambda>r7   P   s    *,QT22 r   c                 >    t          j        d | D                       S )Nc              3      K   | ]}|V  d S r5   r   r   s     r   	<genexpr>z<lambda>.<locals>.<genexpr>Q   s      ^^Aa^^^^^^r   )r
   r   r6   s    r   r7   r7   Q   s    :-^^^^^;; r   c                 N    t          j        t          | j                            S r5   )r
   r   r    r!   r6   s    r   r7   r7   R   s    
*4::66 r   r3   	generatorstreamr   c                    | d         }| d         }| d         }| d                                          }| d         d         }|                    d          }t          |         t          j        |                    }|                                D ]5\  }}t          |         t          j        ||                             ||<   6 t          ||          di |}	t          |	          }
t          |          }	 |
|k    sJ d S # t          $ rD t          |	j                   t          d           g }t          |                                          D ]1\  }}|                    |d|                                           2d	                    |          }t          d
t!                      z             t          d           t          |
           t          d           t          |           t          d           t#          j        |
                    d          |                    d                    D ]}t          |d           |
                    dd                              dd          }|                    dd                              dd          }t          d           t          d           t          |           t          d           t          |           t          d           t#          j        |                    d          |                    d                    D ]}t          |d            w xY w)Nmethodbedtoolconvertkw	test_caseexpectedzMethod call:=z, zBedTool.%(method)s(%(args)s)zGot:z	Expected:zDiff:r    )endr*   z\tr+   z\n
zShowing special characters:r   )copypop
convertersr
   example_bedtoolitemsgetattrstrr1   AssertionErrorprintr!   listappendr-   r   localsdifflibunified_diffr,   replace)dr@   rA   rB   kwargsrE   bedtool_converterkconverter_nameresultresargskeyvalr   spec_resspec_expecteds                    r   runrd   W   s%   x[F	lG	lGtW\\^^F~j)HI..*+J,Fw,O,OPPG$]]__ V V>~.z/I&QR)/T/TUUq		%WWf%%////F
f++C8}}H"h   finV\\^^,, 	8 	8HCKKCCC-44667777yy,vxx7888fc


khg%cnnQ&7&79L9LQ9O9OPP 	 	A! ;;tU++33D'BB ((u55==dGLL+,,,fhkmg%""M$<$<Q$?$?
 
 	 	A !?s   <D IMc                    g }g }t           D ]}t          t          d          r@t          j        t	          |                                          t          j                  }n3t          j        t	          |                                                    }|D ]}|d         }t          j        |          }|d         }d}	d}
d}d }d|v rd|v sd|v rd	}d
|v sd|v rd
}d|v r*t          j	        |d                   |d<   |d         |d<   d}	d|v r*t          j	        |d                   |d<   |d         |d
<   d}g d}d|v rd |d         D             |d<   d|v rd |d         D             |d<   d|v rt          j	        |d                   |d<   |d
k    rt          j
        |d
                   }|j        rd}|                    d
          }|D ]e}|r
|t          vr dj        di t                      }|                    |           |                    t#          ||||d|i                     f|d	k    rt          j
        |d                   }t          j
        |d                   }|j        rd}	|j        rd}
|                    d          }t%          j        |d          D ]u\  }} dj        di t                      }|	r
|t          vr*|
r
|t          vr6|                    |           |                    t#          ||||||d                     v|                     d||           d S )N
FullLoader)LoaderrY   r@   Fababamabr   ibamTr<   filesc                 6    g | ]}t          j        |          S r   r
   example_filenamer   s     r   r   z)pytest_generate_tests.<locals>.<listcomp>   s#    SSS!z:1==SSSr   bamsc                 6    g | ]}t          j        |          S r   ro   r   s     r   r   z)pytest_generate_tests.<locals>.<listcomp>   s#    QQQj9!<<QQQr   fiz{method}: {kwc} {kind}rA   )r@   rA   rD   rC   rB      z%{method}: {kwc} a={kind_a} b={kind_b})rA   ri   tests)idsr   )yamltestdeschasattryamlloadr    readrf   rI   r
   rp   rL   _isbamrJ   supported_bamformatrT   rS   dict	itertoolspermutationsparametrize)metafuncru   labels	config_fn
test_casesrD   rC   kwcr@   a_isbamb_isbami_isbamflavorkindsorig_irA   kindlabelorig_aorig_bkind_akind_bs                         r   pytest_generate_testsr      s   EF! ^ ^	4&& 	;4	??#7#7#9#9$/RRRJJ4	??#7#7#9#9::J# Y	 Y	I8$B)B--Cx(FGGG F2r		v||
 ||'8FDD6
V*3||'8FDD6
V*3???E"}}SSr'{SSS7||QQbjQQQ6
rzz%6r$x@@4}}#3BsG<<= #"G&&++!  D !D$=$= ;4;GGfhhGGEMM%(((LL#)$+&/!%.$5      ~~#3BsG<<#3BsG<<= #"G= #"G&&++&/&<UA&F&F  NFFJCJVVVXXVVE !F-$?$?  !F-$?$? MM%(((LL#)$+&/!06V$D$D     cY	v %V44444r   c                 $    t          |            d S r5   )rd   )ru   s    r   test_allr      s    JJJJJr   )rU   rI   r   ry   r   r   r
   tfuncsr   r   r   rw   settings_v_2_27_plusrS   _v_2_15_plusr   dirname__file__r   r'   r1   bam_methodsr}   rK   rd   r   r   r   r   r   <module>r      s          				                 ) ) )  
 ""# 0,---.////% 0j.A.N 0,---.///7??8$$@@<@@@	$ 	$ 	$  4   32;;66	 
1 1 1hc5 c5 c5L    r   