Author: Ronan Lamy <[email protected]>
Branch: follow_symlinks
Changeset: r83745:a74d298f64b7
Date: 2016-04-18 17:08 +0100
http://bitbucket.org/pypy/pypy/changeset/a74d298f64b7/
Log: DRY: path unwrappers
diff --git a/pypy/module/posix/interp_posix.py
b/pypy/module/posix/interp_posix.py
--- a/pypy/module/posix/interp_posix.py
+++ b/pypy/module/posix/interp_posix.py
@@ -132,38 +132,33 @@
self.as_unicode = unicode
self.w_path = w_path
[email protected](2)
+def _unwrap_path(space, w_value, allow_fd=True):
+ if space.is_none(w_value):
+ raise oefmt(space.w_TypeError,
+ "can't specify None for path argument")
+ if _WIN32:
+ try:
+ path_u = space.unicode_w(w_value)
+ return Path(-1, None, path_u, w_value)
+ except OperationError:
+ pass
+ try:
+ path_b = space.fsencode_w(w_value)
+ return Path(-1, path_b, None, w_value)
+ except OperationError:
+ if allow_fd:
+ fd = unwrap_fd(space, w_value, "string, bytes or integer")
+ return Path(fd, None, None, w_value)
+ raise oefmt(space.w_TypeError, "illegal type for path parameter")
+
class _PathOrFd(Unwrapper):
def unwrap(self, space, w_value):
- if space.is_none(w_value):
- raise oefmt(space.w_TypeError,
- "can't specify None for path argument")
- if _WIN32:
- try:
- path_u = space.unicode_w(w_value)
- return Path(-1, None, path_u, w_value)
- except OperationError:
- pass
- try:
- path_b = space.fsencode_w(w_value)
- return Path(-1, path_b, None, w_value)
- except OperationError:
- pass
- fd = unwrap_fd(space, w_value, "string, bytes or integer")
- return Path(fd, None, None, w_value)
+ return _unwrap_path(space, w_value, allow_fd=True)
class _JustPath(Unwrapper):
def unwrap(self, space, w_value):
- if _WIN32:
- try:
- path_u = space.unicode_w(w_value)
- return Path(-1, None, path_u, w_value)
- except OperationError:
- pass
- try:
- path_b = space.fsencode_w(w_value)
- return Path(-1, path_b, None, w_value)
- except OperationError:
- raise oefmt(space.w_TypeError, "illegal type for path parameter")
+ return _unwrap_path(space, w_value, allow_fd=False)
def path_or_fd(allow_fd=True):
return _PathOrFd if allow_fd else _JustPath
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit