[pypy-svn] r49409 - in pypy/branch/pypy-interp-file: interpreter module/_file
arigo at codespeak.net
arigo at codespeak.net
Wed Dec 5 20:05:20 CET 2007
Author: arigo
Date: Wed Dec 5 20:05:19 2007
New Revision: 49409
Modified:
pypy/branch/pypy-interp-file/interpreter/typedef.py
pypy/branch/pypy-interp-file/module/_file/app_file.py
pypy/branch/pypy-interp-file/module/_file/interp_file.py
Log:
file.__repr__, file.mode, file.name.
Modified: pypy/branch/pypy-interp-file/interpreter/typedef.py
==============================================================================
--- pypy/branch/pypy-interp-file/interpreter/typedef.py (original)
+++ pypy/branch/pypy-interp-file/interpreter/typedef.py Wed Dec 5 20:05:19 2007
@@ -380,13 +380,13 @@
def descr_get_objclass(space, property):
return property.objclass_getter(space)
-def interp_attrproperty(name, cls):
+def interp_attrproperty(name, cls, doc=None):
"NOT_RPYTHON: initialization-time only"
def fget(space, obj):
return space.wrap(getattr(obj, name))
- return GetSetProperty(fget, cls=cls)
+ return GetSetProperty(fget, cls=cls, doc=doc)
-def interp_attrproperty_w(name, cls):
+def interp_attrproperty_w(name, cls, doc=None):
"NOT_RPYTHON: initialization-time only"
def fget(space, obj):
w_value = getattr(obj, name)
@@ -395,7 +395,7 @@
else:
return w_value
- return GetSetProperty(fget, cls=cls)
+ return GetSetProperty(fget, cls=cls, doc=doc)
GetSetProperty.typedef = TypeDef(
"getset_descriptor",
Modified: pypy/branch/pypy-interp-file/module/_file/app_file.py
==============================================================================
--- pypy/branch/pypy-interp-file/module/_file/app_file.py (original)
+++ pypy/branch/pypy-interp-file/module/_file/app_file.py Wed Dec 5 20:05:19 2007
@@ -82,7 +82,7 @@
mode = property(lambda self: self._mode,
doc = "file mode ('r', 'U', 'w', 'a', "
"possibly with 'b' or '+' added)")
- name = property(lambda self: self._name, doc = "file name")
+ #name = property(lambda self: self._name, doc = "file name")
closed = property(lambda self: self._closed,
doc = "True if the file is closed")
#newlines = property(lambda self: self.getnewlines(),
@@ -217,15 +217,15 @@
raise ValueError('I/O operation on closed file')
self.stream.seek(offset, whence)
- def __iter__(self):
+ #def __iter__(self):
"""Iterating over files, as in 'for line in f:', returns each line of
the file one by one."""
if self._closed:
raise ValueError('I/O operation on closed file')
return self
- xreadlines = __iter__
+ #xreadlines = __iter__
- def next(self):
+ #def next(self):
"""next() -> the next line in the file, or raise StopIteration"""
if self._closed:
raise ValueError('I/O operation on closed file')
@@ -303,7 +303,7 @@
import os
return os.isatty(self.fd)
- def __repr__(self):
+ #def __repr__(self):
return "<%s file '%s', mode %r at 0x%x>" % (
self._closed and 'closed' or 'open',
self._name,
Modified: pypy/branch/pypy-interp-file/module/_file/interp_file.py
==============================================================================
--- pypy/branch/pypy-interp-file/module/_file/interp_file.py (original)
+++ pypy/branch/pypy-interp-file/module/_file/interp_file.py Wed Dec 5 20:05:19 2007
@@ -5,6 +5,7 @@
from pypy.interpreter.error import OperationError
from pypy.interpreter.gateway import ObjSpace, W_Root, Arguments
from pypy.interpreter.typedef import TypeDef, GetSetProperty
+from pypy.interpreter.typedef import interp_attrproperty
from pypy.interpreter.gateway import interp2app
@@ -297,6 +298,15 @@
For backward compatibility. File objects now include the performance
optimizations previously implemented in the xreadlines module.""")
+ def file__repr__(self):
+ if self.stream is None:
+ head = "closed"
+ else:
+ head = "open"
+ info = "%s file '%s', mode '%s'" % (head, self.name, self.mode)
+ return self.getrepr(self.space, info)
+ file__repr__.unwrap_spec = ['self']
+
# ____________________________________________________________
@@ -355,8 +365,11 @@
""",
__new__ = interp2app(descr_file__new__),
fdopen = interp2app(descr_file_fdopen, as_classmethod=True),
+ name = interp_attrproperty('name', cls=W_File),
+ mode = interp_attrproperty('mode', cls=W_File),
newlines = GetSetProperty(descr_file_newlines, cls=W_File,
doc="end-of-line convention used in this file"),
+ __repr__ = interp2app(W_File.file__repr__),
**dict([(name, interp2app(getattr(W_File, 'file_' + name)))
for name in W_File._exposed_method_names])
)
More information about the Pypy-commit
mailing list