# API for plugin FS providers¶

class dataiku.fsprovider.FSProvider(root, config, plugin_config)

The base interface for a Custom FS provider

Parameters
• root – the root path for this provider

• config – the dict of the configuration of the object

• plugin_config – contains the plugin settings

close()

Perform any necessary cleanup

stat(path)

Get the info about the object at the given path

Parameters

path – where the object to inspect is located

Returns

a dict with the fields:

• ’path’ : the location of the object (relative to the root this instance was created with)

• ’isDirectory’ : True if the object is a folder

• ’size’ : size of the object in bytes, 0 for folders

• ’lastModified’ : modification time in ms since epoch, -1 if not defined

If there is no object at the given location, return None

set_last_modified(path, last_modified)

Change the modification time of an object.

Parameters
• path – where the object to modify is located.

• last_modidied – timestamp as ms since epoch

Returns

True if the change was done, False if not or if the operation is not supported

browse(path)

Enumerate files non-recursively from a path

Parameters

path – what to enumerate

Returns

a dict with the fields:

• ’fullPath’ : the path from the root this instance was created with

• ’exists’ : True if there is something at path

• ’directory’ : True if the path denotes a folder

• ’size’ : the size of the file at path; 0 if it’s a folder

If the object at path is a folder, then there should be a ‘children’ attribute which is a list of dicts with the same fields (without a ‘children’ field for subfolders)

enumerate(prefix, first_non_empty)

Enumerate files recursively from a path.

Parameters
• prefix – where to start the enumeration

• first_non_empty – if first_non_empty, stop at the first non-empty file.

Returns

a list of dicts corresponding to the enumerated files (not folders). Each dict is expected to contain these fields:

• ’path’ : the path relative to the root this instance was created with,

• ’size’ : size in bytes

• ’lastModified’ : modification time in ms since epoch (-1 if not defined)

If there is nothing at the prefix, not even empty folders, return None

delete_recursive(path)

Delete recursively

Parameters

path – path to the folder or file to remove

move(from_path, to_path)

Move (rename) an object

Parameters
• from_path – where the data to move is located (relative to the root this instance was created with)

• to_path – the target path for the data

read(path, stream, limit)

Parameters
• path – where to read the data (relative to the root this instance was created with)

• stream – a file-like to write the data into

• limit – if not -1, max number of bytes needed. Any more bytes will be discarded by the backend

write(path, stream)

Write data

Parameters
• path – where to write the data (relative to the root this instance was created with)

• stream – a file-like to read the data from