+
    i                         R t ^ RIt^ RIt^ RIt^ RIt ! R R]P
                  4      t ! R R]4      t]	! ]R4      '       d   R t
]P                  tR# R t
R	 tR# )
a[  A subclass of unittest.TestCase which checks for reference leaks.

To use:
- Use testing_refleak.BaseTestCase instead of unittest.TestCase
- Configure and compile Python with --with-pydebug

If sys.gettotalrefcount() is not available (because Python was built without
the Py_DEBUG option), then this module is a no-op and tests will run normally.
Nc                   <   a  ] tR t^t o RtR tR tR tR tRt	V t
R# )LocalTestResultzHA TestResult which forwards events to a parent object, except for Skips.c                P    \         P                  P                  V 4       Wn        R # N)unittest
TestResult__init__parent_result)selfr	   s   &&|/Users/igloo/.openclaw/workspace/scratch/fb_ad_env/lib/python3.14/site-packages/google/protobuf/internal/testing_refleaks.pyr   LocalTestResult.__init__   s      &&    c                <    V P                   P                  W4       R # r   )r	   addErrorr
   testerrors   &&&r   r   LocalTestResult.addError   s    ,r   c                <    V P                   P                  W4       R # r   )r	   
addFailurer   s   &&&r   r   LocalTestResult.addFailure"   s    !!$.r   c                    R # r    )r
   r   reasons   &&&r   addSkipLocalTestResult.addSkip%   s    r   )r	   N)__name__
__module____qualname____firstlineno____doc__r   r   r   r   __static_attributes____classdictcell__)__classdict__s   @r   r   r      s!     P'-/	 	r   r   c                   D   a a ] tR t^)t oRt^tRV 3R lltR tRtVt	V ;t
# )ReferenceLeakCheckerMixinz:A mixin class for TestCase, which checks reference counts.c                  < \        W P                  4      p\        VR R4      p\        V R R4      pV'       g	   V'       d   R# \        P                  P	                  4       V n        \        \        V `#  VR7       \        \        V `#  VR7       ^ p\        V4      p^ p. p\        V4      V P                  8  dh   V P                  4       p\        \        V `#  VR7       V P                  4       p	W8  d   V^8  d   V^,          pKf  ^ pVP                  W,
          4       K  \        W4        V P                  V^ .V P                  ,          4       R#   \          d*    TP#                  T \$        P&                  ! 4       4        R# i ; i)__unittest_expecting_failure__FN)result)getattr_testMethodNamecopyregdispatch_tablecopy_saved_pickle_registrysuperr%   runr   lenNB_RUNS_getRefcountsappendprintassertEqual	Exceptionr   sysexc_info)r
   r(   
testMethodexpecting_failure_methodexpecting_failure_classoldrefcountlocal_result
num_flakesrefcount_deltasnewrefcount	__class__s   &&        r   r0   ReferenceLeakCheckerMixin.run.   sT   334J&z3SUZ[%d,LeT":
 #*"8"8"="="?D 

#T.f.=	
#T.f.=K"6*LJO
o

-&&(k%t00E&&(k 
	"zA~
 	a
j[67	/ ,
dll(:; ,oodCLLN+,s   ,$E 0FFc                8   \         P                  P                  4        \         P                  P                  V P                  4       \
        P                  ! 4        \
        P                  ! 4        \
        P                  ! 4        \        P                  ! 4       # r   )	r+   r,   clearupdater.   gccollectr8   gettotalrefcount)r
   s   &r   r3   'ReferenceLeakCheckerMixin._getRefcountsY   sZ      "!!$"="=> JJLJJLJJL!!r   )r.   r   )r   r   r   r   r    r2   r0   r3   r!   r"   __classcell__)rB   r#   s   @@r   r%   r%   )   s     B'),V" "r   r%   rI   c                     \         3V P                  ,           p\        V 4      ! V P                  V\	        V P
                  4      4      pV# r   )r%   	__bases__typer   dict__dict__)
test_class	new_bases	new_classs   &  r   TestCaserT   f   sC    *,z/C/CCIZ YZ-@-@(ACIr   c                     V # r   r   )rQ   s   &r   rT   rT   p   s    r   c                     ? R  pV# )c                     V # r   r   )funcs   &r   Same&SkipReferenceLeakChecker.<locals>.Sameu   s    kr   r   )r   rY   s   & r   SkipReferenceLeakCheckerr[   s   s    Kr   )r    r+   rG   r8   r   r   r   objectr%   hasattrrT   skipr[   r   r   r   <module>r_      sb     	 
 	h)) 	"8" 8"v 3"##
 &]]
r   