@@ -12,7 +12,6 @@ cfg_if::cfg_if! {
1212use crate :: {
1313 builtins:: PyBaseExceptionRef ,
1414 convert:: { IntoPyException , ToPyException , ToPyObject } ,
15- types:: Representable ,
1615 PyObjectRef , PyResult , TryFromObject , VirtualMachine ,
1716} ;
1817pub use _io:: io_open as open;
@@ -1526,6 +1525,24 @@ mod _io {
15261525 vm. call_method ( self . lock ( vm) ?. check_init ( vm) ?, "isatty" , ( ) )
15271526 }
15281527
1528+ #[ pyslot]
1529+ fn slot_repr ( zelf : & PyObject , vm : & VirtualMachine ) -> PyResult < PyStrRef > {
1530+ let name_repr = repr_fileobj_name ( zelf, vm) ?;
1531+ let cls = zelf. class ( ) ;
1532+ let slot_name = cls. slot_name ( ) ;
1533+ let repr = if let Some ( name_repr) = name_repr {
1534+ format ! ( "<{slot_name} name={name_repr}>" )
1535+ } else {
1536+ format ! ( "<{slot_name}>" )
1537+ } ;
1538+ Ok ( vm. ctx . new_str ( repr) )
1539+ }
1540+
1541+ #[ pymethod( magic) ]
1542+ fn repr ( zelf : PyObjectRef , vm : & VirtualMachine ) -> PyResult < PyStrRef > {
1543+ Self :: slot_repr ( & zelf, vm)
1544+ }
1545+
15291546 fn close_strict ( & self , vm : & VirtualMachine ) -> PyResult {
15301547 let mut data = self . lock ( vm) ?;
15311548 let raw = data. check_init ( vm) ?;
@@ -1672,28 +1689,13 @@ mod _io {
16721689 }
16731690
16741691 #[ pyclass(
1675- with( DefaultConstructor , BufferedMixin , BufferedReadable , Representable ) ,
1692+ with( DefaultConstructor , BufferedMixin , BufferedReadable ) ,
16761693 flags( BASETYPE , HAS_DICT )
16771694 ) ]
16781695 impl BufferedReader { }
16791696
16801697 impl DefaultConstructor for BufferedReader { }
16811698
1682- impl Representable for BufferedReader {
1683- #[ inline]
1684- fn repr_str ( zelf : & Py < Self > , vm : & VirtualMachine ) -> PyResult < String > {
1685- let name_repr = repr_fileobj_name ( zelf. as_object ( ) , vm) ?;
1686- let cls = zelf. class ( ) ;
1687- let slot_name = cls. slot_name ( ) ;
1688- let repr = if let Some ( name_repr) = name_repr {
1689- format ! ( "<{slot_name} name={name_repr}>" )
1690- } else {
1691- format ! ( "<{slot_name}>" )
1692- } ;
1693- Ok ( repr)
1694- }
1695- }
1696-
16971699 #[ pyclass]
16981700 trait BufferedWritable : PyPayload {
16991701 type Writer : BufferedMixin ;
@@ -1737,28 +1739,13 @@ mod _io {
17371739 }
17381740
17391741 #[ pyclass(
1740- with( DefaultConstructor , BufferedMixin , BufferedWritable , Representable ) ,
1742+ with( DefaultConstructor , BufferedMixin , BufferedWritable ) ,
17411743 flags( BASETYPE , HAS_DICT )
17421744 ) ]
17431745 impl BufferedWriter { }
17441746
17451747 impl DefaultConstructor for BufferedWriter { }
17461748
1747- impl Representable for BufferedWriter {
1748- #[ inline]
1749- fn repr_str ( zelf : & Py < Self > , vm : & VirtualMachine ) -> PyResult < String > {
1750- let name_repr = repr_fileobj_name ( zelf. as_object ( ) , vm) ?;
1751- let cls = zelf. class ( ) ;
1752- let slot_name = cls. slot_name ( ) ;
1753- let repr = if let Some ( name_repr) = name_repr {
1754- format ! ( "<{slot_name} name={name_repr}>" )
1755- } else {
1756- format ! ( "<{slot_name}>" )
1757- } ;
1758- Ok ( repr)
1759- }
1760- }
1761-
17621749 #[ pyattr]
17631750 #[ pyclass( name = "BufferedRandom" , base = "_BufferedIOBase" ) ]
17641751 #[ derive( Debug , Default , PyPayload ) ]
@@ -1788,34 +1775,13 @@ mod _io {
17881775 }
17891776
17901777 #[ pyclass(
1791- with(
1792- DefaultConstructor ,
1793- BufferedMixin ,
1794- BufferedReadable ,
1795- BufferedWritable ,
1796- Representable
1797- ) ,
1778+ with( DefaultConstructor , BufferedMixin , BufferedReadable , BufferedWritable ) ,
17981779 flags( BASETYPE , HAS_DICT )
17991780 ) ]
18001781 impl BufferedRandom { }
18011782
18021783 impl DefaultConstructor for BufferedRandom { }
18031784
1804- impl Representable for BufferedRandom {
1805- #[ inline]
1806- fn repr_str ( zelf : & Py < Self > , vm : & VirtualMachine ) -> PyResult < String > {
1807- let name_repr = repr_fileobj_name ( zelf. as_object ( ) , vm) ?;
1808- let cls = zelf. class ( ) ;
1809- let slot_name = cls. slot_name ( ) ;
1810- let repr = if let Some ( name_repr) = name_repr {
1811- format ! ( "<{slot_name} name={name_repr}>" )
1812- } else {
1813- format ! ( "<{slot_name}>" )
1814- } ;
1815- Ok ( repr)
1816- }
1817- }
1818-
18191785 #[ pyattr]
18201786 #[ pyclass( name = "BufferedRWPair" , base = "_BufferedIOBase" ) ]
18211787 #[ derive( Debug , Default , PyPayload ) ]
0 commit comments