Yes, having a high-level version of copy_file_range() that falls back to copyfileobj() should be okay. I’m not sure if it should be a public API of shutil, or just an internal detail.
I am wondering if it would be nice to rearrange the os.copy_file_range() signature and make more parameters optional, or is that getting too high level?
copy_file_range(in, out, count, offset_in=None, offset_out=None, flags=0)
copy_file_range(f1, f2, size) # Try to copy a whole file
copy_file_range(f1, f2, 30, 100, 200) # Try 30 bytes at given offsets
Also left some more review comments. Also, we should eventually add test case(s) for the new functionality, and an entry to Doc/whatsnew/3.6.rst. |