@@ -6,11 +6,12 @@ pub(crate) use _hashlib::make_module;
66pub mod _hashlib {
77 use crate :: common:: lock:: PyRwLock ;
88 use crate :: vm:: {
9- PyObjectRef , PyPayload , PyResult , VirtualMachine ,
9+ Py , PyObjectRef , PyPayload , PyResult , VirtualMachine ,
1010 builtins:: { PyBytes , PyStrRef , PyTypeRef } ,
1111 convert:: ToPyObject ,
1212 function:: { ArgBytesLike , ArgStrOrBytesLike , FuncArgs , OptionalArg } ,
1313 protocol:: PyBuffer ,
14+ types:: Representable ,
1415 } ;
1516 use blake2:: { Blake2b512 , Blake2s256 } ;
1617 use digest:: { DynDigest , core_api:: BlockSizeUser } ;
@@ -96,7 +97,7 @@ pub mod _hashlib {
9697 }
9798 }
9899
99- #[ pyclass]
100+ #[ pyclass( with ( Representable ) ) ]
100101 impl PyHasher {
101102 fn new ( name : & str , d : HashWrapper ) -> Self {
102103 PyHasher {
@@ -146,6 +147,15 @@ pub mod _hashlib {
146147 }
147148 }
148149
150+ impl Representable for PyHasher {
151+ fn repr_str ( zelf : & Py < Self > , _vm : & VirtualMachine ) -> PyResult < String > {
152+ Ok ( format ! (
153+ "<{} _hashlib.HASH object @ {:#x}>" ,
154+ zelf. name, zelf as * const _ as usize
155+ ) )
156+ }
157+ }
158+
149159 #[ pyattr]
150160 #[ pyclass( module = "_hashlib" , name = "HASHXOF" ) ]
151161 #[ derive( PyPayload ) ]
0 commit comments