�
���h�D � �� � 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. g d�Z/d� Z0d� Z1d$d�Z2d� Z3 G d� de� � Z4 G d� de5� � Z6 G d � d!eee� � Z7 ej8 e7d"�#� � dS )%� 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�microsecond�
nanosecond�date�time� dayofyear�
weekofyear� dayofweek�quarterc �0 � t |t � � st |� � �|� dd� � }t |� � dk rt |� � �|\ }}| | }|j dk r|� � � }n4|j dk rt j |j � � }nt |� � �|dk r,t j g d�� � }|j }||dz dz } nt ||� � } ||t |j | � � fS ) zhGet a virtual variable (e.g., 'time.year') from a dict of
xarray.Variable objects (if possible)
�.r r
r �season)�DJF�MAM�JJA�SON� � )�
isinstancer" |