U
    Cvf
                     @  sd   d dl mZ d dlZd dlZd dlZd dlmZ ede	dG dd dZ
G dd dZdS )	    )annotationsN)assert_identicalexample_accessorc                   @  s   e Zd ZdZdd ZdS )ExampleAccessorzFor the pickling tests below.c                 C  s
   || _ d S N)objselfZ
xarray_obj r
   @/tmp/pip-unpacked-wheel-h316xyqg/xarray/tests/test_extensions.py__init__   s    zExampleAccessor.__init__N)__name__
__module____qualname____doc__r   r
   r
   r
   r   r      s   r   c                   @  sD   e Zd ZddddZddddZddddZddd	d
ZdS )TestAccessorNone)returnc              	   C  s  t dt dG dd d}t  }|jjdks:tt d}|jjdksTt|j|jksdt|jjdksttt jjjdkstt	|j|stt jj|kstt j`t
t jdrttjtdd t dG d	d
 d
}W 5 Q R X t
t jdrtd S )Ndemoc                   @  s$   e Zd ZdZdd Zedd ZdS )z0TestAccessor.test_register.<locals>.DemoAccessorDemo accessor.c                 S  s
   || _ d S r   )_objr   r
   r
   r   r      s    z9TestAccessor.test_register.<locals>.DemoAccessor.__init__c                 S  s   dS )Nbarr
   )r	   r
   r
   r   foo   s    z4TestAccessor.test_register.<locals>.DemoAccessor.fooN)r   r   r   r   r   propertyr   r
   r
   r
   r   DemoAccessor   s   r   r   r   r   z"overriding a preexisting attributematchc                   @  s   e Zd ZdS )z'TestAccessor.test_register.<locals>.FooN)r   r   r   r
   r
   r
   r   Foo7   s   r   )xrregister_dataset_accessorregister_dataarray_accessorDatasetr   r   AssertionErrorZ	DataArrayr   
isinstancehasattrpytestZwarnsWarning)r	   r   dsdar   r
   r
   r   test_register   s$    

zTestAccessor.test_registerc                 C  sh   t  }tt|}t|| |j|jks2td|j_tt|}t|| |jjdksdtd S )Nr   )	r   r!   pickleloadsdumpsr   r   r"   value)r	   r'   Zds_restoredr
   r
   r   test_pickle_dataset>   s    

z TestAccessor.test_pickle_datasetc                 C  s6   t  }|j|jksttt|}t|| d S r   )r   r!   r   r"   r*   r+   r,   r   )r	   arrayZarray_restoredr
   r
   r   test_pickle_dataarrayJ   s    z"TestAccessor.test_pickle_dataarrayc              	   C  s@   t dG dd d}tjtdd t  j W 5 Q R X d S )Nstupid_accessorc                   @  s   e Zd Zdd ZdS )z9TestAccessor.test_broken_accessor.<locals>.BrokenAccessorc                 S  s   t dd S )Nbroken)AttributeErrorr   r
   r
   r   r   U   s    zBTestAccessor.test_broken_accessor.<locals>.BrokenAccessor.__init__N)r   r   r   r   r
   r
   r
   r   BrokenAccessorS   s   r4   zerror initializingr   )r   r   r%   ZraisesRuntimeErrorr!   r1   )r	   r4   r
   r
   r   test_broken_accessorP   s    z!TestAccessor.test_broken_accessorN)r   r   r   r)   r.   r0   r6   r
   r
   r
   r   r      s   )r   )
__future__r   r*   r%   Zxarrayr   Zxarray.testsr   r   r    r   r   r
   r
   r
   r   <module>   s   