o
    ^"<f                     @   sp   d dl m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 ZG d	d
 d
eZG dd deZdS )    )unicode_literalsN)	force_str)import_string   )VERSION_NAMERVERSIONSc                  K   s   t t}|di | S )N )r   r   )kwargs	namer_clsr   r   I/var/www/html/kck/venv/lib/python3.10/site-packages/filebrowser/namers.py	get_namer   s   r   c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	VersionNamerzBase namer only for referencec                 K   s(   || _ | D ]
\}}t| || qd S )N)r	   itemssetattr)selfr	   kvr   r   r   __init__   s   zVersionNamer.__init__c                 C   s   | j jd | j | j S )N_)file_objectfilename_rootversion_suffix	extension)r   r   r   r   get_version_name   s   zVersionNamer.get_version_namec                 C   sR   | j jd}|t|d  tv r'd| j jd|t|d   d| j jf S d S )Nr   r   %s%sz_%s )r   r   splitlenr   replacer   )r   tmpr   r   r   get_original_name   s   zVersionNamer.get_original_nameN)__name__
__module____qualname____doc__r   r   r    r   r   r   r   r      s
    r   c                   @   s4   e Zd Zdd Zdd Zedd Zedd Zd	S )
OptionsNamerc                 C   s"   dj t| jj| j| jjd}|S )Nz{root}_{options}{extension})rootoptionsr   )formatr   r   r   options_as_stringr   r   namer   r   r   r   '   s   
zOptionsNamer.get_version_namec                 C   sD   | j j}|d}|t|d  }td| d|}d|| j jf S )z
        Restores the original file name wipping out the last
        `_version_suffix--plus-any-configs` block entirely.
        r   r   z_%s$r   r   )r   r   r   r   resubr   )r   r&   r   options_partr+   r   r   r   r    /   s
   
zOptionsNamer.get_original_namec                 C   s4   d | jdd}tdd|}tdd| S )zr
        The options part should not contain `_` (underscore) on order to get
        original name back.
        z--,xz[_\s]-z[^\w-]r   )joinoptions_listr   r,   r-   stripr*   r   r   r   r)   :   s   zOptionsNamer.options_as_stringc              	      s0  g }| j s|S d| jv r|| jd  d| j v r&|dt| j d   n'd| j v s0d| j v rMt| j dp8d}t| j dpBd}|d||f  t| j  D ]A\}  r^|dv r_qT d	u ri|| qTt t	j
szd
 fdd D  W n ty   t	  Y nw |d| f  qT|S )Nr   sizez%sx%swidthheightr   z%dx%d)r5   r6   r7   qualitysubsamplingverbose_nameTr0   c                    s   g | ]}t  qS r   )six	text_type).0itemr   r   r   
<listcomp>]   s    z-OptionsNamer.options_list.<locals>.<listcomp>z%s-%s)r'   r	   appendtuplefloatgetsortedr   
isinstancer;   string_typesr2   	TypeErrorr<   )r   optsr6   r7   r   r   r?   r   r3   D   s2   


zOptionsNamer.options_listN)r!   r"   r#   r   r    propertyr)   r3   r   r   r   r   r%   %   s    
	r%   )
__future__r   r,   r;   django.utils.encodingr   django.utils.module_loadingr   settingsr   r   r   objectr   r%   r   r   r   r   <module>   s    