@@ -12,7 +12,6 @@ cfg_if::cfg_if! {
12
12
use crate :: {
13
13
builtins:: PyBaseExceptionRef ,
14
14
convert:: { IntoPyException , ToPyException , ToPyObject } ,
15
- types:: Representable ,
16
15
PyObjectRef , PyResult , TryFromObject , VirtualMachine ,
17
16
} ;
18
17
pub use _io:: io_open as open;
@@ -1526,6 +1525,24 @@ mod _io {
1526
1525
vm. call_method ( self . lock ( vm) ?. check_init ( vm) ?, "isatty" , ( ) )
1527
1526
}
1528
1527
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
+
1529
1546
fn close_strict ( & self , vm : & VirtualMachine ) -> PyResult {
1530
1547
let mut data = self . lock ( vm) ?;
1531
1548
let raw = data. check_init ( vm) ?;
@@ -1672,28 +1689,13 @@ mod _io {
1672
1689
}
1673
1690
1674
1691
#[ pyclass(
1675
- with( DefaultConstructor , BufferedMixin , BufferedReadable , Representable ) ,
1692
+ with( DefaultConstructor , BufferedMixin , BufferedReadable ) ,
1676
1693
flags( BASETYPE , HAS_DICT )
1677
1694
) ]
1678
1695
impl BufferedReader { }
1679
1696
1680
1697
impl DefaultConstructor for BufferedReader { }
1681
1698
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
-
1697
1699
#[ pyclass]
1698
1700
trait BufferedWritable : PyPayload {
1699
1701
type Writer : BufferedMixin ;
@@ -1737,28 +1739,13 @@ mod _io {
1737
1739
}
1738
1740
1739
1741
#[ pyclass(
1740
- with( DefaultConstructor , BufferedMixin , BufferedWritable , Representable ) ,
1742
+ with( DefaultConstructor , BufferedMixin , BufferedWritable ) ,
1741
1743
flags( BASETYPE , HAS_DICT )
1742
1744
) ]
1743
1745
impl BufferedWriter { }
1744
1746
1745
1747
impl DefaultConstructor for BufferedWriter { }
1746
1748
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
-
1762
1749
#[ pyattr]
1763
1750
#[ pyclass( name = "BufferedRandom" , base = "_BufferedIOBase" ) ]
1764
1751
#[ derive( Debug , Default , PyPayload ) ]
@@ -1788,34 +1775,13 @@ mod _io {
1788
1775
}
1789
1776
1790
1777
#[ pyclass(
1791
- with(
1792
- DefaultConstructor ,
1793
- BufferedMixin ,
1794
- BufferedReadable ,
1795
- BufferedWritable ,
1796
- Representable
1797
- ) ,
1778
+ with( DefaultConstructor , BufferedMixin , BufferedReadable , BufferedWritable ) ,
1798
1779
flags( BASETYPE , HAS_DICT )
1799
1780
) ]
1800
1781
impl BufferedRandom { }
1801
1782
1802
1783
impl DefaultConstructor for BufferedRandom { }
1803
1784
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
-
1819
1785
#[ pyattr]
1820
1786
#[ pyclass( name = "BufferedRWPair" , base = "_BufferedIOBase" ) ]
1821
1787
#[ derive( Debug , Default , PyPayload ) ]
0 commit comments