UTC has no timezone and does not need a timezone. What utcnow() returns is absolutely correct.
That IANA unfortunately named the timezone indicator for UTC+00 'UTC', instead of 'UTCZ' or 'UTC+00' means nothing.
That in Python UTC has the same structure as a naive datetime means nothing.
Deprecating an absolutely correct function to coddle some ignorants is plain stupid.
Edit: What is not correct are e.g. the astimezone() and ctime() functions of a naive datetime, because they assume it is a local time. Those should be corrected to handle an UTC!
That IANA unfortunately named the timezone indicator for UTC+00 'UTC', instead of 'UTCZ' or 'UTC+00' means nothing.
That in Python UTC has the same structure as a naive datetime means nothing.
Deprecating an absolutely correct function to coddle some ignorants is plain stupid.
Edit: What is not correct are e.g. the astimezone() and ctime() functions of a naive datetime, because they assume it is a local time. Those should be corrected to handle an UTC!