o
    tVÆg}	  ã                   @   s”   d dl Z d dlZd dlZd dlZzd dlmZ W n ey'   d dlmZ Y nw ddlmZ G dd„ dej	ƒZ
e dej¡ZG dd	„ d	ƒZeƒ ZdS )
é    N)ÚStringIOé   )Úimport_submodulec                       s,   e Zd Z	d‡ fdd„	Z‡ fdd„Z‡  ZS )ÚPygameTestLoaderF©Úinteractivec                    s>   t ƒ  ¡  || _|d u rtƒ | _nt|ƒ| _|rd| _d S d S )N)ÚtestÚtodo_)ÚsuperÚ__init__Úrandomize_testsÚsetÚexcludeÚtestMethodPrefix)Úselfr   Úinclude_incompleter   ©Ú	__class__© úZ/home/ubuntu/.local/lib/python3.10/site-packages/pygame/tests/test_utils/test_machinery.pyr      s   



ÿzPygameTestLoader.__init__c                    sP   g }t ƒ  |¡D ]}t|t||ƒƒ}| j |¡r| |¡ q| jr&t 	|¡ |S ©N)
r
   ÚgetTestCaseNamesÚget_tagsÚgetattrr   Ú
isdisjointÚappendr   ÚrandomÚshuffle)r   ÚtestCaseClassÚresÚnameÚtagsr   r   r   r      s   
€
z!PygameTestLoader.getTestCaseNames)FFr   )Ú__name__Ú
__module__Ú__qualname__r   r   Ú__classcell__r   r   r   r   r      s    ÿr   z!\|[tT]ags:(-?[ a-zA-Z,0-9_\n]+)\|c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestTagsc                 C   s   i | _ i | _d S r   )ÚmemoizedÚparent_modules)r   r   r   r   r   0   s   
zTestTags.__init__c                 C   s$   || j vrt|jƒ| j |< | j | S r   )r(   r   r#   )r   Úclass_r   r   r   Úget_parent_module4   s   

zTestTags.get_parent_modulec                    sÚ   ||j f}|| jvrh|  |¡}t|dg ƒ}t|dg ƒ}t t |¡p#d¡}|r5dd„ | d¡ 	d¡D ƒ}ng }t
ƒ }	|||fD ]#}|sDq?dd„ |D ƒ‰ ‡ fd	d„|D ƒ}
ˆ r[|	 ˆ ¡ |
rb|	 |
¡ q?|	| j|< | j| S )
NÚ__tags__Ú c                 S   s   g | ]}|  ¡ ‘qS r   )Ústrip©Ú.0Útr   r   r   Ú
<listcomp>C   s    z%TestTags.__call__.<locals>.<listcomp>r   ú,c                 S   s   h | ]	}|  d ¡s|’qS )ú-)Ú
startswithr.   r   r   r   Ú	<setcomp>L   s    z$TestTags.__call__.<locals>.<setcomp>c                    s    h | ]}|ˆ vr|d d… ’qS )r   Nr   r.   ©Úaddr   r   r5   M   s     )r"   r'   r*   r   ÚTAGS_REÚsearchÚinspectÚgetdocÚgroupÚsplitr   ÚupdateÚdifference_update)r   Úparent_classÚmethÚkeyÚparent_moduleÚmodule_tagsÚ
class_tagsr!   Ú	test_tagsÚcombinedÚremover   r6   r   Ú__call__9   s,   




€

zTestTags.__call__N)r"   r#   r$   r   r*   rI   r   r   r   r   r&   /   s    r&   )r:   r   ÚreÚunittestr   ÚImportErrorÚior,   r   Ú
TestLoaderr   ÚcompileÚMr8   r&   r   r   r   r   r   Ú<module>   s    ÿ
*