o
    PZŽh}	  ã                   @   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)ÚtestZtodo_)ÚsuperÚ__init__Úrandomize_testsÚsetÚexcludeZtestMethodPrefix)Úselfr   Zinclude_incompleter   ©Ú	__class__© úU/var/www/auris/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   Z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 )
NZ__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   r0   M   s     )r   r#   r&   r   ÚTAGS_REÚsearchÚinspectÚgetdocÚgroupÚsplitr   ÚupdateÚdifference_update)r   Zparent_classÚmethÚkeyÚparent_moduleZmodule_tagsZ
class_tagsr   Z	test_tagsÚcombinedÚremover   r1   r   Ú__call__9   s,   




€

zTestTags.__call__N)r   r   r    r
   r&   r@   r   r   r   r   r"   /   s    r"   )r5   r   ÚreZunittestr   ÚImportErrorÚior'   r   Z
TestLoaderr   ÚcompileÚMr3   r"   r   r   r   r   r   Ú<module>   s    ÿ
*