Datasource API

API for working with the Datasource type.

Import this module like this:

from sympathy.api import datasource

Class datasource.File

class sympathy.api.datasource.File(filename: Optional[str] = None, mode: str = 'r', **kwargs)

Datasource covers the case of specifying data resources and supports four different formats: File (local file), Database (ODBC), Database SQLAlchemy and URL (for example, HTTP request).

Any node port with the Datasource type will produce an object of this kind.



Absolute filename to a local file.

Database (ODBC):

Connection string for use with a ODBC database.

Database SQLAlchemy:

Engine connection string for use with SQLAlchemy.


Arbitrary URL, can support file or http(s) schemes. In addition to the URL itself this format format allows storage of a separate environment dictionary, for example, to use as HTTP headers.


Return the full dictionary for this data source.


Return the path.

In a file data source this corresponds to the path of a file. In a data base data source this corresponds to a connection string. That can be used for accessing the data base. Returns None if path hasn’t been set.

Changed in version 1.2.5: Return None instead of raising KeyError if path hasn’t been set.


Return the type of this data source.

It can be either 'FILE' or 'DATABASE'. Returns None if type hasn’t been set.

Changed in version 1.2.5: Return None instead of raising KeyError if type hasn’t been set.


Store the info from datasource_dict in this datasource.


datasource_dict – should be a dictionary of the same format that you get from to_file_dict() or to_database_dict().

encode_database(*args, **kwargs)

Store data base access info.


Store a path to a file in this datasource.


filename – should be a string containing the path. Can be relative or absolute.

classmethod from_filename(filename)

Return new file type datasource constructed from filename.


Return text data.

classmethod icon()

Return full path to svg icon.

names(kind=None, fields=None, **kwargs)

Return a formatted list with a name and type of the data. columns.


Set text data.

static to_file_dict(fq_filename)

Create a dictionary to be used for creating a file data source.

You usually want to use the convenience method encode_path() instead of calling this method directly.

classmethod viewer()

Return viewer class, which must be a subclass of sympathy.api.typeutil.ViewerBase