11import logging
2- from ....cio .common import encode_request_parameter
2+ from ....cio .common import encode_request_parameter , a_await_or_future
33from ....cio import core as fs
44from ....exceptions .io import ResourceNotFoundError , NotADirectory , ResourceExistsError
55from .. import query
6- from ....lib import FetchResourcesResponse
76
87
98logger = logging .getLogger ('cterasdk.core' )
1211async def listdir (core , path , depth = None , include_deleted = False , search_criteria = None , limit = None ):
1312 with fs .fetch_resources (path , depth , include_deleted , search_criteria , limit ) as param :
1413 if param .depth > 0 :
15- return query .iterator (core , '' , param , 'fetchResources' , callback_response = FetchResourcesResponse )
14+ return query .iterator (core , '' , param , 'fetchResources' , callback_response = fs . FetchResourcesResponse )
1615 return await core .v1 .api .execute ('' , 'fetchResources' , param )
1716
1817
@@ -54,7 +53,7 @@ async def walk(core, scope, path, include_deleted=False):
5453async def mkdir (core , path ):
5554 with fs .makedir (path ) as param :
5655 response = await core .v1 .api .execute ('' , 'makeCollection' , param )
57- fs .accept_response (response , path . reference . as_posix () )
56+ fs .accept_response (response )
5857
5958
6059async def makedirs (core , path ):
@@ -67,29 +66,34 @@ async def makedirs(core, path):
6766 logger .debug ('Resource already exists: %s' , path .reference .as_posix ())
6867
6968
70- async def rename (core , path , name ):
69+ async def rename (core , path , name , * , wait = False ):
7170 with fs .rename (path , name ) as param :
72- return await core .v1 .api .execute ('' , 'moveResources' , param )
71+ ref = await core .v1 .api .execute ('' , 'moveResources' , param )
72+ return await a_await_or_future (core , ref , wait )
7373
7474
75- async def remove (core , * paths ):
75+ async def remove (core , * paths , wait = False ):
7676 with fs .delete (* paths ) as param :
77- return await core .v1 .api .execute ('' , 'deleteResources' , param )
77+ ref = await core .v1 .api .execute ('' , 'deleteResources' , param )
78+ return await a_await_or_future (core , ref , wait )
7879
7980
80- async def recover (core , * paths ):
81+ async def recover (core , * paths , wait = False ):
8182 with fs .recover (* paths ) as param :
82- return await core .v1 .api .execute ('' , 'restoreResources' , param )
83+ ref = await core .v1 .api .execute ('' , 'restoreResources' , param )
84+ return await a_await_or_future (core , ref , wait )
8385
8486
85- async def copy (core , * paths , destination = None ):
87+ async def copy (core , * paths , destination = None , wait = False ):
8688 with fs .copy (* paths , destination = destination ) as param :
87- return await core .v1 .api .execute ('' , 'copyResources' , param )
89+ ref = await core .v1 .api .execute ('' , 'copyResources' , param )
90+ return await a_await_or_future (core , ref , wait )
8891
8992
90- async def move (core , * paths , destination = None ):
93+ async def move (core , * paths , destination = None , wait = False ):
9194 with fs .move (* paths , destination = destination ) as param :
92- return await core .v1 .api .execute ('' , 'moveResources' , param )
95+ ref = await core .v1 .api .execute ('' , 'moveResources' , param )
96+ return await a_await_or_future (core , ref , wait )
9397
9498
9599async def ensure_directory (core , directory , suppress_error = False ):
@@ -159,6 +163,8 @@ def upload(name, size, destination, fd):
159163 :returns: Callable function to start the upload.
160164 :rtype: callable
161165 """
166+ fs .destination_prerequisite_conditions (destination , name )
167+
162168 async def wrapper (core ):
163169 """
164170 Upload file from metadata and file handle.
0 commit comments