File: //lib/python3.6/site-packages/ipalib/__pycache__/cli.cpython-36.opt-1.pyc
3
�d[e=� �
@ s� d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl Z ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZyddlZddlZW n ek
r� d ZZY nX ddlZddlmZ ddlmZmZmZmZ ejr�eZ ej!�re"e� ej#d� ddl$m%Z% ddl$m&Z& dd l$m'Z' dd
l(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1 ddl2m3Z3m4Z4 ddl5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z; dd
l<m=Z= ddl$m>Z> ddl?m@Z@ ddlAmBZB ddlCZCejDeE�ZFdd� ZGdd� ZHG dd� de&jI�ZJG dd� de%jK�ZLG dd� de%jM�ZNG dd� dejO�ZPG dd� de%jM�ZQG dd � d e%jM�ZReLeQeRfZSG d!d"� d"�ZTG d#d$� d$ejU�ZVG d%d&� d&ejW�ZXG d'd(� d(e&jY�ZZG d)d*� d*ejU�Z[eZeJeQeLeNfZ\d+d,� Z]dS )-z+
Functionality for Command Line Interface.
� )�print_functionN)�input)�check_client_configuration� get_pager�get_terminal_height�
open_in_pagerzutf-8)�frontend)�backend)�plugable) �PublicError�CommandError� HelpError�
InternalError�NoSuchNamespaceError�ValidationError�NotFound�NotConfiguredError�PromptFailed)�CLI_TAB�LDAP_GENERALIZED_TIME_FORMAT)�File�
BinaryFile�Str�Enum�Any�Flag)�_)�api)�DNSName)�ScriptErrorc C s | j dd�S )zl
Takes a Python identifier and transforms it into form suitable for the
Command Line Interface.
r �-)�replace)�name� r# �/usr/lib/python3.6/cli.py�to_cliP s r% c C s t | �jdd�S )zh
Takes a string from the Command Line Interface and transforms it into a
Python identifier.
r r )�strr! )�cli_namer# r# r$ �from_cliY s r( c @ sF e Zd ZdZdd� ZdHdd�Zdd� Zejr>d d
� Z dd� Z
nd
d
� Z dd� Z
dIdd�Zdd� Zdd� Z
dJdd�ZdKdd�ZdLdd�ZdMdd�ZdNd d!�Zdi d"gdfd#d$�ZdOd%d&�ZdPd'd(�ZdQd+d,�Zd-d.� Zd/d0� Zd1d2� Zd3d4� Zd5d6� ZdRd7d8�Zd9d:� Zefd;d<�Zd=d>� Z dSd@dA�Z!dTdBdC�Z"dUdDdE�Z#dVdFdG�Z$dS )W�textuiz;
Backend plugin to nicely format output to stdout.
c C sT t jj� rPy0tjt jtjtjddddd��}tj d|�d S t
k
rN Y nX dS )z�
Return the width (in characters) of output tty.
If stdout is not a tty, this method will return ``None``.
ZHHHHr � N)�sys�stdout�isatty�fcntlZioctl�termiosZ
TIOCGWINSZ�struct�pack�unpack�IOError)�selfZwinsizer# r# r$ �
get_tty_widthf s
ztextui.get_tty_widthNc sb t |�ttfkr"tdtt|f ��t|�dkr2dS � dkrLtdd� |D ��S t� fdd�|D ��S )a�
Return the max width (in characters) of a specified column.
For example:
>>> ui = textui(api)
>>> rows = [
... ('a', 'package'),
... ('an', 'egg'),
... ]
>>> ui.max_col_width(rows, col=0) # len('an')
2
>>> ui.max_col_width(rows, col=1) # len('package')
7
>>> ui.max_col_width(['a', 'cherry', 'py']) # len('cherry')
6
zrows: need %r or %r; got %rr Nc s s | ]}t |�V qd S )N)�len)�.0�rowr# r# r$ � <genexpr>� s z'textui.max_col_width.<locals>.<genexpr>c 3 s | ]}t |� �V qd S )N)r6 )r7 r8 )�colr# r$ r9 � s )�type�list�tuple� TypeErrorr6 �max)r4 �rowsr: r# )r: r$ �
max_col_widthw s ztextui.max_col_widthc C s t |dd �d krdS |jS )N�encodingzUTF-8)�getattrrB )r4 �streamr# r# r$ Z__get_encoding� s ztextui.__get_encodingc sL t |�tkr"� jtj�}|j|�S t |�ttfkrHt� fdd�|D ��S |S )z1
Decode text from stdin.
c 3 s | ]}� j |�V qd S )N)�decode)r7 �v)r4 r# r$ r9 � s z textui.decode.<locals>.<genexpr>)r; �bytes�_textui__get_encodingr+ �stdinrE r<