(source, destination)
| 65 | # But it's how (for example) Mercurial does it, as of 2016-03-23 |
| 66 | # https://selenic.com/repo/hg/file/tip/mercurial/windows.py |
| 67 | def replace(source, destination): |
| 68 | assert sys.platform == 'win32' |
| 69 | try: |
| 70 | os.rename(source, dest) |
| 71 | except OSError as err: |
| 72 | if err.winerr != 183: |
| 73 | raise |
| 74 | os.remove(dest) |
| 75 | os.rename(source, dest) |
| 76 | else: |
| 77 | # Atomic on POSIX. Not sure about Cygwin, OS/2 or others. |
| 78 | replace = os.rename |
no test coverage detected