
    ~pi                        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 d dlmc mZ d dlmZ eZdddZ G d dej&                        Zy)    )annotationsN)Iterator)chain)ClassVar   )metadata)Distribution   )_ORIGINAL_SUBCOMMANDS)logc              #     K   t        j                  d      D ]   } |j                         |       E d{    " y7 w)z%Find all files under revision controlzsetuptools.file_finders)groupN)r   entry_pointsload)dirnameeps     Z/opt/services/ai/voice_agent/venv/lib/python3.12/site-packages/setuptools/command/sdist.pywalk_revctrlr      s:     ##*CD &2779W%%%&%s   3?=?c                      e Zd ZU dZg dZded<   i Zded<   g dZ ed eD              Z	dd	Z
dd
ZddZeej                  d               Zd fdZ fdZd Zd Zd Zd Z fdZd fdZddZddZd ZddZ xZS )sdistz=Smart sdist that finds anything supported by revision control))zformats=Nz6formats for source distribution (comma-separated list))z	keep-tempkz@keep the distribution tree around after creating archive file(s))z	dist-dir=dzFdirectory to put the source distribution archive(s) in [default: dist])zowner=uz@Owner name used when creating a tar file [default: current user])zgroup=gzAGroup name used when creating a tar file [default: current group]r	   distributionzClassVar[dict[str, str]]negative_opt) z.rstz.txtz.mdc              #  &   K   | ]	  }d |   yw)READMEN ).0exts     r   	<genexpr>zsdist.<genexpr>9   s     @sfSEN@s   c                   | j                  d       | j                  d      }|j                  | _        | j                  j                  t        j
                  j                  |j                  d             | j                          | j                         D ]  }| j                  |        | j                          t        | j                  dg       }| j                  D ]  }dd|f}||vs|j                  |        y )Negg_infozSOURCES.txt
dist_filesr   r   )run_commandget_finalized_commandfilelistappendospathjoinr%   check_readmeget_sub_commandsmake_distributiongetattrr   archive_files)selfei_cmdcmd_namer&   filedatas         r   runz	sdist.run;   s    $++J7RWW\\&//=IJ --/ 	'HX&	' 	 T..bA
&& 	(DR&D:%!!$'	(    c                B    t         j                  j                  |        y N)origr   initialize_optionsr3   s    r   r=   zsdist.initialize_optionsN   s    

%%d+r9   c                    | j                         5  t        j                  j                  |        ddd       y# 1 sw Y   yxY w)z%
        Workaround for #516
        N)_remove_os_linkr<   r   r0   r>   s    r   r0   zsdist.make_distributionQ   s7     !!# 	/JJ((.	/ 	/ 	/s	    :Ac               #     K    G d d      } t        t        d|       }	 t        `	 d || ur|t        _        yy# t        $ r Y !w xY w# || ur|t        _        w w xY ww)zG
        In a context, remove and restore os.link if it exists
        c                      e Zd Zy)&sdist._remove_os_link.<locals>.NoValueN)__name__
__module____qualname__r    r9   r   NoValuerC   _   s    r9   rG   linkN)r1   r+   rH   	Exception)rG   orig_vals     r   r@   zsdist._remove_os_linkX   sp     	 	 2vw/		#w&" '  		
 w&" 's6   A; A
 A	AAAA
AAc                B    t         |           | j                          y r;   )superadd_defaults _add_defaults_build_sub_commandsr3   	__class__s    r   rM   zsdist.add_defaultsm   s    --/r9   c                    t         |           t        j                  j	                  d      r| j
                  j                  d       y y )Nzpyproject.toml)rL   _add_defaults_optionalr+   r,   isfiler)   r*   rO   s    r   rR   zsdist._add_defaults_optionalq   s7    &(77>>*+MM  !12 ,r9   c                    | j                   j                         r[| j                  d      }| j                  j	                  |j                                | j                  | j                  |             yy)zgetting python filesbuild_pyN)r   has_pure_modulesr(   r)   extendget_source_files_add_data_files_safe_data_filesr3   rU   s     r   _add_defaults_pythonzsdist._add_defaults_pythonv   s]    --/11*=HMM  !:!:!<=  !6!6x!@A 0r9   c                      j                  d      }t        |j                               t        z
  } fd|D        }d |D        } j                  j                  t        j                  |             y )Nbuildc              3  @   K   | ]  }j                  |        y wr;   )r(   )r!   cr3   s     r   r#   z9sdist._add_defaults_build_sub_commands.<locals>.<genexpr>   s     D!**1-Ds   c              3  V   K   | ]!  }t        |d       s|j                          # yw)rX   N)hasattrrX   )r!   r`   s     r   r#   z9sdist._add_defaults_build_sub_commands.<locals>.<genexpr>   s#     V!wqBT7U##%Vs   )))r(   setr/   r   r)   rW   r   from_iterable)r3   r^   missing_cmdscmdsfiless   `    r   rN   z&sdist._add_defaults_build_sub_commands}   s]    **73511347LLD|DVtVU0078r9   c                    |j                   S )a  
        Since the ``sdist`` class is also used to compute the MANIFEST
        (via :obj:`setuptools.command.egg_info.manifest_maker`),
        there might be recursion problems when trying to obtain the list of
        data_files and ``include_package_data=True`` (which in turn depends on
        the files included in the MANIFEST).

        To avoid that, ``manifest_maker`` should be able to overwrite this
        method and avoid recursive attempts to build/analyze the MANIFEST.
        )
data_filesr[   s     r   rZ   zsdist._safe_data_files   s     """r9   c                H    | j                   j                  d |D               y)zA
        Add data files as found in build_py.data_files.
        c              3  t   K   | ]0  \  }}}}|D ]$  }t         j                  j                  ||       & 2 y wr;   )r+   r,   r-   )r!   _src_dir	filenamesnames        r   r#   z(sdist._add_data_files.<locals>.<genexpr>   sD      
(7Ay!
  GGLL$'
'
s   68N)r)   rW   )r3   ri   s     r   rY   zsdist._add_data_files   s#     	 
,6
 	
r9   c                l    	 t         |           y # t        $ r t        j                  d       Y y w xY w)Nz&data_files contains unexpected objects)rL   _add_defaults_data_files	TypeErrorr   warnrO   s    r   rq   zsdist._add_defaults_data_files   s/    	?G,. 	?HH=>	?s    33c                    t         |           t        j                  t        j
                        }| j                  j                  d|z   d       y )Nz^(\.tox|\.nox|\.venv)T)is_regex)rL   prune_file_listreescaper+   sepr)   exclude_pattern)r3   ry   rP   s     r   rv   zsdist.prune_file_list   s=    !ii%%&>&Dt%Tr9   c                    | j                   D ]#  }t        j                  j                  |      s# y  | j	                  ddj                  | j                         z          y )Nz,standard file not found: should have one of z, )READMESr+   r,   existsrs   r-   )r3   fs     r   r.   zsdist.check_readme   sK     	Aww~~a 	 II>4<<AXXr9   c                r   t         j                  j                  | ||       t        j                  j                  |d      }t        t        d      rFt        j                  j                  |      r't        j                  |       | j                  d|       | j                  d      j                  |       y )Nz	setup.cfgrH   r%   )r<   r   make_release_treer+   r,   r-   rb   r}   unlink	copy_filer(   save_version_info)r3   base_dirrg   dests       r   r   zsdist.make_release_tree   s{    

$$T8U; ww||Hk22v277>>$#7 IIdONN;-"":.@@Fr9   c                    t         j                  j                  | j                        syt	        | j                  d      5 }|j                         }d d d        |dk7  S # 1 sw Y   dk7  S xY w)NFrbs+   # file GENERATED by distutils, do NOT edit
)r+   r,   rS   manifestopenreadline)r3   fp
first_lines      r   _manifest_is_not_generatedz sdist._manifest_is_not_generated   s\    ww~~dmm,$--& 	'"J	'LLL	'LLLs   AA,c                   t        j                  d| j                         t        | j                  d      }|D ]S  }	 |j	                  d      }|j                         }|j                  d      s|s9| j                  j                  |       U |j                          y# t
        $ r t        j                  d       Y w xY w)zRead the manifest file (named by 'self.manifest') and use it to
        fill in 'self.filelist', the list of files to include in the source
        distribution.
        zreading manifest file '%s'r   zUTF-8z  not UTF-8 decodable -- skipping#N)r   infor   r   decodeUnicodeDecodeErrorrs   strip
startswithr)   r*   close)r3   r   
bytes_linelines       r   read_manifestzsdist.read_manifest   s    
 	-t}}=t," 	'J!((1
 ::<Ds#4MM  &	' 	 & D8#CDEs   B  !CC)returnNone)rD   rE   rF   __doc__user_options__annotations__r   README_EXTENSIONStupler|   r8   r=   r0   staticmethod
contextlibcontextmanagerr@   rM   rR   r\   rN   rZ   rY   rq   rv   r.   r   r   r   __classcell__)rP   s   @r   r   r      s    GL0 -/L*/3@.?@@G(&,/ #  #&03
B9#
?UGMr9   r   )r   )r   r   )
__future__r   r   r+   rw   collections.abcr   	itertoolsr   typingr   
_importlibr   distr	   r^   r   distutils.command.sdistcommandr   r<   	distutilsr   list_default_revctrlr   r    r9   r   <module>r      sI    "  	 	 $   !  ( & &  &@DJJ @r9   