code: def decode_row(row, schema):
      """
      Decode dataset row according to coding spec from unischema object
  
      If a codec is set, we use codec.decode() to produce decoded value.
  
      For scalar fields, the codec maybe set to `None`. In that case:
       - If the numpy_dtype is a numpy scalar or a Decimal, cast the 'encoded' value before returning.
       - In any other case, return the value 'as is'.
  
      :param row: dictionary with encodded values
      :param schema: unischema object
      :return:
      """
      decoded_row = dict()
      for field_name_unicode, _ in row.items():
          field_name = str(field_name_unicode)
          if field_name in schema.fields:
              try:
                  if row[field_name] is not None:
                      field = schema.fields[field_name]
                      codec = schema.fields[field_name].codec
                      if codec:
                          decoded_row[field_name] = codec.decode(
                              field, row[field_name]
                          )
                      elif field.numpy_dtype and issubclass(
                          field.numpy_dtype, (np.generic, Decimal)
                      ):
                          decoded_row[field_name] = field.numpy_dtype(
                              row[field_name]
                          )
                      else:
                          decoded_row[field_name] = row[field_name]
                  else:
                      decoded_row[field_name] = None
              except Exception:  # pylint: disable=broad-except
                  raise_with_traceback(
                      DecodeFieldError(
                          'Decoding field "{}" failed'.format(
                              field_name
                          )
                      )
                  )
  
      return decoded_row
  
file_path: petastorm/petastorm/utils.py
imports: import logging
  import os
  from decimal import Decimal
  from multiprocessing import Pool
  import numpy
  import pyarrow
  from future.utils import raise_with_traceback
  from pyarrow.filesystem import LocalFileSystem
label_desc: Use image node_id 2 for calling a global function with example usage: decode_row(row, schema) and returns: decoded_row