
    x
h݁                        g d Z dZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
m
Z
mZ ddlmZmZ ddlmZ ddlmZmZmZ ddlmZ dd	lmZ dd
lmZmZmZmZmZmZm Z  ddl!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z) ddl*m+Z+ dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4 G d de5      Z6 G d de5      Z7d#dZ8 G d de5      Z9 G d de9e      Z: G d d e9e      Z; G d! d"e<      Z=y)$)DropboxDropboxTeamcreate_sessionz12.0.2    N)datetime	timedelta)AuthError_validatorRateLimitError_validator)files)PathRootPathRoot_validatorPathRootError_validator)DropboxBase)DropboxTeamBase)ApiError	AuthErrorBadInputError	HttpErrorPathRootErrorInternalServerErrorRateLimitError)API_HOSTAPI_CONTENT_HOSTAPI_NOTIFICATION_HOSTHOST_APIHOST_CONTENTHOST_NOTIFYpinned_sessionDEFAULT_TIMEOUT)stone_serializerszDropbox-API-Path-Rooti  i,  zDropbox-API-Select-AdminzDropbox-API-Select-Useruserteamappnoauthc                       e Zd ZdZddZy)RouteResultz+The successful result of a call to a route.Nc                     t        |t        j                        sJ dt        |      z         |7t        |t        j
                  j                        sJ dt        |      z         || _        || _        y)a3  
        :param str obj_result: The result of a route not including the binary
            payload portion, if one exists. Must be serialized JSON.
        :param requests.models.Response http_resp: A raw HTTP response. It will
            be used to stream the binary-body payload of the response.
        z#obj_result: expected string, got %rNz4http_resp: expected requests.models.Response, got %r)	
isinstancesixstring_typestyperequestsmodelsResponse
obj_result	http_resp)selfr.   r/   s      [/var/www/html/lionshead-backend/venv/lib/python3.12/site-packages/dropbox/dropbox_client.py__init__zRouteResult.__init__G   sv     *c&6&67 	E1D4DD	E7 i)A)AB  FY  B %"    N__name__
__module____qualname____doc__r2    r3   r1   r%   r%   D   s
    5#r3   r%   c                       e Zd ZdZd Zy)RouteErrorResultz&The error result of a call to a route.c                      || _         || _        y)a  
        :param str request_id: A request_id can be shared with Dropbox Support
            to pinpoint the exact request that returns an error.
        :param str obj_result: The result of a route not including the binary
            payload portion, if one exists.
        N)
request_idr.   )r0   r>   r.   s      r1   r2   zRouteErrorResult.__init__Z   s     %$r3   Nr5   r:   r3   r1   r<   r<   W   s
    0%r3   r<   c                 2    t        | |      }|r||_        |S )ae  
    Creates a session object that can be used by multiple :class:`Dropbox` and
    :class:`DropboxTeam` instances. This lets you share a connection pool
    amongst them, as well as proxy parameters.

    :param int max_connections: Maximum connection pool size.
    :param dict proxies: See the `requests module
            <http://docs.python-requests.org/en/latest/user/advanced/#proxies>`_
            for more details.
    :rtype: :class:`requests.sessions.Session`. `See the requests module
        <http://docs.python-requests.org/en/latest/user/advanced/#session-objects>`_
        for more details.
    )pool_maxsizeca_certs)r   proxies)max_connectionsrB   rA   sessions       r1   r   r   d   s     /HMG!Nr3   c                       e Zd ZdZdZdZdZdZddddddeddddddfdZ		 	 	 	 	 	 	 	 	 	 	 	 dd	Z
	 dd
Zd ZedfdZ	 ddZ	 ddZ	 ddZd Zd ZddZd Zd Zd Zd Zy)_DropboxTransportzd
    Responsible for implementing the wire protocol for making requests to the
    Dropbox API.
    2downloaduploadrpcN   c                 "   |s|s|
r|st        d      |*t        |t              st        dj                  |            |r|
st        d      |)t	        |      dk(  st        |t
              st        d      || _        || _        |	| _        |
| _	        || _
        || _        || _        || _        |rFt        |t        j                  j                         st        dj                  |            || _        nt%        |      | _        || _        d	t(        z   }|r|| _        d
j                  ||      | _        nd| _        || _        t/        j0                  d      | _        t4        t6        t8        t:        t<        t>        i| _         || _!        y)a  
        :param str oauth2_access_token: OAuth2 access token for making client
            requests.
        :param int max_retries_on_error: On 5xx errors, the number of times to
            retry.
        :param Optional[int] max_retries_on_rate_limit: On 429 errors, the
            number of times to retry. If `None`, always retries.
        :param str user_agent: The user agent to use when making requests. This
            helps us identify requests coming from your application. We
            recommend you use the format "AppName/Version". If set, we append
            "/OfficialDropboxPythonSDKv2/__version__" to the user_agent,
        :param session: If not provided, a new session (connection pool) is
            created. To share a session across multiple clients, use
            :func:`create_session`.
        :type session: :class:`requests.sessions.Session`
        :param dict headers: Additional headers to add to requests.
        :param Optional[float] timeout: Maximum duration in seconds that
            client will wait for any single packet from the
            server. After the timeout the client will give up on
            connection. If `None`, client will wait forever. Defaults
            to 100 seconds.
        :param str oauth2_refresh_token: OAuth2 refresh token for refreshing access token
        :param datetime oauth2_access_token_expiration: Expiration for oauth2_access_token
        :param str app_key: application key of requesting application; used for token refresh
        :param str app_secret: application secret of requesting application; used for token refresh
            Not required if PKCE was used to authorize the token
        :param list scope: list of scopes to request on refresh.  If left blank,
            refresh will request all available scopes for application
        :param str ca_certs: a path to a file of concatenated CA certificates in PEM format.
            Has the same meaning as when using :func:`ssl.wrap_socket`.
        zBOAuth2 access token or refresh token or app key/secret must be setNzExpected dict, got {}z%app_key is required to refresh tokensr   Scope list must be of type listz*Expected requests.sessions.Session, got {})rA   zOfficialDropboxPythonSDKv2/z{}/{}dropbox)"BadInputExceptionr'   dictformatlenlist_oauth2_access_token_oauth2_refresh_token_oauth2_access_token_expiration_app_key_app_secret_scope_max_retries_on_error_max_retries_on_rate_limitr+   sessionsSession_sessionr   _headers__version___raw_user_agent_user_agentlogging	getLogger_loggerr   r   r   r   r   r   	_host_map_timeout)r0   oauth2_access_tokenmax_retries_on_errormax_retries_on_rate_limit
user_agentrD   headerstimeoutoauth2_refresh_tokenoauth2_access_token_expirationapp_key
app_secretscoperA   base_user_agents                  r1   r2   z_DropboxTransport.__init__   st   \ $';J#T  z'4'@#$;$B$B7$KLL#$KLL#e*/E49P#$EFF$7!%9"/M,%%9"*C'gx'8'8'@'@A'(T)/: :#DM*H=DM7+E#-D &~~j/JD#'D .D((3"H&(8%'<>  r3   c                    | j                  |xs | j                  |xs | j                  |xs | j                  |xs | j                  |xs | j
                  |xs | j                  |xs | j                  |xs | j                  |	xs | j                  |
xs | j                  |xs | j                  |xs | j                        S )a  
        Creates a new copy of the Dropbox client with the same defaults unless modified by
        arguments to clone()

        See constructor for original parameter descriptions.

        :return: New instance of Dropbox client
        :rtype: Dropbox
        )	__class__rT   rZ   r[   rb   r^   r_   rg   rU   rV   rW   rX   rY   )r0   rh   ri   rj   rk   rD   rl   rm   rn   ro   rp   rq   rr   s                r1   clonez_DropboxTransport.clone   s    0 ~~<4#<#< >D$>$>%H)H)H*$**$t}}$t}}$t}} >D$>$>*Rd.R.R$t}}*$** T[[
 	
r3   c           	         | j                          |j                  d   xs d}|j                  d   }|dz   |j                  z   }|j                  dkD  r|dj	                  |j                        z  }|j                  d   xs d}	t        j                  |j                  |      }
|"|t        j                  k(  r|j                  d	z   }| j                  |||	|
|||
      }t        j                  |j                        }t        |t               r|j"                  }|}ntt        |t$              rM|j&                  }|d   }|j)                  d      }|xr |j)                  d      }|xr |j)                  d      }nt+        dt-        |      z        t        j.                  ||d      }t        |t$              rt1        |j2                  |      |	| j4                  k(  r||j6                  fS |S )a  
        Makes a request to the Dropbox API and in the process validates that
        the route argument and result are the expected data types. The
        request_arg is converted to JSON based on the arg_data_type. Likewise,
        the response is deserialized from JSON and converted to an object based
        on the {result,error}_data_type.

        :param host: The Dropbox API host to connect to.
        :param route: The route to make the request to.
        :type route: :class:`stone.backends.python_rsrc.stone_base.Route`
        :param request_arg: Argument for the route that conforms to the
            validator specified by route.arg_type.
        :param request_binary: String or file pointer representing the binary
            payload. Use None if there is no binary payload.
        :param Optional[float] timeout: Maximum duration in seconds
            that client will wait for any single packet from the
            server. After the timeout the client will give up on
            connection. If `None`, will use default timeout set on
            Dropbox object.  Defaults to `None`.
        :return: The route's result.
        hostapiauth/   z_v{}stylerJ   Z   rm   erroruser_messagetextlocalez7Expected RouteResult or RouteErrorResult, but res is %sF)strict)check_and_refresh_access_tokenattrsnameversionrQ   r   json_encodearg_typer
   list_folder_longpollrm   request_json_string_with_retryjsonloadsr.   r'   r%   result_typer<   
error_typegetAssertionErrorr*   json_compat_obj_decoder   r>   _ROUTE_STYLE_DOWNLOADr/   )r0   route	namespacerequest_argrequest_binaryrm   rx   	auth_type
route_nameroute_styleserialized_argresdecoded_obj_resultreturned_data_typeobjr   user_message_textuser_message_localedeserialized_results                      r1   requestz_DropboxTransport.request  s   8 	++-{{6"+eKK'	_uzz1
==1&--66Jkk'*3e*66u~~7BD O333 "))B.G11$2<2=2@2;2@:A 2 C "ZZ7c;'!&!2!2$C-.!&!1!1$W-C-11.AL , I1A1A&1I"."M<3C3CH3M  "1379"= > > 0FFE3 c+,3>>.,.0 0 D666'77&&r3   c                 8   | j                   xr | j                  }| j                   xrA | j                   xs2 t        j                         t        t              z   | j                  k\  }| j                   }|s|r |r| j                  | j                         yyy)zi
        Checks if access token needs to be refreshed and refreshes if possible
        :return:
        seconds)rr   N)
rU   rW   rV   r   utcnowr   TOKEN_EXPIRATION_BUFFERrT   refresh_access_tokenrY   )r0   can_refreshneeds_refreshneeds_tokens       r1   r   z0_DropboxTransport.check_and_refresh_access_tokenh  s    
 00BT]]22 2555 1__3J!KK001 	 333[k%%DKK%8 /:[r3   c                    |)t        |      dk(  st        |t              st        d      | j                  r| j
                  s| j                  j                  d       y| j                  j                  d       dj                  |      }d| j                  | j
                  d}| j                  r| j                  |d	<   |rd
j                  |      }||d<   t        }| j                  r| j                  }| j                  j                  |||      }| j!                  |       |j#                         }|d   | _        t'        j(                         t+        t-        |d               z   | _        y)z
        Refreshes an access token via refresh token if available

        :param host: host to hit token endpoint with
        :param scope: list of permission scopes for access token
        :return:
        Nr   rM   zPUnable to refresh access token without                 refresh token and app keyzRefreshing access token.zhttps://{}/oauth2/tokenrefresh_token)
grant_typer   	client_idclient_secret rr   )datarm   access_token
expires_inr   )rR   r'   rS   rO   rU   rW   re   warninginforQ   rX   joinr   rg   r^   postraise_dropbox_error_for_respr   rT   r   r   r   intrV   )r0   rx   rr   urlbodyrm   r   token_contents           r1   r   z&_DropboxTransport.refresh_access_tokenv  s@    #e*/E49P#$EFF**t}}LL   "+ ,45'..t4-!%!;!;!]] $($4$4D!HHUOE!DM!==mmGmm  4 A))#.
$1.$A!/7/@c-"=>?0@,r3   c           	          t        j                  |      }| j                  |||||||      }	t        j                  |	j                        }
t        |	t              r|	j                  |
|	j                  fS |
S )a  
        Makes a request to the Dropbox API, taking a JSON-serializable Python
        object as an argument, and returning one as a response.

        :param host: The Dropbox API host to connect to.
        :param route_name: The name of the route to invoke.
        :param route_style: The style of the route.
        :param str request_arg: A JSON-serializable Python object representing
            the argument for the route.
        :param auth_type str
        :param Optional[bytes] request_binary: Bytes representing the binary
            payload. Use None if there is no binary payload.
        :param Optional[float] timeout: Maximum duration in seconds
            that client will wait for any single packet from the
            server. After the timeout the client will give up on
            connection. If `None`, will use default timeout set on
            Dropbox object.  Defaults to `None`.
        :return: The route's result as a JSON-serializable Python object.
        r   )r   dumpsr   r   r.   r'   r%   r/   )r0   rx   r   r   r   r   r   rm   r   r   r   s              r1   request_json_objectz%_DropboxTransport.request_json_object  sy    6 K011$2<2=2@2;2@:A 2 C #jj8c;'CMM,E'77&&r3   c           	      h   d}d}	d}
	 | j                   j                  d|       	 | j                  |||||||      S # t        $ rn}|j                  rV|j                  j                         r<|
r | j                   j                  d|j                         | j                          d}
n Y d}~nd}~wt        $ rv}|dz  }|| j                  k  rWd	|z  t        j                         z  }| j                   j                  d
|j                  |       t        j                  |       n Y d}~nd}~wt        $ rw}|	dz  }	| j                  | j                  |	k\  rL|j                  |j                  nd}| j                   j                  d|       t        j                  |       n Y d}~nd}~ww xY w)z
        See :meth:`request_json_object` for description of parameters.

        :param request_json_arg: A string representing the serialized JSON
            argument to the route.
        r   FTzRequest to %sr   z:ExpiredCredentials status_code=%s: Refreshing and RetryingNr|      z2HttpError status_code=%s: Retrying in %.1f secondsg      @z$Ratelimit: Retrying in %.1f seconds.)re   r   request_json_stringr   r   is_expired_access_tokenstatus_coder   r   rZ   randomtimesleepr   r[   backoff)r0   rx   r   r   request_json_argr   r   rm   attemptrate_limit_errorshas_refresheder   s                r1   r   z0_DropboxTransport.request_json_string_with_retry  s    LLoz:)//0:0;0@090>8? 0 A A  77qww>>@$))XMM+ 113(, & ' 
1d888j6==?:GLL%%Lw0 JJw' ( " 
!Q&!33;77;LL+,99+@aiicGLL%%>IJJw' (
C s0   = 	F/A#B//F/;A,D,,F/8A-F**F/c                    || j                   vrt        d|z        t        |t        j                  t        d      f      st        dt        |      z        | j                   |   }| j                  ||      }	d| j                  i}
|j                  dd      j                  d      }t        |v st        |v rF| j                  r:d| j                  z  |
d	<   | j                  r|
j                  | j                         nt         |v r| j"                  | j$                  t'        d
      t)        j*                  dj-                  | j"                  | j$                        j/                  d            }dj-                  |j1                  d            |
d	<   | j                  r@|
j                  | j                         n$|t2        k(  rnt'        dj-                  |            d}d}|| j4                  k(  rd|
d<   |}nA|| j6                  k(  r||
d<   d}n*|| j8                  k(  rd|
d<   ||
d<   |}nt        d|z        || j:                  }| j<                  j?                  |	|
|||      }| jA                  |       |jB                  jE                  d      }|jF                  dv r'|jH                  j1                  d      }tK        ||      S || j6                  k(  r|jB                  d   }n\|jB                  jE                  d      dk(  s#J d|jB                  jE                  d      z         |jH                  j1                  d      }|| j6                  k(  rtM        ||      S tM        |      S )zc
        See :meth:`request_json_string_with_retry` for description of
        parameters.
        zUnknown value for host: %rNz.expected request_binary as binary type, got %sz
User-Agentr    ,z	Bearer %sAuthorizationzAClient id and client secret are required for routes with app authz{}:{}zutf-8zBasic {}zUnhandled auth type: {}Fapplication/jsonzContent-TypezDropbox-API-ArgTzapplication/octet-streamzUnknown operation style: %r)rl   r   streamrm   x-dropbox-request-idi  i  i  zdropbox-api-resultcontent-type4Expected content-type to be application/json, got %r)'rf   
ValueErrorr'   r(   binary_typer*   	TypeError_get_route_urlrb   replacesplit	USER_AUTH	TEAM_AUTHrT   r_   updateAPP_AUTHrW   rX   rO   base64	b64encoderQ   encodedecodeNO_AUTH_ROUTE_STYLE_RPCr   _ROUTE_STYLE_UPLOADrg   r^   r   r   rl   r   r   contentr<   r%   )r0   rx   	func_namer   r   r   r   rm   fq_hostnamer   rl   
auth_typesauth_headerr   r   rr>   raw_resps                     r1   r   z%_DropboxTransport.request_json_string  sA    t~~%9D@AA.3??DJ*GH
 L 01 2 2 nnT*!!+y9!1!12&&sB/55c:
#yJ'>DD]D]'2T5N5N'NGO$}}t}}-#}}$(8(8(@'WY Y **t}}d.>.>?FFwOK (2'8'89K9KG9T'UGO$}}t}}-'!#$=$D$DY$OPP  $///&8GN##DD666)9G%&FD444&@GN#)9G%&!D:[HII?mmGMMs'.$(&,'.	  ! 	))!,YY]]#9:
==O+yy''0H#J99$444yy!56H99==04FF /F		n-./F yy''0H$444x++x((r3   c                 H   |j                   j                  d      }|j                  dk\  r!t        ||j                  |j                        |j                  dk(  rn	 |j                         d   dk(  rA|j                   j                  d      }t        j                  t        d      }t        ||      t        ||j                        |j                  dk(  rx|j                   j                  d      d	k(  s#J d
|j                   j                  d      z         t        j                  t        |j                         d         }t        ||      |j                  t        k(  r7t        j                  t        |j                         d         }t        ||      |j                  dk(  rd}|j                   j                  d      d	k(  r8t        j                  t        |j                         d         }|j                   }n+|j                   j                  d      }|t#        |      }nd}t%        |||      |j                  dv ryd|j                  cxk  rdk  s#n t'        ||j                  |j                        y# t        $ r t        ||j                        w xY w)zpChecks for errors from a res and handles appropiately.

        :param res: Response of an api request.
        r   i  i  r   invalid_grantinvalid_access_tokeni  r   r   r   i  Nzretry-afterr      i+  )rl   r   r   r   r   r   r   r   r   r   r   r   HTTP_STATUS_INVALID_PATH_ROOTr   r   r	   retry_afterr   r   r   )r0   r   r>   errr   retry_after_strs         r1   r   z._DropboxTransport.raise_dropbox_error_for_respe  s=   
 [[__%;<
??c!%j#//388LL__#	:88:g&/9!$1G!HJ+BB+-CEC#J44'
CHH== __#;;??>26HH 1F/01H $::#SXXZ%8:CJ,,__ ==#::'G)<>C
C00__#C{{~.2DD'>>,chhj.AC!oo"%++//-"@"."%o"6K"&K S+>>__//C/JBB 0;  :#J99:s   A-J  J!c                 F    dj                  |t        j                  |      S )zReturns the URL of the route.

        :param str hostname: Hostname to make the request to.
        :param str route_name: Name of the route.
        :rtype: str
        z)https://{hostname}/{version}/{route_name})hostnamer   r   )rQ   r   _API_VERSION)r0   r   r   s      r1   r   z _DropboxTransport._get_route_url  s,     ;AA((! B 
 	
r3   c                     t        |d      5 }t        j                  |      5  |j                  |      D ]  }|j	                  |        	 ddd       ddd       y# 1 sw Y   xY w# 1 sw Y   yxY w)a  
        Saves the body of an HTTP response to a file.

        :param str download_path: Local path to save data to.
        :param http_resp: The HTTP response whose body will be saved.
        :type http_resp: :class:`requests.models.Response`
        :rtype: None
        wbN)open
contextlibclosingiter_contentwrite)r0   download_pathr/   	chunksizefcs         r1   _save_body_to_filez$_DropboxTransport._save_body_to_file  s[     -&!##I."//	:AGGAJ ; / '&.. '&s"   A)(AA)A&	"A))A2c                     t        |t              st        d      | j                  r| j                  j	                         ni }t        j                  t        |      |t        <   | j                  |      S )a  
        Creates a clone of the Dropbox instance with the Dropbox-API-Path-Root header
        as the appropriate serialized instance of PathRoot.

        For more information, see
        https://www.dropbox.com/developers/reference/namespace-guide#pathrootmodes

        :param PathRoot path_root: instance of PathRoot to serialize into the headers field
        :return: A :class: `Dropbox`
        :rtype: Dropbox
        z)path_root must be an instance of PathRoot)rl   )
r'   r   r   r_   copyr   r   r   PATH_ROOT_HEADERrv   )r0   	path_rootnew_headerss      r1   with_path_rootz _DropboxTransport.with_path_root  sg     )X.HII.2mmdmm((*(9(E(EFXZc(d$%zz  
 	
r3   c                 8    | j                   j                          y)zV
        Cleans up all resources like the request session/network connection.
        N)r^   closer0   s    r1   r  z_DropboxTransport.close  s     	r3   c                     | S r4   r:   r  s    r1   	__enter__z_DropboxTransport.__enter__  s    r3   c                 $    | j                          y r4   )r  )r0   argss     r1   __exit__z_DropboxTransport.__exit__  s    

r3   )NNNNNNNNNNNNr4   )i   )r6   r7   r8   r9   r   r   r   r   r   r2   rv   r   r   r   r   r   r   r   r   r   r	  r  r  r  r  r:   r3   r1   rF   rF   x   s    
 L
 '
 #  &*&'+/ (&*04 ] B !%!%&*!%+/%
X R'h9 )1 %@\ %))'d 04<J %)])~/Cb

.r3   rF   c                       e Zd ZdZy)r   z
    Use this class to make requests to the Dropbox API using a user's access
    token. Methods of this class are meant to act on the corresponding user's
    Dropbox.
    Nr6   r7   r8   r9   r:   r3   r1   r   r     s    
 	r3   r   c                   "    e Zd ZdZd Zd Zd Zy)r   z
    Use this class to make requests to the Dropbox API using a team's access
    token. Methods of this class are meant to act on the team, but there is
    also an :meth:`as_user` method for assuming a team member's identity.
    c                 .    | j                  t        |      S )a  
        Allows a team credential to assume the identity of an administrator on the team
        and perform operations on any team-owned content.

        :param str team_member_id: team member id of administrator to perform actions with
        :return: A :class:`Dropbox` object that can be used to query on behalf
            of this admin of the team.
        :rtype: Dropbox
        )&_get_dropbox_client_with_select_headerSELECT_ADMIN_HEADERr0   team_member_ids     r1   as_adminzDropboxTeam.as_admin  s     ::;N;IK 	Kr3   c                 .    | j                  t        |      S )aK  
        Allows a team credential to assume the identity of a member of the
        team.

        :param str team_member_id: team member id of team member to perform actions with
        :return: A :class:`Dropbox` object that can be used to query on behalf
            of this member of the team.
        :rtype: Dropbox
        )r  SELECT_USER_HEADERr  s     r1   as_userzDropboxTeam.as_user  s     ::;M;IK 	Kr3   c                 f   | j                   r| j                   j                         ni }|||<   t        | j                  | j                  | j
                  | j                  | j                  | j                  | j                  | j                  || j                  | j                  | j                        S )ap  
        Get Dropbox client with modified headers

        :param str select_header_name: Header name used to select users
        :param str team_member_id: team member id of team member to perform actions with
        :return: A :class:`Dropbox` object that can be used to query on behalf
            of a member or admin of the team
        :rtype: Dropbox
        )rh   rn   ro   ri   rj   rm   rk   rD   rl   rp   rq   rr   )r_   r  r   rT   rU   rV   rZ   r[   rg   ra   r^   rW   rX   rY   )r0   select_header_namer  r  s       r1   r  z2DropboxTeam._get_dropbox_client_with_select_header  s     /3mmdmm((**8&' $ 9 9!%!;!;+/+O+O!%!;!;&*&E&EMM++MMMM''++
 	
r3   N)r6   r7   r8   r9   r   r#  r  r:   r3   r1   r   r     s    
KK
r3   r   c                       e Zd ZdZy)rO   z
    Thrown if incorrect types/values are used

    This should only ever be thrown during testing, app should have validation of input prior to
    reaching this point
    Nr  r:   r3   r1   rO   rO     s     	r3   rO   )   NN)>__all__r`   r   r  r   rc   r   r   r+   r(   r   r   dropbox.authr   r	   rN   r
   dropbox.commonr   r   r   dropbox.baser   dropbox.base_teamr   dropbox.exceptionsr   r   r   r   r   r   r   dropbox.sessionr   r   r   r   r   r   r   r   stone.backends.python_rsrcr   r  r   r   r  r"  r   r   r   r   objectr%   r<   r   rF   r   r   	ExceptionrO   r:   r3   r1   <module>r2     s            
 (  
 % -  	 	 	 9*  #  0 . 		
#& #&%v %(Z	 Z	z	 	:
#_ :
x		 	r3   