
    kh                     Z   d Z ddlZddlZddlmZ ddlmZ ddlmZm	Z	 ddl
mZ ddlmZ ddlmZmZmZ dd	lmZ d
 Zd Zd Zd Zd Zd Zd Zedefedefed ed          fedefedefedefed ed          fedefedefedefed ed          fedefgZ G d de          ZdS )z.
sqldns.py

Prints Data Source Name on stdout
    N)List)settings)BaseCommandCommandError)color_style)DEFAULT_DB_ALIAS)SQLITE_ENGINESPOSTGRESQL_ENGINESMYSQL_ENGINES)RemovedInNextVersionWarningc                     |S N dbhostdbportdbnamedbuserdbpasss        c/var/www/histauto/venv/lib/python3.11/site-packages/django_extensions/management/commands/sqldsn.py_sqlite_namer      s    M    c           	      :    d|  d| d| d| d	}|	|d| dz  }|S )Nzhost="z", db="z	", user="z", passwd=""z, port="r   r   r   r   r   r   dsnstrs         r   _mysql_keyvaluer      sK    RfRRVRRfRRRRRF&V&&&&Mr   c           	      8    d|  d| d| d| d	}||d| z  }|S )Nz-h "z" -D "z" -u "z" -p "r   z -P r   r   s         r   _mysql_argsr      sE    GFGG&GGGGfGGGF///!Mr   c           	      :    d|  d| d| d| d	}|	|d| dz  }|S )Nzhost='z
' dbname='z' user='z' password=''z port='r   r   s         r   _postgresql_keyvaluer"   &   sK    UfUUUUUUFUUUF%F%%%%Mr   c                 6    d| d|d|d|}||d|z  }|S )Nzhost=z, database=z, user=z, password=z, port=r   r   s         r   _postgresql_kwargsr$   -   sJ    UUUVUUfUU6UU  &F&&&Mr   c                 J    d                     d | ||||fD                       S )N:c              3   4   K   | ]}t          |          V  d S r   )str).0ss     r   	<genexpr>z%_postgresql_pgpass.<locals>.<genexpr>7   s(      MMqCFFMMMMMMr   )joinr   s        r   _postgresql_pgpassr-   6   s.    88MMVVVVV$LMMMMMMr   c                       fd}|S )Nc                     | pd}||dk    r|d| z  }||dk    r|}||dk    r|d| z  }| d| } d| d| S )N r&   @z:///r   )r   r   r   r   r   hostuserengines          r   innerz_uri.<locals>.inner;   s    |&B,,LLL D&B,,D!fllF$##T##D,,T,,F,,,r   r   )r5   r6   s   ` r   _urir7   :   s#    	- 	- 	- 	- 	- Lr   filenameurisqlitekeyvalueargsmysqlkwargs
postgresqlpgpassc                   N     e Zd ZU dZg Zee         ed<   dZ fdZ	d Z
d Z xZS )Commandz1Prints DSN on stdout, as specified in settings.pyrequires_system_checksTc           	         t                                          |           |                                }|                    ddddt          d           |                    dt          dt          z  	           t          t          d
 t          D                                 }|                    ddddd |dgz   d           |                    dddddd           |                    dddddd           d S )Nz-Rz--routerstorerouterzPUse this router-database other then default (deprecated: use --database instead))actiondestdefaulthelpz
--databasezGNominates a database to run command for. Defaults to the "%s" database.)rI   rJ   c                     g | ]
\  }}}||S r   r   )r)   _styles      r   
<listcomp>z)Command.add_arguments.<locals>.<listcomp>v   s#    KKK;1eQ9J9J9J9Jr   z-sz--stylerM   allzDSN format style.)rG   rH   rI   choicesrJ   z-az--all
store_trueFz Show DSN for all database routesz-qz--quietquietzQuiet mode only show DSN)superadd_argumentsadd_mutually_exclusive_groupadd_argumentr   sortedset_FORMATTERS)selfparserdbspecstyles	__class__s       r   rT   zCommand.add_arguments^   sc   f%%%4466$7 	 
	
 
	
 
	
 	$1 	 	 	
 	
 	
 KK+KKKLL
 
 	eW$$ 	 	
 	
 	
 	3 	 	
 	
 	
 	+ 	 	
 	
 	
 	
 	
r   c                    t                      | _        |d         }|rt          j                                        }n?|d         g}|d         t
          k    r%t          j        dt          d           |d         g}t          |          D ]@\  }}|dk    rt          j                            d           |                     ||           Ad S )	NrO   databaserF   z2--router is deprecated. You should use --database.   )
stacklevelr   
)r   rM   r   	DATABASESkeysr   warningswarnr   	enumeratesysstdoutwriteshow_dsn)rZ   r<   optionsall_databases	databasesir`   s          r   handlezCommand.handle   s     ]]
 
	0 *//11II ,-Ix $444H/    
 %X./	$Y// 	- 	-KAxAvv
  &&&MM(G,,,,	- 	-r   c           	      H  	
 t           j                            |          }|d         }|d         |t          d|z            |                    d          |                    d          |                    d          
|                    d          	|                    d          |                    d	          d
k    rd 	
fdt          D             }|sOd                    fdt          D                       }| j                            |rd d d| dnd          g}|s>t          j	        
                    | j                            d|dd                     |D ]$}t          j	        
                    | d           %d S )NrR   rM   zUnknown database %sENGINEUSERPASSWORDNAMEHOSTPORTr0   c           	      Z    g | ]'\  }}}
|v r	|k    s	d k    | |          (S )rO   r   )r)   enginesrM   	formatterr   r   r   r   r   	dsn_styler5   s       r   rN   z$Command.show_dsn.<locals>.<listcomp>   sc     
 
 
)	  e##yE'9'9e>O Ifffff== ?P>O>Or   z, c              3   0   K   | ]\  }}}|v 
||V  d S r   r   )r)   rz   rM   rL   r5   s       r   r+   z#Command.show_dsn.<locals>.<genexpr>   sE       " "%GUAW$$): ):):):):" "r   zInvalid style z for z (available: )z$Unknown database, can't generate DSNzDSN for database z with engine z:
rc   )r   rd   getr   rY   r,   rM   ERRORri   rj   rk   	SQL_TABLE)rZ   r`   rm   dbinforR   dsn	availableoutputr   r   r   r   r   r|   r5   s           @@@@@@@r   rl   zCommand.show_dsn   s   #''11 G$	>4x?@@@H%%F##J''F##F##F##R<<F
 
 
 
 
 
 
 
 
 
-8
 
 
  			 " " " ")4" " "  I 
   @VYVVVVV)VVVV? C  	J
$$NNNNNN     	, 	,FJ]]]++++	, 	,r   )__name__
__module____qualname__rJ   rC   r   r(   __annotations__can_import_settingsrT   rq   rl   __classcell__)r^   s   @r   rB   rB   Y   sy         >D(*DI***2
 2
 2
 2
 2
h- - -*., ., ., ., ., ., .,r   rB   )__doc__ri   rf   typingr   django.confr   django.core.management.baser   r   django.core.management.colorr   	django.dbr   django_extensions.settingsr	   r
   r   #django_extensions.utils.deprecationr   r   r   r   r"   r$   r-   r7   rY   rB   r   r   r   <module>r      s    


                    A A A A A A A A 4 4 4 4 4 4 & & & & & & X X X X X X X X X X K K K K K K          N N N    T<(Z.UDDNN+D/*J0FK(E44==)34%9:#56\ 2 23#56 |, |, |, |, |,k |, |, |, |, |,r   