3
_\O                 @   s   d Z ddlmZmZ ddlZddlZddlZddlZddl	Z	ddl
mZ ddlmZ ddlmZ ddlmZ d	Zd
ZdZdd Ze Zejdd Zdd Ze	jedZe	jedZdd Zdd Zdd Zdd Z dd Z!e"dkre  e  e!  dS )z
    Speed tests
    -----------

    Note: this file is not named test_*.py as it is not part of the
    test suite ran by pytest.

    :copyright: (c) 2012 by Simon Sapin.
    :license: BSD, see LICENSE for more details.
    )unicode_literalsdivisionN)parseString   )	tokenizer)CSS21Parser)remove_whitespace         c           
   C   sH   t jjt jjtddddd} t| d}dj|j gt S Q R X d S )Nz..ZdocsZ_staticz
custom.cssrb   
)ospathjoindirname__file__openread
CSS_REPEAT)filenamefd r   S/var/www/html/enquirykeeper_venv/lib/python3.6/site-packages/tinycss/tests/speed.pyload_css"   s    r   c             c   s*   t j}ztt | t _d V  W d |t _X d S )N)r   Ztokenize_flatgetattr)nameoriginalr   r   r   install_tokenizer-   s
    
r   c             C   s`   t |  t jt}W d Q R X g }x6|jD ],}|jj }dd |jD }|j||f q,W |S )Nc             S   s$   g | ]}|j ttt|jfqS r   )r   lenlistr   value).0declarationr   r   r   
<listcomp>>   s   zparse.<locals>.<listcomp>)	r   r   Zparse_stylesheet_bytesCSSZrulesselectorZas_cssdeclarationsappend)Ztokenizer_name
stylesheetresultruler&   r'   r   r   r   parse7   s    


r,   cython_tokenize_flatZpython_tokenize_flatc              C   sL   t t} g }x:| jD ]0}|j}dd |jjddD }|j||f qW |S )Nc             S   s    g | ]}|j tt|jfqS r   )r   r   r    ZpropertyValue)r"   r#   r   r   r   r$   M   s   z"parse_cssutils.<locals>.<listcomp>T)all)r   r%   ZcssRulesZselectorTextstyleZgetPropertiesr(   )r)   r*   r+   r&   r'   r   r   r   parse_cssutilsG   s    r0   c              C   sd   t  } t| dksttjr*t | ks*tt | ks8tdjtt	t
jd d }tdj| d S )Nr   .r
   zPython {}, consistency OK.)parse_pythonr   AssertionErrorr   r-   parse_cythonr0   r   mapstrsysversion_infoprintformat)r*   versionr   r   r   check_consistencyS   s    r<   c              C   sl   t td} | rhtd xDtdD ]8}xtdD ]}t  t  q.W tjjd tjj  q W tjjd d S )Npypy_translation_infozWarming up for PyPy...P   
   r1   
)	hasattrr7   r9   ranger2   r0   stdoutwriteflush)Zis_pypyir   r   r   warm_up_   s    

rG   c             C   s&   t j| jtt}tt|d }|S )Ni  )timeitTimerrepeatTIMEIT_REPEATTIMEIT_NUMBERintmin)functionsecondsZmilisecondsr   r   r   timel   s    rQ   c              C   s   t jrdtfg} ntd g } | dtfdtfg7 } | jd\}}t|}tdj|| x.| D ]&\}}t|}tdj||||  q^W d S )Nztinycss + speedups      zSpeedups are NOT available.ztinycss WITHOUT speedupszcssutils                r   z	{}  {} msz{}  {} ms  {:.2f}x)	r   r-   r4   r9   r2   r0   poprQ   r:   )Zdata_setlabelrO   refr*   r   r   r   runr   s    rU   __main__)#__doc__
__future__r   r   r7   os.pathr   
contextlibrH   	functoolsZcssutilsr    r   Zcss21r   Zparsingr   r   rK   rL   r   r%   contextmanagerr   r,   partialr4   r2   r0   r<   rG   rQ   rU   __name__r   r   r   r   <module>   s8   
