(cherry picked from commit 7fa1b0ac883914f3cdfcaaa1a00016a35cced368)
[IMP] Add some unitest and fix a bug with exceptions
(cherry picked from commit c2f34ecd06fa5ba093084cf32f35c722c5866ff5)
[FIX] Reindent line
(cherry picked from commit b643a48f86b20ed6496f2e08366a407095d1540b)
[IMP] Add some new unittests
(cherry picked from commit f118e2391de3b443558d26186fe44f55a7f0b9c4)
[IMP] Add encoding in each python files
(cherry picked from commit 9599a88303b921c8e73174db61318f6dc9f02017)