
    5                     H   S r SSKrSSKrSSKJrJrJrJrJr  SSK	J
r
  SSKJr  SSKJr  \r\R                   S:  a  \R"                  r " S S	5      r   SS
\R&                  S\\\\R&                        \\\\R&                        S4   4   S\\   S\\   S\SS4S jjrg)z BQ CLI helper functions for IDs.    N)AnyOptionalTupleTypeUnion)app)bq_error)
stringutil)      c                      \ rS rSrSrS r " S S\R                  5      r " S S\5      r	 " S S	\5      r
 " S
 S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S  S!\5      r " S" S#\5      r " S$ S%\5      r " S& S'\5      r " S( S)\5      rS*rg+),ApiClientHelper   zGStatic helper methods and classes not provided by the discovery client.c                     [        S5      e)Nz/Cannot instantiate static class ApiClientHelper)NotImplementedError)selfunused_argsunused_kwdss       platform/bq/utils/bq_id_utils.py__init__ApiClientHelper.__init__   s    
O
PP    c                       \ rS rSrSr\" 5       r\" 5       rSrS r	\
S\SS 4S j5       rS rS	 rS
 rS rS rS rS rSrg)ApiClientHelper.Reference   z7Base class for Reference objects returned by apiclient. c                    [        U 5      [        R                  :X  a  SU l        [	        S5      eU R
                   HO  nUR                  US5      (       d'  [        SU< SU R                  R                  < 35      e[        XX   5        MQ     U R                   H*  nUR                  US5      (       d  M  [        XX   5        M,     g )Nunimplementedz;Cannot instantiate abstract class ApiClientHelper.Referencer   zMissing required argument z to )typer   	Referencetypenamer   _required_fieldsget
ValueError	__class____name__setattr_optional_fields)r   kwdsnames      r   r   "ApiClientHelper.Reference.__init__   s    	d00	0,!I
 	
 ''$xxb!!t~~..0  	DJ' ( ''$88D"
$dj
) (r   r)   returnc                 Z   ^  [        U 4S jUR                  5        5       5      nT " S0 UD6$ )zFactory method for this class.c              3      >#    U  H5  u  pUTR                   R                  TR                  5      ;   d  M0  X4v   M7     g 7fN)r"   unionr(   ).0kvclss      r   	<genexpr>3ApiClientHelper.Reference.Create.<locals>.<genexpr>2   s=      "da#&&,,S-A-ABB 1&"s
   /A 
A  )dictitems)r4   r)   argss   `  r   Create ApiClientHelper.Reference.Create/   s0      jjl d
 [4[r   c                 ^    [        U R                  R                  U R                  5      5      $ r/   )iterr"   r0   r(   r   s    r   __iter__"ApiClientHelper.Reference.__iter__9   s$    $''--d.C.CDEEr   c                     XR                   ;   a  XR                  ;   a  U R                  U   $ g XR                  ;   a  U R                  U   $ [        U5      er/   )r(   __dict__r"   KeyError)r   keys     r   __getitem__%ApiClientHelper.Reference.__getitem__<   sO    	%%	%--s#
#	%%	%}}S!!SMr   c                 *    [        [        U 5      5      $ r/   )hashstrr?   s    r   __hash__"ApiClientHelper.Reference.__hash__F   s    #d)_r   c                 ^    [        U R                  R                  U R                  5      5      $ r/   )lenr"   r0   r(   r?   s    r   __len__!ApiClientHelper.Reference.__len__I   s$    &&,,T-B-BCDDr   c                 Z    [         R                  " U R                  [        U 5      -  5      $ r/   )r
   
ensure_str_format_strr8   r?   s    r   __str__!ApiClientHelper.Reference.__str__L   s"    ""4#3#3d4j#@AAr   c                 *    U R                   < SU < S3$ )Nz ''r!   r?   s    r   __repr__"ApiClientHelper.Reference.__repr__O   s    --..r   c                    ^ ^ [        U5      m[        UU 4S jT R                  R                  T R                  5       5       5      $ )Nc              3   d   >#    U  H%  n[        TUS 5      TR                  US 5      :H  v   M'     g 7fr/   )getattrr#   )r1   r*   dr   s     r   r5   3ApiClientHelper.Reference.__eq__.<locals>.<genexpr>T   s1      Hd $d
#quuT4'8
8Hs   -0)r8   allr"   r0   r(   )r   otherr^   s   ` @r   __eq__ ApiClientHelper.Reference.__eq__R   s=    
u+a ++11$2G2GH  r   rX   N)r&   
__module____qualname____firstlineno____doc__	frozensetr"   r(   rS   r   classmethodr   r;   r@   rF   rK   rO   rT   rY   rb   __static_attributes__r7   r   r   r    r      sh    A { {K*$ C $?  FEB/r   r    c                   ^   ^  \ rS rSrSr\" S5      r\" S5      rSrSr	U 4S jr
S
S jrS	rU =r$ )ApiClientHelper.JobReferenceY   zA JobReference.)	projectIdjobId)locationz%(projectId)s:%(jobId)sjobc                 N   > US   U l         US   U l        [        TU ]  " S0 UD6  g )Nrn   ro   r7   )rn   ro   superr   r   r)   r%   s     r   r   %ApiClientHelper.JobReference.__init__a   s*     -dnWdjgr   c                 P    [         R                  R                  U R                  S9$ Nrn   r   ProjectReferencer;   rn   r?   s    r   GetProjectReference0ApiClientHelper.JobReference.GetProjectReferenceh        --44t~~4NNr   )ro   rn   r,    ApiClientHelper.ProjectReference)r&   rd   re   rf   rg   rh   r"   r(   rS   r!   r   r{   rj   __classcell__r%   s   @r   JobReferencerl   Y   s8     !78 /+KHO Or   r   c                   l   ^  \ rS rSrSr\" S5      rSrSrU 4S jr	S\
SS	4S
 jrS\
S\
SS4S jrSrU =r$ )r   k   zA ProjectReference.rx   z%(projectId)sprojectc                 :   > US   U l         [        TU ]  " S0 UD6  g )Nrn   r7   )rn   rs   r   rt   s     r   r   )ApiClientHelper.ProjectReference.__init__r   s     -dngr   
dataset_idr,    ApiClientHelper.DatasetReferencec                 R    [         R                  R                  U R                  US9$ Nrn   	datasetId)r   DatasetReferencer;   rn   )r   r   s     r   GetDatasetReference4ApiClientHelper.ProjectReference.GetDatasetReferencex   s+     --44NNj 5  r   table_idApiClientHelper.TableReferencec                 R    [         R                  R                  U R                  XS9$ Nrn   r   tableId)r   TableReferencer;   rn   )r   r   r   s      r   GetTableReference2ApiClientHelper.ProjectReference.GetTableReference   s+     ++22NNj 3  r   )r&   rd   re   rf   rg   rh   r"   rS   r!   r   rJ   r   r   rj   r   r   s   @r   rz    ApiClientHelper.ProjectReferencek   sW     0!KH	+),	) r   rz   c                   `   ^  \ rS rSrSr\" S5      rSrSrU 4S jr	SS jr
S	\SS
4S jrSrU =r$ )r      zA DatasetReference.r   z%(projectId)s:%(datasetId)sdatasetc                 N   > US   U l         US   U l        [        TU ]  " S0 UD6  g )Nrn   r   r7   )rn   r   rs   r   rt   s     r   r   )ApiClientHelper.DatasetReference.__init__   s+     -dn -dngr   r,   c                 P    [         R                  R                  U R                  S9$ rw   ry   r?   s    r   r{   4ApiClientHelper.DatasetReference.GetProjectReference   r}   r   r   r   c                 h    [         R                  R                  U R                  U R                  US9$ r   )r   r   r;   rn   r   )r   r   s     r   r   2ApiClientHelper.DatasetReference.GetTableReference   s1     ++22NNdnnh 3  r   )r   rn   r~   )r&   rd   re   rf   rg   rh   r"   rS   r!   r   r{   rJ   r   rj   r   r   s   @r   r    ApiClientHelper.DatasetReference   sA     !;</KHO	) r   r   c                   X   ^  \ rS rSrSr\" S5      rSrSrU 4S jr	S
S jr
SS jrS	rU =r$ )r      zA TableReference.r   z'%(projectId)s:%(datasetId)s.%(tableId)stablec                 b   > US   U l         US   U l        US   U l        [        TU ]  " S0 UD6  g )Nrn   r   r   r7   )rn   r   r   rs   r   rt   s     r   r   'ApiClientHelper.TableReference.__init__   6     -dn -dny/dlgr   c                 f    [         R                  R                  U R                  U R                  S9$ r   )r   r   r;   rn   r   r?   s    r   r   2ApiClientHelper.TableReference.GetDatasetReference   s-    --44NNdnn 5  r   c                 P    [         R                  R                  U R                  S9$ rw   ry   r?   s    r   r{   2ApiClientHelper.TableReference.GetProjectReference   r}   r   )r   rn   r   )r,   r   r~   )r&   rd   re   rf   rg   rh   r"   rS   r!   r   r   r{   rj   r   r   s   @r   r   ApiClientHelper.TableReference   s2     !FG;KH
O Or   r   c                   @   ^  \ rS rSr\" S5      rSrSrU 4S jrSr	U =r
$ )ApiClientHelper.ModelReference   )rn   r   modelIdz'%(projectId)s:%(datasetId)s.%(modelId)smodelc                 b   > US   U l         US   U l        US   U l        [        TU ]  " S0 UD6  g )Nrn   r   r   r7   )rn   r   r   rs   r   rt   s     r   r   'ApiClientHelper.ModelReference.__init__   r   r   )r   r   rn   r&   rd   re   rf   rh   r"   rS   r!   r   rj   r   r   s   @r   ModelReferencer      s#     !FG;KH r   r   c                   V   ^  \ rS rSrSr\" S5      rSrSrSr	U 4S jr
S\4S	 jrS
rU =r$ ) ApiClientHelper.RoutineReference   zA RoutineReference.)rn   r   	routineIdz)%(projectId)s:%(datasetId)s.%(routineId)szDprojects/%(projectId)s/datasets/%(datasetId)s/routines/%(routineId)sroutinec                 b   > US   U l         US   U l        US   U l        [        TU ]  " S0 UD6  g )Nrn   r   r   r7   )rn   r   r   rs   r   rt   s     r   r   )ApiClientHelper.RoutineReference.__init__   s7     -dn -dn -dngr   r,   c                 2    U R                   [        U 5      -  $ r/   	_path_strr8   r?   s    r   path%ApiClientHelper.RoutineReference.path       ^^d4j((r   )r   rn   r   r&   rd   re   rf   rg   rh   r"   rS   r   r!   r   rJ   r   rj   r   r   s   @r   RoutineReferencer      s<     !HI=KN  H)c ) )r   r   c                   @   ^  \ rS rSr\" S5      rSrSrU 4S jrSr	U =r
$ )(ApiClientHelper.RowAccessPolicyReference   )rn   r   r   policyIdz4%(projectId)s:%(datasetId)s.%(tableId)s.%(policyId)szrow access policyc                 v   > US   U l         US   U l        US   U l        US   U l        [        TU ]  " S0 UD6  g )Nrn   r   r   r   r7   )rn   r   r   r   rs   r   rt   s     r   r   1ApiClientHelper.RowAccessPolicyReference.__init__   sB     -dn -dny/dl
+dmgr   )r   r   rn   r   r   r   s   @r   RowAccessPolicyReferencer      s(     9 IK"H r   r   c                   @   ^  \ rS rSr\" S5      rSrSrU 4S jrSr	U =r
$ )'ApiClientHelper.TransferConfigReference   )transferConfigNamez%(transferConfigName)sztransfer configc                 :   > US   U l         [        TU ]  " S0 UD6  g )Nr   r7   )r   rs   r   rt   s     r   r   0ApiClientHelper.TransferConfigReference.__init__   s!    %)*>%?dgr   r   r   s   @r   TransferConfigReferencer      s#     !89*K H r   r   c                   @   ^  \ rS rSr\" S5      rSrSrU 4S jrSr	U =r
$ )$ApiClientHelper.TransferRunReference   )transferRunNamez%(transferRunName)sztransfer runc                 :   > US   U l         [        TU ]  " S0 UD6  g )Nr   r7   )r   rs   r   rt   s     r   r   -ApiClientHelper.TransferRunReference.__init__   s!    "&'8"9dgr   r   r   s   @r   TransferRunReferencer      s#     !56'KH r   r   c                   ,    \ rS rSr\" S5      rSrSrSrg)&ApiClientHelper.NextPageTokenReference   )pageTokenIdz%(pageTokenId)sz
page tokenr7   N	r&   rd   re   rf   rh   r"   rS   r!   rj   r7   r   r   NextPageTokenReferencer      s     !12#KHr   r   c                       \ rS rSrSrg)$ApiClientHelper.TransferLogReferencei  r7   N)r&   rd   re   rf   rj   r7   r   r   TransferLogReferencer     s    r   r   c                   ,    \ rS rSr\" S5      rSrSrSrg)(ApiClientHelper.EncryptionServiceAccounti  )serviceAccountz%(serviceAccount)sNr7   r   r7   r   r   EncryptionServiceAccountr     s     !45&K
 Hr   r   c                   >    \ rS rSr\" S5      rSrSrSrS\	4S jr
Srg	)
$ApiClientHelper.ReservationReferencei  )rn   rp   reservationId,%(projectId)s:%(location)s.%(reservationId)szLprojects/%(projectId)s/locations/%(location)s/reservations/%(reservationId)sreservationr,   c                 2    U R                   [        U 5      -  $ r/   r   r?   s    r   r   )ApiClientHelper.ReservationReference.path  r   r   r7   Nr&   rd   re   rf   rh   r"   rS   r   r!   rJ   r   rj   r7   r   r   ReservationReferencer     s)     !KL@K^IH)c )r   r   c                   V   ^  \ rS rSrSr\" S5      rSrSrSr	U 4S jr
S\4S	 jrS
rU =r$ )+ApiClientHelper.CapacityCommitmentReferencei  z;Helper class to provide a reference to capacity commitment.)rn   rp   capacityCommitmentIdz3%(projectId)s:%(location)s.%(capacityCommitmentId)szZprojects/%(projectId)s/locations/%(location)s/capacityCommitments/%(capacityCommitmentId)szcapacity commitmentc                 b   > US   U l         US   U l        US   U l        [        TU ]  " S0 UD6  g )Nrn   rp   r   r7   )rn   rp   r   rs   r   rt   s     r   r   4ApiClientHelper.CapacityCommitmentReference.__init__#  s9     -dn
+dm'+,B'Cdgr   r,   c                 2    U R                   [        U 5      -  $ r/   r   r?   s    r   r   0ApiClientHelper.CapacityCommitmentReference.path+  r   r   )r   rp   rn   r   r   s   @r   CapacityCommitmentReferencer     s<    E 9 HKlI$H)c ) )r   r   c                   T    \ rS rSrSr\" S5      rSrSrSr	Sr
S\4S	 jrS\4S
 jrSrg).ApiClientHelper.ReservationAssignmentReferencei.  z>Helper class to provide a reference to reservation assignment.)rn   rp   r   reservationAssignmentIdzH%(projectId)s:%(location)s.%(reservationId)s.%(reservationAssignmentId)sztprojects/%(projectId)s/locations/%(location)s/reservations/%(reservationId)s/assignments/%(reservationAssignmentId)sr   zreservation assignmentr,   c                 2    U R                   [        U 5      -  $ r/   r   r?   s    r   r   3ApiClientHelper.ReservationAssignmentReference.path9  r   r   c                 2    U R                   [        U 5      -  $ r/   )_reservation_format_strr8   r?   s    r   reservation_path?ApiClientHelper.ReservationAssignmentReference.reservation_path<  s    ))DJ66r   r7   N)r&   rd   re   rf   rg   rh   r"   rS   r   r  r!   rJ   r   r  rj   r7   r   r   ReservationAssignmentReferencer   .  sF    H M ]K GIL'H)c )7# 7r   r  c                   T    \ rS rSrSr\" S5      rSrSrSr	Sr
S\4S	 jrS\4S
 jrSrg)&ApiClientHelper.BiReservationReferencei?  z6Helper class to provide a reference to bi reservation.)rn   rp   z%(projectId)s:%(location)sz;projects/%(projectId)s/locations/%(location)s/biReservationz-projects/%(projectId)s/locations/%(location)szbi reservationr,   c                 2    U R                   [        U 5      -  $ r/   r   r?   s    r   r   +ApiClientHelper.BiReservationReference.pathH  r   r   c                 2    U R                   [        U 5      -  $ r/   )_create_path_strr8   r?   s    r   create_path2ApiClientHelper.BiReservationReference.create_pathK  s    ""T$Z//r   r7   N)r&   rd   re   rf   rg   rh   r"   rS   r   r
  r!   rJ   r   r  rj   r7   r   r   BiReservationReferencer  ?  s>    @ !:;.KMIFH)c )0S 0r   r  c                   V   ^  \ rS rSrSr\" S5      rSrSrSr	U 4S jr
S\4S	 jrS
rU =r$ ))ApiClientHelper.ReservationGroupReferenceiN  z9Helper class to provide a reference to reservation group.)rn   rp   reservationGroupIdz1%(projectId)s:%(location)s.%(reservationGroupId)szVprojects/%(projectId)s/locations/%(location)s/reservationGroups/%(reservationGroupId)szreservation groupc                 b   > US   U l         US   U l        US   U l        [        TU ]  " S0 UD6  g )Nrn   rp   r  r7   )rn   rp   r  rs   r   rt   s     r   r   2ApiClientHelper.ReservationGroupReference.__init__X  s9     -dn
+dm%)*>%?dgr   r,   c                 2    U R                   [        U 5      -  $ r/   r   r?   s    r   r   .ApiClientHelper.ReservationGroupReference.path`  r   r   )rp   rn   r  r   r   s   @r   ReservationGroupReferencer  N  s<    C 7 FKhI"H)c ) )r   r  c                   >    \ rS rSr\" S5      rSrSrSrS\	4S jr
Srg	)
#ApiClientHelper.ConnectionReferenceic  )rn   rp   connectionIdz+%(projectId)s.%(location)s.%(connectionId)szJprojects/%(projectId)s/locations/%(location)s/connections/%(connectionId)s
connectionr,   c                 2    U R                   [        U 5      -  $ r/   r   r?   s    r   r   (ApiClientHelper.ConnectionReference.pathi  r   r   r7   Nr   r7   r   r   ConnectionReferencer  c  s)     !JK?K\IH)c )r   r  r7   N)r&   rd   re   rf   rg   r   collections_abcMappingr    r   rz   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  rj   r7   r   r   r   r      s    OQA/)) AFOY O$ 6 2Oy O.y ) ),  		 		Y 	y 
	1 	 )Y ))I )*7y 7"0y 0)) )*)I )r   r   objtypes.messagemethodis_usage_errorr,   c                     [        X5      (       dV  U(       d  U(       a  SU< SU < 3nO
SU < SU< 3nU(       a  [        R                  " U5      e[        R                  " U5      eg)zAEnsure the obj is the correct type, or throw a BigqueryTypeError.zInvalid reference for z: zType of z is not one of N)
isinstancer   
UsageErrorr	   BigqueryTypeError)r  r   r!  r"  r#  s        r   	typecheckr(  m  sX     
C			4:C@ 
 47>NN7##&&w// 
 r   )NNF)rg   collectionssystypingr   r   r   r   r   abslr   utilsr	   pyglibr
   r  version_infoabcr   r    rJ   boolr(  r7   r   r   <module>r2     s    &  
 4 4   fOO/Z) Z)F "  0		"	"0Xo//01d8O5567<=	?0 c]0 SM0 0 
0r   