3
���h�D � @ s� d dl Z d dlZd dlmZ d dlmZ d dlZd dlZ ddl
mZ ddl
mZ ddl
m
Z
ddl
mZ dd l
mZ dd
l
mZ ddl
mZ dd
l
mZ ddlmZmZ ddlmZmZ ddl
mZmZ ddlmZmZ ddlmZmZmZm Z m!Z! ddl"m#Z#m$Z$m%Z%m&Z&m'Z' ddl(m)Z)m*Z*m+Z+m,Z, ddl-m.Z. ddddddddddd d!d"d#gZ/d$d%� Z0d&d'� Z1d5d)d*�Z2d+d,� Z3G d-d.� d.e�Z4G d/d0� d0e5�Z6G d1d2� d2eee�Z7ej8e7d3d4� dS )6� N)�Mapping)�Number� )�ops)�utils)�common)�groupby)�indexing)� alignment)�
formatting� )�conventions)�align�align_variables)�DatasetCoordinates�Indexes)�ImplementsDatasetReduce�BaseDataObject)�merge_datasets�expand_variables)�Frozen�SortedKeysDict�ChainMap�maybe_wrap_array�hashable)�as_variable�Variable�
Coordinate�broadcast_variables�default_index_coordinate)� iteritems�
basestring�OrderedDict�dask_array_type)�concat�year�month�day�hour�minute�second�microsecondZ
nanosecond�date�timeZ dayofyearZ
weekofyearZ dayofweekZquarterc
C s� t |t�st|��|jdd�}t|�dkr2t|��|\}}| | }|jdkrV|j� }n |jdkrntj|j �}nt|��|dkr�t
jdddd g�}|j}||d
d } n
t
||�} ||t|j| �fS )zhGet a virtual variable (e.g., 'time.year') from a dict of
xarray.Variable objects (if possible)
�.r r r ZseasonZDJFZMAMZJJAZSON� � )�
isinstancer! �KeyError�split�len�ndim�to_index�pdZ Timestamp�values�np�arrayr& |