[issue32689] shutil.move raises AttributeError if first argument is a pathlib.Path object and destination is a directory

2019-09-30 Thread Guido van Rossum


Guido van Rossum  added the comment:

3.9 only!

--
nosy: +gvanrossum
resolution:  -> fixed
stage: patch review -> resolved
status: open -> closed
versions: +Python 3.9 -Python 3.6, Python 3.7, Python 3.8

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue32689] shutil.move raises AttributeError if first argument is a pathlib.Path object and destination is a directory

2019-09-30 Thread miss-islington


miss-islington  added the comment:


New changeset cf57cabef82c4689ce9796bb1fcdb125fa05efcb by Miss Islington (bot) 
(Maxwell A McKinnon) in branch 'master':
bpo-32689: Updates shutil.move to allow for Path objects to be used as source 
arg (GH-15326)
https://github.com/python/cpython/commit/cf57cabef82c4689ce9796bb1fcdb125fa05efcb


--
nosy: +miss-islington

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue32689] shutil.move raises AttributeError if first argument is a pathlib.Path object and destination is a directory

2019-09-05 Thread Maxwell McKinnon


Change by Maxwell McKinnon :


--
nosy: +bodom

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue32689] shutil.move raises AttributeError if first argument is a pathlib.Path object and destination is a directory

2019-08-18 Thread Roundup Robot


Change by Roundup Robot :


--
pull_requests: +15044
pull_request: https://github.com/python/cpython/pull/15326

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue32689] shutil.move raises AttributeError if first argument is a pathlib.Path object and destination is a directory

2019-01-14 Thread Mickaël Schoentgen

Change by Mickaël Schoentgen :


--
versions: +Python 3.7, Python 3.8

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue32689] shutil.move raises AttributeError if first argument is a pathlib.Path object and destination is a directory

2018-01-31 Thread Emily Morehouse

Emily Morehouse  added the comment:

Ah, you're right. That was a typo when I was redacting my full path. The path 
object remains unchanged even though the directory has moved. 

Should have been:

>>> import os, pathlib, shutil
>>> os.mkdir('test1')
>>> os.mkdir('test2')
>>> path = pathlib.Path('test1')
>>> path.absolute()
PosixPath('/Users/e/Development/OSS/cpython/test1')
>>> shutil.move(path, 'test2')
'test2/test1'
>>> path.absolute()
PosixPath('/Users/e/Development/OSS/cpython/test1')

test1 is now actually at '/Users/e/Development/OSS/cpython/test2/test1'

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue32689] shutil.move raises AttributeError if first argument is a pathlib.Path object and destination is a directory

2018-01-31 Thread Chih-Hsuan Yen

Change by Chih-Hsuan Yen :


--
nosy: +yan12125

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue32689] shutil.move raises AttributeError if first argument is a pathlib.Path object and destination is a directory

2018-01-28 Thread Craig Holmquist

Craig Holmquist  added the comment:

In my test, the second call to path.absolute() is just returning the same 
result as the first call, which is what I would expect (as you say, the path 
object doesn't update automatically).

However, your output shows it returning 
'/Users/e/Development/OSS/cpython/test2' instead of the (now broken) path from 
the first call.  Maybe I'm missing something?

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue32689] shutil.move raises AttributeError if first argument is a pathlib.Path object and destination is a directory

2018-01-28 Thread Emily Morehouse

Emily Morehouse  added the comment:

Thanks for the bug report!

shutil.move should certainly accept a path object, as shutil.copy does, though 
it should be noted that in your example, 'path' could become out of date as it 
does not refresh the path information. For example, with shutil.move fixed:

>>> import os, pathlib, shutil
>>> os.mkdir('test1')
>>>
>>> os.mkdir('test2')
>>> path = pathlib.Path('test1')
>>> path.absolute()
PosixPath('/Users/e/Development/OSS/cpython/test1')
>>> shutil.move(path, 'test2')
'test2/test1'
>>> path.absolute()
PosixPath('/Users/e/Development/OSS/cpython/test2')

test1 is now actually at '/Users/e/Development/OSS/cpython/test2/test1'


For the fix:
I did a bit of digging and the error comes from a helper method _basename that 
uses rstrip to remove a trailing separator, hence the error as rstrip doesn't 
exist for a path object (and I don't think it makes sense that it should, 
though that was one solution). Removing the trailing separator is, however, 
very important in determining the full destination path.

After trying a few different approaches, I think the simplest way is to cast 
the src to a string before finding its appropriate basename. I also added some 
comments to make it more clear why _basename is used over os.path.basename to 
hopefully save someone else time in the future.

A more robust option would be to explicitly handle Path objects or to handle 
exceptions for any dst that cannot be cast to a string. However, the current 
patch fixes the issue without introducing new problems.

--
nosy: +emilyemorehouse

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue32689] shutil.move raises AttributeError if first argument is a pathlib.Path object and destination is a directory

2018-01-28 Thread Emily Morehouse

Change by Emily Morehouse :


--
keywords: +patch
pull_requests: +5228
stage:  -> patch review

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue32689] shutil.move raises AttributeError if first argument is a pathlib.Path object and destination is a directory

2018-01-27 Thread Craig Holmquist

New submission from Craig Holmquist :

>>> import os, pathlib, shutil
>>> os.mkdir('test1')
>>> os.mkdir('test2')
>>> path = pathlib.Path('test1')
>>> shutil.move(path, 'test2')
Traceback (most recent call last):
  File "", line 1, in 
  File "/usr/lib/python3.6/shutil.py", line 540, in move
real_dst = os.path.join(dst, _basename(src))
  File "/usr/lib/python3.6/shutil.py", line 504, in _basename
return os.path.basename(path.rstrip(sep))
AttributeError: 'PosixPath' object has no attribute 'rstrip'

--
components: Library (Lib)
messages: 310900
nosy: craigh
priority: normal
severity: normal
status: open
title: shutil.move raises AttributeError if first argument is a pathlib.Path 
object and destination is a directory
type: behavior
versions: Python 3.6

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com