bpo-31368: Expose preadv (preadv2) and pwritev (pwritev2) in the os module by pablogsal · Pull Request #5239 · python/cpython
API question: preadv2 only exists because regular preadv was missing a flags argument, and in C the only way to add an argument is to make a new function. In python we don't have that problem. So an alternative would be to make this os.preadv(fd, buffers, offset[, flags]), and have it call either preadv or preadv2 as appropriate. (preadv2(..., flags=0) is equivalent to preadv.)
I kind of like this better, since (a) exposing preadv is probably a good idea, even on systems that don't have preadv2, (b) it reduces clutter in os. OTOH the same thing happened for pipe and pipe2, and it looks like we exposed those as two independent functions in os, so ¯\(ツ)/¯