
def decerealise(msg,schema=''):
    '''
    >>> decerealise('a:1:bcd:2.4')
    ['a', 1, 'bcd', 2.4]
    >>> decerealise('a:1:bcd:2.4','A:B:C:d')
    {'A': 'a', 'B': 1, 'C': 'bcd', 'd': 2.4}
    >>> decerealise('a:1:bcd:2.4','A|str:B|str:C|str:d|str')
    {'A': 'a', 'B': '1', 'C': 'bcd', 'd': '2.4'}
    >>> decerealise('a:1:bcd:2.4','A|int:B|int:C|int:d|int')
    error
    >>> decerealise('a:1:bcd:2.4','A|str:B|int:C|str:d|float')
    {'A': 'a', 'B': 1, 'C': 'bcd', 'd': 2.4}
    >>> decerealise('a:1:bcd:2.4','A|str:B|int:C|str:d|nt')
    {'A': 'a', 'B': '1', 'C': 'bcd', 'd': 2}
    >>> decerealise('1:0', 'A|bool:B|bool')
    {'A': False, 'B': True}


    '''
    assert isinstance(msg,str)
    assert isinstance(schema,str)

def cerealise(data):
    '''
    would be better with begin->...->end character
    >>> cerealise({'A':0,'B':1,'C':'a','D':'bcd','E':True,'D':False})
    0:1:a:bcd:1:0
    >>> cerealise([0,1,'a','bcd',True,False])
    0:1:a:bcd:1:0
    >>> cerealise(1)
    1
    >>> cerealise('a')
    a
    >>> cerealise(True)
    1
    >>> cerealise({'A':[]})
    error
    >>> cerealise({'A':{}})
    error

    '''
