File: //lib64/python3.9/site-packages/gi/__pycache__/_option.cpython-39.opt-1.pyc
a
    f�_T3  �                   @   s�   d Z ddlZddlZddlmZmZmZmZmZ ddlm	Z	 ddl
mZ ddlm
Z
 e	d�Ze�e�� �Zg d	�ZG d
d� dej�ZG dd
� d
ej�ZG dd� dej�ZeZdS )a,  GOption command line parser
Extends optparse to use the GOptionGroup, GOptionEntry and GOptionContext
objects. So it is possible to use the gtk, gnome_program and gstreamer command
line groups and contexts.
Use this interface instead of the raw wrappers of GOptionContext and
GOptionGroup in glib.
�    N)�
OptParseError�OptionError�OptionValueError�BadOptionError�OptionConflictError�   )�get_introspection_module)�_gi)�GError�GLib)	r   r   r   r   r   �Option�OptionGroup�OptionParser�make_optionc                   @   sN   e Zd ZdZejjd Zejjg d� Zdej	 Z
dd� Zdd� Zd	d
� Z
dS )r   a�  Represents a command line option
    To use the extended possibilities of the GOption API Option
    (and make_option) are extended with new types and attributes.
    Types:
        filename   The supplied arguments are read as filename, GOption
                   parses this type in with the GLib filename encoding.
    :ivar optional_arg:
        This does not need a arguement, but it can be supplied.
    :ivar hidden:
        The help list does not show this option
    :ivar in_main:
        This option apears in the main group, this should only
        be used for backwards compatibility.
    Use Option.REMAINING as option name to get all positional arguments.
    .. NOTE::
        Every argument to an option is passed as utf-8 coded string, the only
        exception are options which use the 'filename' type, its arguments
        are passed as strings in the GLib filename encoding.
    For further help, see optparse.Option.
    )�filename)�hidden�in_main�optional_arg�--c                 O   s^   t jj| g|�R i |�� | js(td��t| j�t| j�k rDtd��| jsZtd| jd ��d S )Nz!%s at least one long option name.z;%s at least more long option names than short option names.z%s needs a help message.r   )�optparser   �__init__�
_long_opts�
ValueError�len�_short_opts�help��self�args�kwargs� r    �0/usr/lib64/python3.9/site-packages/gi/_option.pyr   ^   s    �zOption.__init__c                 C   sF   | j |v r| j�| j � tj�| |� t| j�t| j�krBtd��d S )NzCgoption.Option needs more long option names than short option names)	�	REMAININGr   �appendr   r   �_set_opt_stringr   r   r   )r   Zoptsr    r    r!   r$   j   s
    
zOption._set_opt_stringc                 c   s�   d}| j r|tjjO }| jr(|tjjO }| �� rD| jrP|tjjO }n|tjj	O }| j
dkrf|tjjO }t| j
| j�D ]@\}}|d }t|t�s�|�d�}|dd � ||| j| jfV  qt| j
t| j�d � D ] }|dd � d|| j| jfV  q�d S )Nr   r   r   zutf-8�   �    )r   r   ZOptionFlagsZHIDDENr   ZIN_MAINZtakes_valuer   ZOPTIONAL_ARGZNO_ARG�typeZFILENAME�zipr   r   �
isinstance�bytes�encoder   �metavarr   )r   �flagsZ	long_nameZ
short_nameZshort_bytesr    r    r!   �_to_goptionentriesr   s$    
zOption._to_goptionentriesN)�__name__�
__module__�__qualname__�__doc__r   r   ZTYPESZATTRSr   ZOPTION_REMAININGr"