pycbor supports all major types of RFC 7049 with the exception of semantic tagging. There are probably some ways in which pycbor isn't strictly compliant, but it mostly works
>>> pycbor.encode([1, 2, 3])
b'\x83\x01\x02\x03'
>>> pycbor.decode(b'\x83\x01\x02\x03')
[1, 2, 3]