3
���h�# � @ s2 d dl m Z mZ d dlZd dlZd dlZddlmZ ddl m
Z
mZmZm
Z
dd� Zd7d d
�Zdd� Zd
d� Zdd� Zd8dd�Zd9dd�Zdd� Zdd� Zd:dd�Zdd� Zdd � Zd!d"� Zd;d$d%�Zd<d&d'�Zd(Zd)d*� Zd=d+d,�Zej ed-ed.�Z!ej ed/ed.�Z"ej ed0ed.�Z#d1d2� Z$d3d4� Z%d5d6� Z&dS )>� )�datetime� timedeltaN� )�OPTIONS)� iteritems�unicode_type�
bytes_type�dask_array_typec C s@ t | �}t|�|kr(|d|d � d S |d|t|� S dS )z�Given an object `x`, call `str(x)` and format the returned string so
that it is numchars long, padding with trailing spaces or truncating with
ellipses as necessary
N� z...� )�str�len)�x�numchars�s� r �6/tmp/pip-build-5_djhm0z/xray/xarray/core/formatting.py�pretty_print s r � c C s8 |d krt |�}dd| }||jdd� | j� D �� S )N�
r c s s | ]
}|V qd S )Nr )�.0r r r r � <genexpr> s zwrap_indent.<locals>.<genexpr>)r
�join�
splitlines)�text�start�length�indentr r r �wrap_indent s r c C s� d| k ot j| �kn s"t�t j| d d d� �}t j||k�}tt jt|�t jd|f | ��}dt | �d | t
|�f t
d �f| }|S )Nr r ���)r )�np�prod�AssertionErrorZcumprod�argmax�int�ceil�floatZr_r
�slice)�shape� n_desiredZ cum_itemsZn_steps�stop�indexerr r r �_get_indexer_at_least_n_items s "$r, c C sP |dk rt d��| jdkrg S || jk r<t| j|�}| | } tj| �jd|� S )z-Returns the first n_desired items of an arrayr zmust request at least one itemr N)�
ValueError�sizer, r( r �asarrayZflat)r r) r+ r r r �
first_n_items( s
r0 c C sP t tj| ��}y|j� \}}W n tk
r2 |S X |dkr@|S d||f S dS )zECast given object to a Timestamp and return a nicely formatted stringz00:00:00z%sT%sN)r �pdZ Timestamp�splitr- )�tZdatetime_strZdate_str�time_strr r r �format_timestamp; s r5 c C sZ t tj| ��}y|jd�\}}W n tk
r4 |S X |dkrF|d S |dkrR|S |S dS )zECast given object to a Timestamp and return a nicely formatted stringz days �datez days�timeN)r r1 Z Timedeltar2 r- )r3 �timedelta_formatZ
timedelta_strZdays_strr4 r r r �format_timedeltaJ s r9 Tc C sx t | tjtf�rt| �S t | tjtf�r4t| |d�S t | tt f�rR|rNt
| �S | S t | ttjf�rldj| �S t
| �S dS )z3Returns a succinct summary of an object as a string)r8 z{0:.4}N)�
isinstancer Z
datetime64r r5 �timedelta64r r9 r r �reprr& |