�
���h�E � �. � d dl Z d dlZd dlZd dlZd dlmZ d dlmZ ddlm Z m
Z
ddlmZ ddl
mZ dd lmZmZ dd
lmZ dd�Z ej � � Zd
� Zd� Z dd�Z G d� de� � Z dd�Ze j e j e j d�Z dd�Z! dd�Z"dS )� N)�glob)�BytesIO� )�backends�conventions� )�ArrayWriter)�auto_combine)�close_on_error�
is_remote_uri)�
basestringFc � � |rLt | � � r= dd l}d}nr# t $ r( dd l}d}n# t $ r t d� � �w xY wY nAw xY w dd l}d}n5# t $ r( dd l}d}n# t $ r t d� � �w xY wY nw xY w|S )Nr �netcdf4�pydapzFnetCDF4 or pydap is required for accessing remote datasets via OPeNDAP�scipyzKcannot read or write netCDF files without netCDF4-python or scipy installed)r �netCDF4�ImportErrorr �
ValueError�scipy.io.netcdf)�path�allow_remoter �enginer r s �H/opt/cloudlinux/venv/lib/python3.11/site-packages/xarray/backends/api.py�_get_default_enginer s< � �� F�
�d�+�+� F� @��N�N�N��F�F��� @� @� @�
@����� �����
@�
@�
@� � "?� @� @� @�
@���� �� @���� F��N�N�N��F�F��� F� F� F�
F�&�&�&�&� �����
F�
F�
F� � "E� F� F� F�
F���� �� F���� �MsM � �
A�,�A�A�A�A�A �
B �"A)�(B �)B�B �B c � � | � d� � rd}nC|�t | d�� � }|dk rt | � � rd}nt }n|dk rt }nd}|S )N�.gzFT�r r �h5netcdf)�endswithr r �_global_lock)�filenamer �locks r �
_default_lockr# , s} � ������� �����>�(���E�E�E�F��Y����X�&�&�
$���� $���
�z�
!�
!��D�D��D��K� c �, � d� }| D ]
} ||� � �dS )z8DataArray.name and Dataset keys must be a string or Nonec �x � t | t � � r| st d� � �d S | �t d� � �d S )NzoInvalid name for DataArray or Dataset key: string must be length 1 or greater for serialization to netCDF filesz_DataArray.name or Dataset key must be either a string or None for serialization to netCDF files)�
isinstancer
r � TypeError)�names r �
check_namez+_validate_dataset_names.<locals>.check_nameC sp � ��d�J�'�'� P��
B� � "A� B� B� B�
B�
B� �
�� O� P� P�
P� �
r$ N� )�datasetr* �ks r �_validate_dataset_namesr. A s> |