a
    kJh                     @   s   d dl mZ d dlmZ d dlmZ d dlZd dlZd dlmZ d dl	m
Z
 g dZdd	d
ZdddZG dd de
ZG dd deZdS )    )convert_path)log)DistutilsOptionErrorN)configparser)Command)config_fileedit_configoption_basesetoptlocalc                 C   sh   | dkrdS | dkr,t jt jtjdS | dkrZt jdkrBdpDd}t jtd	| S t	d
| dS )zGet the filename of the distutils, local, global, or per-user config

    `kind` must be one of "local", "global", or "user"
    r   z	setup.cfgglobalzdistutils.cfguserposix. z~/%spydistutils.cfgz7config_file() type must be 'local', 'global', or 'user'N)
ospathjoindirname	distutils__file__name
expanduserr   
ValueError)kinddot r   K/var/www/shaz/venv/lib/python3.9/site-packages/setuptools/command/setopt.pyr      s    r   Fc           	   	   C   s<  t d|  t }|| g | D ]\}}|du rRt d||  || q(||stt d||  |	| | D ]p\}}|du rt d|||  |
|| ||st d||  || q|t d||||  |||| q|q(t d|  |s8t| d	}|| W d   n1 s.0    Y  dS )
aY  Edit a configuration file to include `settings`

    `settings` is a dictionary of dictionaries or ``None`` values, keyed by
    command/section name.  A ``None`` value means to delete the entire section,
    while a dictionary lists settings to be changed or deleted in that section.
    A setting of ``None`` means to delete that setting.
    zReading configuration from %sNzDeleting section [%s] from %szAdding new section [%s] to %szDeleting %s.%s from %sz#Deleting empty [%s] section from %szSetting %s.%s to %r in %sz
Writing %sw)r   debugr   RawConfigParserreaditemsinforemove_sectionhas_sectionadd_sectionremove_optionoptionssetopenwrite)	filenamesettingsdry_runoptssectionr(   optionvaluefr   r   r   r   !   s>    


r   c                   @   s0   e Zd ZdZg dZddgZdd Zdd Zd	S )
r	   z<Abstract base class for commands that mess with config files))global-configgz0save options to the site-wide distutils.cfg file)user-configuz7save options to the current user's pydistutils.cfg file)z	filename=r3   z-configuration file to use (default=setup.cfg)r4   r6   c                 C   s   d | _ d | _d | _d S N)global_configuser_configr,   selfr   r   r   initialize_options\   s    zoption_base.initialize_optionsc                 C   sv   g }| j r|td | jr,|td | jd urB|| j |sT|td t|dkrjtd||\| _d S )Nr   r   r      z/Must specify only one configuration file option)r9   appendr   r:   r,   lenr   )r<   	filenamesr   r   r   finalize_optionsa   s    
zoption_base.finalize_optionsN)__name__
__module____qualname____doc__user_optionsboolean_optionsr=   rB   r   r   r   r   r	   L   s   
r	   c                   @   sF   e Zd ZdZdZg dej Zejdg Zdd Zdd Z	d	d
 Z
dS )r
   z#Save command-line options to a filez1set an option in setup.cfg or another config file))zcommand=czcommand to set an option for)zoption=ozoption to set)z
set-value=szvalue of the option)removerzremove (unset) the valuerL   c                 C   s&   t |  d | _d | _d | _d | _d S r8   )r	   r=   commandr1   	set_valuerL   r;   r   r   r   r=      s
    
zsetopt.initialize_optionsc                 C   sB   t |  | jd u s| jd u r&td| jd u r>| js>tdd S )Nz%Must specify --command *and* --optionz$Must specify --set-value or --remove)r	   rB   rN   r1   r   rO   rL   r;   r   r   r   rB      s
    
zsetopt.finalize_optionsc                 C   s*   t | j| j| jdd| jii| j d S )N-_)r   r,   rN   r1   replacerO   r.   r;   r   r   r   run   s    z
setopt.runN)rC   rD   rE   rF   descriptionr	   rG   rH   r=   rB   rS   r   r   r   r   r
   s   s   r
   )r   )F)distutils.utilr   r   r   distutils.errorsr   r   Zsetuptools.extern.six.movesr   
setuptoolsr   __all__r   r   r	   r
   r   r   r   r   <module>   s   

+'