Ë
    oj­R  ã                   ó"  — d Z ddlZddlmZ ddlmZmZ ddlmZm	Z	m
Z
 ddlmZmZmZmZ ddlmZ  G d„ d	e«      Z G d
„ de¬«      Zd„ Z G d„ dej,                  «      Z G d„ dej,                  «      Z G d„ dej,                  «      Z G d„ de
j4                  «      Z G d„ de
j4                  «      Z G d„ de«      Zd„ Z G d„ de
j4                  «      Z G d„ de
j4                  «      Z  G d„ d e
j4                  «      Z! G d!„ d"e«      Z"d#Z#d$Z$y)%z*
Test cases for twisted.python._shellcomp
é    N)ÚBytesIO)ÚListÚOptional)Ú
_shellcompÚreflectÚusage)ÚCompleteFilesÚCompleteListÚ	CompleterÚCompletions)Úunittestc                   ó   — e Zd ZdZd„ Zy)ÚZshScriptTestMetaz*
    Metaclass of ZshScriptTestMixin.
    c                 ó|   — d„ }d|v r|d   D ]  \  }} |||«      }||d|z   <   Œ t         j                  | |||«      S )Nc                 ó   ‡ ‡— ˆ ˆfd„}|S )Nc                 ó   •— t        | ‰‰«      S )N)Útest_genZshFunction)ÚselfÚcmdNameÚoptionsFQPNs    €€úD/usr/lib/python3/dist-packages/twisted/python/test/test_shellcomp.pyÚrunTestz<ZshScriptTestMeta.__new__.<locals>.makeTest.<locals>.runTest   s   ø€ Ü*¨4°¸+ÓFÐFó    © )r   r   r   s   `` r   ÚmakeTestz+ZshScriptTestMeta.__new__.<locals>.makeTest   s   ù€ õGð ˆNr   ÚgenerateForÚtest_genZshFunction_)ÚtypeÚ__new__)ÚclsÚnameÚbasesÚattrsr   r   r   Útests           r   r   zZshScriptTestMeta.__new__   s]   € ò	ð ˜EÑ!Ø(-¨mÑ(<ò ?Ñ$�˜Ù ¨Ó5�Ø:>�Ð,¨wÑ6Ò7ð?ô �|‰|˜C  u¨eÓ4Ð4r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r      s   „ ñó5r   r   c                   ó   — e Zd ZdZy)ÚZshScriptTestMixina§  
    Integration test helper to show that C{usage.Options} classes can have zsh
    completion functions generated for them without raising errors.

    In your subclasses set a class variable like so::

      #            | cmd name | Fully Qualified Python Name of Options class |
      #
      generateFor = [('conch',  'twisted.conch.scripts.conch.ClientOptions'),
                     ('twistd', 'twisted.scripts.twistd.ServerOptions'),
                     ]

    Each package that contains Twisted scripts should contain one TestCase
    subclass which also inherits from this mixin, and contains a C{generateFor}
    list appropriate for the scripts in that package.
    N)r%   r&   r'   r(   r   r   r   r*   r*   (   s   „ òr   r*   )Ú	metaclassc           	      ó  — t        «       }| j                  t        j                  d|«       	  t	        j
                  |«      «       }	 |j                  g d¢«       | j                  d«       |j                  d«       | j                  dt        |j!                  d«      «      «       |j                  d«       |j#                  «        t%        |d	«      r™|j&                  D ]Š  \  }}}}		 |j                  |d
ddg«       | j                  d«       |j                  d«       | j                  dt        |j!                  d«      «      «       |j                  d«       |j#                  «        ŒŒ | j)                  «        y# t        $ r}t        j                  d|›�«      ‚d}~ww xY w# t        $ r}t        j                  d|f«      ‚d}~wt        $ r Y �Œjw xY w# t        $ r}t        j                  d|f«      ‚d}~wt        $ r Y Œùw xY w)aI  
    Generate completion functions for given twisted command - no errors
    should be raised

    @type cmdName: C{str}
    @param cmdName: The name of the command-line utility e.g. 'twistd'

    @type optionsFQPN: C{str}
    @param optionsFQPN: The Fully Qualified Python Name of the C{Options}
        class to be tested.
    Ú_shellCompFilez.Couldn't import or instantiate Options class: N©Ú ú--_shell-completionúzsh:2zSystemExit not raisedz&ImportError calling parseOptions(): %sr   é   ÚsubCommandsr/   r0   zzsh:3z4ImportError calling parseOptions() on subcommand: %s)r   Úpatchr   ÚOptionsr   ÚnamedAnyÚ	Exceptionr   ÚSkipTestÚparseOptionsÚfailÚImportErrorÚ
SystemExitÚseekÚassertEqualÚlenÚreadÚtruncateÚhasattrr3   ÚflushWarnings)
r   r   r   Ú
outputFileÚoÚeÚcmdÚshortÚparserÚdocs
             r   r   r   ;   sÛ  € ô “€JØ‡J�JŒu�}‰}Ð.°
Ô;ð
Ø)ŒG×Ñ˜[Ó)Ó+ˆð
+Ø	�‰Ò;Ô<ð 	�	‰	Ð)Ô*Ø‡O�O�AÔà×Ñ�Qœ˜JŸO™O¨AÓ.Ó/Ô0Ø‡O�O�AÔØ×ÑÔô ˆq�-Ô Ø'(§}¡}ò 	"Ñ#ˆC�˜ ð3Ø—‘  RÐ)>ÀÐHÔIð —	‘	Ð1Ô2à�O‰O˜AÔà×Ñ˜Q¤ J§O¡O°AÓ$6Ó 7Ô8Ø�O‰O˜AÔØ×ÑÕ!ð%	"ð, 	×ÑÕøô] ò 
Ü×ÒÙEFÐHó
ð 	
ûð
ûô ò Pô ×ÑÐ HÈ1È$ÓOÐOûÜò Úðûô ò ô ×'Ñ'ØMÐPQÈtóð ûô ò ÙðúsS   ­E> ÁF' Ã)GÅ>	F$ÆFÆF$Æ'	GÆ0GÇGÇGÇ	H	Ç#G:Ç:H	ÈH	c                   ó^   — 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y)ÚZshTestsz'
    Tests for zsh completion code
    c                 óT  — t        «       }t        j                  |dt        «       «      }t        j
                  j                  j                  «       }|j                  t         j
                  j                  «       | j                  |j                  |«       | j                  |j                  t        t        j
                  j                  «      «       | j                  |j                  t        j
                  j                  «       t        j
                  j                  j                  «       }|j                  t         j
                  j                  «       | j                  |j                  |«       | j                  |j                  t        j
                  j                  «       y)zi
        Are `compData' attributes you can place on Options classes
        picked up correctly?
        ÚaceN)ÚFighterAceExtendedOptionsr   ÚZshArgumentsGeneratorr   ÚFighterAceOptionsÚcompDataÚdescriptionsÚcopyÚupdater>   ÚmultiUseÚsetÚmutuallyExclusiveÚ
optActionsÚextraActions)r   ÚoptsÚagrS   rY   s        r   Útest_accumulateMetadataz ZshTests.test_accumulateMetadata„   s#  € ô
 )Ó*ˆÜ×-Ñ-¨d°E¼7»9ÓEˆä(×1Ñ1×>Ñ>×CÑCÓEˆØ×ÑÔ5×>Ñ>×KÑKÔLà×Ñ˜Ÿ™¨,Ô7Ø×Ñ˜Ÿ™¤cÔ*;×*DÑ*D×*MÑ*MÓ&NÔOØ×ÑØ× Ñ Ô"3×"<Ñ"<×"NÑ"Nô	
ô '×/Ñ/×:Ñ:×?Ñ?ÓAˆ
Ø×ÑÔ3×<Ñ<×GÑGÔHØ×Ñ˜Ÿ™¨
Ô3à×Ñ˜Ÿ™Ô*;×*DÑ*D×*QÑ*QÕRr   c                 óÊ   —  G d„ dt         «      } |«       }t        j                  |dt        «       «      }h d£h d£h d£h d£h d£d	œ}| j	                  |j
                  |«       y
)z²
        Exercise a corner-case of ZshArgumentsGenerator.makeExcludesDict()
        where the long option name already exists in the `excludes` dict being
        built.
        c                   ó.   — e Zd Zg d¢gZ eg d¢g¬«      Zy)úGZshTests.test_mutuallyExclusiveCornerCase.<locals>.OddFighterAceOptions)ÚanatraNz0Select the Anatra DS as your dogfighter aircraft)ra   ÚfokkerÚalbatrosÚspadÚbristol©rX   N)r%   r&   r'   ÚoptFlagsr   rR   r   r   r   ÚOddFighterAceOptionsr`   ¢   s!   „ ò
 UðˆHñ #Ú#VÐ"Wô‰Hr   rh   rN   >   ÚbÚfÚsrd   ra   rb   re   >   Úari   rj   rk   rd   rb   re   rc   >   rl   rj   rk   rd   ra   rb   rc   >   rl   ri   rk   rd   ra   re   rc   >   rl   ri   rj   ra   rb   re   rc   )rc   ra   re   rb   rd   N)rO   r   rP   r   r>   Úexcludes)r   rh   r[   r\   Úexpecteds        r   Ú test_mutuallyExclusiveCornerCasez)ZshTests.test_mutuallyExclusiveCornerCase›   s^   € ô		Ô#<ô 		ñ $Ó%ˆÜ×-Ñ-¨d°E¼7»9ÓEˆò OÚSÚNÚNÚNñ
ˆð 	×Ñ˜Ÿ™ hÕ/r   c                 ó6  — t        «       }t        j                  |dt        «       «      }| j	                  d|j
                  «       | j	                  d|j                  «       | j	                  d|j                  «       | j	                  d|j                  «       y)z¥
        We pick up options that are only defined by having an
        appropriately named method on your Options class,
        e.g. def opt_foo(self, foo)
        rN   ÚnocrashÚ
difficultyN)rO   r   rP   r   ÚassertInÚflagNameToDefinitionÚallOptionsNameToDefinitionÚparamNameToDefinition)r   r[   r\   s      r   Ú test_accumulateAdditionalOptionsz)ZshTests.test_accumulateAdditionalOptionsº   sr   € ô )Ó*ˆÜ×-Ñ-¨d°E¼7»9ÓEˆà�‰�i ×!8Ñ!8Ô9Ø�‰�i ×!>Ñ!>Ô?à�‰�l B×$<Ñ$<Ô=Ø�‰�l B×$AÑ$AÕBr   c                 ó  —  G d„ dt         «      }| j                  t        t        j                   |«       dt        «       «        G d„ dt         «      }| j                  t        t        j                   |«       dt        «       «       y)z\
        Using a parameter/flag name that doesn't exist
        will raise an error
        c                   ó"   — e Zd Z eddi¬«      Zy)ú0ZshTests.test_verifyZshNames.<locals>.TmpOptionsÚdetaillN)rY   ©r%   r&   r'   r   rR   r   r   r   Ú
TmpOptionsrz   Ï   s   „ á"¨y¸$Ð.?Ô@‰Hr   r}   rN   c                   ó    — e Zd Z edg¬«      Zy)ú1ZshTests.test_verifyZshNames.<locals>.TmpOptions2)ÚfooÚbarrf   Nr|   r   r   r   ÚTmpOptions2r   ×   s   „ ñ #°nÐ5EÔF‰Hr   r‚   N)rO   ÚassertRaisesÚ
ValueErrorr   rP   r   )r   r}   r‚   s      r   Útest_verifyZshNameszZshTests.test_verifyZshNamesÉ   sn   € ô	AÔ2ô 	Að 	×ÑÜœ
×8Ñ8¹*»,ÈÌwËyô	
ô	GÔ3ô 	Gð
 	×ÑÜÜ×,Ñ,Ù‹MØÜ‹Iõ	
r   c                 ó(  — t        «       }| j                  t        j                  d|«       | j                  t        dg d¢«       t        «       }| j                  t        |j                  «       | j                  t        |j                  «       «       y)zt
        Generate a completion function, and test the textual output
        against a known correct output
        r-   Úargv)Úsillyr/   r0   r1   N)r   r4   r   r5   ÚsysÚSimpleProgOptionsrƒ   r<   r9   r>   ÚtestOutput1Úgetvalue©r   rD   r[   s      r   Útest_zshCodezZshTests.test_zshCodeä   sh   € ô
 “Yˆ
Ø�
‰
”5—=‘=Ð"2°JÔ?Ø�
‰
”3˜Ò MÔNÜ Ó"ˆØ×Ñœ* d×&7Ñ&7Ô8Ø×Ñœ j×&9Ñ&9Ó&;Õ<r   c                 ó(  — t        «       }| j                  t        j                  d|«       | j                  t        dg d¢«       t        «       }| j                  t        |j                  «       | j                  t        |j                  «       «       y)z…
        Generate a completion function with subcommands,
        and test the textual output against a known correct output
        r-   r‡   )Úsilly2r/   r0   r1   N)r   r4   r   r5   r‰   ÚSimpleProgWithSubcommandsrƒ   r<   r9   r>   ÚtestOutput2rŒ   r�   s      r   Útest_zshCodeWithSubszZshTests.test_zshCodeWithSubsð   sh   € ô
 “Yˆ
Ø�
‰
”5—=‘=Ð"2°JÔ?Ø�
‰
”3˜Ò NÔOÜ(Ó*ˆØ×Ñœ* d×&7Ñ&7Ô8Ø×Ñœ j×&9Ñ&9Ó&;Õ<r   c                 ó*  — t        «       }| j                  t        j                  d|«       t	        «       }| j                  t        |j                  g d¢«       |j                  d«       | j                  dt        |j                  d«      «      «       y)zx
        Completion still happens even if a command-line is given
        that would normally throw UsageError.
        r-   )ú--fokkerÚserverú--unknown-optionz--unknown-option2r0   úzsh:5r   r2   N©r   r4   r   r5   rQ   rƒ   r<   r9   r=   r>   r?   r@   r�   s      r   Útest_incompleteCommandLinez#ZshTests.test_incompleteCommandLineü   ss   € ô
 “Yˆ
Ø�
‰
”5—=‘=Ð"2°JÔ?Ü Ó"ˆà×ÑÜØ×Ñòô	
ð 	�‰˜Ôà×Ñ˜œC 
§¡°Ó 2Ó3Õ4r   c                 ól  — t        «       }| j                  t        j                  d|«       t	        «       }| j                  t        |j                  g d¢«       |j                  d«       | j                  dt        |j                  d«      «      «       |j                  d«       |j                  «        y)zý
        Completion still happens even if a command-line is given
        that would normally throw UsageError.

        The existence of --unknown-option prior to the subcommand
        will break subcommand detection... but we complete anyway
        r-   )r•   r—   r–   ú--list-serverr0   r˜   r   r2   N)r   r4   r   r5   rQ   rƒ   r<   r9   r=   r>   r?   r@   rA   r�   s      r   Ú test_incompleteCommandLine_case2z)ZshTests.test_incompleteCommandLine_case2  s‹   € ô “Yˆ
Ø�
‰
”5—=‘=Ð"2°JÔ?Ü Ó"ˆà×ÑÜØ×Ñòô	
ð 	�‰˜Ôà×Ñ˜œC 
§¡°Ó 2Ó3Ô4à�‰˜ÔØ×ÑÕr   c                 ó*  — t        «       }| j                  t        j                  d|«       t	        «       }| j                  t        |j                  g d¢«       |j                  d«       | j                  dt        |j                  d«      «      «       y)zà
        Completion still happens even if a command-line is given
        that would normally throw UsageError.

        Break subcommand detection in a different way by providing
        an invalid subcommand name.
        r-   )r•   zunknown-subcommandrœ   r0   zzsh:4r   r2   Nr™   r�   s      r   Ú test_incompleteCommandLine_case3z)ZshTests.test_incompleteCommandLine_case34  ss   € ô “Yˆ
Ø�
‰
”5—=‘=Ð"2°JÔ?Ü Ó"ˆà×ÑÜØ×Ñòô
	
ð 	�‰˜Ôà×Ñ˜œC 
§¡°Ó 2Ó3Õ4r   c                 ó*  — t        «       }| j                  t        j                  d|«       t	        «       }| j                  t        |j                  g d¢«       |j                  d«       | j                  dt        |j                  d«      «      «       y)z�
        Ensure the optimization which skips building the subcommand list
        under certain conditions isn't broken.
        r-   )z--albar0   r1   r   r2   Nr™   r�   s      r   Útest_skipSubcommandListz ZshTests.test_skipSubcommandListO  sp   € ô
 “Yˆ
Ø�
‰
”5—=‘=Ð"2°JÔ?Ü Ó"ˆà×ÑÜ˜×)Ñ)Ò+Uô	
ð 	�‰˜Ôà×Ñ˜œC 
§¡°Ó 2Ó3Õ4r   c                 óŒ   — t        «       }t        j                  |dd«      }|j                  d«      }| j	                  |d«       y)zY
        Test corner case fetching an option description from a method docstring
        rN   Nrˆ   )rQ   r   rP   ÚgetDescriptionr>   )r   r[   ÚargGenÚdescrs       r   Útest_poorlyDescribedOptMethodz&ZshTests.test_poorlyDescribedOptMethod_  sB   € ô !Ó"ˆÜ×1Ñ1°$¸¸tÓDˆà×%Ñ% gÓ.ˆð 	×Ñ˜ Õ(r   c                 óÄ   —  G d„ dt         j                  «      }t        «       } |«       }| j                  |d|«       | j	                  t
        |j                  g d¢«       y)zu
        A C{Completer} with repeat=True may only be used as the
        last item in the extraActions list.
        c                   óv   — e Zd Z ej                   ej
                  d¬«       ej
                  «       g¬«      Zy)ú2ZshTests.test_brokenActions.<locals>.BrokenActionsT)Úrepeat)rZ   N)r%   r&   r'   r   r   r   rR   r   r   r   ÚBrokenActionsr©   r  s0   „ Ø(�u×(Ñ(Ø-˜eŸo™o°TÔ:¸O¸E¿O¹OÓ<MÐNô‰Hr   r«   r-   r.   N)r   r5   r   r4   rƒ   r„   r9   )r   r«   rD   r[   s       r   Útest_brokenActionszZshTests.test_brokenActionsl  sO   € ô	œEŸM™Mô 	ô
 “Yˆ
Ù‹ˆØ�
‰
�4Ð)¨:Ô6Ø×ÑÜ˜×)Ñ)Ò+Oõ	
r   c                 óö   —  G d„ dt         j                  «      } |«       }t        j                  |dd«      }| j	                  |j                  d«      d«       | j	                  |j                  d«      d«       y)	z~
        opt_* methods on Options classes should not override the
        data provided in optFlags or optParameters.
        c                   ó,   — e Zd Zg d¢gZg d¢gZd„ Zd„ Zy)ú5ZshTests.test_optMethodsDontOverride.<locals>.Options)Úflagrj   úA flag)ÚparamÚpNúA paramc                  ó   — y©zjunk descriptionNr   ©r   s    r   Úopt_flagz>ZshTests.test_optMethodsDontOverride.<locals>.Options.opt_flagˆ  ó   � r   c                  ó   — yr¶   r   )r   r²   s     r   Ú	opt_paramz?ZshTests.test_optMethodsDontOverride.<locals>.Options.opt_param‹  r¹   r   N)r%   r&   r'   rg   ÚoptParametersr¸   r»   r   r   r   r5   r¯   „  s   „ Ú/Ð0ˆHÚ<Ð=ˆMò'ó'r   r5   rN   Nr°   r±   r²   r´   )r   r5   r   rP   r>   r£   )r   r5   r[   r¤   s       r   Útest_optMethodsDontOverridez$ZshTests.test_optMethodsDontOverride~  se   € ô	'”e—m‘mô 	'ñ ‹yˆÜ×1Ñ1°$¸¸tÓDˆà×Ñ˜×.Ñ.¨vÓ6¸ÔAØ×Ñ˜×.Ñ.¨wÓ7¸ÕCr   N)r%   r&   r'   r(   r]   ro   rw   r…   rŽ   r“   rš   r�   rŸ   r¡   r¦   r¬   r½   r   r   r   rL   rL      sK   „ ñòSò.0ò>Cò
ò6
=ò
=ò5ò2ò>5ò65ò )ò
ó$Dr   rL   c                   ó   — e Zd Zd„ Zy)ÚEscapeTestsc                 óŒ   — t         j                  }d}| j                   ||«      d«       d}| j                   ||«      d«       y)z5
        Verify _shellcomp.escape() function
        ú$z'$'zA--'$"\`--Bz"A--'\$\"\\\`--B"N)r   Úescaper>   )r   Úescr$   s      r   Útest_escapezEscapeTests.test_escape–  sB   € ô ×ÑˆàˆØ×Ñ™˜T› EÔ*àˆØ×Ñ™˜T›Ð$=Õ>r   N)r%   r&   r'   rÄ   r   r   r   r¿   r¿   •  s   „ ó
?r   r¿   c                   ó   — e Zd ZdZd„ Zy)ÚCompleterNotImplementedTestszª
    Test that using an unknown shell constant with SubcommandAction
    raises NotImplementedError

    The other Completer() subclasses are tested in test_usage.py
    c                 óp   — t        j                  «       }| j                  t        |j                  dd«       y)zM
        Using an unknown shellType should raise NotImplementedError
        NÚbad_shell_type)r   ÚSubcommandActionrƒ   ÚNotImplementedErrorÚ
_shellCode)r   Úactions     r   Útest_unknownShellz.CompleterNotImplementedTests.test_unknownShell«  s0   € ô ×,Ñ,Ó.ˆà×ÑÜ ×!2Ñ!2°DÐ:Jõ	
r   N)r%   r&   r'   r(   rÍ   r   r   r   rÆ   rÆ   £  s   „ ñó
r   rÆ   c                   ó$   — e Zd ZdZg d¢gZg d¢gZy)ÚFighterAceServerOptionsz4
    Options for FighterAce 'server' subcommand
    )zlist-serverNz3List this server with the online FighterAce network)zpackets-per-secondNz+Number of update packets to send per secondÚ20N)r%   r&   r'   r(   rg   r¼   r   r   r   rÏ   rÏ   ¶  s    „ ñò
 	Uð€Hò	
ð�Mr   rÏ   c            	       óæ   — e Zd ZU dZg d¢g d¢g d¢g d¢g d¢g d¢g d¢gZeeee         ed	<   g d
¢g d¢gZ	eeee         ed<   dde
dggZ edddœdgg d¢gd edg«      i ed¬«      g¬«      Zd„ Zy)rQ   zB
    Command-line options for an imaginary `Fighter Ace` game
    )rb   rj   z2Select the Fokker Dr.I as your dogfighter aircraft)rc   rl   z5Select the Albatros D-III as your dogfighter aircraft)rd   rk   z1Select the SPAD S.VII as your dogfighter aircraft)re   ri   z4Select the Bristol Scout as your dogfighter aircraft)Úphysicsr³   z$Enable secret Twisted physics engine)ÚjamÚjz6Enable a small chance that your machine guns will jam!©ÚverboseÚvz1Verbose logging (may be specified more than once)rg   )z
pilot-nameNzWhat's your name, Ace?zManfred von Richthofen)ÚdetailÚdz*Select the level of rendering detail (1-5)Ú3r¼   r–   NzStart FighterAce game-server.zTwisted-PhysicszRendering detail level)rÒ   rØ   rÖ   )rb   rc   rd   re   rØ   Ú12345zsaved game file to load©r¥   ©rS   rV   rX   rY   rZ   c                  ó   — y)ú Nr   r·   s    r   Ú	opt_sillyzFighterAceOptions.opt_sillyè  r¹   r   )r%   r&   r'   r(   rg   r   r   ÚstrÚ__annotations__r¼   rÏ   r3   r   r
   r	   rR   rà   r   r   r   rQ   rQ   È  s¹   … ñò
 	NÚRÚJÚPÚ@ÚNÚMð+€Hˆd�4˜ ™Ñ&Ñ'ó ò 	QÚJð0€M�4˜˜X c™]Ñ+Ñ,ó ð 
�4Ð0Ð2QÐRð€Kñ Ø!2Ð>VÑWØ�ÚDÐEØ™lÐ,?Ð+@ÓAÐBÙ#Ð*CÔDÐEô€Hór   rQ   c                   óZ   — e Zd ZdZg d¢gZg d¢gZ eddid ed¬«      i¬	«      Zd
„ Z	d„ Z
y)rO   zÃ
    Extend the options and zsh metadata provided by FighterAceOptions.
    _shellcomp must accumulate options and metadata from all classes in the
    hiearchy so this is important to test.
    )ú	no-stallsNz+Turn off the ability to stall your aircraft)úreality-levelNz)Select the level of physics reality (1-5)Ú5rä   zCan't stall your planerå   zPhysics reality levelrÜ   )rS   rY   c                  ó   — y)z8
        Select that you can't crash your plane
        Nr   r·   s    r   Úopt_nocrashz%FighterAceExtendedOptions.opt_nocrashþ  r¹   r   c                  ó   — y)z+
        How tough are you? (1-10)
        Nr   )r   rr   s     r   Úopt_difficultyz(FighterAceExtendedOptions.opt_difficulty  r¹   r   N)r%   r&   r'   r(   rg   r¼   r   r   rR   rè   rê   r   r   r   rO   rO   í  sI   „ ñò SÐS€HâQð€Mñ Ø!Ð#;Ð<Ø#¡YÐ5LÔ%MÐNô€Hò
ó
r   rO   c                  ó    — t        g d¢d¬«      S )N)Ú1Ú2rÚ   zAccuracy'`?rÜ   )r
   r   r   r   Ú_accuracyActionrî   	  s   € äš¨}Ô=Ð=r   c            	       óŽ   — e Zd ZdZg d¢g d¢g d¢gZg d¢g d¢gZ eddd	œd
gddgg eg d¢d¬«      edœ e	d¬«      g¬«      Z
d„ Zy)rŠ   z>
    Command-line options for a `Silly` imaginary program
    )ÚcolorÚczTurn on color output)ÚgrayÚgzTurn on gray-scale outputrÕ   )ÚoptimizationNræ   z&Select the level of optimization (1-5))Úaccuracyrl   rÚ   z"Select the level of accuracy (1-3)zColor onzOptimization level)rð   rô   rÖ   rð   rò   )rì   rí   rÚ   Ú4ræ   zOptimization?rÜ   )rô   rõ   zoutput filerÝ   c                  ó   — y)zM
        usage.Options does not recognize single-letter opt_ methods
        Nr   r·   s    r   Úopt_XzSimpleProgOptions.opt_X+  r¹   r   N)r%   r&   r'   r(   rg   r¼   r   r
   rî   r	   rR   rø   r   r   r   rŠ   rŠ     sw   „ ñò
 	/Ú2ÚMð€Hò 	NÚDð€Mñ
 Ø)Ð;OÑPØ�Ø# VÐ,Ð-á(Ú)°ôð (ñ	
ñ $¨-Ô8Ð9ô€Hór   rŠ   c                   ó   — e Zd Zg d¢gZy)ÚSimpleProgSub1)úsub-optrk   zSub Opt OneN©r%   r&   r'   rg   r   r   r   rú   rú   1  ó
   „ Ú/Ð0�Hr   rú   c                   ó   — e Zd Zg d¢gZy)ÚSimpleProgSub2)rû   rk   zSub Opt TwoNrü   r   r   r   rÿ   rÿ   5  rý   r   rÿ   c                   óF   — e Zd ZdgddggZdgddgg d¢gZdd	ed
gdd	edggZy	)r‘   zsome-optionzother-optionrE   z
some-paramzother-paramr³   )zanother-paramÚPzYet Another ParamÚsub1NzSub Command 1Úsub2zSub Command 2)r%   r&   r'   rg   r¼   rú   rÿ   r3   r   r   r   r‘   r‘   9  sM   „ Ø� .°#Ð!6Ð7€Hð 
ˆØ	˜ÐÚ3ð€Mð 
��~ Ð7Ø	��~ Ð7ð�Kr   r‘   sº  #compdef silly

_arguments -s -A "-*" \
':output file (*):_files -g "*"' \
"(--accuracy)-a[Select the level of accuracy (1-3)]:Accuracy'\`?:(1 2 3)" \
"(-a)--accuracy=[Select the level of accuracy (1-3)]:Accuracy'\`?:(1 2 3)" \
'(--color --gray -g)-c[Color on]' \
'(--gray -c -g)--color[Color on]' \
'(--color --gray -c)-g[Turn on gray-scale output]' \
'(--color -c -g)--gray[Turn on gray-scale output]' \
'--help[Display this help and exit.]' \
'--optimization=[Optimization level]:Optimization?:(1 2 3 4 5)' \
'*-v[Verbose logging (may be specified more than once)]' \
'*--verbose[Verbose logging (may be specified more than once)]' \
'--version[Display Twisted version and exit.]' \
&& return 0
s×  #compdef silly2

_arguments -s -A "-*" \
'*::subcmd:->subcmd' \
':output file (*):_files -g "*"' \
"(--accuracy)-a[Select the level of accuracy (1-3)]:Accuracy'\`?:(1 2 3)" \
"(-a)--accuracy=[Select the level of accuracy (1-3)]:Accuracy'\`?:(1 2 3)" \
'(--another-param)-P[another-param]:another-param:_files' \
'(-P)--another-param=[another-param]:another-param:_files' \
'(--color --gray -g)-c[Color on]' \
'(--gray -c -g)--color[Color on]' \
'(--color --gray -c)-g[Turn on gray-scale output]' \
'(--color -c -g)--gray[Turn on gray-scale output]' \
'--help[Display this help and exit.]' \
'--optimization=[Optimization level]:Optimization?:(1 2 3 4 5)' \
'(--other-option)-o[other-option]' \
'(-o)--other-option[other-option]' \
'(--other-param)-p[other-param]:other-param:_files' \
'(-p)--other-param=[other-param]:other-param:_files' \
'--some-option[some-option]' \
'--some-param=[some-param]:some-param:_files' \
'*-v[Verbose logging (may be specified more than once)]' \
'*--verbose[Verbose logging (may be specified more than once)]' \
'--version[Display Twisted version and exit.]' \
&& return 0
local _zsh_subcmds_array
_zsh_subcmds_array=(
"sub1:Sub Command 1"
"sub2:Sub Command 2"
)

_describe "sub-command" _zsh_subcmds_array
)%r(   r‰   Úior   Útypingr   r   Útwisted.pythonr   r   r   Útwisted.python.usager	   r
   r   r   Útwisted.trialr   r   r   r*   r   ÚTestCaserL   r¿   rÆ   r5   rÏ   rQ   rO   rî   rŠ   rú   rÿ   r‘   r‹   r’   r   r   r   ú<module>r
     sþ   ðñó
 Ý ß !ç 5Ñ 5ß TÓ TÝ "ô5˜ô 5ô,Ð#4õ ò&AôHSDˆx× Ñ ô SDôl?�(×#Ñ#ô ?ô
 8×#4Ñ#4ô 
ô&˜eŸm™mô ô$"˜Ÿ™ô "ôJÐ 1ô ò8>ô
 ˜Ÿ™ô  ôF1�U—]‘]ô 1ô1�U—]‘]ô 1ôÐ 1ô ð€ð& �r   