a
    Sic£
  ã                   @   sB   d Z ddlZddlmZ dd„ Zdd„ ZG d	d
„ d
ƒZdd„ ZdS )z7
    Implements a portion of the selection operations.
é    Né   )Úh5sc                    sŠ   t |ƒdkrˆ }nLˆ jdu r&tdƒ‚n8t‡ fdd„|D ƒƒrFtdƒ‚nt ‡ fdd„|D ƒ¡}t |ƒd	kr~|j|d  d }n|}||fS )
z„ Returns a 2-tuple containing:

    1. Output dataset dtype
    2. Dtype containing HDF5-appropriate description of destination
    r   Nz+Field names only allowed for compound typesc                 3   s   | ]}|ˆ j vV  qd S ©N)Únames)Ú.0Úx©Údataset_dtype© úP/var/www/html/django/DPS/env/lib/python3.9/site-packages/h5py/_hl/selections2.pyÚ	<genexpr>   ó    zread_dtypes.<locals>.<genexpr>z#Field does not appear in this type.c                    s   g | ]}|ˆ j | d  f‘qS )r   )Úfields)r   Únamer   r
   r   Ú
<listcomp>"   r   zread_dtypes.<locals>.<listcomp>é   )Úlenr   Ú
ValueErrorÚanyÚnpÚdtyper   )r	   r   Zformat_dtypeÚoutput_dtyper
   r   r   Úread_dtypes   s    


r   c                 C   sP   | j dkrtdƒ‚|dkr d}n|tfkr0d}ntdƒ‚|  ¡ }| ¡  ||fS )z“ Returns a 2-tuple containing:

    1. Output dataset shape
    2. HDF5 dataspace containing source selection.

    Works for scalar datasets.
    r
   z1Illegal selection function for non-scalar datasetNú-Illegal slicing argument for scalar dataspace)ÚshapeÚRuntimeErrorÚEllipsisr   Ú	get_spaceÚ
select_all)ÚdsidÚargsÚ	out_shapeZsource_spacer
   r
   r   Úread_selections_scalar.   s    	

r"   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚScalarReadSelectionz5
        Implements slicing for scalar datasets.
    c                 C   sB   |dkrd | _ n|tfkr"d| _ ntdƒ‚t tj¡| _|| _d S )Nr
   r   )Úmshaper   r   r   ÚcreateÚSCALARÚmspaceÚfspace)Úselfr(   r    r
   r
   r   Ú__init__P   s    
zScalarReadSelection.__init__c                 c   s   | j  ¡  | j| j fV  d S r   )r'   r   r(   )r)   r
   r
   r   Ú__iter__[   s    
zScalarReadSelection.__iter__N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r*   r+   r
   r
   r
   r   r#   J   s   r#   c                 C   s   | j dkrt| |ƒS tƒ ‚dS )zn Top-level dispatch function for reading.

    At the moment, only supports reading from scalar datasets.
    r
   N)r   r#   ÚNotImplementedError)r(   r    r
   r
   r   Úselect_read_   s    

r1   )	r/   Únumpyr   Ú r   r   r"   r#   r1   r
   r
   r
   r   Ú<module>
   s   