§
    îyIfËÅ  ã                   óÂ   — d Z ddlmZ ddlmZ ddlmZmZm	Z	  G d„ de¦  «        Z
 G d„ de¦  «        Z G d	„ d
e¦  «        Z G d„ de¦  «        Z G d„ de¦  «        ZdS )z&
Tests for various Pyflakes behavior.
é    )Úversion_info)Úmessages)ÚTestCaseÚskipÚskipIfc                   ón  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d „ Z"d!„ Z#d"„ Z$d#„ Z%d$„ Z&d%„ Z'd&„ Z(d'„ Z) e*d(¦  «        d)„ ¦   «         Z+d*„ Z,d+„ Z-d,„ Z.d-„ Z/d.„ Z0d/„ Z1d0„ Z2d1„ Z3d2„ Z4d3„ Z5d4„ Z6d5„ Z7d6„ Z8d7S )8ÚTestc                 óF   — |                       dt          j        ¦  «         d S )Nzdef fu(bar, bar): pass)ÚflakesÚmÚDuplicateArgument©Úselfs    úL/var/www/piapp/venv/lib/python3.11/site-packages/pyflakes/test/test_other.pyÚtest_duplicateArgszTest.test_duplicateArgs   s    € Ø�ŠÐ,­aÔ.AÑBÔBÐBÐBÐBó    c                 ó\   — |                       dt          j        t          j        ¦  «         d S )NzG
        a = 1
        def f():
            a; a=1
        f()
        )r   r   ÚUndefinedLocalÚUnusedVariabler   s    r   Ú$test_localReferencedBeforeAssignmentz)Test.test_localReferencedBeforeAssignment   s4   € Ø�Šð õ
 Ô�qÔ/ñ	1ô 	1ð 	1ð 	1ð 	1r   c                 óî   — |                       d¦  «         |                       d¦  «         |                       dt          j        ¦  «         |                       d¦  «         |                       d¦  «         dS )z_
        Test that reusing a variable in a generator does not raise
        a warning.
        z8
        a = 1
        (1 for a, b in [(1, 2)])
        zU
        class A:
            a = 1
            list(1 for a, b in [(1, 2)])
        zQ
        def f():
            a = 1
            (1 for a, b in [(1, 2)])
        zK
        (1 for a, b in [(1, 2)])
        (1 for a, b in [(1, 2)])
        zY
        for a, b in [(1, 2)]:
            pass
        (1 for a, b in [(1, 2)])
        N©r   r   r   r   s    r   Útest_redefinedInGeneratorzTest.test_redefinedInGenerator   ó¥   € ð
 	�Šð ñ 	ô 	ð 	ð 	�Šð ñ 	ô 	ð 	ð
 	�Šð õ Ôñ		ô 	ð 	ð
 	�Šð ñ 	ô 	ð 	ð 	�Šð ñ 	ô 	ð 	ð 	ð 	r   c                 óî   — |                       d¦  «         |                       d¦  «         |                       dt          j        ¦  «         |                       d¦  «         |                       d¦  «         dS )zg
        Test that reusing a variable in a set comprehension does not raise
        a warning.
        z8
        a = 1
        {1 for a, b in [(1, 2)]}
        zQ
        class A:
            a = 1
            {1 for a, b in [(1, 2)]}
        zQ
        def f():
            a = 1
            {1 for a, b in [(1, 2)]}
        zK
        {1 for a, b in [(1, 2)]}
        {1 for a, b in [(1, 2)]}
        zY
        for a, b in [(1, 2)]:
            pass
        {1 for a, b in [(1, 2)]}
        Nr   r   s    r   Ú test_redefinedInSetComprehensionz%Test.test_redefinedInSetComprehension5   r   r   c                 óî   — |                       d¦  «         |                       d¦  «         |                       dt          j        ¦  «         |                       d¦  «         |                       d¦  «         dS )zh
        Test that reusing a variable in a dict comprehension does not raise
        a warning.
        z<
        a = 1
        {1: 42 for a, b in [(1, 2)]}
        zU
        class A:
            a = 1
            {1: 42 for a, b in [(1, 2)]}
        zU
        def f():
            a = 1
            {1: 42 for a, b in [(1, 2)]}
        zS
        {1: 42 for a, b in [(1, 2)]}
        {1: 42 for a, b in [(1, 2)]}
        z]
        for a, b in [(1, 2)]:
            pass
        {1: 42 for a, b in [(1, 2)]}
        Nr   r   s    r   Ú!test_redefinedInDictComprehensionz&Test.test_redefinedInDictComprehensionR   r   r   c                 óF   — |                       dt          j        ¦  «         dS )zf
        Test that shadowing a function definition with another one raises a
        warning.
        z5
        def a(): pass
        def a(): pass
        N©r   r   ÚRedefinedWhileUnusedr   s    r   Útest_redefinedFunctionzTest.test_redefinedFunctiono   s1   € ð
 	�Šð õ Ô#ñ	%ô 	%ð 	%ð 	%ð 	%r   c                 óF   — |                       dt          j        ¦  «         d S )Nz-
        x = 1
        def x(): pass
        r    r   s    r   Ú(test_redefined_function_shadows_variablez-Test.test_redefined_function_shadows_variabley   s/   € Ø�Šð õ Ô#ñ	%ô 	%ð 	%ð 	%ð 	%r   c                 ó0   — |                       d¦  «         dS )zq
        Test that shadowing a function definition named with underscore doesn't
        raise anything.
        z5
        def _(): pass
        def _(): pass
        N©r   r   s    r   Ú test_redefinedUnderscoreFunctionz%Test.test_redefinedUnderscoreFunction   ó)   € ð
 	�Šð ñ 	ô 	ð 	ð 	ð 	r   c                 óF   — |                       dt          j        ¦  «         dS )zQ
        Test that shadowing an underscore importation raises a warning.
        z;
        from .i18n import _
        def _(): pass
        Nr    r   s    r   Ú#test_redefinedUnderscoreImportationz(Test.test_redefinedUnderscoreImportation‰   ó1   € ð 	�Šð õ Ô#ñ	%ô 	%ð 	%ð 	%ð 	%r   c                 óF   — |                       dt          j        ¦  «         dS )zw
        Test that shadowing a function definition in a class suite with another
        one raises a warning.
        zN
        class A:
            def a(): pass
            def a(): pass
        Nr    r   s    r   Útest_redefinedClassFunctionz Test.test_redefinedClassFunction’   ó1   € ð
 	�Šð õ Ô#ñ		%ô 	%ð 	%ð 	%ð 	%r   c                 ó0   — |                       d¦  «         dS )z{
        Test that shadowing a function definition twice in an if
        and else block does not raise a warning.
        z\
        if True:
            def a(): pass
        else:
            def a(): pass
        Nr&   r   s    r   Útest_redefinedIfElseFunctionz!Test.test_redefinedIfElseFunction�   ó)   € ð
 	�Šð ñ 	ô 	ð 	ð 	ð 	r   c                 óF   — |                       dt          j        ¦  «         dS )zh
        Test that shadowing a function definition within an if block
        raises a warning.
        zN
        if True:
            def a(): pass
            def a(): pass
        Nr    r   s    r   Útest_redefinedIfFunctionzTest.test_redefinedIfFunction©   r.   r   c                 ó0   — |                       d¦  «         dS )z{
        Test that shadowing a function definition twice in try
        and except block does not raise a warning.
        zZ
        try:
            def a(): pass
        except:
            def a(): pass
        Nr&   r   s    r   Útest_redefinedTryExceptFunctionz$Test.test_redefinedTryExceptFunction´   r1   r   c                 óF   — |                       dt          j        ¦  «         dS )zh
        Test that shadowing a function definition within a try block
        raises a warning.
        zk
        try:
            def a(): pass
            def a(): pass
        except:
            pass
        Nr    r   s    r   Útest_redefinedTryFunctionzTest.test_redefinedTryFunctionÀ   s1   € ð
 	�Šð õ Ô#ñ	%ô 	%ð 	%ð 	%ð 	%r   c                 ó0   — |                       d¦  «         dS )z‚
        Test that shadowing a variable in a list comprehension in
        an if and else block does not raise a warning.
        zY
        if False:
            a = 1
        else:
            [a for a in '12']
        Nr&   r   s    r   Útest_redefinedIfElseInListCompz#Test.test_redefinedIfElseInListCompÍ   r1   r   c                 ó0   — |                       d¦  «         dS )z‡
        Test that shadowing a function definition with a decorated version of
        that function does not raise a warning.
        zi
        from somewhere import somedecorator

        def a(): pass
        a = somedecorator(a)
        Nr&   r   s    r   Útest_functionDecoratorzTest.test_functionDecoratorÙ   r1   r   c                 ó0   — |                       d¦  «         dS )z˜
        Test that shadowing a function definition in a class suite with a
        decorated version of that function does not raise a warning.
        zS
        class A:
            def a(): pass
            a = classmethod(a)
        Nr&   r   s    r   Útest_classFunctionDecoratorz Test.test_classFunctionDecoratorå   ó)   € ð
 	�Šð ñ 	ô 	ð 	ð 	ð 	r   c                 ó0   — |                       d¦  «         d S )Nzî
        class A:
            @property
            def t(self):
                pass
            @t.setter
            def t(self, value):
                pass
            @t.deleter
            def t(self):
                pass
        r&   r   s    r   Útest_modernPropertyzTest.test_modernPropertyð   s'   € Ø�Šð ñ 	ô 	ð 	ð 	ð 	r   c                 ó0   — |                       d¦  «         dS )zDon't die on unary +.z+1Nr&   r   s    r   Útest_unaryPluszTest.test_unaryPlusþ   s   € à�Š�DÑÔÐÐÐr   c                 óF   — |                       dt          j        ¦  «         dS )zn
        If a name in the base list of a class definition is undefined, a
        warning is emitted.
        z2
        class foo(foo):
            pass
        N©r   r   ÚUndefinedNamer   s    r   Útest_undefinedBaseClasszTest.test_undefinedBaseClass  ó0   € ð
 	�Šð õ Œ_ñ	ô 	ð 	ð 	ð 	r   c                 óF   — |                       dt          j        ¦  «         dS )z“
        If a class name is used in the body of that class's definition and
        the name is not already defined, a warning is emitted.
        z,
        class foo:
            foo
        NrD   r   s    r   Ú"test_classNameUndefinedInClassBodyz'Test.test_classNameUndefinedInClassBody  rG   r   c                 ó0   — |                       d¦  «         dS )z®
        If a class name is used in the body of that class's definition and
        the name was previously defined in some other way, no warning is
        emitted.
        z?
        foo = None
        class foo:
            foo
        Nr&   r   s    r   Útest_classNameDefinedPreviouslyz$Test.test_classNameDefinedPreviously  s)   € ð 	�Šð ñ 	ô 	ð 	ð 	ð 	r   c                 óF   — |                       dt          j        ¦  «         dS )zW
        If a class is defined twice in the same module, a warning is emitted.
        zQ
        class Foo:
            pass
        class Foo:
            pass
        Nr    r   s    r   Útest_classRedefinitionzTest.test_classRedefinition"  ó1   € ð 	�Šð õ
 Ô#ñ	%ô 	%ð 	%ð 	%ð 	%r   c                 óF   — |                       dt          j        ¦  «         dS )zN
        If a function is redefined as a class, a warning is emitted.
        zQ
        def Foo():
            pass
        class Foo:
            pass
        Nr    r   s    r   Útest_functionRedefinedAsClassz"Test.test_functionRedefinedAsClass-  rN   r   c                 óF   — |                       dt          j        ¦  «         dS )zN
        If a class is redefined as a function, a warning is emitted.
        zQ
        class Foo:
            pass
        def Foo():
            pass
        Nr    r   s    r   Útest_classRedefinedAsFunctionz"Test.test_classRedefinedAsFunction8  rN   r   c                 óF   — |                       dt          j        ¦  «         dS )zK
        If a return is used inside a class, a warning is emitted.
        z7
        class Foo(object):
            return
        N©r   r   ÚReturnOutsideFunctionr   s    r   Útest_classWithReturnzTest.test_classWithReturnC  s1   € ð 	�Šð õ Ô$ñ	&ô 	&ð 	&ð 	&ð 	&r   c                 óF   — |                       dt          j        ¦  «         dS )zP
        If a return is used at the module level, a warning is emitted.
        z
        return
        NrT   r   s    r   Útest_moduleWithReturnzTest.test_moduleWithReturnL  s/   € ð 	�Šð åÔ$ñ	&ô 	&ð 	&ð 	&ð 	&r   c                 óF   — |                       dt          j        ¦  «         dS )zJ
        If a yield is used inside a class, a warning is emitted.
        z6
        class Foo(object):
            yield
        N©r   r   ÚYieldOutsideFunctionr   s    r   Útest_classWithYieldzTest.test_classWithYieldT  r+   r   c                 óF   — |                       dt          j        ¦  «         dS )zO
        If a yield is used at the module level, a warning is emitted.
        z
        yield
        NrZ   r   s    r   Útest_moduleWithYieldzTest.test_moduleWithYield]  ó/   € ð 	�Šð åÔ#ñ	%ô 	%ð 	%ð 	%ð 	%r   c                 óF   — |                       dt          j        ¦  «         dS )zO
        If a yield from is used inside a class, a warning is emitted.
        zE
        class Foo(object):
            yield from range(10)
        NrZ   r   s    r   Útest_classWithYieldFromzTest.test_classWithYieldFrome  r+   r   c                 óF   — |                       dt          j        ¦  «         dS )zT
        If a yield from is used at the module level, a warning is emitted.
        z&
        yield from range(10)
        NrZ   r   s    r   Útest_moduleWithYieldFromzTest.test_moduleWithYieldFromn  r_   r   c                 ó†  — |                       dt          j        ¦  «         |                       dt          j        ¦  «         |                       dt          j        ¦  «         |                       dt          j        ¦  «         |                       dt          j        ¦  «         |                       dt          j        ¦  «         d S )Nz
        continue
        z/
        def f():
            continue
        zQ
        while True:
            pass
        else:
            continue
        z�
        while True:
            pass
        else:
            if 1:
                if 2:
                    continue
        zK
        while True:
            def f():
                continue
        zK
        while True:
            class A:
                continue
        )r   r   ÚContinueOutsideLoopr   s    r   Útest_continueOutsideLoopzTest.test_continueOutsideLoopv  sæ   € Ø�Šð åÔ"ñ	$ô 	$ð 	$ð 	�Šð õ Ô"ñ	$ô 	$ð 	$ð
 	�Šð õ
 Ô"ñ	$ô 	$ð 	$ð 	�Šð õ Ô"ñ	$ô 	$ð 	$ð 	�Šð õ Ô"ñ		$ô 	$ð 	$ð 	�Šð õ Ô"ñ		$ô 	$ð 	$ð 	$ð 	$r   c                 ó  — |                       d¦  «         |                       d¦  «         |                       d¦  «         |                       d¦  «         |                       d¦  «         |                       d¦  «         d S )Nz2
        while True:
            continue
        z:
        for i in range(10):
            continue
        zH
        while True:
            if 1:
                continue
        zP
        for i in range(10):
            if 1:
                continue
        z”
        while True:
            while True:
                pass
            else:
                continue
        else:
            pass
        z‘
        while True:
            try:
                pass
            finally:
                while True:
                    continue
        r&   r   s    r   Útest_continueInsideLoopzTest.test_continueInsideLoopœ  s¸   € Ø�Šð ñ 	ô 	ð 	ð
 	�Šð ñ 	ô 	ð 	ð
 	�Šð ñ 	ô 	ð 	ð 	�Šð ñ 	ô 	ð 	ð 	�Šð ñ 	ô 	ð 	ð 	�Šð ñ 	ô 	ð 	ð 	ð 	r   c                 óÆ  — |                       dt          j        ¦  «         |                       dt          j        ¦  «         |                       dt          j        ¦  «         |                       dt          j        ¦  «         |                       dt          j        ¦  «         |                       dt          j        ¦  «         |                       dt          j        ¦  «         d S )Nz
        break
        z,
        def f():
            break
        zN
        while True:
            pass
        else:
            break
        z~
        while True:
            pass
        else:
            if 1:
                if 2:
                    break
        zH
        while True:
            def f():
                break
        zH
        while True:
            class A:
                break
        zJ
        try:
            pass
        finally:
            break
        )r   r   ÚBreakOutsideLoopr   s    r   Útest_breakOutsideLoopzTest.test_breakOutsideLoopÆ  s  € Ø�Šð åÔñ	!ô 	!ð 	!ð 	�Šð õ Ôñ	!ô 	!ð 	!ð
 	�Šð õ
 Ôñ	!ô 	!ð 	!ð 	�Šð õ Ôñ	!ô 	!ð 	!ð 	�Šð õ Ôñ		!ô 	!ð 	!ð 	�Šð õ Ôñ		!ô 	!ð 	!ð 	�Šð õ
 Ôñ	!ô 	!ð 	!ð 	!ð 	!r   c                 óV  — |                       d¦  «         |                       d¦  «         |                       d¦  «         |                       d¦  «         |                       d¦  «         |                       d¦  «         |                       d¦  «         |                       d¦  «         d S )	Nz/
        while True:
            break
        z7
        for i in range(10):
            break
        zE
        while True:
            if 1:
                break
        zM
        for i in range(10):
            if 1:
                break
        z‘
        while True:
            while True:
                pass
            else:
                break
        else:
            pass
        zŽ
        while True:
            try:
                pass
            finally:
                while True:
                    break
        zn
        while True:
            try:
                pass
            finally:
                break
        z¦
        while True:
            try:
                pass
            finally:
                if 1:
                    if 2:
                        break
        r&   r   s    r   Útest_breakInsideLoopzTest.test_breakInsideLoopó  sò   € Ø�Šð ñ 	ô 	ð 	ð
 	�Šð ñ 	ô 	ð 	ð
 	�Šð ñ 	ô 	ð 	ð 	�Šð ñ 	ô 	ð 	ð 	�Šð ñ 	ô 	ð 	ð 	�Šð ñ 	ô 	ð 	ð 	�Šð ñ 	ô 	ð 	ð 	�Šð ñ 	ô 	ð 	ð 	ð 	r   c                 ó  — |                       d¦  «         |                       d¦  «         |                       d¦  «         |                       d¦  «         |                       d¦  «         |                       d¦  «         dS )a#  
        A default except block should be last.

        YES:

        try:
            ...
        except Exception:
            ...
        except:
            ...

        NO:

        try:
            ...
        except:
            ...
        except Exception:
            ...
        zS
        try:
            pass
        except ValueError:
            pass
        zt
        try:
            pass
        except ValueError:
            pass
        except:
            pass
        zH
        try:
            pass
        except:
            pass
        zr
        try:
            pass
        except ValueError:
            pass
        else:
            pass
        zg
        try:
            pass
        except:
            pass
        else:
            pass
        z“
        try:
            pass
        except ValueError:
            pass
        except:
            pass
        else:
            pass
        Nr&   r   s    r   Útest_defaultExceptLastzTest.test_defaultExceptLast/  sº   € ð, 	�Šð ñ 	ô 	ð 	ð 	�Šð ñ 	ô 	ð 	ð 	�Šð ñ 	ô 	ð 	ð 	�Šð ñ 	ô 	ð 	ð 	�Šð ñ 	ô 	ð 	ð 	�Šð 	ñ 		ô 		ð 		ð 		ð 		r   c                 ó^  — |                       dt          j        ¦  «         |                       dt          j        ¦  «         |                       dt          j        ¦  «         |                       dt          j        t          j        ¦  «         |                       dt          j        ¦  «         |                       dt          j        ¦  «         |                       dt          j        ¦  «         |                       dt          j        t          j        ¦  «         |                       d	t          j        ¦  «         |                       d
t          j        ¦  «         |                       dt          j        ¦  «         |                       dt          j        t          j        ¦  «         |                       dt          j        ¦  «         |                       dt          j        ¦  «         |                       dt          j        ¦  «         |                       dt          j        t          j        ¦  «         d S )Nzt
        try:
            pass
        except:
            pass
        except ValueError:
            pass
        zi
        try:
            pass
        except:
            pass
        except:
            pass
        z•
        try:
            pass
        except:
            pass
        except ValueError:
            pass
        except:
            pass
        zÁ
        try:
            pass
        except:
            pass
        except ValueError:
            pass
        except:
            pass
        except ValueError:
            pass
        z“
        try:
            pass
        except:
            pass
        except ValueError:
            pass
        else:
            pass
        zˆ
        try:
            pass
        except:
            pass
        except:
            pass
        else:
            pass
        z´
        try:
            pass
        except:
            pass
        except ValueError:
            pass
        except:
            pass
        else:
            pass
        zà
        try:
            pass
        except:
            pass
        except ValueError:
            pass
        except:
            pass
        except ValueError:
            pass
        else:
            pass
        z–
        try:
            pass
        except:
            pass
        except ValueError:
            pass
        finally:
            pass
        z‹
        try:
            pass
        except:
            pass
        except:
            pass
        finally:
            pass
        z·
        try:
            pass
        except:
            pass
        except ValueError:
            pass
        except:
            pass
        finally:
            pass
        zã
        try:
            pass
        except:
            pass
        except ValueError:
            pass
        except:
            pass
        except ValueError:
            pass
        finally:
            pass
        zµ
        try:
            pass
        except:
            pass
        except ValueError:
            pass
        else:
            pass
        finally:
            pass
        zª
        try:
            pass
        except:
            pass
        except:
            pass
        else:
            pass
        finally:
            pass
        zÖ
        try:
            pass
        except:
            pass
        except ValueError:
            pass
        except:
            pass
        else:
            pass
        finally:
            pass
        a  
        try:
            pass
        except:
            pass
        except ValueError:
            pass
        except:
            pass
        except ValueError:
            pass
        else:
            pass
        finally:
            pass
        )r   r   ÚDefaultExceptNotLastr   s    r   Útest_defaultExceptNotLastzTest.test_defaultExceptNotLasty  sn  € Ø�Šð õ Ô#ñ	%ô 	%ð 	%ð 	�Šð õ Ô#ñ	%ô 	%ð 	%ð 	�Šð 	õ Ô#ñ		%ô 		%ð 		%ð 	�Šð õ Ô#¥QÔ%;ñ	=ô 	=ð 	=ð 	�Šð 	õ Ô#ñ		%ô 		%ð 		%ð 	�Šð 	õ Ô#ñ		%ô 		%ð 		%ð 	�Šð õ Ô#ñ	%ô 	%ð 	%ð 	�Šð õ Ô#¥QÔ%;ñ	=ô 	=ð 	=ð 	�Šð 	õ Ô#ñ		%ô 		%ð 		%ð 	�Šð 	õ Ô#ñ		%ô 		%ð 		%ð 	�Šð õ Ô#ñ	%ô 	%ð 	%ð 	�Šð õ Ô#¥QÔ%;ñ	=ô 	=ð 	=ð 	�Šð õ Ô#ñ	%ô 	%ð 	%ð 	�Šð õ Ô#ñ	%ô 	%ð 	%ð 	�Šð õ Ô#ñ	%ô 	%ð 	%ð 	�Šð õ Ô#¥QÔ%;ñ	=ô 	=ð 	=ð 	=ð 	=r   c                 ó$  — |                       d¦  «         |                       d¦  «         |                       d¦  «         |                       d¦  «         |                       d¦  «         |                       d¦  «         |                       d¦  «         |                       d¦  «         |                       d	¦  «         d
                     d„ t          d¦  «        D ¦   «         ¦  «        dz   }|                       |¦  «         dd
                     d„ t          d¦  «        D ¦   «         ¦  «        z   dz   }|                       |¦  «         dd
                     d„ t          d¦  «        D ¦   «         ¦  «        z   dz   }|                       |¦  «         dS )z6
        Python 3 extended iterable unpacking
        z#
        a, *b = range(10)
        z#
        *a, b = range(10)
        z&
        a, *b, c = range(10)
        z%
        (a, *b) = range(10)
        z%
        (*a, b) = range(10)
        z(
        (a, *b, c) = range(10)
        z%
        [a, *b] = range(10)
        z%
        [*a, b] = range(10)
        z(
        [a, *b, c] = range(10)
        ú, c              3   ó    K  — | ]	}d |z  V — Œ
dS ©za%dN© ©Ú.0Úis     r   ú	<genexpr>z5Test.test_starredAssignmentNoError.<locals>.<genexpr>k  ó&   è è € Ð;Ð; A�e˜a‘iÐ;Ð;Ð;Ð;Ð;Ð;r   é€   z, *rest = range(1<<8)ú(c              3   ó    K  — | ]	}d |z  V — Œ
dS rv   rw   rx   s     r   r{   z5Test.test_starredAssignmentNoError.<locals>.<genexpr>o  ó&   è è € ÐAÐA¨!˜E A™IÐAÐAÐAÐAÐAÐAr   z, *rest) = range(1<<8)ú[c              3   ó    K  — | ]	}d |z  V — Œ
dS rv   rw   rx   s     r   r{   z5Test.test_starredAssignmentNoError.<locals>.<genexpr>s  r€   r   z, *rest] = range(1<<8)N)r   ÚjoinÚrange©r   Úss     r   Útest_starredAssignmentNoErrorz"Test.test_starredAssignmentNoErrorB  sÔ  € ð 	�Šð ñ 	ô 	ð 	ð 	�Šð ñ 	ô 	ð 	ð 	�Šð ñ 	ô 	ð 	ð 	�Šð ñ 	ô 	ð 	ð 	�Šð ñ 	ô 	ð 	ð 	�Šð ñ 	ô 	ð 	ð 	�Šð ñ 	ô 	ð 	ð 	�Šð ñ 	ô 	ð 	ð 	�Šð ñ 	ô 	ð 	ð
 �IŠIÐ;Ð;­¨zÑ):Ô):Ð;Ñ;Ô;Ñ;Ô;Ø#ñ$ˆà�Š�A‰Œˆà�$—)’)ÐAÐA­u°ZÑ/@Ô/@ÐAÑAÔAÑAÔAÑAØ$ñ%ˆà�Š�A‰Œˆà�$—)’)ÐAÐA­u°ZÑ/@Ô/@ÐAÑAÔAÑAÔAÑAØ$ñ%ˆà�Š�A‰Œˆˆˆr   c                 ó  — d                      d„ t          d¦  «        D ¦   «         ¦  «        dz   }|                      |t          j        ¦  «         dd                      d„ t          d¦  «        D ¦   «         ¦  «        z   dz   }|                      |t          j        ¦  «         dd                      d	„ t          d¦  «        D ¦   «         ¦  «        z   d
z   }|                      |t          j        ¦  «         d                      d„ t          d¦  «        D ¦   «         ¦  «        dz   }|                      |t          j        ¦  «         dd                      d„ t          d¦  «        D ¦   «         ¦  «        z   dz   }|                      |t          j        ¦  «         dd                      d„ t          d¦  «        D ¦   «         ¦  «        z   dz   }|                      |t          j        ¦  «         |                      dt          j        ¦  «         |                      dt          j        ¦  «         |                      dt          j        ¦  «         |                      dt          j        ¦  «         |                      dt          j        ¦  «         |                      dt          j        ¦  «         |                      dt          j        ¦  «         |                      dt          j        ¦  «         |                      dt          j        ¦  «         dS )zp
        SyntaxErrors (not encoded in the ast) surrounding Python 3 extended
        iterable unpacking
        rt   c              3   ó    K  — | ]	}d |z  V — Œ
dS rv   rw   rx   s     r   r{   z4Test.test_starredAssignmentErrors.<locals>.<genexpr>}  s&   è è € Ð7Ð7 A�e˜a‘iÐ7Ð7Ð7Ð7Ð7Ð7r   é   z, *rest = range(1<<8 + 1)r~   c              3   ó    K  — | ]	}d |z  V — Œ
dS rv   rw   rx   s     r   r{   z4Test.test_starredAssignmentErrors.<locals>.<genexpr>�  ó&   è è € Ð=Ð=¨!˜E A™IÐ=Ð=Ð=Ð=Ð=Ð=r   z, *rest) = range(1<<8 + 1)r�   c              3   ó    K  — | ]	}d |z  V — Œ
dS rv   rw   rx   s     r   r{   z4Test.test_starredAssignmentErrors.<locals>.<genexpr>…  rŒ   r   z, *rest] = range(1<<8 + 1)c              3   ó    K  — | ]	}d |z  V — Œ
dS rv   rw   rx   s     r   r{   z4Test.test_starredAssignmentErrors.<locals>.<genexpr>‰  r|   r   i   z, *rest = range(1<<8 + 2)c              3   ó    K  — | ]	}d |z  V — Œ
dS rv   rw   rx   s     r   r{   z4Test.test_starredAssignmentErrors.<locals>.<genexpr>�  r€   r   z, *rest) = range(1<<8 + 2)c              3   ó    K  — | ]	}d |z  V — Œ
dS rv   rw   rx   s     r   r{   z4Test.test_starredAssignmentErrors.<locals>.<genexpr>‘  r€   r   z, *rest] = range(1<<8 + 2)z'
        a, *b, *c = range(10)
        z*
        a, *b, c, *d = range(10)
        z(
        *a, *b, *c = range(10)
        z)
        (a, *b, *c) = range(10)
        z,
        (a, *b, c, *d) = range(10)
        z*
        (*a, *b, *c) = range(10)
        z)
        [a, *b, *c] = range(10)
        z,
        [a, *b, c, *d] = range(10)
        z*
        [*a, *b, *c] = range(10)
        N)rƒ   r„   r   r   Ú%TooManyExpressionsInStarredAssignmentÚTwoStarredExpressionsr…   s     r   Útest_starredAssignmentErrorsz!Test.test_starredAssignmentErrorsw  s  € ð �IŠIÐ7Ð7­¨v©¬Ð7Ñ7Ô7Ñ7Ô7Ø'ñ(ˆà�Š�A•qÔ>Ñ?Ô?Ð?à�$—)’)Ð=Ð=­u°V©}¬}Ð=Ñ=Ô=Ñ=Ô=Ñ=Ø(ñ)ˆà�Š�A•qÔ>Ñ?Ô?Ð?à�$—)’)Ð=Ð=­u°V©}¬}Ð=Ñ=Ô=Ñ=Ô=Ñ=Ø(ñ)ˆà�Š�A•qÔ>Ñ?Ô?Ð?à�IŠIÐ;Ð;­¨zÑ):Ô):Ð;Ñ;Ô;Ñ;Ô;Ø'ñ(ˆà�Š�A•qÔ>Ñ?Ô?Ð?à�$—)’)ÐAÐA­u°ZÑ/@Ô/@ÐAÑAÔAÑAÔAÑAØ(ñ)ˆà�Š�A•qÔ>Ñ?Ô?Ð?à�$—)’)ÐAÐA­u°ZÑ/@Ô/@ÐAÑAÔAÑAÔAÑAØ(ñ)ˆà�Š�A•qÔ>Ñ?Ô?Ð?ð 	�Šð åÔ$ñ	&ô 	&ð 	&ð 	�Šð åÔ$ñ	&ô 	&ð 	&ð 	�Šð åÔ$ñ	&ô 	&ð 	&ð 	�Šð åÔ$ñ	&ô 	&ð 	&ð 	�Šð åÔ$ñ	&ô 	&ð 	&ð 	�Šð åÔ$ñ	&ô 	&ð 	&ð 	�Šð åÔ$ñ	&ô 	&ð 	&ð 	�Šð åÔ$ñ	&ô 	&ð 	&ð 	�Šð åÔ$ñ	&ô 	&ð 	&ð 	&ð 	&r   z<todo: Too hard to make this warn but other cases stay silentc                 óF   — |                       dt          j        ¦  «         dS )zd
        If a variable is re-assigned to without being used, no warning is
        emitted.
        z'
        x = 10
        x = 20
        Nr    r   s    r   Útest_doubleAssignmentzTest.test_doubleAssignment¾  s1   € ð 	�Šð õ Ô#ñ	%ô 	%ð 	%ð 	%ð 	%r   c                 ó0   — |                       d¦  «         dS )zc
        If a variable is re-assigned within a conditional, no warning is
        emitted.
        z<
        x = 10
        if True:
            x = 20
        Nr&   r   s    r   Ú"test_doubleAssignmentConditionallyz'Test.test_doubleAssignmentConditionallyÉ  r>   r   c                 ó0   — |                       d¦  «         dS )zb
        If a variable is re-assigned to after being used, no warning is
        emitted.
        z9
        x = 10
        y = x * 2
        x = 20
        Nr&   r   s    r   Útest_doubleAssignmentWithUsez!Test.test_doubleAssignmentWithUseÔ  r>   r   c                 ó0   — |                       d¦  «         dS )z�
        If a defined name is used on either side of any of the six comparison
        operators, no warning is emitted.
        z
        x = 10
        y = 20
        x < y
        x <= y
        x == y
        x != y
        x >= y
        x > y
        Nr&   r   s    r   Útest_comparisonzTest.test_comparisonß  s)   € ð
 	�Šð 	ñ 		ô 		ð 		ð 		ð 		r   c                 ó0   — |                       d¦  «         dS )zn
        If a defined name is used on either side of an identity test, no
        warning is emitted.
        zI
        x = 10
        y = 20
        x is y
        x is not y
        Nr&   r   s    r   Útest_identityzTest.test_identityï  r1   r   c                 ó0   — |                       d¦  «         dS )zp
        If a defined name is used on either side of a containment test, no
        warning is emitted.
        zI
        x = 10
        y = 20
        x in y
        x not in y
        Nr&   r   s    r   Útest_containmentzTest.test_containmentû  r1   r   c                 óZ   — |                       d¦  «         |                       d¦  «         dS )z>
        break and continue statements are supported.
        z4
        for x in [1, 2]:
            break
        z7
        for x in [1, 2]:
            continue
        Nr&   r   s    r   Útest_loopControlzTest.test_loopControl  sF   € ð 	�Šð ñ 	ô 	ð 	ð 	�Šð ñ 	ô 	ð 	ð 	ð 	r   c                 ó0   — |                       d¦  «         dS )z3
        Ellipsis in a slice is supported.
        z
        [1, 2][...]
        Nr&   r   s    r   Útest_ellipsiszTest.test_ellipsis  ó)   € ð 	�Šð ñ 	ô 	ð 	ð 	ð 	r   c                 ó0   — |                       d¦  «         dS )z0
        Extended slices are supported.
        z+
        x = 3
        [1, 2][x,:]
        Nr&   r   s    r   Útest_extendedSlicezTest.test_extendedSlice  ó)   € ð 	�Šð ñ 	ô 	ð 	ð 	ð 	r   c                 ó0   — |                       d¦  «         dS )zh
        Augmented assignment of a variable is supported.
        We don't care about var refs.
        z*
        foo = 0
        foo += 1
        Nr&   r   s    r   Útest_varAugmentedAssignmentz Test.test_varAugmentedAssignment%  r(   r   c                 ó0   — |                       d¦  «         dS )zi
        Augmented assignment of attributes is supported.
        We don't care about attr refs.
        z7
        foo = None
        foo.bar += foo.baz
        Nr&   r   s    r   Útest_attrAugmentedAssignmentz!Test.test_attrAugmentedAssignment/  r(   r   c                 ó0   — |                       d¦  «         dS )zP
        A 'global' can be declared in one scope and reused in another.
        zV
        def f(): global foo
        def g(): foo = 'anything'; foo.is_used()
        Nr&   r   s    r   Ú#test_globalDeclaredInDifferentScopez(Test.test_globalDeclaredInDifferentScope9  r§   r   c                 ó®   — |                       d¦  «         |                       d¦  «         |                       d¦  «         |                       d¦  «         dS )z;
        Test to traverse ARG and ARGUMENT handler
        z1
        def foo(a, b):
            pass
        z6
        def foo(a, b, c=0):
            pass
        z=
        def foo(a, b, c=0, *args):
            pass
        zG
        def foo(a, b, c=0, *args, **kwargs):
            pass
        Nr&   r   s    r   Útest_function_argumentszTest.test_function_argumentsB  s€   € ð 	�Šð ñ 	ô 	ð 	ð
 	�Šð ñ 	ô 	ð 	ð
 	�Šð ñ 	ô 	ð 	ð
 	�Šð ñ 	ô 	ð 	ð 	ð 	r   c                 ó0   — |                       d¦  «         d S )NzL
        def foo(a, b, c=0, *args, d=0, **kwargs):
            pass
        r&   r   s    r   Útest_function_arguments_python3z$Test.test_function_arguments_python3Z  ó'   € Ø�Šð ñ 	ô 	ð 	ð 	ð 	r   N)9Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r"   r$   r'   r*   r-   r0   r3   r5   r7   r9   r;   r=   r@   rB   rF   rI   rK   rM   rP   rR   rV   rX   r\   r^   ra   rc   rf   rh   rk   rm   ro   rr   r‡   r“   r   r•   r—   r™   r›   r�   rŸ   r¡   r£   r¦   r©   r«   r­   r¯   r±   rw   r   r   r	   r	      s\  € € € € € ðCð Cð Cð1ð 1ð 1ðð ð ð:ð ð ð:ð ð ð:%ð %ð %ð%ð %ð %ðð ð ð%ð %ð %ð	%ð 	%ð 	%ð
ð 
ð 
ð	%ð 	%ð 	%ð
ð 
ð 
ð%ð %ð %ð
ð 
ð 
ð
ð 
ð 
ð	ð 	ð 	ðð ð ðð ð ðð ð ðð ð ð
ð 
ð 
ð	%ð 	%ð 	%ð	%ð 	%ð 	%ð	%ð 	%ð 	%ð&ð &ð &ð&ð &ð &ð%ð %ð %ð%ð %ð %ð%ð %ð %ð%ð %ð %ð$$ð $$ð $$ðL(ð (ð (ðT+!ð +!ð +!ðZ:ð :ð :ðxHð Hð HðTG=ð G=ð G=ðR3ð 3ð 3ðjE&ð E&ð E&ðN 
€TÐ
HÑIÔIð%ð %ñ JÔIð%ð	ð 	ð 	ð	ð 	ð 	ðð ð ð 
ð 
ð 
ð
ð 
ð 
ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ð0ð ð ð ð r   r	   c                   ó¤  — e Zd ZdZd„ Zd„ Zd„ Zd„ Z ed¦  «        d„ ¦   «         Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d „ Z"d!„ Z#d"„ Z$d#„ Z%d$„ Z&d%„ Z'd&„ Z(d'„ Z)d(„ Z*d)„ Z+ e,e-d*k     d+¦  «        d,„ ¦   «         Z.d-„ Z/d.„ Z0d/„ Z1d0„ Z2d1„ Z3d2„ Z4d3„ Z5d4„ Z6d5„ Z7d6„ Z8d7„ Z9d8„ Z:d9„ Z;d:„ Z<d;S )<ÚTestUnusedAssignmentz5
    Tests for warning about unused assignments.
    c                 óF   — |                       dt          j        ¦  «         dS )zc
        Warn when a variable in a function is assigned a value that's never
        used.
        z,
        def a():
            b = 1
        Nr   r   s    r   Útest_unusedVariablez(TestUnusedAssignment.test_unusedVariablef  s1   € ð
 	�Šð õ Ôñ	ô 	ð 	ð 	ð 	r   c                 ó0   — |                       d¦  «         dS )zh
        Don't warn when the magic "_" (underscore) variable is unused.
        See issue #202.
        zC
        def a(unused_param):
            _ = unused_param
        Nr&   r   s    r   Útest_unusedUnderscoreVariablez2TestUnusedAssignment.test_unusedUnderscoreVariablep  r(   r   c                 ó0   — |                       d¦  «         dS )zO
        Using locals() it is perfectly valid to have unused variables
        zH
        def a():
            b = 1
            return locals()
        Nr&   r   s    r   Útest_unusedVariableAsLocalsz0TestUnusedAssignment.test_unusedVariableAsLocalsz  ó)   € ð 	�Šð ñ 	ô 	ð 	ð 	ð 	r   c                 óF   — |                       dt          j        ¦  «         dS )zA
        Using locals() in wrong scope should not matter
        zq
        def a():
            locals()
            def a():
                b = 1
                return
        Nr   r   s    r   Útest_unusedVariableNoLocalsz0TestUnusedAssignment.test_unusedVariableNoLocals„  s1   € ð 	�Šð õ Ôñ	ô 	ð 	ð 	ð 	r   zAtodo: Difficult because it doesn't apply in the context of a loopc                 óF   — |                       dt          j        ¦  «         dS )zV
        Shadowing a used variable can still raise an UnusedVariable warning.
        zR
        def a():
            b = 1
            b.foo()
            b = 2
        Nr   r   s    r   Útest_unusedReassignedVariablez2TestUnusedAssignment.test_unusedReassignedVariable�  s1   € ð
 	�Šð õ
 Ôñ	ô 	ð 	ð 	ð 	r   c                 ó0   — |                       d¦  «         dS )zt
        Shadowing a used variable cannot raise an UnusedVariable warning in the
        context of a loop.
        z^
        def a():
            b = True
            while b:
                b = False
        Nr&   r   s    r   Útest_variableUsedInLoopz,TestUnusedAssignment.test_variableUsedInLoopœ  r1   r   c                 ó0   — |                       d¦  «         dS )z—
        Assigning to a global and then not using that global is perfectly
        acceptable. Do not mistake it for an unused local variable.
        zO
        b = 0
        def a():
            global b
            b = 1
        Nr&   r   s    r   Útest_assignToGlobalz(TestUnusedAssignment.test_assignToGlobal¨  r1   r   c                 ó0   — |                       d¦  «         dS )zš
        Assigning to a nonlocal and then not using that binding is perfectly
        acceptable. Do not mistake it for an unused local variable.
        zW
        b = b'0'
        def a():
            nonlocal b
            b = b'1'
        Nr&   r   s    r   Útest_assignToNonlocalz*TestUnusedAssignment.test_assignToNonlocal´  r1   r   c                 ó0   — |                       d¦  «         dS )zº
        Assigning to a member of another object and then not using that member
        variable is perfectly acceptable. Do not mistake it for an unused
        local variable.
        zR
        class b:
            pass
        def a():
            b.foo = 1
        Nr&   r   s    r   Útest_assignToMemberz(TestUnusedAssignment.test_assignToMemberÀ  ó)   € ð 	�Šð ñ 	ô 	ð 	ð 	ð 	r   c                 ó0   — |                       d¦  «         dS )zW
        Don't warn when a variable in a for loop is assigned to but not used.
        zO
        def f():
            for i in range(10):
                pass
        Nr&   r   s    r   Útest_assignInForLoopz)TestUnusedAssignment.test_assignInForLoopÏ  r¾   r   c                 ó0   — |                       d¦  «         dS )zi
        Don't warn when a variable in a list comprehension is
        assigned to but not used.
        z@
        def f():
            [None for i in range(10)]
        Nr&   r   s    r   Útest_assignInListComprehensionz3TestUnusedAssignment.test_assignInListComprehensionÙ  r(   r   c                 ó0   — |                       d¦  «         dS )zk
        Don't warn when a variable in a generator expression is
        assigned to but not used.
        z@
        def f():
            (None for i in range(10))
        Nr&   r   s    r   Útest_generatorExpressionz-TestUnusedAssignment.test_generatorExpressionã  r(   r   c                 ó0   — |                       d¦  «         dS )zW
        Don't warn when a variable assignment occurs lexically after its use.
        z 
        def f():
            x = None
            for i in range(10):
                if i > 2:
                    return x
                x = i * 2
        Nr&   r   s    r   Útest_assignmentInsideLoopz.TestUnusedAssignment.test_assignmentInsideLoopí  s)   € ð 	�Šð ñ 	ô 	ð 	ð 	ð 	r   c                 ó0  — |                       d¦  «         |                       dt          j        t          j        ¦  «         |                       d¦  «         |                       dt          j        ¦  «         |                       dt          j        ¦  «         dS )zñ
        Don't warn when a variable included in tuple unpacking is unused. It's
        very common for variables in a tuple unpacking assignment to be unused
        in good Python code, so warning will only create false positives.
        z6
        def f(tup):
            (x, y) = tup
        z4
        def f():
            (x, y) = 1, 2
        zq
        def f():
            (x, y) = coords = 1, 2
            if x > 1:
                print(coords)
        z=
        def f():
            (x, y) = coords = 1, 2
        z=
        def f():
            coords = (x, y) = 1, 2
        Nr   r   s    r   Útest_tupleUnpackingz(TestUnusedAssignment.test_tupleUnpackingú  sº   € ð 	�Šð ñ 	ô 	ð 	ð 	�Šð õ Ô�qÔ/ñ	1ô 	1ð 	1ð 	�Šð ñ 	ô 	ð 	ð 	�Šð õ Ôñ	ô 	ð 	ð 	�Šð õ Ôñ	ô 	ð 	ð 	ð 	r   c                 ó†   — |                       d¦  «         |                       dt          j        t          j        ¦  «         dS )zR
        Don't warn when a variable included in list unpacking is unused.
        z6
        def f(tup):
            [x, y] = tup
        z6
        def f():
            [x, y] = [1, 2]
        Nr   r   s    r   Útest_listUnpackingz'TestUnusedAssignment.test_listUnpacking  sS   € ð 	�Šð ñ 	ô 	ð 	ð 	�Šð õ Ô�qÔ/ñ	1ô 	1ð 	1ð 	1ð 	1r   c                 ó0   — |                       d¦  «         dS )zN
        Don't warn when the assignment is used in an inner function.
        z~
        def barMaker():
            foo = 5
            def bar():
                return foo
            return bar
        Nr&   r   s    r   Útest_closedOverz$TestUnusedAssignment.test_closedOver$  s)   € ð 	�Šð ñ 	ô 	ð 	ð 	ð 	r   c                 ó0   — |                       d¦  «         dS )z’
        Don't warn when the assignment is used in an inner function, even if
        that inner function itself is in an inner function.
        z�
        def barMaker():
            foo = 5
            def bar():
                def baz():
                    return foo
            return bar
        Nr&   r   s    r   Útest_doubleClosedOverz*TestUnusedAssignment.test_doubleClosedOver0  s)   € ð
 	�Šð ñ 	ô 	ð 	ð 	ð 	r   c                 ó0   — |                       d¦  «         dS )z}
        Do not warn about unused local variable __tracebackhide__, which is
        a special variable for py.test.
        zL
            def helper():
                __tracebackhide__ = True
        Nr&   r   s    r   Ú!test_tracebackhideSpecialVariablez6TestUnusedAssignment.test_tracebackhideSpecialVariable>  r(   r   c                 ó°   — |                       d¦  «         |                       dt          j        ¦  «         |                       dt          j        ¦  «         dS )z9
        Test C{foo if bar else baz} statements.
        za = 'moo' if True else 'oink'za = foo if True else 'oink'za = 'moo' if True else barNrD   r   s    r   Ú
test_ifexpzTestUnusedAssignment.test_ifexpH  sK   € ð 	�ŠÐ3Ñ4Ô4Ð4Ø�ŠÐ1µ1´?ÑCÔCÐCØ�ŠÐ0µ!´/ÑBÔBÐBÐBÐBr   c                 óÚ   — |                       d¦  «         |                       d¦  «         |                       dt          j        ¦  «         |                       dt          j        ¦  «         dS )z/
        Test C{if (foo,)} conditions.
        zif (): passzC
        if (
            True
        ):
            pass
        zD
        if (
            True,
        ):
            pass
        z?
        x = 1 if (
            True,
        ) else 2
        N)r   r   ÚIfTupler   s    r   Útest_if_tuplez"TestUnusedAssignment.test_if_tupleP  s„   € ð 	�ŠÐ%Ñ&Ô&Ð&Ø�Šð ñ 	ô 	ð 	ð 	�Šð õ
 ŒYñ	ô 	ð 	ð 	�Šð õ ŒYñ		ô 	ð 	ð 	ð 	r   c                 ó0   — |                       d¦  «         dS )zƒ
        No warnings are emitted for using inside or after a nameless C{with}
        statement a name defined beforehand.
        zR
        bar = None
        with open("foo"):
            bar
        bar
        Nr&   r   s    r   Útest_withStatementNoNamesz.TestUnusedAssignment.test_withStatementNoNamesg  r1   r   c                 ó0   — |                       d¦  «         dS )z�
        No warnings are emitted for using a name defined by a C{with} statement
        within the suite or afterwards.
        zF
        with open('foo') as bar:
            bar
        bar
        Nr&   r   s    r   Útest_withStatementSingleNamez1TestUnusedAssignment.test_withStatementSingleNames  r>   r   c                 ó0   — |                       d¦  «         dS )zn
        No warnings are emitted for using an attribute as the target of a
        C{with} statement.
        zR
        import foo
        with open('foo') as foo.bar:
            pass
        Nr&   r   s    r   Útest_withStatementAttributeNamez4TestUnusedAssignment.test_withStatementAttributeName~  r>   r   c                 ó0   — |                       d¦  «         dS )zm
        No warnings are emitted for using a subscript as the target of a
        C{with} statement.
        zQ
        import foo
        with open('foo') as foo[0]:
            pass
        Nr&   r   s    r   Útest_withStatementSubscriptz0TestUnusedAssignment.test_withStatementSubscript‰  r>   r   c                 óF   — |                       dt          j        ¦  «         dS )z‰
        An undefined name warning is emitted if the subscript used as the
        target of a C{with} statement is not defined.
        zS
        import foo
        with open('foo') as foo[bar]:
            pass
        NrD   r   s    r   Ú$test_withStatementSubscriptUndefinedz9TestUnusedAssignment.test_withStatementSubscriptUndefined”  ó0   € ð
 	�Šð õ Œ_ñ		ô 	ð 	ð 	ð 	r   c                 ó0   — |                       d¦  «         dS )z”
        No warnings are emitted for using any of the tuple of names defined by
        a C{with} statement within the suite or afterwards.
        zW
        with open('foo') as (bar, baz):
            bar, baz
        bar, baz
        Nr&   r   s    r   Útest_withStatementTupleNamesz1TestUnusedAssignment.test_withStatementTupleNamesŸ  r>   r   c                 ó0   — |                       d¦  «         dS )z“
        No warnings are emitted for using any of the list of names defined by a
        C{with} statement within the suite or afterwards.
        zW
        with open('foo') as [bar, baz]:
            bar, baz
        bar, baz
        Nr&   r   s    r   Útest_withStatementListNamesz0TestUnusedAssignment.test_withStatementListNamesª  r>   r   c                 ó0   — |                       d¦  «         dS )aq  
        If the target of a C{with} statement uses any or all of the valid forms
        for that part of the grammar (See
        U{http://docs.python.org/reference/compound_stmts.html#the-with-statement}),
        the names involved are checked both for definedness and any bindings
        created are respected in the suite of the statement and afterwards.
        z©
        c = d = e = g = h = i = None
        with open('foo') as [(a, b), c[d], e.f, g[h:i]]:
            a, b, c, d, e, g, h, i
        a, b, c, d, e, g, h, i
        Nr&   r   s    r   Ú#test_withStatementComplicatedTargetz8TestUnusedAssignment.test_withStatementComplicatedTargetµ  rË   r   c                 óF   — |                       dt          j        ¦  «         dS )z•
        An undefined name warning is emitted if the name first defined by a
        C{with} statement is used before the C{with} statement.
        zG
        bar
        with open('foo') as bar:
            pass
        NrD   r   s    r   Ú%test_withStatementSingleNameUndefinedz:TestUnusedAssignment.test_withStatementSingleNameUndefinedÄ  rí   r   c                 óF   — |                       dt          j        ¦  «         dS )z¹
        An undefined name warning is emitted if a name first defined by the
        tuple-unpacking form of the C{with} statement is used before the
        C{with} statement.
        zN
        baz
        with open('foo') as (bar, baz):
            pass
        NrD   r   s    r   Ú%test_withStatementTupleNamesUndefinedz:TestUnusedAssignment.test_withStatementTupleNamesUndefinedÏ  s0   € ð 	�Šð õ Œ_ñ		ô 	ð 	ð 	ð 	r   c                 óF   — |                       dt          j        ¦  «         dS )z‘
        A redefined name warning is emitted if a name bound by an import is
        rebound by the name defined by a C{with} statement.
        zN
        import bar
        with open('foo') as bar:
            pass
        Nr    r   s    r   Ú%test_withStatementSingleNameRedefinedz:TestUnusedAssignment.test_withStatementSingleNameRedefinedÛ  r.   r   c                 óF   — |                       dt          j        ¦  «         dS )z½
        A redefined name warning is emitted if a name bound by an import is
        rebound by one of the names defined by the tuple-unpacking form of a
        C{with} statement.
        zU
        import bar
        with open('foo') as (bar, baz):
            pass
        Nr    r   s    r   Ú%test_withStatementTupleNamesRedefinedz:TestUnusedAssignment.test_withStatementTupleNamesRedefinedæ  s1   € ð 	�Šð õ Ô#ñ		%ô 	%ð 	%ð 	%ð 	%r   c                 óF   — |                       dt          j        ¦  «         dS )z’
        An undefined name warning is emitted if a name is used inside the
        body of a C{with} statement without first being bound.
        z:
        with open('foo') as bar:
            baz
        NrD   r   s    r   Ú!test_withStatementUndefinedInsidez6TestUnusedAssignment.test_withStatementUndefinedInsideò  rG   r   c                 ó0   — |                       d¦  «         dS )z|
        A name defined in the body of a C{with} statement can be used after
        the body ends without warning.
        zK
        with open('foo') as bar:
            baz = 10
        baz
        Nr&   r   s    r   Ú#test_withStatementNameDefinedInBodyz8TestUnusedAssignment.test_withStatementNameDefinedInBodyü  r>   r   c                 ó†   — |                       dt          j        ¦  «         |                       dt          j        ¦  «         dS )z‡
        An undefined name warning is emitted if a name in the I{test}
        expression of a C{with} statement is undefined.
        z3
        with bar as baz:
            pass
        z3
        with bar as bar:
            pass
        NrD   r   s    r   Ú'test_withStatementUndefinedInExpressionz<TestUnusedAssignment.test_withStatementUndefinedInExpression  sT   € ð
 	�Šð õ Œ_ñ	ô 	ð 	ð
 	�Šð õ Œ_ñ	ô 	ð 	ð 	ð 	r   c                 ó0   — |                       d¦  «         dS )z;
        Dict comprehensions are properly handled.
        z/
        a = {1: x for x in range(10)}
        Nr&   r   s    r   Útest_dictComprehensionz+TestUnusedAssignment.test_dictComprehension  r¤   r   c                 ó0   — |                       d¦  «         dS )z:
        Set comprehensions are properly handled.
        zB
        a = {1, 2, 3}
        b = {x for x in range(10)}
        Nr&   r   s    r   Útest_setComprehensionAndLiteralz4TestUnusedAssignment.test_setComprehensionAndLiteral  r§   r   c                 óZ   — |                       d¦  «         |                       d¦  «         d S )Nz<
        try: pass
        except Exception as e: e
        zc
        def download_review():
            try: pass
            except Exception as e: e
        r&   r   s    r   Útest_exceptionUsedInExceptz/TestUnusedAssignment.test_exceptionUsedInExcept'  sD   € Ø�Šð ñ 	ô 	ð 	ð
 	�Šð ñ 	ô 	ð 	ð 	ð 	r   c                 óF   — |                       dt          j        ¦  «         d S )Nz?
        try: pass
        except Exception as e: pass
        r   r   s    r   Útest_exceptionUnusedInExceptz1TestUnusedAssignment.test_exceptionUnusedInExcept3  s/   € Ø�Šð õ Ôñ	ô 	ð 	ð 	ð 	r   )é   é   znew in Python 3.11c                 óF   — |                       dt          j        ¦  «         d S )Nzf
            try:
                pass
            except* OSError as e:
                pass
        r   r   s    r   Ú$test_exception_unused_in_except_starz9TestUnusedAssignment.test_exception_unused_in_except_star9  s/   € à�Šð õ
 Ôñ	ô 	ð 	ð 	ð 	r   c                 óF   — |                       dt          j        ¦  «         d S )Nzf
        def download_review():
            try: pass
            except Exception as e: pass
        r   r   s    r   Ú&test_exceptionUnusedInExceptInFunctionz;TestUnusedAssignment.test_exceptionUnusedInExceptInFunctionB  s/   € Ø�Šð õ Ôñ		ô 	ð 	ð 	ð 	r   c                 ó0   — |                       d¦  «         dS )zº
        Don't issue false warning when an unnamed exception is used.
        Previously, there would be a false warning, but only when the
        try..except was in a function
        zw
        import tokenize
        def foo():
            try: pass
            except tokenize.TokenError: pass
        Nr&   r   s    r   Ú test_exceptWithoutNameInFunctionz5TestUnusedAssignment.test_exceptWithoutNameInFunctionI  s)   € ð 	�Šð ñ 	ô 	ð 	ð 	ð 	r   c                 ó0   — |                       d¦  «         dS )z‡
        Don't issue false warning when an unnamed exception is used.
        This example catches a tuple of exception types.
        z‹
        import tokenize
        def foo():
            try: pass
            except (tokenize.TokenError, IndentationError): pass
        Nr&   r   s    r   Ú%test_exceptWithoutNameInFunctionTuplez:TestUnusedAssignment.test_exceptWithoutNameInFunctionTupleV  r1   r   c                 ó0   — |                       d¦  «         dS )zt
        Consider a function that is called on the right part of an
        augassign operation to be used.
        zJ
        from foo import bar
        baz = 0
        baz += bar()
        Nr&   r   s    r   Ú,test_augmentedAssignmentImportedFunctionCallzATestUnusedAssignment.test_augmentedAssignmentImportedFunctionCallb  r>   r   c                 ó0   — |                       d¦  «         dS )z,An assert without a message is not an error.z(
        a = 1
        assert a
        Nr&   r   s    r   Útest_assert_without_messagez0TestUnusedAssignment.test_assert_without_messagem  ó'   € à�Šð ñ 	ô 	ð 	ð 	ð 	r   c                 ó0   — |                       d¦  «         dS )z)An assert with a message is not an error.z-
        a = 1
        assert a, 'x'
        Nr&   r   s    r   Útest_assert_with_messagez-TestUnusedAssignment.test_assert_with_messaget  r  r   c                 ó\   — |                       dt          j        t          j        ¦  «         dS )z.An assert of a non-empty tuple is always True.z>
        assert (False, 'x')
        assert (False, )
        N)r   r   ÚAssertTupler   s    r   Útest_assert_tuplez&TestUnusedAssignment.test_assert_tuple{  s2   € à�Šð õ Œ]�AœMñ	+ô 	+ð 	+ð 	+ð 	+r   c                 ó0   — |                       d¦  «         dS )z,An assert of an empty tuple is always False.z
        assert ()
        Nr&   r   s    r   Útest_assert_tuple_emptyz,TestUnusedAssignment.test_assert_tuple_empty‚  s'   € à�Šð ñ 	ô 	ð 	ð 	ð 	r   c                 ó0   — |                       d¦  «         dS )z,An assert of a static value is not an error.z.
        assert True
        assert 1
        Nr&   r   s    r   Útest_assert_staticz'TestUnusedAssignment.test_assert_staticˆ  r  r   c                 óF   — |                       dt          j        ¦  «         dS )z.
        Test C{yield from} statement
        z9
        def bar():
            yield from foo()
        NrD   r   s    r   Útest_yieldFromUndefinedz,TestUnusedAssignment.test_yieldFromUndefined�  s0   € ð 	�Šð õ Œ_ñ	ô 	ð 	ð 	ð 	r   c                 ó0   — |                       d¦  «         dS )z.Test PEP 498 f-strings are treated as a usage.z3
        baz = 0
        print(f'{4*baz}')
        Nr&   r   s    r   Útest_f_stringz"TestUnusedAssignment.test_f_string˜  r  r   c                 ó0   — |                       d¦  «         dS )zATest PEP 572 assignment expressions are treated as usage / write.zJ
        from foo import y
        print(x := y)
        print(x)
        Nr&   r   s    r   Útest_assign_exprz%TestUnusedAssignment.test_assign_exprŸ  ó'   € à�Šð ñ 	ô 	ð 	ð 	ð 	r   c                 ó0   — |                       d¦  «         dS )z5Test assignment expressions in generator expressions.zO
        if (any((y := x[0]) for x in [[True]])):
            print(y)
        Nr&   r   s    r   Ú test_assign_expr_generator_scopez5TestUnusedAssignment.test_assign_expr_generator_scope§  r  r   c                 ó0   — |                       d¦  «         dS )z2Test assignment expressions in nested expressions.zz
        if ([(y:=x) for x in range(4) if [(z:=q) for q in range(4)]]):
            print(y)
            print(z)
        Nr&   r   s    r   Útest_assign_expr_nestedz,TestUnusedAssignment.test_assign_expr_nested®  r(  r   N)=r³   r´   rµ   Ú__doc__r¹   r»   r½   rÀ   r   rÂ   rÄ   rÆ   rÈ   rÊ   rÍ   rÏ   rÑ   rÓ   rÕ   r×   rÙ   rÛ   rÝ   rß   râ   rä   ræ   rè   rê   rì   rï   rñ   ró   rõ   r÷   rù   rû   rý   rÿ   r  r  r  r  r	  r   r   r  r  r  r  r  r  r  r  r  r!  r#  r%  r'  r*  r,  rw   r   r   r·   r·   a  sƒ  € € € € € ðð ðð ð ðð ð ðð ð ð
ð 
ð 
ð 
€TÐ
MÑNÔNð	ð 	ñ OÔNð	ð
ð 
ð 
ð
ð 
ð 
ð
ð 
ð 
ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ð:1ð 1ð 1ð
ð 
ð 
ðð ð ðð ð ðCð Cð Cðð ð ð.
ð 
ð 
ð	ð 	ð 	ð	ð 	ð 	ð	ð 	ð 	ð	ð 	ð 	ð	ð 	ð 	ð	ð 	ð 	ðð ð ð	ð 	ð 	ð
ð 
ð 
ð	%ð 	%ð 	%ð
%ð 
%ð 
%ðð ð ð	ð 	ð 	ðð ð ðð ð ðð ð ð
ð 
ð 
ðð ð ð €VˆL˜7Ò"Ð$8Ñ9Ô9ðð ñ :Ô9ððð ð ðð ð ð
ð 
ð 
ð	ð 	ð 	ðð ð ðð ð ð+ð +ð +ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ð ð r   r·   c                   ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestStringFormattingc                 ó„  — |                       dt          j        ¦  «         |                       dt          j        ¦  «         |                       dt          j        ¦  «         |                       dt          j        ¦  «         |                       d¦  «         |                       d¦  «         |                       d¦  «         d S )Nzf'foo'z=
            f"""foo
            bar
            """
        zX
            print(
                f'foo'
                f'bar'
            )
        zf'{{}}'z5
            x = 5
            print(f'{x}')
        z?
            x = 'a' * 90
            print(f'{x:.8}')
        zC
            x = y = 5
            print(f'{x:>2} {y:>2}')
        )r   r   ÚFStringMissingPlaceholdersr   s    r   Ú"test_f_string_without_placeholdersz7TestStringFormatting.test_f_string_without_placeholders¹  sÙ   € Ø�Š�H�aÔ:Ñ;Ô;Ð;Ø�Šð õ Ô)ñ		+ô 	+ð 	+ð
 	�Šð õ
 Ô)ñ	+ô 	+ð 	+ð 	�Š�I�qÔ;Ñ<Ô<Ð<à�Šð ñ 	ô 	ð 	ð
 	�Šð ñ 	ô 	ð 	ð
 	�Šð ñ 	ô 	ð 	ð 	ð 	r   c                 ól  — |                       dt          j        ¦  «         |                       dt          j        ¦  «         |                       dt          j        ¦  «         |                       dt          j        ¦  «         |                       dt          j        ¦  «         |                       dt          j        ¦  «         |                       dt          j        ¦  «         |                       dt          j        ¦  «         |                       d	t          j        ¦  «         |                       d
¦  «         |                       d¦  «         |                       d¦  «         |                       d¦  «         |                       d¦  «         |                       d¦  «         |                       d¦  «         d S )Nz#
            '{'.format(1)
        z+
            '{} {1}'.format(1, 2)
        z+
            '{0} {}'.format(1, 2)
        z'
            '{}'.format(1, 2)
        z+
            '{}'.format(1, bar=2)
        z'
            '{} {}'.format(1)
        z$
            '{2}'.format()
        z&
            '{bar}'.format()
        z0
            '{:{:{}}}'.format(1, 2, 3)
        z'{.__class__}'.format('')z('{foo[bar]}'.format(foo={'bar': 'barv'})z8
            print('{:{}} {}'.format(1, 15, 2))
        z-
            print('{:2}'.format(1))
        z1
            '{foo}-{}'.format(1, foo=2)
        z8
            a = ()
            "{}".format(*a)
        z<
            k = {}
            "{foo}".format(**k)
        )r   r   ÚStringDotFormatInvalidFormatÚStringDotFormatMixingAutomaticÚ'StringDotFormatExtraPositionalArgumentsÚ"StringDotFormatExtraNamedArgumentsÚStringDotFormatMissingArgumentr   s    r   Útest_invalid_dot_format_callsz2TestStringFormatting.test_invalid_dot_format_callsØ  sü  € Ø�Šð åÔ+ñ	-ô 	-ð 	-ð 	�Šð åÔ-ñ	/ô 	/ð 	/ð 	�Šð åÔ-ñ	/ô 	/ð 	/ð 	�Šð åÔ6ñ	8ô 	8ð 	8ð 	�Šð åÔ1ñ	3ô 	3ð 	3ð 	�Šð åÔ-ñ	/ô 	/ð 	/ð 	�Šð åÔ-ñ	/ô 	/ð 	/ð 	�Šð åÔ-ñ	/ô 	/ð 	/ð 	�Šð åÔ+ñ	-ô 	-ð 	-ð 	�ŠÐ/Ñ0Ô0Ð0Ø�ŠÐ>Ñ?Ô?Ð?à�Šð ñ 	ô 	ð 	ð 	�Šð ñ 	ô 	ð 	ð 	�Šð ñ 	ô 	ð 	ð 	�Šð ñ 	ô 	ð 	ð 	�Šð ñ 	ô 	ð 	ð 	ð 	r   c                 ón  — |                       dt          j        ¦  «         |                       dt          j        ¦  «         |                       dt          j        ¦  «         |                       dt          j        ¦  «         |                       dt          j        ¦  «         |                       dt          j        ¦  «         |                       dt          j        ¦  «         |                       dt          j        ¦  «         |                       d	t          j        ¦  «         |                       d
t          j	        ¦  «         |                       dt          j
        ¦  «         |                       d¦  «         |                       d¦  «         |                       d¦  «         |                       d¦  «         d S )Nz/
            '%(foo)' % {'foo': 'bar'}
        z3
            '%s %(foo)s' % {'foo': 'bar'}
        z3
            '%(foo)s %s' % {'foo': 'bar'}
        z!
            '%j' % (1,)
        z$
            '%s %s' % (1,)
        z)
            '%s %s' % (1, 2, 3)
        z$
            '%(bar)s' % {}
        z6
            '%(bar)s' % {'bar': 1, 'baz': 2}
        z+
            '%(bar)s' % (1, 2, 3)
        z*
            '%s %s' % {'k': 'v'}
        z1
            '%(bar)*s' % {'bar': 'baz'}
        z:
            '%s' % {'foo': 'bar', 'baz': 'womp'}
        z+
            "%1000000000000f" % 1
        z,
            '%% %s %% %s' % (1, 2)
        zO
            '%.*f' % (2, 1.1234)
            '%*.*f' % (5, 2, 3.1234)
        )r   r   ÚPercentFormatInvalidFormatÚ$PercentFormatMixedPositionalAndNamedÚ'PercentFormatUnsupportedFormatCharacterÚ$PercentFormatPositionalCountMismatchÚPercentFormatMissingArgumentÚ PercentFormatExtraNamedArgumentsÚPercentFormatExpectedMappingÚPercentFormatExpectedSequenceÚ!PercentFormatStarRequiresSequencer   s    r   Ú!test_invalid_percent_format_callsz6TestStringFormatting.test_invalid_percent_format_calls  sÿ  € Ø�Šð åÔ)ñ	+ô 	+ð 	+ð 	�Šð åÔ3ñ	5ô 	5ð 	5ð 	�Šð åÔ3ñ	5ô 	5ð 	5ð 	�Šð åÔ6ñ	8ô 	8ð 	8ð 	�Šð åÔ3ñ	5ô 	5ð 	5ð 	�Šð åÔ3ñ	5ô 	5ð 	5ð 	�Šð åÔ+ñ	.ô 	.ð 	.ð 	�Šð åÔ/ñ	1ô 	1ð 	1ð 	�Šð åÔ+ñ	-ô 	-ð 	-ð 	�Šð åÔ,ñ	.ô 	.ð 	.ð 	�Šð åÔ0ñ	2ô 	2ð 	2ð 	�Šð ñ 	ô 	ð 	ð 	�Šð ñ 	ô 	ð 	ð 	�Šð ñ 	ô 	ð 	ð 	�Šð ñ 	ô 	ð 	ð 	ð 	r   c                 óZ   — |                       d¦  «         |                       d¦  «         d S )NzS
            a = []
            '%s %s' % [*a]
            '%s %s' % (*a,)
        z8
            k = {}
            '%(k)s' % {**k}
        r&   r   s    r   Ú5test_ok_percent_format_cannot_determine_element_countzJTestStringFormatting.test_ok_percent_format_cannot_determine_element_countB  sD   € Ø�Šð ñ 	ô 	ð 	ð
 	�Šð ñ 	ô 	ð 	ð 	ð 	r   N)r³   r´   rµ   r2  r9  rD  rF  rw   r   r   r/  r/  ·  sR   € € € € € ðð ð ð>4ð 4ð 4ðl2ð 2ð 2ðh	ð 	ð 	ð 	ð 	r   r/  c                   óV   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ ZdS )ÚTestAsyncStatementsc                 ó0   — |                       d¦  «         d S )Nz8
        async def bar():
            return 42
        r&   r   s    r   Útest_asyncDefz!TestAsyncStatements.test_asyncDefP  r²   r   c                 ó0   — |                       d¦  «         d S )NzS
        async def read_data(db):
            await db.fetch('SELECT ...')
        r&   r   s    r   Útest_asyncDefAwaitz&TestAsyncStatements.test_asyncDefAwaitV  r²   r   c                 óF   — |                       dt          j        ¦  «         d S )Nz;
        async def bar():
            return foo()
        rD   r   s    r   Útest_asyncDefUndefinedz*TestAsyncStatements.test_asyncDefUndefined\  s.   € Ø�Šð õ Œ_ñ	ô 	ð 	ð 	ð 	r   c                 ó0   — |                       d¦  «         d S )Nz©
        async def read_data(db):
            output = []
            async for row in db.cursor():
                output.append(row)
            return output
        r&   r   s    r   Útest_asyncForz!TestAsyncStatements.test_asyncForb  ó'   € Ø�Šð ñ 	ô 	ð 	ð 	ð 	r   c                 ó0   — |                       d¦  «         d S )NzY
        async def coro(it):
            async for _ in it:
                pass
        r&   r   s    r   Útest_asyncForUnderscoreLoopVarz2TestAsyncStatements.test_asyncForUnderscoreLoopVark  ó'   € Ø�Šð ñ 	ô 	ð 	ð 	ð 	r   c                 óZ   — |                       d¦  «         |                       d¦  «         d S )Nzë
        async def read_data(db):
            output = []
            async for row in db.cursor():
                if row[0] == 'skip':
                    continue
                output.append(row)
            return output
        zè
        async def read_data(db):
            output = []
            async for row in db.cursor():
                if row[0] == 'stop':
                    break
                output.append(row)
            return output
        r&   r   s    r   Útest_loopControlInAsyncForz.TestAsyncStatements.test_loopControlInAsyncForr  sD   € Ø�Šð ñ 	ô 	ð 	ð 	�Šð ñ 	ô 	ð 	ð 	ð 	r   c                 ó†   — |                       dt          j        ¦  «         |                       dt          j        ¦  «         d S )NzÔ
        async def read_data(db):
            output = []
            async for row in db.cursor():
                output.append(row)
            else:
                continue
            return output
        zÑ
        async def read_data(db):
            output = []
            async for row in db.cursor():
                output.append(row)
            else:
                break
            return output
        )r   r   re   rj   r   s    r   Útest_loopControlInAsyncForElsez2TestAsyncStatements.test_loopControlInAsyncForElse‡  sT   € Ø�Šð õ Ô"ñ	$ô 	$ð 	$ð 	�Šð õ Ôñ	!ô 	!ð 	!ð 	!ð 	!r   c                 ó0   — |                       d¦  «         d S )Nz‹
        async def commit(session, data):
            async with session.transaction():
                await session.update(data)
        r&   r   s    r   Útest_asyncWithz"TestAsyncStatements.test_asyncWithœ  rT  r   c                 ó0   — |                       d¦  «         d S )NzÃ
        async def commit(session, data):
            async with session.transaction() as trans:
                await trans.begin()
                ...
                await trans.end()
        r&   r   s    r   Útest_asyncWithItemz&TestAsyncStatements.test_asyncWithItem£  rQ  r   c                 ó0   — |                       d¦  «         d S )Nz9
        def foo(a, b):
            return a @ b
        r&   r   s    r   Útest_matmulzTestAsyncStatements.test_matmul¬  r²   r   c                 ó0   — |                       d¦  «         d S )NzE
        hi = 'hi'
        mom = 'mom'
        f'{hi} {mom}'
        r&   r   s    r   Útest_formatstringz%TestAsyncStatements.test_formatstring²  rT  r   c                 óÚ   — |                       d¦  «         |                       d¦  «         |                       dt          j        ¦  «         |                       dt          j        ¦  «         d S )Nz;
        raise NotImplementedError("This is fine")
        z+
        raise NotImplementedError
        z?
        raise NotImplemented("This isn't gonna work")
        z&
        raise NotImplemented
        )r   r   ÚRaiseNotImplementedr   s    r   Útest_raise_notimplementedz-TestAsyncStatements.test_raise_notimplemented¹  sŠ   € Ø�Šð ñ 	ô 	ð 	ð 	�Šð ñ 	ô 	ð 	ð 	�Šð åÔ"ñ	$ô 	$ð 	$ð 	�Šð åÔ"ñ	$ô 	$ð 	$ð 	$ð 	$r   N)r³   r´   rµ   rJ  rL  rN  rP  rS  rV  rX  rZ  r\  r^  r`  rc  rw   r   r   rH  rH  N  sÈ   € € € € € ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ð*!ð !ð !ð*ð ð ðð ð ðð ð ðð ð ð$ð $ð $ð $ð $r   rH  c                   ó<   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
ÚTestIncompatiblePrintOperatorz@
    Tests for warning about invalid use of print function.
    c                 ó0   — |                       d¦  «         d S )Nz 
        print("Hello")
        r&   r   s    r   Útest_valid_printz.TestIncompatiblePrintOperator.test_valid_printÐ  s'   € Ø�Šð ñ 	ô 	ð 	ð 	ð 	r   c                 óÈ   — |                       dt          j        ¦  «        j        d         }|                      |j        d¦  «         |                      |j        d¦  «         d S )Nzn
        from __future__ import print_function
        import sys
        print >>sys.stderr, "Hello"
        r   é   )r   r   ÚInvalidPrintSyntaxr   ÚassertEqualÚlinenoÚcol)r   Úexcs     r   Ú,test_invalid_print_when_imported_from_futurezJTestIncompatiblePrintOperator.test_invalid_print_when_imported_from_futureÕ  sf   € Ø�kŠkð õ Ô!ñ	#ô #ô $,¨Aô	/ˆð 	×Ò˜œ QÑ'Ô'Ð'Ø×Ò˜œ !Ñ$Ô$Ð$Ð$Ð$r   c                 ó0   — |                       d¦  «         d S )Nz
print += 1r&   r   s    r   Útest_print_augmented_assignz9TestIncompatiblePrintOperator.test_print_augmented_assignß  s   € à�Š�LÑ!Ô!Ð!Ð!Ð!r   c                 ó0   — |                       d¦  «         dS )zJ
        A valid assignment, tested for catching false positives.
        z`
        from __future__ import print_function
        log = print
        log("Hello")
        Nr&   r   s    r   Útest_print_function_assignmentz<TestIncompatiblePrintOperator.test_print_function_assignmentã  r¾   r   c                 ó0   — |                       d¦  «         d S )NzQ
        from __future__ import print_function
        a = lambda: print
        r&   r   s    r   Útest_print_in_lambdaz2TestIncompatiblePrintOperator.test_print_in_lambdaí  r²   r   c                 ó0   — |                       d¦  «         d S )Nza
        from __future__ import print_function
        def a():
            return print
        r&   r   s    r   Útest_print_returned_in_functionz=TestIncompatiblePrintOperator.test_print_returned_in_functionó  rT  r   c                 ó0   — |                       d¦  «         d S )NzN
        from __future__ import print_function
        if print: pass
        r&   r   s    r   Útest_print_as_condition_testz:TestIncompatiblePrintOperator.test_print_as_condition_testú  r²   r   N)r³   r´   rµ   r-  rg  ro  rq  rs  ru  rw  ry  rw   r   r   re  re  Ë  s‡   € € € € € ðð ðð ð ð
%ð %ð %ð"ð "ð "ðð ð ðð ð ðð ð ðð ð ð ð r   re  N)r-  Úsysr   Úpyflakesr   r   Úpyflakes.test.harnessr   r   r   r	   r·   r/  rH  re  rw   r   r   ú<module>r}     sS  ððð ð Ð Ð Ð Ð Ð à "Ð "Ð "Ð "Ð "Ð "Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8ðSð Sð Sð Sð Sˆ8ñ Sô Sð Sðl"S	ð S	ð S	ð S	ð S	˜8ñ S	ô S	ð S	ðlTð Tð Tð Tð T˜8ñ Tô Tð Tðnz$ð z$ð z$ð z$ð z$˜(ñ z$ô z$ð z$ðz3ð 3ð 3ð 3ð 3 Hñ 3ô 3ð 3ð 3ð 3r   