# API

## pyodc

### Functions

pyodc.encode_odb(dataframe: DataFrame, target, rows_per_frame=10000, types: dict = None, bigendian: bool = False, properties: dict = None, bitfields: dict = None)

  Encode a pandas dataframe into an ODB-2 stream

  Parameters:

    - dataframe (DataFrame) – A pandas dataframe to encode

    - target (str|file) – A file-like object to write the encoded data to

    - types (dict) – A dictionary of (optional) column-name : constant `DataType` pairs, or `None`

    - bigendian (bool) – Encode in big-endian byte order if `True`

    - properties (dict) – Encode a dictionary of supplied properties

    - bitfields (dict) – A dictionary containing entries for BITFIELD columns. The values are either bitfield names, or tuple pairs of bitfield name and bitfield size

pyodc.read_odb(source, columns=None, aggregated=True, single=False)

  Decode an ODB-2 stream into a pandas dataframe

  Parameters:

    - source (str|file) – A file-like object to decode the data from

    - columns (list|tuple) – A list or a tuple of columns to decode

    - aggregated (bool) – Group result into logical dataframes if `True`

    - single (bool) – Group result into a single dataframe if `True` and possible

  Returns:

    DataFrame

### Classes

class pyodc.DataType(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)

  Defines the encoded data type for a specified column

  IGNORE = 0

    Ignore value

  INTEGER = 1

    Integer value

  REAL = 2

    Real value

  STRING = 3

    String value

  BITFIELD = 4

    Bitfield value

  DOUBLE = 5

    Double value

class pyodc.ColumnInfo(name, idx, dtype, datasize, bitfields)

  Represent the type of a column in the encoded file

  Parameters:

    - name (str) – The name of the column

    - idx (int) – The index of the column

    - dtype (DataType) – The type of the column as `DataType`

    - datasize (int) – The size of the column

    - bitfields (iter) – For columns of bitfield type, define `Bitfield` specification

  name

    The name of the column

    Type:

      str

  idx

    The index of the column

    Type:

      int

  dtype

    The type of the column as `DataType`

    Type:

      DataType

  datasize

    The size of the column

    Type:

      int

  bitfields

    For columns of bitfield type, define `Bitfield` specification

    Type:

      iter

  class Bitfield(name, size, offset)

    Specifies the meaning of the bits encoded in a column of type bitfield

    Parameters:

      - name (str) – Name of a group of bits

      - size (int) – Number of bits

      - offset (int) – Offset of bits within the decoded (integer) value

    name

      Name of a group of bits

      Type:

        str

    size

      Number of bits

      Type:

        int

    offset

      Offset of bits within the decoded (integer) value

      Type:

        int

class pyodc.Frame(source)

  Represent the decoded dataframe

  Parameters:

    source (str|file) – A file-like object to decode the data from

  properties

    Dictionary of additional properties that can contain arbitrary metadata

    Type:

      dict

  columns

    A list of `ColumnInfo` objects describing the column structure of the frame

    Type:

      list

  nrows

    Number of rows of data within the frame

    Type:

      int

  ncolumns

    Number of data columns within the frame

    Type:

      int

  dataframe(columns=None)

    Decodes the frame into a pandas dataframe

    Parameters:

      columns – List of columns to decode

    Returns:

      DataFrame

class pyodc.Reader(source, aggregated=True)

  An object that owns the input data stream, and splits it into a sequence of frames that can be interrogated

  Parameters:

    - source (str|file) – A file-like object to decode the data from

    - aggregated (bool) – Group result into logical dataframes if `True`

  frames

    Decoded dataframes

    Type:

      DataFrame

## codc

Exactly the same API as pyodc.