File: //lib/python3/dist-packages/django/db/backends/oracle/__pycache__/base.cpython-310.pyc
o
3�a�X �
@ s� d Z ddlZddlZddlZddlZddlmZ ddlmZ ddl m
Z
ddlmZ ddl
mZ ddlmZ dd lmZmZ dd
lmZ dd� Zed
dg� zddlZW n eyf Z ze
de ��dZ[ww ddlmZ ddlmZ ddlm Z ddl!m"Z" ddl#m$Z$ ddl%m&Z& ddl'm(Z(m)Z) ddl*m+Z+ edd� �Z,G dd� d�Z-G dd� de�Z.G dd � d �Z/G d!d"� d"�Z0G d#d$� d$�Z1dS )%ze
Oracle database backend for Django.
Requires cx_Oracle: https://oracle.github.io/python-cx_Oracle/
� N)�contextmanager)�settings)�ImproperlyConfigured)�IntegrityError)�BaseDatabaseWrapper)�async_unsafe)�force_bytes� force_str)�cached_propertyc
C s| t �� �� �d�r6zdd l}W n ty! } ztd| ��d }~ww |�d�}| D ]
\}}|�||� q)d S t j
�| � d S )N�CYGWINr z_Error loading ctypes: %s; the Oracle backend requires ctypes to operate correctly under Cygwin.�kernel32)�platform�system�upper�
startswith�ctypes�ImportErrorr �CDLL�SetEnvironmentVariableA�os�environ�update)r r �er �name�value� r �@/usr/lib/python3/dist-packages/django/db/backends/oracle/base.py�_setup_environment s ���
�r )�NLS_LANGz .AL32UTF8)�ORA_NCHAR_LITERAL_REPLACE�TRUEz"Error loading cx_Oracle module: %s� )�DatabaseClient)�DatabaseCreation)�DatabaseFeatures)�DatabaseIntrospection)�DatabaseOperations)�DatabaseSchemaEditor)�Oracle_datetime�dsn)�DatabaseValidationc
c sv � zd V W d S t jy: } z&| jd }t|d�r5t|d�r5|jdkr5d|jv s.d|jv r5tt| j�� �� d } ~ ww )Nr �code�messagei+ z ORA-02291z ORA-00001)�Database�
DatabaseError�args�hasattrr+ r, r �tuple)r �xr r r �wrap_oracle_errors? s �
��
��r3 c @ s e Zd Zddd�ZdS )�!_UninitializedOperatorsDescriptorNc C s&