The datetime objects produced by Python's datetime module are immutable, much like Commit objects. The datetime module provides a convenient replace function that returns a new object based on an old with one or more attributes replaced. E.g, I can write:
>>> d = datetime.datetime.now()
>>> d.replace(hour=0, minute=0, second=0)
datetime.datetime(2021, 2, 15, 0, 0, 0, 318021)
I would like to see the same api on Commit objects, so that one could write:
>>> newcommit = oldcommit.replace(message='This is a test', author='Cookie Monster')