This adds type safety to important attributes on Branch
, ChangeSet
,
Commit
, and Revision
, forcing hosting services and SCMTools to
encode or decode data properly and pass the right types during
construction. This allows consumers of these objects to be certain about
what type they're working with, and just keeps everything nice and
consistent across implementations and Python versions.
The new type safety caught some issues in a few of our backends, where
we were passing Unicode diffs or byte string metadata. These haven't
been a problem before (and we had some backwards-compatibility support
in Commit
that dealt with Unicode diffs, which are now gone). These
cases have all been updated to pass the correct types.