
    ]                         d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ  G d	 d
ej                        Zy)z>A command that lists the resource collections for a given API.    )absolute_import)division)unicode_literals)base)
exceptions)flags)registryc                   &    e Zd ZdZed        Zd Zy)Lintz;Show which collections have non-compliant list API methods.c                 8   t         j                  j                  |        t         j                  j                  |        | j	                  dt
        j                  d       t
        j                  j                  |        | j                  j                  d       y )N--apiz/The name of the API to get the collections for.)	completerhelpz        table(
          collection:sort=6,
          has_list:sort=1,
          resource_arg:sort=2,
          flattened:sort=3,
          pageable:sort=4,
          page_size:sort=5)
    )r   PAGE_SIZE_FLAGRemoveFromParserURI_FLAGadd_argumentr   APICompleterAPI_VERSION_FLAGAddToParserdisplay_info	AddFormat)parsers    )lib/surface/meta/apis/collections/lint.pyArgsz	Lint.Args   sz    ((0MM""6*
$$>  @ 
&&v.
!! # 	    c                    |j                   r"|j                  st        j                  dd      t	        j
                  |j                  |j                         }g }|D ]  }t	        j                  |j                  |j                         }|s1|D cg c]  }|j                         s| }}|rw|d   }|j                  |j                  dt        |j                        t        |j                               |j                         t        |j                               d       |j                  |j                  dd	        |D 	cg c]  }	|	d
   r|	d   r|	d   r
|	d   r|	d   s|	 }}	|S c c}w c c}	w )Nr   zGThe --api-version flag can only be specified when using the --api flag.)api_nameapi_version)r   r   T)
collectionhas_listresource_arg	flattenedpageable	page_sizeF)r    r!   r!   r"   r#   r$   r%   )r   apir   RequiredArgumentExceptionr	   GetAPICollections
GetMethods	full_nameIsListappendboolrequest_collectionListItemFieldHasTokenizedRequestBatchPageSizeField)
selfargscollectionsresultscmethodsmlist_methodsmethodrs
             r   RunzLint.Run2   se   00
 
 ,,dhh9=9I9IKKG##AKKQ]]Kg!(7AAHHJal7	aakk$((,V-F-F(G%)&*>*>*@%A$*$>$>$@%)&*C*C*E%FH 	I 	akkuEF! & " ;'Q!J-*+N*;*+K.*+J-*+K.	 'G ;
 N% 8;s   E2)E2"E7N)__name__
__module____qualname____doc__staticmethodr   r<    r   r   r   r      s    C	 	$"r   r   N)r@   
__future__r   r   r   googlecloudsdk.callioper   r   $googlecloudsdk.command_lib.meta.apisr   $googlecloudsdk.command_lib.util.apisr	   ListCommandr   rB   r   r   <module>rH      s2     E &  ' ( . 6 984 8r   