<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
a
    `8a                     @   sh   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m	Z	m
Z
 ddlmZ dZG d	d
 d
eZdS )    N)deepcopy   )Configuration)BooleanSettingChoiceSettingListSetting   )Source)CommandLineSourcec                       sx   e Zd Zd fdd	Zdd Zdd Zdd	 Zd
d Zdd Zdd Z	dd Z
dd Zdd Zdd ZdddZ  ZS )r
   Nc                    s   t t|   |d u r(tjdd  | _n6t|tr@t	|| _nt|t
tfrV|| _ntd|| _|pji | _|pti | _|p~d| _d S )Nr   z-arguments must be a string or list of strings )superr
   __init__sysargv	arguments
isinstance
basestringshlexsplitlisttuple	TypeErrorversionoptionsparser_options
positional)selfr   r   r   r   r   	__class__r   S/home/carl/code/landscape/setoptconf-tmp/build/lib/setoptconf/source/commandline.pyr      s    


zCommandLineSource.__init__c                 C   sT   |j | jv r,d| j|j  v r,| j|j  d S g }d|j  dd }|| |S )Nflagsz--%s_-)namer   lowerreplaceappend)r   settingr    flagr   r   r   	get_flags,   s    
zCommandLineSource.get_flagsc                 C   s.   t |tr|jrdS dS t |tr&dS dS d S )Nstore_false
store_truer&   store)r   r   defaultr   r   r'   r   r   r   
get_action6   s
    

zCommandLineSource.get_actionc                 C   s   t jS N)argparseSUPPRESSr.   r   r   r   get_default?   s    zCommandLineSource.get_defaultc                 C   s.   t |ttfrd S t |tr$|jjS |jS d S r0   )r   r   r   r   subtypesanitizer.   r   r   r   get_typeD   s
    
zCommandLineSource.get_typec                 C   s   |j S r0   )r#   r.   r   r   r   get_destL   s    zCommandLineSource.get_destc                 C   s   t |tr|jS d S d S r0   )r   r   choicesr.   r   r   r   get_choicesO   s    
zCommandLineSource.get_choicesc                 C   s0   |j | jv r,d| j|j  v r,| j|j  d S d S )Nhelpr#   r   r.   r   r   r   get_helpU   s    zCommandLineSource.get_helpc                 C   s0   |j | jv r,d| j|j  v r,| j|j  d S d S )Nmetavarr;   r.   r   r   r   get_metavar[   s    zCommandLineSource.get_metavarc                 C   s   |  |}| |}| |}| |}| |}| |}| |}| |}	||||d}
|rj||
d< |rv||
d< |	r|	|
d< ||
fS )N)actionr-   destr:   typer8   r=   )r)   r/   r3   r6   r7   r9   r<   r>   )r   r'   r    r?   r-   Zargtyper@   r8   Zarghelpr=   argument_kwargsr   r   r   build_argumenta   s(    







z CommandLineSource.build_argumentc                 C   s   t | j}|ds"|r"|j|d< tjf i |}| jd u}|D ]4}| |\}}|j|i | |r@|jdkr@d}q@|r|jddd| j d | j	r| j	D ]\}	}
|j|	fi |
 q|S )Nprogr   Fz	--versionz	%(prog)s )r?   r   )
r   r   getr#   r1   ArgumentParserr   rC   add_argumentr   )r   settingsmanagerr   parserZadd_versionr'   r    rB   r#   r   r   r   r   build_parserz   s$    


zCommandLineSource.build_parserc           
      C   s   |  ||}|| j}|D ]}t||jrt||j|_q| jr~|r~i }| jD ] \}}	t||rPt||||< qPt|d| t	||dS )Nr   )rH   parent)
rK   
parse_argsr   hasattrr#   getattrvaluer   setattrr   )
r   rH   rI   rL   rJ   parsedr'   r   r#   r!   r   r   r   
get_config   s    

zCommandLineSource.get_config)NNNNN)NN)__name__
__module____qualname__r   r)   r/   r3   r6   r7   r9   r<   r>   rC   rK   rS   __classcell__r   r   r   r   r
      s"        
	r
   )r1   r   r   copyr   configr   r'   r   r   r   baser	   __all__r
   r   r   r   r   <module>   s   