
    e                        d dl mZ d dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ  G d	 d
      Zy)    )annotationsN)Path)PackageToLint)PrimerCommand)CompareCommand)PrepareCommand)
RunCommandc                  D    e Zd ZdZddZddZed	d       Zed
d       Zy)Primerz)Main class to handle priming of packages.c                   || _         t        j                  d      | _        | j                  j	                  dd      | _        | j
                  j                  d      }|j                  ddd	d
       |j                  ddd	d
       |j                  ddd	d
       |j                  ddd	d
       | j
                  j                  d      }|j                  dddgdd       |j                  dd
t        d       |j                  dd
t        d       | j
                  j                  d      }|j                  ddd        |j                  d!dd"        |j                  d#dd$        |j                  dd
t        d%       | j                  j                         | _
        | j                  |      | _        	 | j                  j                  dk(  rt        }n?| j                  j                  dk(  rt        }n| j                  j                  dk(  rt         } | j                   | j                  | j                        | _        y )&NzPylint Primer)progcommandT)destrequiredpreparez--clonezClone all packages.
store_trueF)helpactiondefaultz--checkz0Check consistencies and commits of all packages.z--make-commit-stringzGet latest commit string.z--read-commit-stringzPrint latest commit string.runz--typemainprzType of primer run.)choicesr   r   z	--batcheszNumber of batches)r   typer   z
--batchIdxz"Portion of primer packages to run.comparez--base-filez(Location of output file of the base run.)r   r   z
--new-filez'Location of output file of the new run.z--commitz+Commit hash of the PR commit being checked.zLNumber of batches (filepaths with the placeholder BATCHIDX will be numbered))primer_directoryargparseArgumentParser_argument_parseradd_subparsers_subparsers
add_parseradd_argumentint
parse_argsconfig_get_packages_to_lint_from_jsonpackagesr   r   r	   r   )selfr   	json_pathprepare_parser
run_parsercompare_parsercommand_classs          A/usr/lib/python3/dist-packages/pylint/testutils/_primer/primer.py__init__zPrimer.__init__   sv    0 ( 7 7_ M00??T @ 

 ))44Y?##1,PU 	$ 	
 	##C	 	$ 	
 	##",	 	$ 	
 	##".	 	$ 	
 %%007
vtntBW 	  	
 	$	 	  	
 	5	 	  	
 ))44Y?##; 	$ 	

 	##: 	$ 	

 	##> 	$ 	

 	##_	 	$ 	
 ++668<<YG$;;)+1?M[[  E)&M[[  I-*M$T%:%:DMM4;;W    c                8    | j                   j                          y N)r   r   )r)   s    r/   r   z
Primer.runn   s    r1   c                    | j                  dd       }|syt        d |j                  d      D              }|t        j                  d d k  S )Nminimum_pythonTc              3  2   K   | ]  }t        |        y wr3   )r$   ).0ns     r/   	<genexpr>z3Primer._minimum_python_supported.<locals>.<genexpr>v   s      KAQ Ks   .   )gettuplesplitsysversion_info)package_datamin_python_strmin_python_tuples      r/   _minimum_python_supportedz Primer._minimum_python_supportedq   sO    %))*:DA  K1E1Ec1J KK3#3#3BQ#777r1   c                    t        | d      5 }t        j                  |      j                         D ci c]&  \  }}t        j                  |      r|t        di |( c}}cd d d        S c c}}w # 1 sw Y   y xY w)Nutf8)encoding )openjsonloaditemsr   rD   r   )r*   fnamerA   s       r/   r'   z&Primer._get_packages_to_lint_from_jsony   su    )f- 	 +/))A,*<*<*>&D,33LA m3l33	 		 	s   'A3+A- A3-A33A<N)r   r   r*   r   returnNone)rO   rP   )rA   zdict[str, str]rO   bool)r*   r   rO   zdict[str, PackageToLint])	__name__
__module____qualname____doc__r0   r   staticmethodrD   r'   rH   r1   r/   r   r      s:    3VXp 8 8  r1   r   )
__future__r   r   rJ   r?   pathlibr   pylint.testutils._primerr   'pylint.testutils._primer.primer_commandr   /pylint.testutils._primer.primer_compare_commandr   /pylint.testutils._primer.primer_prepare_commandr   +pylint.testutils._primer.primer_run_commandr	   r   rH   r1   r/   <module>r^      s1   
 #   
  2 A J J Bm mr1   