a
    Ų
ždI  ć                   @   sf   d Z ddlZddlZddlZddlmZ ddlmZ ddlmZ G dd dej	Z
edkrbe ”  dS )	z$Python 3 tests for yapf.reformatter.é    N)Śreformatter)Śstyle)Śyapf_test_helperc                   @   s  e Zd ZdZedd Zdd Zdd Zdd	 Zd
d Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Z d:d; Z!d<d= Z"d>d? Z#d@dA Z$dBdC Z%dDS )EŚTestsForPython3Codez3Test a few constructs that are new Python 3 syntax.c                 C   s   t  t  ” ” d S )N)r   ŚSetGlobalStyleŚCreatePEP8Style)Ścls© r	   śk/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/yapftests/reformatter_python3_test.pyŚ
setUpClass   s    zTestsForPython3Code.setUpClassc                 C   s4   t  d”}t  d”}t |”}|  |t |”” d S )Nz        def x(aaaaaaaaaaaaaaa:int,bbbbbbbbbbbbbbbb:str,ccccccccccccccc:dict,eeeeeeeeeeeeee:set={1, 2, 3})->bool:
          pass
    z»        def x(aaaaaaaaaaaaaaa: int,
              bbbbbbbbbbbbbbbb: str,
              ccccccccccccccc: dict,
              eeeeeeeeeeeeee: set = {1, 2, 3}) -> bool:
            pass
    ©ŚtextwrapŚdedentr   ŚParseAndUnwrapŚassertCodeEqualr   ŚReformat©ŚselfZunformatted_codeZexpected_formatted_codeŚllinesr	   r	   r
   ŚtestTypedNames!   s    


z"TestsForPython3Code.testTypedNamesc                 C   s4   t  d”}t  d”}t |”}|  |t |”” d S )Nzy        def func(arg=long_function_call_that_pushes_the_line_over_eighty_characters()) -> ReturnType:
          pass
    z        def func(arg=long_function_call_that_pushes_the_line_over_eighty_characters()
                 ) -> ReturnType:
            pass
    r   r   r	   r	   r
   ŚtestTypedNameWithLongNamedArg0   s    


z1TestsForPython3Code.testTypedNameWithLongNamedArgc                 C   s4   t  d”}t  d”}t |”}|  |t |”” d S )Nz5        def foo(a, *, kw):
          return a+kw
    z9        def foo(a, *, kw):
            return a + kw
    r   r   r	   r	   r
   ŚtestKeywordOnlyArgSpecifier=   s    


z/TestsForPython3Code.testKeywordOnlyArgSpecifierc                 C   s4   t  d”}t  d”}t |”}|  |t |”” d S )NzE        def foo(a: list, b: "bar") -> dict:
          return a+b
    zI        def foo(a: list, b: "bar") -> dict:
            return a + b
    r   r   r	   r	   r
   ŚtestAnnotationsI   s    


z#TestsForPython3Code.testAnnotationsc                 C   s(   d}d}t  |”}|  |t |”” d S )Nz!methods.exec( sys.modules[name])
z methods.exec(sys.modules[name])
)r   r   r   r   r   r   r	   r	   r
   ŚtestExecAsNonKeywordU   s    
z(TestsForPython3Code.testExecAsNonKeywordc                 C   s.   t  d”}t |”}|  |tj|dd” d S )Na<          import asyncio
        import time


        @print_args
        async def slow_operation():
            await asyncio.sleep(1)
            # print("Slow operation {} complete".format(n))


        async def main():
            start = time.time()
            if (await get_html()):
                pass
    F)Śverifyr   ©r   Ścoder   r	   r	   r
   ŚtestAsyncFunctions[   s    

z&TestsForPython3Code.testAsyncFunctionsc              
   C   sh   t  d”}t  d”}z>t t d”” t |”}|  |t 	|”” W t t 
” ” nt t 
” ” 0 d S )Nz        a**b
    z        a ** b
    z:{based_on_style: pep8, SPACES_AROUND_POWER_OPERATOR: True}©r   r   r   r   ZCreateStyleFromConfigr   r   r   r   r   r   r   r	   r	   r
   ŚtestNoSpacesAroundPowerOperatoro   s    

’’
’z3TestsForPython3Code.testNoSpacesAroundPowerOperatorc              
   C   sh   t  d”}t  d”}z>t t d”” t |”}|  |t 	|”” W t t 
” ” nt t 
” ” 0 d S )Nz        f(a=5)
    z        f(a = 5)
    zC{based_on_style: pep8, SPACES_AROUND_DEFAULT_OR_NAMED_ASSIGN: True}r   r   r	   r	   r
   Ś$testSpacesAroundDefaultOrNamedAssign   s    

’’
’z8TestsForPython3Code.testSpacesAroundDefaultOrNamedAssignc                 C   s4   t  d”}t  d”}t |”}|  |t |”” d S )Nzd        def foo(x: int=42):
            pass


        def foo2(x: 'int' =42):
            pass
    zg        def foo(x: int = 42):
            pass


        def foo2(x: 'int' = 42):
            pass
    r   r   r	   r	   r
   ŚtestTypeHint   s    


z TestsForPython3Code.testTypeHintc                 C   s4   t  d”}t  d”}t |”}|  |t |”” d S )Nz        a=b@c
    z        a = b @ c
    r   r   r	   r	   r
   ŚtestMatrixMultiplicationŖ   s    


z,TestsForPython3Code.testMatrixMultiplicationc                 C   s*   t  d”}t |”}|  |t |”” d S )Nz        None.__ne__()
    r   r   r	   r	   r
   ŚtestNoneKeyword“   s    

z#TestsForPython3Code.testNoneKeywordc                 C   s4   t  d”}t  d”}t |”}|  |t |”” d S )Nz        import asyncio

        # Comment
        async def bar():
            pass

        async def foo():
            pass
    z        import asyncio


        # Comment
        async def bar():
            pass


        async def foo():
            pass
    r   r   r	   r	   r
   ŚtestAsyncWithPrecedingComment»   s    



z1TestsForPython3Code.testAsyncWithPrecedingCommentc                 C   s*   t  d”}t |”}|  |t |”” d S )NzT        async def outer():

            async def inner():
                pass
    r   r   r	   r	   r
   ŚtestAsyncFunctionsNestedÕ   s    

z,TestsForPython3Code.testAsyncFunctionsNestedc                 C   s4   t  d”}t  d”}t |”}|  |t |”” d S )NzĒ        def _ReduceAbstractContainers(
            self, *args: Optional[automation_converter.PyiCollectionAbc]) -> List[
                automation_converter.PyiCollectionAbc]:
            pass
    zæ        def _ReduceAbstractContainers(
            self, *args: Optional[automation_converter.PyiCollectionAbc]
        ) -> List[automation_converter.PyiCollectionAbc]:
            pass
    r   r   r	   r	   r
   ŚtestKeepTypesIntactß   s    


z'TestsForPython3Code.testKeepTypesIntactc                 C   s4   t  d”}t  d”}t |”}|  |t |”” d S )Nz“        async def start_websocket():
            async with session.ws_connect(
                r"ws://a_really_long_long_long_long_long_long_url") as ws:
                pass
    zø        async def start_websocket():
            async with session.ws_connect(
                    r"ws://a_really_long_long_long_long_long_long_url") as ws:
                pass
    r   r   r	   r	   r
   ŚtestContinuationIndentWithAsyncļ   s    


z3TestsForPython3Code.testContinuationIndentWithAsyncc              
   C   sh   t  d”}t  d”}z>t t d”” t |”}|  |t 	|”” W t t 
” ” nt t 
” ” 0 d S )Naū          async def open_file(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None):
            pass

        async def run_sync_in_worker_thread(sync_fn, *args, cancellable=False, limiter=None):
            pass

        def open_file(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None):
            pass

        def run_sync_in_worker_thread(sync_fn, *args, cancellable=False, limiter=None):
            pass
    ač          async def open_file(
            file,
            mode='r',
            buffering=-1,
            encoding=None,
            errors=None,
            newline=None,
            closefd=True,
            opener=None
        ):
            pass


        async def run_sync_in_worker_thread(
            sync_fn, *args, cancellable=False, limiter=None
        ):
            pass


        def open_file(
            file,
            mode='r',
            buffering=-1,
            encoding=None,
            errors=None,
            newline=None,
            closefd=True,
            opener=None
        ):
            pass


        def run_sync_in_worker_thread(sync_fn, *args, cancellable=False, limiter=None):
            pass
    zÖ{based_on_style: pep8, dedent_closing_brackets: true, coalesce_brackets: false, space_between_ending_comma_and_closing_bracket: false, split_arguments_when_comma_terminated: true, split_before_first_argument: true}r   r   r	   r	   r
   ŚtestSplittingArguments’   s    

%’’	
’z*TestsForPython3Code.testSplittingArgumentsc                 C   s4   t  d”}t  d”}t |”}|  |t |”” d S )NzĒ        class Foo:
            def foo(self):
                foofoofoofoofoofoofoofoo('foofoofoofoofoo', {

                    'foo': 'foo',

                    **foofoofoo
                })
    zĘ        class Foo:

            def foo(self):
                foofoofoofoofoofoofoofoo('foofoofoofoofoo', {
                    'foo': 'foo',
                    **foofoofoo
                })
    r   r   r	   r	   r
   ŚtestDictUnpackingB  s    


	
z%TestsForPython3Code.testDictUnpackingc                 C   s*   t  d”}t |”}|  |t |”” d S )NzP        # yapf: disable
        (f'''
          ''')
        # yapf: enable
    r   r   r	   r	   r
   ŚtestMultilineFormatStringY  s    

z-TestsForPython3Code.testMultilineFormatStringc                 C   s*   t  d”}t |”}|  |t |”” d S )Nzo        def dirichlet(x12345678901234567890123456789012345678901234567890=...) -> None:
            return
    r   r   r	   r	   r
   ŚtestEllipsesd  s    

z TestsForPython3Code.testEllipsesc                 C   s*   t  d”}t |”}|  |t |”” d S )NzČ        def _GenerateStatsEntries(
            process_id: Text,
            timestamp: Optional[ffffffff.FFFFFFFFFFF] = None
        ) -> Sequence[ssssssssssss.SSSSSSSSSSSSSSS]:
            pass
    r   r   r	   r	   r
   ŚtestFunctionTypedReturnNextLinem  s    

z3TestsForPython3Code.testFunctionTypedReturnNextLinec                 C   s*   t  d”}t |”}|  |t |”” d S )Nz        def rrrrrrrrrrrrrrrrrrrrrr(
                ccccccccccccccccccccccc: Tuple[Text, Text]) -> List[Tuple[Text, Text]]:
            pass
    r   r   r	   r	   r
   ŚtestFunctionTypedReturnSameLinex  s    

z3TestsForPython3Code.testFunctionTypedReturnSameLinec                 C   s*   t  d”}t |”}|  |t |”” d S )NzŪ        async def fn():
            async for message in websocket:
                for i in range(10):
                    pass
                else:
                    pass
            else:
                pass
    r   r   r	   r	   r
   Ś%testAsyncForElseNotIndentedInsideBody  s    


z9TestsForPython3Code.testAsyncForElseNotIndentedInsideBodyc                 C   s*   t  d”}t |”}|  |t |”” d S )Nzx        async def fn():
            for i in range(10):
                pass
            else:
                pass
    r   r   r	   r	   r
   Ś&testForElseInAsyncNotMixedWithAsyncFor  s    

z:TestsForPython3Code.testForElseInAsyncNotMixedWithAsyncForc                 C   s4   t  d”}t  d”}t |”}|  |t |”” d S )NzĀ        def raw_message(  # pylint: disable=too-many-arguments
                    self, text, user_id=1000, chat_type='private', forward_date=None, forward_from=None):
                pass
    a
          def raw_message(  # pylint: disable=too-many-arguments
                self,
                text,
                user_id=1000,
                chat_type='private',
                forward_date=None,
                forward_from=None):
            pass
    r   r   r	   r	   r
   Ś%testParameterListIndentationConflicts  s    



z9TestsForPython3Code.testParameterListIndentationConflictsc                 C   s*   t  d”}t |”}|  |t |”” d S )Nz9       def my_coroutine():
           x: int = yield
    r   r   r	   r	   r
   ŚtestTypeHintedYieldExpression­  s    

z1TestsForPython3Code.testTypeHintedYieldExpressionc                 C   s4   t  d”}t  d”}t |”}|  |t |”” d S )Nz        a=3
        b=0
        match a :
            case 0 :
                b=1
            case _	:
                b=2
    z        a = 3
        b = 0
        match a:
            case 0:
                b = 1
            case _:
                b = 2
    r   r   r	   r	   r
   ŚtestSyntaxMatch¶  s    
	
	
z#TestsForPython3Code.testSyntaxMatchc                 C   s4   t  d”}t  d”}t |”}|  |t |”” d S )Nz        def test_copy_dimension(self):
            with (Dataset() as target_ds,
                  Dataset() as source_ds):
                do_something
    z        def test_copy_dimension(self):
            with (Dataset() as target_ds, Dataset() as source_ds):
                do_something
    r   r   r	   r	   r
   ŚtestParenthsizedContextManagerĪ  s    


z2TestsForPython3Code.testParenthsizedContextManagerc                 C   s4   t  d”}t  d”}t |”}|  |t |”” d S )Nz]        def a():
          t = (2,3)
          for i in range(5):
            yield i,*t
    zg        def a():
            t = (2, 3)
            for i in range(5):
                yield i, *t
    r   r   r	   r	   r
   ŚtestUnpackedTupleŽ  s    


z%TestsForPython3Code.testUnpackedTuplec                 C   s*   t  d”}t |”}|  |t |”” d S )NzC        t: tuple = 1, 2
        args = tuple(x for x in [2], )
    r   r   r	   r	   r
   ŚtestTypedTupleš  s    

z"TestsForPython3Code.testTypedTuplec                 C   s4   t  d”}t  d”}t |”}|  |t |”” d S )NzX        import os
        a=[1,2,3,4]
        if (n:=len(a))>2:
            print()
    zb        import os

        a = [1, 2, 3, 4]
        if (n := len(a)) > 2:
            print()
    r   r   r	   r	   r
   ŚtestWalrusOperatorś  s    


z&TestsForPython3Code.testWalrusOperatorc                 C   s4   t  d”}t  d”}t |”}|  |t |”” d S )NaČ          def json(self) -> JSONTask:
                result: JSONTask = {
                    "id": self.id,
                    "text": self.text,
                    "status": self.status,
                    "last_mod": self.last_mod_time
                }
                for i in "parent_id", "deadline", "reminder":
                    if x := getattr(self , i):
                        result[i] = x  # type: ignore
                return result
    a          def json(self) -> JSONTask:
            result: JSONTask = {
                "id": self.id,
                "text": self.text,
                "status": self.status,
                "last_mod": self.last_mod_time
            }
            for i in "parent_id", "deadline", "reminder":
                if x := getattr(self, i):
                    result[i] = x  # type: ignore
            return result
    r   r   r	   r	   r
   ŚtestCondAssign  s    


z"TestsForPython3Code.testCondAssignc                 C   s*   t  d”}t |”}|  |t |”” d S )Nz        a_dict = {'key': 'value'}
        a_dict_copy = {**a_dict}
        print('a_dict:', a_dict)
        print('a_dict_copy:', a_dict_copy)
    r   r   r	   r	   r
   ŚtestCopyDictionary+  s    

z&TestsForPython3Code.testCopyDictionaryN)&Ś__name__Ś
__module__Ś__qualname__Ś__doc__Śclassmethodr   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r	   r	   r	   r
   r      sF   


C			
r   Ś__main__)r<   Śsysr   ZunittestZyapf.yapflibr   r   Z	yapftestsr   ZYAPFTestr   r9   Śmainr	   r	   r	   r
   Ś<module>   s       "