copy.write() takes a bytes input and rejects bytearray/memoryview; however there is no strict reason to do so: the interface can be extended to accept any Buffer, which might save some memcopy if that's the data type available to the user.
See psycopg/psycopg2#1438 for some discussion on the topic.