a
    d                     @   s   d dl Z d dlZd dlmZ ejdkr4d dlmZ nd dlmZ ddl	m
Z
 G dd	 d	ejZG d
d deZG dd deZdS )    N)models)   r   )gettext_lazy)ugettext_lazy   )basec                       sJ   e Zd Z fddZdd Zdd Zddd	Zd
d Z fddZ  Z	S )SemVerFieldc                    s&   | dd tt| j|i | d S )N
max_length   )
setdefaultsuperr   __init__selfargskwargs	__class__ g/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/semantic_version/django_fields.pyr      s    zSemVerField.__init__c                 G   s
   |  |S )zgConvert from the database format.

        This should be the inverse of self.get_prep_value()
        )	to_python)r   valueZ
expression
connectionr   r   r   r   from_db_value   s    zSemVerField.from_db_valuec                 C   s   |d u rd S t |S N)str)r   objr   r   r   get_prep_value    s    zSemVerField.get_prep_valueFc                 C   s   |s|  |}|S r   )r   )r   r   r   preparedr   r   r   get_db_prep_value#   s    
zSemVerField.get_db_prep_valuec                 C   s   |  | |}t|S r   )r   Zvalue_from_objectr   )r   r   r   r   r   r   value_to_string(   s    zSemVerField.value_to_stringc                    s   t t| t|S r   )r   r   run_validatorsr   r   r   r   r   r   r!   ,   s    zSemVerField.run_validators)F)
__name__
__module____qualname__r   r   r   r   r    r!   __classcell__r   r   r   r   r      s   
r   c                       sD   e Zd ZdediZedZ fddZ fddZdd	 Z  Z	S )
VersionFieldinvalidz-Enter a valid version number in X.Y.Z format.Versionc                    sL   | dd| _| jr$tjdtdd | dd| _tt| j|i | d S )NpartialFz-Use of `partial=True` will be removed in 3.0.   )
stacklevelcoerce)	popr*   warningswarnDeprecationWarningr-   r   r'   r   r   r   r   r   r   6   s    zVersionField.__init__c                    s6   t t|  \}}}}| j|d< | j|d< ||||fS )Handle django.db.migrations.r*   r-   )r   r'   deconstructr*   r-   r   namepathr   r   r   r   r   r3   A   s    

zVersionField.deconstructc                 C   sP   |du s|dkr|S t |tjr$|S | jr<tjj|| jdS tj|| jdS dS )z+Converts any value to a base.Version field.N )r*   )
isinstancer   r)   r-   r*   r"   r   r   r   r   H   s    zVersionField.to_python
r#   r$   r%   _Zdefault_error_messagesdescriptionr   r3   r   r&   r   r   r   r   r'   0   s   r'   c                       sD   e Zd ZdediZedZ fddZ fddZdd	 Z  Z	S )
	SpecFieldr(   zAEnter a valid version number spec list in ==X.Y.Z,>=A.B.C format.zVersion specification listc                    s*   | dtj| _tt| j|i | d S )Nsyntax)r.   r   DEFAULT_SYNTAXr=   r   r<   r   r   r   r   r   r   Z   s    zSpecField.__init__c                    s8   t t|  \}}}}| jtjkr,| j|d< ||||fS )r2   r=   )r   r<   r3   r=   r   r>   r4   r   r   r   r3   ^   s    
zSpecField.deconstructc                 C   s6   |du s|dkr|S t |tjr$|S tjj|| jdS )z(Converts any value to a base.Spec field.Nr7   )r=   )r8   r   ZBaseSpecparser=   r"   r   r   r   r   e   s
    zSpecField.to_pythonr9   r   r   r   r   r<   T   s   r<   )r/   ZdjangoZ	django.dbr   VERSIONZdjango.utils.translationr   r:   r   r7   r   Z	CharFieldr   r'   r<   r   r   r   r   <module>   s   
$