
    i}	                         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  G d dej                        Z
 ej                  dej                        Z G d d	      Z e       Zy# e$ r	 d dlmZ Y Ww xY w)
    N)StringIO   )import_submodulec                   ,     e Zd Z	 d fd	Z fdZ xZS )PygameTestLoaderc                     t         |           || _        |t               | _        nt        |      | _        |rd| _        y y )N)testtodo_)super__init__randomize_testssetexcludetestMethodPrefix)selfr   include_incompleter   	__class__s       p/home/obispo/Crisostomo_bridge/mision_env/lib/python3.12/site-packages/pygame/tests/test_utils/test_machinery.pyr   zPygameTestLoader.__init__   sA     	.?5DLw<DL$5D!     c                     g }t         |   |      D ]E  }t        |t        ||            }| j                  j                  |      s5|j                  |       G | j                  rt        j                  |       |S N)
r   getTestCaseNamesget_tagsgetattrr   
isdisjointappendr   randomshuffle)r   testCaseClassresnametagsr   s        r   r   z!PygameTestLoader.getTestCaseNames   sn    G,]; 	!DM7=$+GHD||&&t,

4 	!
 NN3
r   )FF)interactive)__name__
__module____qualname__r   r   __classcell__)r   s   @r   r   r      s    GW6
 
r   r   z!\|[tT]ags:(-?[ a-zA-Z,0-9_\n]+)\|c                       e Zd Zd Zd Zd Zy)TestTagsc                      i | _         i | _        y r   )memoizedparent_modules)r   s    r   r   zTestTags.__init__0   s     r   c                     || j                   vr"t        |j                        | j                   |<   | j                   |   S r   )r,   r   r%   )r   class_s     r   get_parent_modulezTestTags.get_parent_module4   s<    ,,,*:6;L;L*MD'""6**r   c                    ||j                   f}|| j                  vr| j                  |      }t        |dg       }t        |dg       }t        j                  t        j                  |      xs d      }|r<|j                  d      j                  d      D cg c]  }|j                          }	}ng }	t               }
|||	fD ]d  }|s|D ch c]  }|j                  d      r| }}|D ch c]  }||vs|dd   }}|r|
j                  |       |sT|
j                  |       f |
| j                  |<   | j                  |   S c c}w c c}w c c}w )N__tags__ r   ,-)r$   r+   r/   r   TAGS_REsearchinspectgetdocgroupsplitstripr   
startswithupdatedifference_update)r   parent_classmethkeyparent_modulemodule_tags
class_tagsr"   t	test_tagscombinedaddremoves                r   __call__zTestTags.__call__9   sF   T]]+dmm# 22<@M!-R@K z2>J>>'.."6"<"=D04

10C0CC0HI1QWWYI	I	uH$j)< 
7"&@Qall3.?q@@)->A#!AB%>>OOC(..v6
7 "*DMM#}}S!!' J A>s   E	E%E/	E9EN)r$   r%   r&   r   r/   rJ    r   r   r)   r)   /   s    !+
"r   r)   )r7   r   reunittestr   ImportErrorior2   r   
TestLoaderr   compileMr5   r)   r   rK   r   r   <module>rS      sr      	 ! x** < "**9244
@'" '"T :c  s   A" "A0/A0