Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
ó
~˜EYc@sÛddlmZddlZddlZddlmZmZmZddlm	Z	ddl
mZmZddl
mZddlmZmZmZmZddlmZmZmZmZmZmZmZdd	lmZdd
lmZddl m Z ddl!m"Z"dd
l#m$Z$m%Z%m&Z&m'Z'ddl(m)Z)ddl(m*Z+ddl,m-Z-ddl.Z.ddl/m0Z0ddl1m2Z2m3Z3m4Z4ddl5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=ddl>m?Z?ddl@mAZAejBdƒZCde$fd„ƒYZDdeEfd„ƒYZFd„ZGd„ZHeHƒZIidd6dd6eKd6dd 6dd!6eKd"6dd#6eKd$6eKd%6dd&6dd'6dd(6dd)6eKd*6eKd+6eKd,6eKd-6d.d/6gd06gd16dd26dd36eKd46eKd56eKd66eLd76eKd86dd96eKd:6ZMd;ZNdPZOd>d?„ZPd@dA„ZQd@dB„ZRdC„ZSdD„ZTd.dE„ZUdFeVfdG„ƒYZWdHeVfdI„ƒYZXdJeVfdK„ƒYZYdLeVfdM„ƒYZZdNeVfdO„ƒYZ[dS(Qiÿÿÿÿ(tunicode_literalsN(tas_completedtCancelledErrortTimeoutError(tdeepcopy(tEEXISTtENOENT(tmd5(tenvirontmakedirststattutime(tbasenametdirnametgetmtimetgetsizetisdirtjointsep(R(tshuffle(ttime(tThread(tIteratortStringIOtstring_typest	text_type(tQueue(tEmpty(tquote(t
Connection(tstat_accounttstat_containertstat_object(tconfig_true_valuetReadableToIterablet
LengthWrappert
EMPTY_ETAGtparse_api_responsetreport_tracebacktn_groupstsplit_request_headers(tClientException(tMultiThreadingManageruswiftclient.servicetResultsIteratorcBs#eZd„Zd„Zd„ZRS(cCst|ƒ|_dS(N(tinterruptable_as_completedtfutures(tselfR-((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyt__init__8scCs|S(N((R.((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyt__iter__;scCst|jƒ}|jƒS(N(tnextR-tresult(R.tnext_completed_future((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyt__next__>s(t__name__t
__module__R/R0R4(((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyR+7s		t
SwiftErrorcBs&eZddddd„Zd„ZRS(cCs1||_||_||_||_||_dS(N(tvaluet	containertobjtsegmentt	exception(R.R8R9R:R;texc((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyR/Ds
				cCs|t|jƒ}|jdk	r2|d|j7}n|jdk	rU|d|j7}n|jdk	rx|d|j7}n|S(Nu
 container:%su
 object:%su segment:%s(treprR8R9tNoneR:R;(R.R8((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyt__str__LsN(R5R6R?R/R@(((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyR7Cscsƈjdƒdkr"dˆd<n"ˆjdƒdkrDdˆd<nˆjdƒd+kr¬t‡fd†d,Dƒƒr¬t‡fd
†d-DƒƒrŸdˆd<q¬dˆd<nˆdr҈dr҈dˆd<nˆdrøˆdrøˆdˆd<nˆd	rˆdrˆdˆd	<niˆdd6ˆdd6ˆdd6ˆdd6ˆdd6ˆdd6ˆdd6ˆd
d6ˆdd6ˆd d!6ˆd"d#6ˆd$d%6ˆd&d'6ˆd(d)6ˆd*<dS(.Nuauth_versionu3.0u3u2u2.0c3s|]}ˆj|ƒVqdS(N(tget(t.0tkey(toptions(sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pys	<genexpr>_suauthuuserukeyc3s|]}ˆj|ƒVqdS(N(RA(RBtk(RD(sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pys	<genexpr>asuos_user_domain_iduos_user_domain_nameuos_project_domain_iduos_project_domain_nameuos_auth_urluos_usernameuos_passwordu
os_user_iduuser_iduuser_domain_iduuser_domain_nameuos_tenant_idu	tenant_iduos_tenant_nameutenant_nameu
os_project_idu
project_iduos_project_nameuproject_nameuproject_domain_iduproject_domain_nameuos_service_typeuservice_typeuos_endpoint_typeu
endpoint_typeu
os_auth_tokenu
auth_tokenuos_storage_urluobject_storage_urluos_region_nameuregion_nameu
os_options(u2.0u3(uauthuuserukey(uos_user_domain_iduos_user_domain_nameuos_project_domain_iduos_project_domain_name(RAtalltany(RD((RDsH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pytprocess_optionsWsD




cCsãi#td6dd6td6td6tjdƒd6tjdd	ƒd
6tjdƒd6tjd
ƒd6dd6tjdƒd6tjdƒd6tjdƒd6tjdƒd6tjdƒd6tjdƒd6tjdƒd6tjdƒd 6tjd!ƒd"6tjd#ƒd$6tjd%ƒd&6tjd'ƒd(6tjd)ƒd*6tjd+ƒd,6tjd-ƒd.6tjd/ƒd06tjd1ƒd26tjd3ƒd46tjd5ƒd66tjd7ƒd86ttjd9ƒƒd:6td;6d<d=6d<d>6d<d?6d<d@6S(ANusnetiuverboseudebuguinfouST_AUTHuauthuST_AUTH_VERSIONu1.0uauth_versionuST_USERuuseruST_KEYukeyiuretriesuOS_USERNAMEuos_usernameu
OS_USER_IDu
os_user_iduOS_USER_DOMAIN_NAMEuos_user_domain_nameuOS_USER_DOMAIN_IDuos_user_domain_iduOS_PASSWORDuos_passworduOS_TENANT_IDuos_tenant_iduOS_TENANT_NAMEuos_tenant_nameuOS_PROJECT_NAMEuos_project_nameu
OS_PROJECT_IDu
os_project_iduOS_PROJECT_DOMAIN_NAMEuos_project_domain_nameuOS_PROJECT_DOMAIN_IDuos_project_domain_iduOS_AUTH_URLuos_auth_urlu
OS_AUTH_TOKENu
os_auth_tokenuOS_STORAGE_URLuos_storage_urluOS_REGION_NAMEuos_region_nameuOS_SERVICE_TYPEuos_service_typeuOS_ENDPOINT_TYPEuos_endpoint_typeu	OS_CACERTu	os_cacertuOS_CERTuos_certuOS_KEYuos_keyuSWIFTCLIENT_INSECUREuinsecureussl_compressioni
usegment_threadsuobject_dd_threadsuobject_uu_threadsucontainer_threads(tFalseRRAR!(((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyt_build_default_global_options†sHusync_tousync_keyuuse_slousegment_sizeusegment_containeruleave_segmentsuchangeduskip_identicaluyes_alluread_aclu	write_acluout_fileu
out_directoryu
remove_prefixuno_downloadulongutotalsuumarkeruheaderumetauprefixu	delimiteru	fail_fastuhumanu
dir_markeruchecksumushuffleudestinationufresh_metadatauX-Storage-Policyuapplication/directoryutext/directoryi/
cCs?x8tr:y|jd|ƒ}|SWqtk
r6qXqWdS(Nttimeout(tTrueRAt
QueueEmpty(tqRKtitem((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pytget_from_queueÖs	
i€QcCs?x8tr:y|jd|ƒ}|SWqtk
r6qXqWdS(NRK(RLR2R(tfRKtres((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pytget_future_resultàs	
ccs\xUtrWy7x,t|d|ƒD]}|j|ƒ|VqWdSWqtk
rSqXqWdS(NRK(RLRtremoveR(tfsRKRQ((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyR,ês	
	
cCsst|d|d|d|dd|dd|dd	|d
d|dd
|dd|dd|dd|dƒS(u;
    Return a connection building it from the options.
    uauthuuserukeyuretriestauth_versionuauth_versiont
os_optionsu
os_optionstsnetusnettcacertu	os_cacerttinsecureuinsecuretcertuos_certtcert_keyuos_keytssl_compressionussl_compression(R(RD((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pytget_connös








cCs=yt|ƒWn(tk
r8}|jtkr9‚q9nXdS(N(R	tOSErrorterrnoR(tpathterr((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pytmkdirss
cCs?i}yt||ƒ}Wntk
r:}t|ƒ‚nX|S(uS
    Splits 'Key: Value' strings and returns them as a dictionary.

    :param options: Must be one of:
        * an iterable of 'Key: Value' strings
        * an iterable of ('Key', 'Value') pairs
        * a dict of {'Key': 'Value'} pairs
    :param prefix: String to prepend to all of the keys in the dictionary.
        reporting.
    (R(t
ValueErrorR7(RDtprefixtheaderste((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyt
split_headersstSwiftUploadObjectcBseZdZddd„ZRS(u˜
    Class for specifying an object upload, allowing the object source, name and
    options to be specified separately for each individual object.
    cCsÌt|tƒr!|p||_nh|dks<t|dƒrn|sSt|tƒrbtdƒ‚n||_ntdjt|ƒƒƒ‚|js¡tdƒ‚n|jjdƒ|_||_	||_
dS(NureaduUObject names must be specified as strings for uploads from None or file like objects.u1Unexpected source type for SwiftUploadObject: {0}u&Object names must not be empty stringsu/(t
isinstanceRtobject_nameR?thasattrR7tformatttypetlstripRDtsource(R.RpRkRD((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyR/)s			N(R5R6t__doc__R?R/(((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyRi$stSwiftPostObjectcBseZdZdd„ZRS(u‡
    Class for specifying an object post, allowing the headers/metadata to be
    specified separately for each individual object.
    cCs:t|tƒo|s$tdƒ‚n||_||_dS(Nu3Object names must be specified as non-empty strings(RjRR7RkRD(R.RkRD((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyR/Cs
	N(R5R6RqR?R/(((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyRr>stSwiftCopyObjectcBseZdZdd„ZRS(uâ
    Class for specifying an object copy,
    allowing the destination/headers/metadata/fresh_metadata to be specified
    separately for each individual object.
    destination and fresh_metadata should be set in options
    cCs t|tƒo|s$tdƒ‚n||_||_|jdkrZd|_t|_n-|jj	dƒ|_|jj	dtƒ|_|jdk	r|jj
dƒ}|dsÄt|ƒdkrÓtdƒ‚n|dsìtd	ƒ‚nt|ƒdkrd
j|j|ƒ|_qndS(Nu3Object names must be specified as non-empty stringsudestinationufresh_metadatau/iiu)destination must be in format /cont[/obj]iÿÿÿÿu#destination must not end in a slashu{0}/{1}(
RjRR7RkRDR?tdestinationRItfresh_metadataRAtsplittlenRm(R.RkRDtdestination_components((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyR/Ss&			
N(R5R6RqR?R/(((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyRsLst_SwiftReadercBs5eZdZed„Zd„Zd„Zd„ZRS(uŸ
    Class for downloading objects from swift and raising appropriate
    errors on failures caused by either invalid md5sum or size of the
    data read.
    cCs»||_||_d|_d|_d|_|jdƒ|_d|krld|krl|rltƒ|_nd|kr·yt	|jdƒƒ|_Wq·t
k
r³tdƒ‚q·XndS(Niuetagux-object-manifestux-static-large-objectucontent-lengthu(content-length header must be an integer(t_patht_bodyt_actual_readR?t_content_lengtht_actual_md5RAt_expected_etagRtintRdR7(R.RatbodyRftchecksum((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyR/vs					
ccsXxG|jD]<}|jr,|jj|ƒn|jt|ƒ7_|Vq
W|jƒdS(N(R{R~tupdateR|Rwt_check_contents(R.tchunk((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyR0ˆs		cCs£|jrW|jrW|jjƒ}||jkrWtdj|j||jƒƒ‚qWn|jdk	rŸ|j|jkrŸtdj|j|j|jƒƒ‚ndS(Nu1Error downloading {0}: md5sum != etag, {1} != {2}uDError downloading {0}: read_length != content_length, {1:d} != {2:d}(	R~Rt	hexdigestR7RmRzR}R?R|(R.tetag((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyR„s		cCs|jS(N(R|(R.((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyt
bytes_readŸs(R5R6RqRLR/R0R„Rˆ(((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyRyps
		tSwiftServicecBs6eZdZed„Zd„Zd„Zeeed„Zed„ƒZ	eeed„Z
ed„ƒZed„ƒZed	„ƒZ
ed
„ƒZeed„Zed„ƒZed
„ƒZeeed„Zd„Zd„Zd„Zed„Zedd„ƒZeeed„ƒZeed„ƒZeed„ƒZed„Zd„Zed„Zeeed„Zd„Zd„Z eed„ƒZ!ed„Z"ed „ƒZ#d!„Z$d"„Z%ed#„ƒZ&ed$„Z'ed%„ƒZ(ed&„ƒZ)ee*d'„Z+ed(„ƒZ,ed)„ƒZ-RS(*u1
    Service for performing swift operations
    cs¨|dk	r*tttt|ˆ_ntttˆ_tˆjƒ‡fd†}t|dˆjddˆjddˆjddˆjd	ƒˆ_iˆ_dS(
Ncs
tˆjƒS(N(R^t_options((R.(sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyt<lambda>³stsegment_threadsusegment_threadstobject_dd_threadsuobject_dd_threadstobject_uu_threadsuobject_uu_threadstcontainer_threadsucontainer_threads(	R?tdictt_default_global_optionst_default_local_optionsRŠRHR*tthread_managertcapabilities_cache(R.RDtcreate_connection((R.sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyR/§s 



cCs|jjƒ|S(N(R“t	__enter__(R.((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyR–½s
cCs|jj|||ƒdS(N(R“t__exit__(R.texc_typetexc_valtexc_tb((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyR—ÁscCs?|dk	r!t|j|}n	|j}|s|rEtdƒ‚q;idd6td6|d6dd6}yM|jjjt|ƒ}t	|ƒ\}}|j
i|d6|d6ƒ|SWq;tk
r3}|jd	krt
ƒ\}	}
tj|ƒ|j
itd6|d
6|	d6|
d6ƒ|Std
d|ƒ‚q;tk
r‹}t
ƒ\}	}
tj|ƒ|j
itd6|d
6|	d6|
d6ƒ|SXn¬|sìidd6|d6dd6td6}yP|jjjt||ƒ}t	|ƒ\}}|j
i|d6|d6ƒ|SWq;tk
r}|jd	krqt
ƒ\}	}
tj|ƒ|j
itd6|d
6|	d6|
d6ƒ|Std|d|d|ƒ‚q;tk
rè}t
ƒ\}	}
tj|ƒ|j
itd6|d
6|	d6|
d6ƒ|SXnOg}x<|D]4}|jjj|j|||ƒ}
|j|
ƒqùWt|ƒSdS(uÊ
        Get account stats, container stats or information about a list of
        objects in a container.

        :param container: The container to query.
        :param objects: A list of object paths about which to return
                        information (a list of strings).
        :param options: A dictionary containing options to override the global
                        options specified during the service object creation.
                        These options are applied to all stat operations
                        performed by this call::

                            {
                                'human': False,
                                'header': []
                            }

        :returns: Either a single dictionary containing stats about an account
                  or container, or an iterator for returning the results of the
                  stat operations on a list of objects.

        :raises: SwiftError
        u#Objects specified without containerustat_accountuactionusuccessu	containeruobjectuitemsuheadersi”uerroru	tracebackuerror_timestampuAccount not foundR=ustat_containeruContainer %r not foundR9N(R?RRŠR7RLR“tcontainer_pooltsubmitRRSRƒR)thttp_statusR&tloggerR<RIt	ExceptionRtobject_dd_poolt_stat_objecttappendR+(R.R9tobjectsRDRRtstats_futuretitemsRfRbt	tracebackterr_timetstat_futureststat_otstat_future((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyR
Æs 	
	
	
	
	
	

	
c
CsÀidd6|d6|d6td6}y>t||||ƒ\}}|ji|d6|d6ƒ|SWnYtk
r»}tƒ\}}	tj|ƒ|jitd6|d6|d	6|	d
6ƒ|SXdS(Nustat_objectuactionuobjectu	containerusuccessuitemsuheadersuerroru	tracebackuerror_timestamp(RLR RƒRŸR&RžR<RI(
tconnR9R:RDRRR¥RfRbR¦R§((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyR¡@s(
	
	cCsÏ|d k	r!t|j|}n	|j}itd6|d6d d6id6}|sÃd|d<|rqtdƒ‚nNi}t|dd	ƒ}|jt|d
dƒƒ||d<y,|jjj	|j
||ƒ}t|ƒWnâtk
r`}|j
dkrKtƒ\}	}
tj|ƒ|jitd6|d
6|	d6|
d6|d6ƒ|Stdd|ƒ‚n_tk
r¾}tƒ\}	}
tj|ƒ|jitd6|d
6|d6|	d6|
d6ƒnX|S|sÄd|d<i}t|ddƒ}|jt|d
dƒƒ|dd k	r'|d|d<n|dd k	rH|d|d<n|dd k	ri|d|d<n|dd k	rŠ|d|d<n||d<y/|jjj	|j|||ƒ}t|ƒWnútk
rZ}|j
dkr;tƒ\}	}
tj|ƒ|jidd6td6|d
6|	d6|
d6|d6ƒ|Std|d|d|ƒ‚nftk
r¿}tƒ\}	}
tj|ƒ|jidd6td6|d
6|d6|	d6|
d6ƒnX|Sg}|j|ƒ}xå|D]Ý}
|
j}|
j}i}t|ddƒ}|jt|d
dƒƒ|d k	rŒd|kr`|jt|ddƒƒnd
|krŒ|jt|d
dƒƒqŒn|jjj	|j||||ƒ}|j|ƒqàWt|ƒSd S(!uô
        Post operations on an account, container or list of objects

        :param container: The container to make the post operation against.
        :param objects: A list of object names (strings) or SwiftPostObject
                        instances containing an object name, and an
                        options dict (can be None) to override the options for
                        that individual post operation::

                            [
                                'object_name',
                                SwiftPostObject('object_name', options={...}),
                                ...
                            ]

                        The options dict is described below.
        :param options: A dictionary containing options to override the global
                        options specified during the service object creation.
                        These options are applied to all post operations
                        performed by this call, unless overridden on a per
                        object basis. Possible options are given below::

                            {
                                'meta': [],
                                'header': [],
                                'read_acl': None,   # For containers only
                                'write_acl': None,  # For containers only
                                'sync_to': None,    # For containers only
                                'sync_key': None    # For containers only
                            }

        :returns: Either a single result dictionary in the case of a post to a
                  container/account, or an iterator for returning the results
                  of posts to a list of objects.

        :raises: SwiftError
        usuccessu	containeruobjectuheadersupost_accountuactionu#Objects specified without containerumetauX-Account-Meta-uheaderui”uerroru	tracebackuerror_timestampu
response_dictuAccount not foundR=upost_containeruX-Container-Meta-uread_acluX-Container-Readu	write_acluX-Container-Writeusync_touX-Container-Sync-Tousync_keyuX-Container-Sync-KeyuContainer '%s' not foundR9uX-Object-Meta-N(R?RRŠRLR7RhRƒR“R›Rœt_post_account_jobRSR)RR&RžR<RIRŸt_post_container_jobt_make_post_objectsRkRDtobject_uu_poolt_post_object_jobR¢R+(R.R9R£RDRRt
response_dictRftpostRbR¦R§tpost_futurestpost_objectstpost_objectR:tobj_options((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyR²\sä&	



	
	

	
	

	
		cCswg}xj|D]b}t|tƒr>t|ƒ}|j|ƒq
t|tƒr]|j|ƒq
tdd|ƒ‚q
W|S(NuBThe post operation takes only strings or SwiftPostObjects as inputR:(RjRRrR¢R7(R£R´toR:((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyR®s

cCs|jd|d|ƒS(NRfR±(tpost_account(R«RfR2((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyR¬scCsyy|j|d|d|ƒ}WnStk
rt}|jdkrF‚ni}|j|d|d|ƒ}||d<nX|S(NRfR±i”upost_put(tpost_containerR)Rt
put_container(R«R9RfR2RRRbt_response_dict((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyR­sc	Cs¯itd6dd6|d6|d6|d6|d6}y |j||d|d	|ƒWnXtk
rª}tƒ\}}tj|ƒ|jitd6|d
6|d6|d6ƒnX|S(
Nusuccessupost_objectuactionu	containeruobjectuheadersu
response_dictRfR±uerroru	tracebackuerror_timestamp(RLRµRŸR&RžR<RƒRI(	R«R9R:RfR2RRRbR¦R§((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyR°,s&

	ccsÅ|dk	r!t|j|}n	|j}tddƒ}|dkrf|jjj|j||ƒ}n!|jjj|j|||ƒ}t	|ƒ}x!|dk	r¶|Vt	|ƒ}q–Wt
|ƒdS(uD
        List operations on an account, container.

        :param container: The container to make the list operation against.
        :param options: A dictionary containing options to override the global
                        options specified during the service object creation::

                            {
                                'long': False,
                                'prefix': None,
                                'delimiter': None,
                                'header': []
                            }

        :returns: A generator for returning the results of the list operation
                  on an account or container. Each result yielded from the
                  generator is either a 'list_account_part' or
                  'list_container_part', containing part of the listing.
        tmaxsizei
N(R?RRŠRR“R›Rœt_list_account_jobt_list_container_jobRPRS(R.R9RDtrqtlisting_futureRR((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pytlistGs	cCs*d}d}t|jdgƒƒ}yïxètr|jd|d|dd|ƒ\}}|so|jdƒdS|drªx.|D]#}|d}	|j|	ƒ|d	<q€Wnid
d6dd6|dd6td
6|d6|d6}
|j|
ƒ|djd|djdƒƒ}q*WWn¨tk
r€}tƒ\}}
t	j
|ƒ|jdkrb|||
f}q¾tdd|ƒ||
f}n>t
k
r½}tƒ\}}
t	j
|ƒ|||
f}nXid
d6dd6|dd6td
6|d6|dd6|dd6|dd6}
|j|
ƒ|jdƒdS(NuuheadertmarkerReuprefixRfulongunameumetaulist_account_partuactionu	containerusuccessulistingumarkeriÿÿÿÿusubdiri”uAccount not foundR=iuerroriu	tracebackiuerror_timestamp(R?RhRARLtget_accounttputthead_containerR)R&RžR<RR7RŸRI(R«RDtresult_queueRÂterrortreq_headerst_R¥titnameRRRbR¦R§((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyR½ss\		





+


c

Cs|jddƒ}d}t|jdgƒƒ}yÁxºtrï|j|d|d|dd|dd	|ƒ\}}|sˆ|jdƒdSid
d6|d6|dd6td
6|d6|d6}	|j|	ƒ|djd|djdƒƒ}q6WWn²tk
rh}
tƒ\}}tj	|
ƒ|
j
dkr@|
||f}q¦td|d|d|
ƒ||f}n>tk
r¥}
tƒ\}}tj	|
ƒ|
||f}nXid
d6|d6|dd6t
d
6|d6|dd6|dd6|dd6}	|j|	ƒ|jdƒdS(NumarkeruuheaderRÂReuprefixt	delimiteru	delimiterRfulist_container_partuactionu	containerusuccessulistingiÿÿÿÿunameusubdiri”uContainer %r not foundR9R=iuerroriu	tracebackiuerror_timestamp(RAR?RhRLt
get_containerRÄR)R&RžR<RR7RŸRI(
R«R9RDRÆRÂRÇRÈRÉR¥RRRbR¦R§((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyR¾°sZ	


+



ccs,|dk	r!t|j|}n	|j}|s6|dr(y¹t|ƒ}t|d<xœ|jd|ƒD]ˆ}|dräg|dD]}|d^q}|dr®t|ƒnx=|D](}x|j||ƒD]}	|	VqÎWqµWqf|d‚qfWWq3tk
r/}
|
j	d	kr‚nt
d
d|
ƒ‚q3Xq(nò|dkrˆd|krct
d
d|ƒ‚nxÂ|j||ƒD]}	|	VqvWn d|kr©t
d
d|ƒ‚n|drÒt|ƒdkrÒd|d<ng|D]'}|jj
j|j|||ƒ^qÙ}xt|ƒD]}
|
jƒVqWdS(uN
        Download operations on an account, optional container and optional list
        of objects.

        :param container: The container to download from.
        :param objects: A list of object names to download (a list of strings).
        :param options: A dictionary containing options to override the global
                        options specified during the service object creation::

                            {
                                'yes_all': False,
                                'marker': '',
                                'prefix': None,
                                'no_download': False,
                                'header': [],
                                'skip_identical': False,
                                'out_directory': None,
                                'checksum': True,
                                'out_file': None,
                                'remove_prefix': False,
                                'shuffle' : False
                            }

        :returns: A generator for returning the results of the download
                  operations. Each result yielded from the generator is a
                  'download_object' dictionary containing the results of an
                  individual file download.

        :raises: ClientException
        :raises: SwiftError
        uyes_allulongRDusuccessulistingunameushuffleuerrori”uAccount not foundR=u/u'/' in container nameR9uout_fileiN(R?RRŠRRIRÁRt_download_containerR)RR7RwR“R Rœt_download_object_jobR,R2(R.R9R£RDtoptions_copytpartRÊt
containerstconRRRbR:to_downsto_down((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pytdownloadísJ 	


!


			
1c"CsC|d}i}t|ddƒ}t}|drBt||ƒn|}	|	jtƒ}	|doj|dk|d<|dr¥|dr¥|	t|dƒjd	ƒ}	n|d
rËtjj|d
|	ƒ}	n|drj|rá|n|	}
yt|
dƒ}Wnt	k
r
qjX|Qt
ƒ}x0trP|jdƒ}
|
s@Pn|j
|
ƒq!W|jƒ|d
<WdQXnyLtƒ}idd6|d6|d6}|dr¨d|d<ny|j|||\}}Wn{tk
rD}|dsé‚n|jdkrþ‚n|d}d|krg}qEt|jdƒƒr>dg}qE‚nX|drt|jdƒƒspd|kr—|j||||dj|ƒƒ}nd}|dk	r|j||
ƒrÐtdddƒ‚n|d=|djƒ|j|||\}}qntƒ}t|	|||jdtƒƒ}|d}|dkr|ridd6|d6|d6|	d 6|d!6|d"6}|Sd}z%|jd#dƒjd$d%ƒd&}|tkrî|oÈ|dk}|rut|	ƒrut|	ƒqun‡|p÷|}|r0t|	ƒ}|r0t|ƒr0t|ƒq0n|su|rNt|d'ƒ}qut|	ƒrlt|	d'ƒ}qut}nx*|D]"}|dk	r||j |ƒq|q|Wtƒ}Wd|j!ƒ}|dk	rI|j"ƒd(|krI|rIyt#|d(ƒ}Wnt$k
rqFX|dr0t%|d||fƒqFt%|	||fƒqInXi
dd6td)6|d6|d6|	d 6|d!6|d*6|d+6|d,6|j&d-6|d.6|j'd/6|d6}|SWn†t(k
r>}t)ƒ\} }!t*j+|ƒidd6|d6|d6td)6|d06| d16|!d26|d6|	d 6|d!6|j'd/6}|SXdS(3Nuout_fileuheaderuuyes_alluskip_identicalu-uprefixu
remove_prefixu/u
out_directoryurbiu
If-None-Matchuresp_chunk_sizeuheadersu
response_dictumultipart-manifest=getuquery_stringi0ux-object-manifestux-static-large-objects[]tuLarge object is identicalRuchecksumuno_downloadudownload_objectuactionu	containeruobjectupathu	pseudodirucontentsucontent-typeu;iiuwbux-object-meta-mtimeusuccessu
start_timeufinish_timeuheaders_receiptu
auth_end_timeuread_lengthuattemptsuerroru	tracebackuerror_timestamp(,RhRIRRotos_path_sepRwtosRatopentIOErrorRRLtreadRƒR†Rt
get_objectR)RR!RAt_get_chunk_dataR?t
_is_identicaltclearRyRvtKNOWN_DIR_MARKERSRRcR
RtwriteRˆtclosetfloatRdRt
auth_end_timetattemptsRŸR&RžR<("R.R«R9R:RDtout_filetresults_dictRÈt	pseudodirRatfilenametfptmd5sumtdatat
start_timetget_argsRfRRgt
chunk_datatheaders_receipttobj_bodytno_fileRRtcontent_typetmake_dirtdirpathR…tfinish_timeRˆtmtimeRbR¦R§((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyRÏDs

 


			





	
	!	

"
	









c	Cs­yt|ƒ}Wntk
r$dSX|drŸg|dD]}|d^q:}|drgt|ƒng|D]'}|jjj|j|||ƒ^qn}|S|d‚dS(Nusuccessulistingunameushuffleuerror(R1t
StopIterationR?RR“R RœRÏ(	R.R9tpage_generatorRDt	list_pageR·R£R:RÔ((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyt_submit_page_downloadsús

!

1c
csˆ|jd|d|ƒ}y|j|||ƒ}WnDtk
rw}|jdkrX‚ntd|d|d|ƒ‚nXd}xô|rt|}d}t}dt|ƒ}	d}
x¿t|ƒD]±}|j	ƒV|s¼|
d7}
|
|	krmzty|j|||ƒ}WnTtk
r-}t
j|ƒ|}n/tk
r[x|D]}|j
ƒqAW‚nXWdt}Xqmq¼q¼WqW|r„|‚ndS(	NR9RDi”uContainer %r not foundR=gš™™™™™é?ii(RÁRüR)RR7R?RIRwR,R2RžR<RŸtcancelRL(
R.R9RDt_page_generatortnext_page_downsRbRÇt
page_downstnext_page_triggeredtnext_page_trigger_pointtpage_results_yieldedRÕt_d((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyRÎsH
	

	

c	csÝ|dk	r!t|j|}n	|j}y*t|ddkrFdn|dƒ}Wntk
rstdƒ‚nX|jdƒ\}}}i}t|dƒ}t|kr¿|t|t<n|j	j
j|j|d|ƒg}	x%t
|	ƒD]}
|
jƒ}|VqðW|r½|d}|dr2|d}n||kr½|sk|j	j
j|j|d	|ƒg}	n$|j	j
j|j|d|ƒg}	x(t
|	ƒD]}
|
jƒ}|VqœWq½ntƒ}
i}|j||ƒ}x^|D]V}|j}|j}|j}id
d6|d6}|dk	rBt|ƒ}|j|ƒn|}t|d
ƒrœ|j	jj|j||||ƒ}||d<||d<|||<qå|dk	r¾||d<||d<t|ƒrü|j	jj|j|||d|ƒ}|||<q;yBt|ƒ|j	jj|j||||d|
ƒ}|||<Wq;tk
rº}tƒ\}}tj|ƒidd6|d6|d6t d6|d6|d6|d6|d6}|
j!|ƒq;Xqåd|d<||d<|dr
|j	jj|j|||ƒ}|||<qå|j	jj|j|t"ƒ||ƒ}|||<qåWt#d|j$d||
fƒj%ƒt&|
ƒ}t }xc|dk	rØ|V|dsÉ|rÉ|drÉt'}x|D]}|j(ƒq¯WqÉnt&|
ƒ}qvWdS(uå
        Upload a list of objects to a given container.

        :param container: The container (or pseudo-folder path) to put the
                          uploads into.
        :param objects: A list of file/directory names (strings) or
                        SwiftUploadObject instances containing a source for the
                        created object, an object name, and an options dict
                        (can be None) to override the options for that
                        individual upload operation::

                            [
                                '/path/to/file',
                                SwiftUploadObject('/path', object_name='obj1'),
                                ...
                            ]

                        The options dict is as described below.

                        The SwiftUploadObject source may be one of:

                            * A file-like object (with a read method)
                            * A string containing the path to a local
                              file or directory
                            * None, to indicate that we want an empty object

        :param options: A dictionary containing options to override the global
                        options specified during the service object creation.
                        These options are applied to all upload operations
                        performed by this call, unless overridden on a per
                        object basis. Possible options are given below::

                            {
                                'meta': [],
                                'header': [],
                                'segment_size': None,
                                'use_slo': False,
                                'segment_container': None,
                                'leave_segments': False,
                                'changed': None,
                                'skip_identical': False,
                                'fail_fast': False,
                                'dir_marker': False  # Only for None sources
                            }

        :returns: A generator for returning the results of the uploads.

        :raises: SwiftError
        :raises: ClientException
        usegment_sizeiu'Segment size should be an integer valueu/uheaderRfu	_segmentsusegment_containert
policy_sourceuuploaduactionu	containerureadufileuobjectupathRat
results_queueu
upload_objectusuccessuerroru	tracebackuerror_timestampu
dir_markerttargettargsu	fail_fastN()R?RRŠR€RdR7t	partitionRhtPOLICYR“R›Rœt_create_container_jobR,R2Rt_make_upload_objectsRpRkRDRRƒRlR¯t_upload_object_jobRt_create_dir_marker_jobR
R_R&RžR<RIRÄRRt_watch_futureststartRPRLRý(R.R9R£RDtsegment_sizet_sept
pseudo_foldert
policy_headert_headertcreate_containerstrRRt
seg_containerR¿t	file_jobstupload_objectst
upload_objecttsR·to_optstdetailstobject_optionstfile_futuret
dir_futureRbR¦R§t	cancelledRQ((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pytuploadGsÊ3	
	


	
			











	


ucCs¡g}x”|D]Œ}t|tƒrSt|t||jdƒƒƒ}|j|ƒq
t|tƒr‡t||jƒ|_|j|ƒq
tdd|ƒ‚q
W|S(Nu/uFThe upload operation takes only strings or SwiftUploadObjects as inputR:(RjRRiturljoinRoR¢RkR7(R£RRR·R:((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyRs

cCs!idd6|d6|d6}i}yš|dk	r‰|j|ƒ}d|kr‰i|jdƒt6}|dkrv|}q†|j|ƒq‰n|j||d|ƒ|jitd6|d6ƒWn_tk
r}tƒ\}	}
t	j
|ƒ|jitd6|d	6|	d
6|
d6|d6ƒnX|S(
uß
        Create a container using the given connection

        :param conn: The swift connection used for requests.
        :param container: The container name to create.
        :param headers: An optional dict of headers for the
                        put_container request.
        :param policy_source: An optional name of a container whose policy we
                              should duplicate.
        :return: A dict containing the results of the operation.
        ucreate_containeruactionu	containeruheadersux-storage-policyR±usuccessu
response_dictuerroru	tracebackuerror_timestampN(R?RÅRAR
RƒRºRLRŸR&RžR<RI(R«R9RfRRRtcreate_responset_metaRRbR¦R§((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyR/s:
		
	cCsšidd6|d6|d6|d6}i}|jdƒsF|jdƒrS|d}n|jd	ƒro|d
}n|dk	r•idt|ƒd6}nidttƒƒd6}||d
<|dráy­|j||ƒ}|jddƒjdd
ƒd}	t|jdƒƒ}
|jdƒ}|jdƒ}|	t	kro|
dkro|t
kro||dkrot|d<|SWqátk
rÝ}
|
j
dkrÞtƒ\}}tj|
ƒ|jitd6|
d6|d6|d6ƒ|SqáXnyR|j||ddddt	dd|d|ƒ|jitd6|d6ƒ|SWn`tk
r•}
tƒ\}}tj|
ƒ|jitd6|
d6|d6|d6|d6ƒ|SXdS(Nucreate_dir_markeruactionu	containeruobjectupathu./u.\iu/iu%fux-object-meta-mtimeuheadersuchangeducontent-typeuu;iucontent-lengthuetagusuccessi”uerroru	tracebackuerror_timestamptcontent_lengthRôRfR±u
response_dict(t
startswithR?RtroundRthead_objectRARvR€RáR$RLR)RR&RžR<RƒRIt
put_objectRŸ(R«R9R:RDRaRRRètput_headersRftcttcltettmtRbR¦R§((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyRbsp




"

	
	
	c

Csñi}
|dr|d}n
|d}idd6|d6|d6|d6|d6d	||fd
6d||fd6}yòt|d
ƒ}
|
j|ƒt|
|d|dƒ}|j|||d|ddd|
ƒ}|dr|r||jƒkrtdj||jƒ|ƒƒ‚n|jitd6|
d6|d6|j	d6ƒ|	dk	r_|	j|ƒn|SWn†tk
rì}t
ƒ\}}tj|ƒ|jitd6|d6|d6|d6|
d6|j	d6ƒ|	dk	rè|	j|ƒn|SXdS(Nusegment_containeru	_segmentsuupload_segmentuactionu
for_containeru
for_objectu
segment_indexusegment_sizeu/%s/%susegment_locationu
%s segment %sulog_lineurbRuchecksumR'Rôuapplication/swiftclient-segmentR±utSegment {0}: upload verification failed: md5 mismatch, local {1} != remote {2} (remote segment has not been removed)usuccessu
response_dictusegment_etaguattemptsuerroru	tracebackuerror_timestamp(RÚtseekR#R+t
get_md5sumR7RmRƒRLRæR?RÄRŸR&RžR<RI(R«RaR9tsegment_namet
segment_startRt
segment_indextobj_nameRDRRètsegment_containerRRRëtcontentsR‡RbR¦R§((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyt_upload_segment_job¡sd



	"			
	c
	CsŒg}d|kr}|djddƒ\}}xW|j|i|d6ƒD].}	|	drl|j|	dƒqH|	d‚qHWnt|jdƒƒrL|dkr¿|j||d	d
ƒ\}}nt||ƒ}x·|D]p}
|
jdƒr8|
djdƒjddƒ\}}|j|j	|||it
d6ƒƒqÕ|j|
ƒqÕWn<|ji|jd
ƒjdƒd6t
|jdƒƒd6ƒ|S(Nux-object-manifestu/iuprefixusuccessulistinguerrorux-static-large-objecttquery_stringumultipart-manifest=getusub_slounameuetagu"uhashucontent-lengthubytes(RvRÁtextendR!RAR?RÝR%RoRÞRLR¢tstripR€(
R.R«R9R:Rftmanifesttchunkst
scontainertsprefixRÑR…tsconttsobj((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyRÞås* 

%"c	CsÑyt|dƒ}Wntk
r'tSX|x‡|D]}|d}tƒ}xI|rš|jtd|ƒƒ}|sztS|j|ƒ|t|ƒ8}qRW|jƒ|dkr6tSq6W|jdƒSWdQXdS(Nurbubytesiuhashi(	RÚRÛRIRRÜtminRƒRwR†(R.RðRaRëR…tto_readRìRí((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyRßÿs"


		
c>CsÙ
|jdƒs|jdƒr+|d}n|jdƒrG|d}nidd6|d6|d	6}t|d
ƒr€|}d}	n|}	|	|d<ye	|	dk	r¹idt|	ƒd
6}
nidttƒƒd
6}
|
|d<d}g}tƒ}
t|ddkrdn|dƒ}|ds7|ds7|dr6yŽ|j||ƒ}t	|j
dƒƒ}|ds||r—|dr—|j||||ƒ}n|drÒ|j||	ƒrÒ|j
itd6dd6ƒ|St|j
dƒƒ}|j
d
ƒ}|	dk	rM|drM|t|	ƒkrM||
d
krM|j
itd6dd6ƒ|S|dsÄ|j
dƒ}|rÄxR|D]G}|djdƒ}t|tƒr­|jdƒ}n|j|ƒqsWqÄnWq6tk
r2}|jdkr3tƒ\}}tj|ƒ|j
itd6|d6|d6|d 6ƒ|Sq6Xn|
j
t|d!d"ƒƒ|	dk	r5|r5t|	ƒ|kr5t|d#<|d$}|d%rŸ|d%}nt|	ƒ}g}|jj}d}d}xÍ||kr˜|||krõ||}n|d&r#d'||
d
||d|f}n!d(||
d
||d|f}|j|j|	|||||||d)|ƒ	} |j| ƒ|d7}||7}qÌWg}!t}"g}#x’t |ƒD]„}$y0|$j!ƒ}%|%dsàt}"n|!j|%ƒWq¸t"k
r;}tƒ\}}tj|ƒt}"|#j|||fƒq¸Xq¸W|"r‰td*||fƒ}|j
itd6|d6|#d+6|!d,6ƒ|S|!|d,<|d&r‡|!j#d-d.„ƒxO|!D]G} | d/jdƒ}&t|&tƒrñ|&jdƒ}&n|
j$|&ƒq·Wt%j&g|!D]-}'i|'d/d6|'d0d16|'dd26^qƒ}(d3|
d<i})|j'|||(d4|
d5d6d7|)ƒ|)|d8<qd9t(|jd:ƒƒt(|jd:ƒƒ|
d
||df}*|ró|j)dƒ|*j)dƒkród}n|*|
d<i})|j'||d"d;dd4|
d7|)ƒ|)|d8<nÝt|d#<i}+|	dk	r‚t|	ƒ},t*t+|	d<ƒ|,d=|d>ƒ}-nd},t,|d=|d>ƒ}-|j'|||-d;|,d4|
d7|+ƒ}.|+|d?<|d>r|.r|.|-j-ƒkrt.d@j/|-j-ƒ|.ƒƒ‚n|s|rË	g}/i}0|rÂ|j0ddƒ\}1}2|2j)dƒd}2g|0|1<xZ|j1|1i|2dA6ƒD]<}3|3dsœ|3d‚n|0|1j2dB„|3dCDƒƒqWn|r/	xd|D]Y}4|4|
krçqÏn|4j0dDdƒ\}5}6|0j
|5gƒ}7|7j|6ƒ|7|0|5<qÏWng}8x\|0j3ƒD]N\}9}:x?|:D]7};|jjj|j4|9|;d)|ƒ}<|8j|<ƒqU	WqB	Wx't |8ƒD]}<|/j|<j!ƒƒq¡	W|/|dE<n|j
itd6dFd6|j5dG6ƒ|SWnÝt6k
r}
}tƒ\}}tj|ƒ|j7t8krK
t.dH|	dI|ƒ}=n|}=|j
itd6|=d6|d6|d 6ƒnXt"k
rÔ
}tƒ\}}tj|ƒ|j
itd6|d6|d6|d 6ƒnX|S(JNu./u.\iu/iu
upload_objectuactionu	containeruobjectureadupathu%fux-object-meta-mtimeuheadersusegment_sizeiuchangeduskip_identicaluleave_segmentsux-static-large-objectusuccessuskipped-identicalustatusucontent-lengthuskipped-changedux-object-manifestunameuutf-8i”uerroru	tracebackuerror_timestampuheaderuularge_objectu	_segmentsusegment_containeruuse_slou%s/slo/%s/%s/%s/%08du%s/%s/%s/%s/%08dRuLAborting manifest creation because not all segments could be uploaded. %s/%su
exceptionsusegment_resultsRCcSs|dS(Nu
segment_index((tdi((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyR‹¯susegment_locationusegment_etaguetagu
size_bytesutrueRfR:umultipart-manifest=putR±umanifest_response_dictu%s/%s/%s/%s/%s/uutf8R'urbRuchecksumu
response_dictumObject upload verification failed: md5 mismatch, local {0} != remote {1} (remote object has not been removed)uprefixcss|]}|dVqdS(unameN((RBtseg((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pys	<genexpr>þsulistingt/usegment_delete_resultsuuploadeduattemptsuLocal file %r not foundR=(9R(RlR?RR)RtsetR€R*R!RARÞRßRƒRLRRoRjRtencodeR¢R)RR&RžR<RIRhR“tsegment_poolRœR9R,R2RŸtsorttaddtjsontdumpsR+RtrstripR#RÚR"R2R7RmRvRÁR;R¥t_delete_segmentRæR_R`R(>R.R«R9RpR:RDRRRtstreamRaR,told_manifesttold_slo_manifest_pathstnew_slo_manifest_pathsRRftis_sloRðR.R0told_segtseg_pathRbR¦R§Rt	full_sizetsegment_futuresRJR;R4R3RFtsegment_resultsterrorst
exceptionsRQRtseg_loctdt
manifest_datatmrtnew_object_manifesttobrR'R8R‡tdrst
delobjsmapR?R@RÑt
seg_to_deleteRARBtdelobjs_conttdel_segstdsconttdsobjstdsobjtdel_segRÇ((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyR
sÆ


	

	

		


	










	
	


:


	


	
	

	
 





	
	
	
	ccs˜|dk	r!t|j|}n	|j}|dk	rŸ|dk	rz|dr{g|D]}|j|dƒrS|^qS}ntƒ}i}|j|ƒrÓxPt||jdƒD]}|j||||ƒq°Wn|j|||||ƒt	d|j
d||fƒjƒt|ƒ}x|dk	rv|V|drg|drgx!|j
ƒD]}	|	jƒqPWnt|ƒ}qWq”x|j||ƒD]}|VqWnõ|r´tdƒ‚n|drÍtdƒ‚n|d	r”t}
g}xF|jƒD]8}|dr|jd
„|dDƒƒqð|d‚qðWxe|D]Z}
|
rCPq3xG|j|
d
|ƒD]0}|V|
rY|drY|drYt}
qYqYWq3WndS(u"
        Delete operations on an account, optional container and optional list
        of objects.

        :param container: The container to delete or delete from.
        :param objects: The list of objects to delete.
        :param options: A dictionary containing options to override the global
                        options specified during the service object creation::

                            {
                                'yes_all': False,
                                'leave_segments': False,
                                'prefix': None,
                                'header': [],
                            }

        :returns: A generator for returning the results of the delete
                  operations. Each result yielded from the generator is either
                  a 'delete_container', 'delete_object', 'delete_segment', or
                  'bulk_delete' dictionary containing the results of an
                  individual delete operation.

        :raises: ClientException
        :raises: SwiftError
        uprefixuobject_dd_threadsRRu	fail_fastusuccessu#Objects specified without containeru"Prefix specified without containeruyes_allcss|]}|dVqdS(unameN((RBtc((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pys	<genexpr>†sulistinguerrorRDN(R?RRŠR(Rt_should_bulk_deleteR't_bulk_deletet_per_item_deleteRRRRPtkeysRýt_delete_containerR7RIRÁR;RL(R.R9R£RDR:R¿tobj_delst	obj_sliceRRR^R"RÒRÑRÓ((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pytdelete8s`	

"	




	cCsht|ƒd|jdkr!tSy|jƒ}|ds>tSWntk
rStSX|d}d|kS(Niuobject_dd_threadsusuccessucapabilitiesubulk_delete(RwRŠRItcapabilitiesR)(R.R£t
cap_resultt
swift_info((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyRm˜s


c	CsZxS|D]K}|jjj|j|||d|ƒ}i|d6|d6}|||<qWdS(NRu	containeruobject(R“R Rœt_delete_object(	R.R9R£RDtrdictR¿R:tobj_deltobj_details((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyRoªs
	c	CsÔi}y'|j||d|ƒitd6}WnQtk
r€}tƒ\}}tj|ƒitd6|d6|d6|d6}nX|jidd6|d6|d	6|jd
6|d6ƒ|dk	rÐ|j
|ƒn|S(NR±usuccessuerroru	tracebackuerror_timestampudelete_segmentuactionu	containeruobjectuattemptsu
response_dict(t
delete_objectRLRŸR&RžR<RIRƒRæR?RÄ(	R«R9R:RRèRRRbR¦R§((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyRP³s*
	
c	Cs¡i}t|jdgƒƒ}idd6|d6|d6}yd}d}	|dsÉyI|j||d|ƒ}
|
jdƒ}t|
jd	ƒƒršd
}	nWqÉtk
rÅ}|jdkrƂqÆqÉXni}|j||d|d|	d
|ƒ|rt}
|j	j
}|jddƒ\}}|jdƒd}g}x›|j
d|di|d6ƒD]z}|drŽg|dD]}|d^qu}n
|d‚x9|D]1}|j|j||d|ƒ}|j|ƒqŸWqZWx3t|ƒD]%}|jƒ}|dsåt}
qåqåW|
|d<n|jitd6|d6|jd6ƒWnYtk
rœ}tƒ\}}tj|ƒ|jitd6|d6|d6|d6ƒ|SX|S(Nuheaderu
delete_objectuactionu	containeruobjectuleave_segmentsRfux-object-manifestux-static-large-objectumultipart-manifest=deletei”R:R±u/iR9RDuprefixusuccessulistingunameuerrorRudlo_segments_deletedu
response_dictuattemptsu	tracebackuerror_timestamp(RhRAR?R*R!R)RR|RLR“RJRvRORÁRœRPR¢R,R2RIRƒRæRŸR&RžR<(R.R«R9R:RDRt_headersRRRRR:RfRbRètdlo_segments_deletedRJts_containerts_prefixRgRÑR·tseg_listRFRktdel_resR¦R§((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyRxÏsv

	


$

	


	
	c	CsÙi}i}t|jdgƒƒ}y*|j|d|d|ƒitd6}WnQtk
r¡}tƒ\}}tj|ƒitd6|d6|d6|d6}nX|j	idd	6|d
6dd6|jd6|d
6ƒ|S(NuheaderRfR±usuccessuerroru	tracebackuerror_timestampudelete_containeruactionu	containeruobjectuattemptsu
response_dict(RhRAtdelete_containerRLRŸR&RžR<RIRƒR?Ræ(	R«R9RDRèR}RRRbR¦R§((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyt_delete_empty_container	s,
	
c	cs1y¿x€|jd|d|ƒD]f}|ds9|d‚nxF|jd|dg|dD]}|d^qVd|ƒD]}|VqsWqW|dr”dS|jjj|j||ƒ}t|ƒ}Wnftk
r'}tƒ\}	}
t	j
|ƒid	d
6|d6dd6td6|d6|	d
6|
d6}nX|VdS(NR9RDusuccessuerrorR£ulistingunameuprefixudelete_containeruactionu	containeruobjectu	tracebackuerror_timestamp(
RÁRtR“R›RœR„RSRŸR&RžR<R?RI(R.R9RDRÑR·RRtcon_deltcon_del_resRbR¦R§((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyRq9	s4

!



cCsL|rH|jjj|j|||ƒ}i|d6|d6}|||<ndS(Nu	containeruobjects(R“R Rœt_bulkdelete(R.R9R£RDRytbulk_deltbulk_details((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyRn_	s
c
	CsIi}yéidd6dd6}i|d6|d6}g|D]%}td||fjdƒƒ^q8}|jd	|d
ddd
jd„|Dƒƒd|ƒ\}}|rÍ|jitd6t||ƒd6ƒn!|jitd6tdƒd6ƒWn.t	k
r}	|jitd6|	d6ƒnX|jidd6|j
d6|d6ƒ|S(Nuapplication/jsonuAcceptu
text/plainuContent-Typeu	containeruobjectsu/%s/%suutf-8RfR:ubulk-deleteRíR×css"|]}|jdƒdVqdS(uutf-8s
N(RI(RBR:((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pys	<genexpr>u	sR±usuccessuresultuONo content received on account POST. Is the bulk operations middleware enabled?uerrorubulk_deleteuactionuattemptsu
response_dict(RRIR¸RRƒRLR%RIR7RŸRæ(
R«R9R£RDRèRfRRR:RRg((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyR‡g	s6
/			
c	csÓ|dk	r!t|j|}n	|j}td„|Dƒƒ}|jdƒr	|djdƒ}|dr{tdƒ‚ng|D]}t|tƒs‚|^q‚}t	|ƒdkrÖt	|ƒdkrÖtdƒ‚n|d	d
krõtdƒ‚n|j
|dƒni}t|dƒ}	t|	kr<|	t|t<ng|D]'}
|j
jj|j|
d
|ƒ^qC}x%t|ƒD]}|jƒ}
|
Vq}Wg}|j||ƒ}xô|D]ì}|j}|j}|j}|j}t|ddƒ}|jt|dd
ƒƒ|dk	rod|krC|jt|ddƒƒnd|kro|jt|dd
ƒƒqon|j
jj|j|||||ƒ}|j|ƒq·Wx%t|ƒD]}|jƒ}
|
Vq´WdS(uÿ	
        Copy operations on a list of objects in a container. Destination
        containers will be created.

        :param container: The container from which to copy the objects.
        :param objects: A list of object names (strings) or SwiftCopyObject
                        instances containing an object name and an
                        options dict (can be None) to override the options for
                        that individual copy operation::

                            [
                                'object_name',
                                SwiftCopyObject(
                                    'object_name',
                                     options={
                                        'destination': '/container/object',
                                        'fresh_metadata': False,
                                        ...
                                        }),
                                ...
                            ]

                        The options dict is described below.
        :param options: A dictionary containing options to override the global
                        options specified during the service object creation.
                        These options are applied to all copy operations
                        performed by this call, unless overridden on a per
                        object basis.
                        The options "destination" and "fresh_metadata" do
                        not need to be set, in this case objects will be
                        copied onto themselves and metadata will not be
                        refreshed.
                        The option "destination" can also be specified in the
                        format '/container', in which case objects without an
                        explicit destination will be copied to the destination
                        /container/original_object_name. Combinations of
                        multiple objects and a destination in the format
                        '/container/object' is invalid. Possible options are
                        given below::

                            {
                                'meta': [],
                                'header': [],
                                'destination': '/container/object',
                                'fresh_metadata': False,
                            }

        :returns: A generator returning the results of copying the given list
                  of objects.

        :raises: SwiftError
        cssI|]?}t|tƒr|jrtd„|jjdƒDƒƒVqdS(css|]}|r|VqdS(N((RBtp((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pys	<genexpr>Ì	su/N(RjRsRtR1Rv(RBR:((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pys	<genexpr>Ì	sudestinationu/iu)destination must be in format /cont[/obj]iiuKCombination of multiple objects and destination including object is invalidiÿÿÿÿuu"destination can not end in a slashuheaderRfumetauX-Object-Meta-N(R?RRŠRHRARvR7RjRsRwRLRhR
R“R›RœRR,R2t_make_copy_objectsRkRDRtRuRƒR¯t_copy_object_jobR¢(R.R9R£RDRÒtdestination_splitR·t	_str_objsRRtcontRRRRtcopy_futurestcopy_objectstcopy_objectR:R¶RtRuRftcopy((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyR“	sf5	

($1	
				cCszg}xm|D]e}t|tƒrAt||ƒ}|j|ƒq
t|tƒr`|j|ƒq
tdd|ƒ‚q
W|S(NuBThe copy operation takes only strings or SwiftCopyObjects as inputR:(RjRRsR¢R7(R£RDR‘R·R:((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyR‹
s

cCsÏi}itd6dd6|d6|d6|d6|d6|d6|d	6}y,|j||d
|d|d|d
|ƒWnXtk
rÊ}tƒ\}	}
tj|ƒ|jitd6|d6|	d6|
d6ƒnX|S(Nusuccessucopy_objectuactionu	containeruobjectudestinationuheadersufresh_metadatau
response_dictRtRfRuR±uerroru	tracebackuerror_timestamp(RLR’RŸR&RžR<RƒRI(R«R9R:RtRfRuR±RRRbR¦R§((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyRŒ&
s.

	cCs®|r!||jkr!|j|Sidd6tƒd6}|jjj|j|ƒ}t|ƒ}|jitd6|d6ƒ|dk	r|ji|d6ƒn||j|<|S(uæ
        List the cluster capabilities.

        :param url: Proxy URL of the cluster to retrieve capabilities.

        :returns: A dictionary containing the capabilities of the cluster.

        :raises: ClientException
        ucapabilitiesuactionu	timestampusuccessuurlN(
R”RR“R›Rœt_get_capabilitiesRSRƒRLR?(R.turlt
refresh_cacheRRtcapRu((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyRuF
s 

		
cCs
|j|ƒS(N(tget_capabilities(R«R•((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyR”h
sc
Cst|jƒƒ}xït|ƒD]á}y,|jƒ}|dk	rP|j|ƒnWqtk
r‹||}|}d|d<|j|ƒqtk
rÿ}tƒ\}}	t	j
|ƒ||}|}|jitd6|d6|d6|	d6ƒ|j|ƒqXqW|jdƒdS(uÈ
        Watches a dict of futures and pushes their results onto the given
        queue. We use this to wait for a set of futures which may create
        futures of their own to wait for, whilst also allowing us to
        immediately return the results of those sub-jobs.

        When all futures have completed, None is pushed to the queue

        If the future is cancelled, we use the dict to return details about
        the cancellation.
        u	cancelledustatususuccessuerroru	tracebackuerror_timestampN(
RÁRpR,R2R?RÄRRŸR&RžR<RƒRI(
R-RÆtfutures_onlyRQRRRRRbR¦R§((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyRn
s.





	(.R5R6RqR?R/R–R—R
tstaticmethodR¡R²R®R¬R­R°RÁR½R¾RÖRÏRüRÎR#RRRR9RÞRßR
RtRmRoRPRxR„RqRnR‡R“R‹RŒRIRuR”R(((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyR‰£s^		z¬,==W	¶		7Ô1>A	ÿ$`			M	&	&‡ "(uapplication/directoryutext/directory(\t
__future__RtloggingRÙtconcurrent.futuresRRRR“RR`RRthashlibRRR	R
Rtos.pathRR
RRRRRRØt	posixpathR$trandomRRt	threadingRtsixRRRRtsix.moves.queueRRRMtsix.moves.urllib.parseRRMtswiftclientRtswiftclient.command_helpersRRR tswiftclient.utilsR!R"R#R$R%R&R'R(tswiftclient.exceptionsR)tswiftclient.multithreadingR*t	getLoggerRžR+RŸR7RHRJR‘R?RIRLR’R
RáRPRSR,R^RcRhtobjectRiRrRsRyR‰(((sH/home/tvault/.virtenv/lib/python2.7/site-packages/swiftclient/service.pyt<module>s"4":	/	'	


		$3