You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by to...@apache.org on 2013/01/27 01:33:34 UTC
svn commit: r1439005 - in /libcloud/trunk/libcloud: storage/drivers/local.py
utils/py3.py
Author: tomaz
Date: Sun Jan 27 00:33:34 2013
New Revision: 1439005
URL: http://svn.apache.org/viewvc?rev=1439005&view=rev
Log:
Modify local_storage storage driver to use custom relpath function when using
Python 2.5.
Modified:
libcloud/trunk/libcloud/storage/drivers/local.py
libcloud/trunk/libcloud/utils/py3.py
Modified: libcloud/trunk/libcloud/storage/drivers/local.py
URL: http://svn.apache.org/viewvc/libcloud/trunk/libcloud/storage/drivers/local.py?rev=1439005&r1=1439004&r2=1439005&view=diff
==============================================================================
--- libcloud/trunk/libcloud/storage/drivers/local.py (original)
+++ libcloud/trunk/libcloud/storage/drivers/local.py Sun Jan 27 00:33:34 2013
@@ -31,6 +31,7 @@ except ImportError:
'using pip: pip install lockfile')
from libcloud.utils.files import read_in_chunks
+from libcloud.utils.py import relpath
from libcloud.common.base import Connection
from libcloud.storage.base import Object, Container, StorageDriver
from libcloud.common.types import LibcloudError
@@ -215,7 +216,7 @@ class LocalStorageDriver(StorageDriver):
for name in files:
full_path = os.path.join(folder, name)
- object_name = os.path.relpath(full_path, start=cpath)
+ object_name = relpath(full_path, start=cpath)
yield self._make_object(container, object_name)
def iterate_container_objects(self, container):
Modified: libcloud/trunk/libcloud/utils/py3.py
URL: http://svn.apache.org/viewvc/libcloud/trunk/libcloud/utils/py3.py?rev=1439005&r1=1439004&r2=1439005&view=diff
==============================================================================
--- libcloud/trunk/libcloud/utils/py3.py (original)
+++ libcloud/trunk/libcloud/utils/py3.py Sun Jan 27 00:33:34 2013
@@ -39,6 +39,7 @@ if sys.version_info >= (3, 0):
from urllib.parse import quote as urlquote
from urllib.parse import unquote as urlunquote
from urllib.parse import urlencode as urlencode
+ from os.path import relpath
basestring = str
@@ -74,6 +75,7 @@ else:
from urllib import quote as urlquote
from urllib import unquote as urlunquote
from urllib import urlencode as urlencode
+ from os.path import relpath
basestring = unicode = str
@@ -92,3 +94,19 @@ else:
if sys.version_info >= (2, 5) and sys.version_info <= (2, 6):
PY25 = True
+ import posixpath
+
+ # Taken from http://jimmyg.org/work/code/barenecessities/index.html
+ # (MIT license)
+ def relpath(path, start=posixpath.curdir):
+ """Return a relative version of a path"""
+ if not path:
+ raise ValueError("no path specified")
+ start_list = posixpath.abspath(start).split(posixpath.sep)
+ path_list = posixpath.abspath(path).split(posixpath.sep)
+ # Work out how much of the filepath is shared by start and path.
+ i = len(posixpath.commonprefix([start_list, path_list]))
+ rel_list = [posixpath.pardir] * (len(start_list) - i) + path_list[i:]
+ if not rel_list:
+ return posixpath.curdir
+ return posixpath.join(*rel_list)