This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author albertogomcas
Recipients albertogomcas, docs@python
Date 2017-08-09.08:07:00
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1502266021.69.0.915795011515.issue31154@psf.upfronthosting.co.za>
In-reply-to
Content
I find the naming of Path.replace quite unfortunate, coming from the os.path and basestring mindset, the expectation would be that it would change some substring by another substring in the Path instance. Instead, it _moves_ the file indicated by the Path object in the file system. Most of the methods of Path have no effect in the filesystem, and we have here one with a slightly misleading name which goes and moves your files around.

Practically the same operation is done with Path.rename, which is less surprising since it matches popular OS commands/UIs (ren, Rename).

IMHO Path.replace should not exist as is and a keyword modifier (silent?) for Path.rename toggles between the minor behavior differences of the two. 

Additionally:

Both calls lack any kind of return, which leads me to expect after a rename/replace the Path instance would be changed to the new path. This is not the case, after the call the Path instance keeps "pointing" to the previous (and quite likely now useless) path. Returning the new path would be another reasonable option. In any case, I think the documentation should mention this behavior explicitly. 

And, while we are at it, having implemented the relatively dangerous replace/rename (along with convenience shorcuts for reading, writing, opening...), why was a Path.copy not included?
History
Date User Action Args
2017-08-09 08:07:01albertogomcassetrecipients: + albertogomcas, docs@python
2017-08-09 08:07:01albertogomcassetmessageid: <1502266021.69.0.915795011515.issue31154@psf.upfronthosting.co.za>
2017-08-09 08:07:01albertogomcaslinkissue31154 messages
2017-08-09 08:07:00albertogomcascreate