Codec

class korus.database.backend.sqlite.codec.Codec[source]

Bases: object

decode(*args, **kwargs)[source]
encode(*args, **kwargs)[source]
class korus.database.backend.sqlite.codec.Decoder[source]

Bases: RuleSet

class korus.database.backend.sqlite.codec.Encoder[source]

Bases: RuleSet

class korus.database.backend.sqlite.codec.RuleSet[source]

Bases: object

add_rule(table_name, col_name, fcn)[source]
get_rule(table_name, col_name)[source]
get_rules(x, table_name)[source]
korus.database.backend.sqlite.codec.create_codec(conn)[source]
korus.database.backend.sqlite.codec.decode_bool(v: str) bool[source]
korus.database.backend.sqlite.codec.decode_datetime(v: str) datetime[source]

Decoder for datetime values.

Args:
v: str

The encoded datetime value. Must have the format %Y-%m-%d %H:%M:%S.%f

Returns:
: datetime

The decoded datetime object in UTC timezone. None, if the input string is None.

korus.database.backend.sqlite.codec.decode_field(value, fcn=None)[source]
korus.database.backend.sqlite.codec.decode_json(v: str) list | tuple | dict[source]
korus.database.backend.sqlite.codec.decode_key(v: int | list[int])[source]
korus.database.backend.sqlite.codec.decode_row(row, fcns=None)[source]
korus.database.backend.sqlite.codec.decode_str_by_type(v: str, type: type) type[source]
korus.database.backend.sqlite.codec.decode_type(v: str) type[source]
korus.database.backend.sqlite.codec.decode_version(v: int) str[source]

Decode package version to a str.

Args:
: int

The encoded versio no.

Returns:
v: str

Version in the form x.y.z

korus.database.backend.sqlite.codec.encode_condition(table_name, condition, encoder)[source]
korus.database.backend.sqlite.codec.encode_field(value: Any, fcn: callable = None)[source]

Encode any input value.

If no encoding function is specified, the following default encoding rules are enforced,

  • tuples, lists, and dicts are encoded using json.dumps

  • datetime objects are encoded as strings using the format %Y-%m-%d %H:%M:%S.%f

  • type objects are encoded as strings using their class name

  • all other input types are returned unchanged

Args:
value: typing.Any

The value to be encoded

fcn: callable (optional)

Encoding function.

Returns:
: typing.Any

The encoded value

korus.database.backend.sqlite.codec.encode_key(v: int | list[int])[source]
korus.database.backend.sqlite.codec.encode_row(row, fcns=None)[source]
korus.database.backend.sqlite.codec.encode_type(v: type)[source]
korus.database.backend.sqlite.codec.encode_version(v: str) int[source]

Encode package version as an int

Args:
v: str

Version in the form x.y.z

Returns:
: int

The encoded versio no.

korus.database.backend.sqlite.codec.index_to_key(v: int | list[int])[source]
korus.database.backend.sqlite.codec.key_to_index(v: int | list[int])[source]