Skip to content

Commit 40d9194

Browse files
Masorubka1youknowone
authored andcommitted
codestyle fix
1 parent 6abc0c3 commit 40d9194

File tree

9 files changed

+92
-117
lines changed

9 files changed

+92
-117
lines changed

Lib/test/test_enum.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2889,9 +2889,7 @@ class Color(StrMixin, AllMixin, IntFlag):
28892889
self.assertEqual(Color.ALL.value, 7)
28902890
self.assertEqual(str(Color.BLUE), 'blue')
28912891

2892-
# TODO: RUSTPYTHON
2893-
@unittest.expectedFailure
2894-
@unittest.skipIf(sys.platform == "win32", "TODO: RUSTPYTHON, inconsistent test result on Windows due to threading")
2892+
@unittest.skipIf(sys.platform == "win32" or sys.platform.startswith("linux"), "TODO: RUSTPYTHON, inconsistent test result on Windows due to threading")
28952893
@threading_helper.reap_threads
28962894
def test_unique_composite(self):
28972895
# override __eq__ to be identity only

Lib/test/test_secrets.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@ def test_equal(self):
2323
self.assertTrue(secrets.compare_digest(a, b))
2424
self.assertTrue(secrets.compare_digest(a.encode('utf-8'), b.encode('utf-8')))
2525

26-
# TODO: RUSTPYTHON Fix Leak
27-
@unittest.expectedFailure
2826
def test_unequal(self):
2927
# Test compare_digest functionality with unequal (byte/text) strings.
3028
self.assertFalse(secrets.compare_digest("abc", "abcd"))
@@ -46,7 +44,6 @@ def test_bad_types(self):
4644

4745
def test_bool(self):
4846
# Test that compare_digest returns a bool.
49-
print(secrets.compare_digest("abc", "abc"))
5047
self.assertIsInstance(secrets.compare_digest("abc", "abc"), bool)
5148
self.assertIsInstance(secrets.compare_digest("abc", "xyz"), bool)
5249

stdlib/src/blake2.rs

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,16 @@ pub(crate) use _blake2::make_module;
44

55
#[pymodule]
66
mod _blake2 {
7-
use crate::hashlib::_hashlib::{BlakeHashArgs, HashWrapper, PyHasher};
8-
use crate::vm::{PyObjectRef, PyPayload, PyResult, VirtualMachine};
9-
use blake2::{Blake2b512, Blake2s256};
7+
use crate::hashlib::_hashlib::{local_blake2b, local_blake2s, BlakeHashArgs};
8+
use crate::vm::{PyPayload, PyResult, VirtualMachine};
109

11-
#[pyfunction(name = "blake2b")]
12-
fn blake2b(args: BlakeHashArgs, vm: &VirtualMachine) -> PyResult<PyObjectRef> {
13-
Ok(PyHasher::new("blake2b", HashWrapper::new::<Blake2b512>(args.data)).into_pyobject(vm))
10+
#[pyfunction]
11+
fn blake2b(args: BlakeHashArgs, vm: &VirtualMachine) -> PyResult {
12+
Ok(local_blake2b(args).into_pyobject(vm))
1413
}
1514

16-
#[pyfunction(name = "blake2s")]
17-
fn blake2s(args: BlakeHashArgs, vm: &VirtualMachine) -> PyResult<PyObjectRef> {
18-
Ok(PyHasher::new("blake2s", HashWrapper::new::<Blake2s256>(args.data)).into_pyobject(vm))
15+
#[pyfunction]
16+
fn blake2s(args: BlakeHashArgs, vm: &VirtualMachine) -> PyResult {
17+
Ok(local_blake2s(args).into_pyobject(vm))
1918
}
2019
}

stdlib/src/hashlib.rs

Lines changed: 43 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ pub mod _hashlib {
88
use crate::vm::{
99
builtins::{PyBytes, PyStrRef, PyTypeRef},
1010
convert::ToPyObject,
11-
function::{ArgBytesLike, FuncArgs, OptionalArg},
11+
function::{ArgBytesLike, ArgStrOrBytesLike, FuncArgs, OptionalArg},
1212
protocol::PyBuffer,
13-
AsObject, PyObjectRef, PyPayload, PyResult, VirtualMachine,
13+
PyObjectRef, PyPayload, PyResult, VirtualMachine,
1414
};
1515
use blake2::{Blake2b512, Blake2s256};
1616
use digest::{core_api::BlockSizeUser, DynDigest};
@@ -23,7 +23,7 @@ pub mod _hashlib {
2323

2424
#[derive(FromArgs, Debug)]
2525
#[allow(unused)]
26-
pub struct NewHashArgs {
26+
struct NewHashArgs {
2727
#[pyarg(positional)]
2828
name: PyStrRef,
2929
#[pyarg(any, optional)]
@@ -98,7 +98,7 @@ pub mod _hashlib {
9898

9999
#[pyclass]
100100
impl PyHasher {
101-
pub fn new(name: &str, d: HashWrapper) -> Self {
101+
fn new(name: &str, d: HashWrapper) -> Self {
102102
PyHasher {
103103
name: name.to_owned(),
104104
ctx: PyRwLock::new(d),
@@ -162,7 +162,7 @@ pub mod _hashlib {
162162

163163
#[pyclass]
164164
impl PyHasherXof {
165-
pub fn new(name: &str, d: HashXofWrapper) -> Self {
165+
fn new(name: &str, d: HashXofWrapper) -> Self {
166166
PyHasherXof {
167167
name: name.to_owned(),
168168
ctx: PyRwLock::new(d),
@@ -213,127 +213,115 @@ pub mod _hashlib {
213213
#[pyfunction(name = "new")]
214214
fn hashlib_new(args: NewHashArgs, vm: &VirtualMachine) -> PyResult<PyObjectRef> {
215215
match args.name.as_str().to_lowercase().as_str() {
216-
"md5" => Ok(md5(args.into()).into_pyobject(vm)),
217-
"sha1" => Ok(sha1(args.into()).into_pyobject(vm)),
218-
"sha224" => Ok(sha224(args.into()).into_pyobject(vm)),
219-
"sha256" => Ok(sha256(args.into()).into_pyobject(vm)),
220-
"sha384" => Ok(sha384(args.into()).into_pyobject(vm)),
221-
"sha512" => Ok(sha512(args.into()).into_pyobject(vm)),
222-
"sha3_224" => Ok(sha3_224(args.into()).into_pyobject(vm)),
223-
"sha3_256" => Ok(sha3_256(args.into()).into_pyobject(vm)),
224-
"sha3_384" => Ok(sha3_384(args.into()).into_pyobject(vm)),
225-
"sha3_512" => Ok(sha3_512(args.into()).into_pyobject(vm)),
226-
"shake_128" => Ok(shake_128(args.into()).into_pyobject(vm)),
227-
"shake_256" => Ok(shake_256(args.into()).into_pyobject(vm)),
228-
"blake2b" => Ok(blake2b(args.into()).into_pyobject(vm)),
229-
"blake2s" => Ok(blake2s(args.into()).into_pyobject(vm)),
216+
"md5" => Ok(local_md5(args.into()).into_pyobject(vm)),
217+
"sha1" => Ok(local_sha1(args.into()).into_pyobject(vm)),
218+
"sha224" => Ok(local_sha224(args.into()).into_pyobject(vm)),
219+
"sha256" => Ok(local_sha256(args.into()).into_pyobject(vm)),
220+
"sha384" => Ok(local_sha384(args.into()).into_pyobject(vm)),
221+
"sha512" => Ok(local_sha512(args.into()).into_pyobject(vm)),
222+
"sha3_224" => Ok(local_sha3_224(args.into()).into_pyobject(vm)),
223+
"sha3_256" => Ok(local_sha3_256(args.into()).into_pyobject(vm)),
224+
"sha3_384" => Ok(local_sha3_384(args.into()).into_pyobject(vm)),
225+
"sha3_512" => Ok(local_sha3_512(args.into()).into_pyobject(vm)),
226+
"shake_128" => Ok(local_shake_128(args.into()).into_pyobject(vm)),
227+
"shake_256" => Ok(local_shake_256(args.into()).into_pyobject(vm)),
228+
"blake2b" => Ok(local_blake2b(args.into()).into_pyobject(vm)),
229+
"blake2s" => Ok(local_blake2s(args.into()).into_pyobject(vm)),
230230
other => Err(vm.new_value_error(format!("Unknown hashing algorithm: {other}"))),
231231
}
232232
}
233233

234234
#[pyfunction(name = "openssl_md5")]
235-
fn md5(args: HashArgs) -> PyHasher {
235+
pub fn local_md5(args: HashArgs) -> PyHasher {
236236
PyHasher::new("md5", HashWrapper::new::<Md5>(args.string))
237237
}
238238

239239
#[pyfunction(name = "openssl_sha1")]
240-
fn sha1(args: HashArgs) -> PyHasher {
240+
pub fn local_sha1(args: HashArgs) -> PyHasher {
241241
PyHasher::new("sha1", HashWrapper::new::<Sha1>(args.string))
242242
}
243243

244244
#[pyfunction(name = "openssl_sha224")]
245-
fn sha224(args: HashArgs) -> PyHasher {
245+
pub fn local_sha224(args: HashArgs) -> PyHasher {
246246
PyHasher::new("sha224", HashWrapper::new::<Sha224>(args.string))
247247
}
248248

249249
#[pyfunction(name = "openssl_sha256")]
250-
fn sha256(args: HashArgs) -> PyHasher {
250+
pub fn local_sha256(args: HashArgs) -> PyHasher {
251251
PyHasher::new("sha256", HashWrapper::new::<Sha256>(args.string))
252252
}
253253

254254
#[pyfunction(name = "openssl_sha384")]
255-
fn sha384(args: HashArgs) -> PyHasher {
255+
pub fn local_sha384(args: HashArgs) -> PyHasher {
256256
PyHasher::new("sha384", HashWrapper::new::<Sha384>(args.string))
257257
}
258258

259259
#[pyfunction(name = "openssl_sha512")]
260-
fn sha512(args: HashArgs) -> PyHasher {
260+
pub fn local_sha512(args: HashArgs) -> PyHasher {
261261
PyHasher::new("sha512", HashWrapper::new::<Sha512>(args.string))
262262
}
263263

264264
#[pyfunction(name = "openssl_sha3_224")]
265-
fn sha3_224(args: HashArgs) -> PyHasher {
265+
pub fn local_sha3_224(args: HashArgs) -> PyHasher {
266266
PyHasher::new("sha3_224", HashWrapper::new::<Sha3_224>(args.string))
267267
}
268268

269269
#[pyfunction(name = "openssl_sha3_256")]
270-
fn sha3_256(args: HashArgs) -> PyHasher {
270+
pub fn local_sha3_256(args: HashArgs) -> PyHasher {
271271
PyHasher::new("sha3_256", HashWrapper::new::<Sha3_256>(args.string))
272272
}
273273

274274
#[pyfunction(name = "openssl_sha3_384")]
275-
fn sha3_384(args: HashArgs) -> PyHasher {
275+
pub fn local_sha3_384(args: HashArgs) -> PyHasher {
276276
PyHasher::new("sha3_384", HashWrapper::new::<Sha3_384>(args.string))
277277
}
278278

279279
#[pyfunction(name = "openssl_sha3_512")]
280-
fn sha3_512(args: HashArgs) -> PyHasher {
280+
pub fn local_sha3_512(args: HashArgs) -> PyHasher {
281281
PyHasher::new("sha3_512", HashWrapper::new::<Sha3_512>(args.string))
282282
}
283283

284284
#[pyfunction(name = "openssl_shake_128")]
285-
fn shake_128(args: HashArgs) -> PyHasherXof {
285+
pub fn local_shake_128(args: HashArgs) -> PyHasherXof {
286286
PyHasherXof::new("shake_128", HashXofWrapper::new_shake_128(args.string))
287287
}
288288

289289
#[pyfunction(name = "openssl_shake_256")]
290-
fn shake_256(args: HashArgs) -> PyHasherXof {
290+
pub fn local_shake_256(args: HashArgs) -> PyHasherXof {
291291
PyHasherXof::new("shake_256", HashXofWrapper::new_shake_256(args.string))
292292
}
293293

294294
#[pyfunction(name = "openssl_blake2b")]
295-
fn blake2b(args: BlakeHashArgs) -> PyHasher {
295+
pub fn local_blake2b(args: BlakeHashArgs) -> PyHasher {
296296
PyHasher::new("blake2b", HashWrapper::new::<Blake2b512>(args.data))
297297
}
298298

299299
#[pyfunction(name = "openssl_blake2s")]
300-
fn blake2s(args: BlakeHashArgs) -> PyHasher {
300+
pub fn local_blake2s(args: BlakeHashArgs) -> PyHasher {
301301
PyHasher::new("blake2s", HashWrapper::new::<Blake2s256>(args.data))
302302
}
303303

304304
#[pyfunction]
305305
fn compare_digest(
306-
a: PyObjectRef,
307-
b: PyObjectRef,
306+
a: ArgStrOrBytesLike,
307+
b: ArgStrOrBytesLike,
308308
vm: &VirtualMachine,
309309
) -> PyResult<PyObjectRef> {
310-
// Suported types:
311-
// PyStrRef
312-
// PyBytesRef
313310

314-
let _py_str = vm.ctx.types.str_type;
311+
fn is_str(arg: &ArgStrOrBytesLike) -> bool {
312+
matches!(arg, ArgStrOrBytesLike::Str(_))
313+
}
315314

316-
if a.class().is(_py_str) != b.class().is(_py_str) {
315+
if is_str(&a) != is_str(&b) {
317316
return Err(vm.new_type_error(format!(
318-
"different types in compare_digest {} and {} ",
319-
a.class().name(),
320-
b.class().name()
317+
"a bytes-like object is required, not '{}'",
318+
b.as_object().class().name()
321319
)));
322320
}
323321

324-
let a_hash = match a.class().is(_py_str) {
325-
true => a.try_to_value::<&str>(vm)?.as_bytes().to_vec(),
326-
_ => b.try_to_value::<PyBytes>(vm)?.as_bytes().to_vec(),
327-
};
328-
329-
let b_hash = match b.class().is(_py_str) {
330-
true => b.try_to_value::<&str>(vm)?.as_bytes().to_vec(),
331-
_ => b.try_to_value::<PyBytes>(vm)?.as_bytes().to_vec(),
332-
};
322+
let a_hash = a.borrow_bytes().to_vec();
323+
let b_hash = b.borrow_bytes().to_vec();
333324

334-
println!("\na: {:?}", a_hash);
335-
println!("b: {:?}", b_hash);
336-
println!("equal: {}", (a_hash == b_hash));
337325
Ok((a_hash == b_hash).to_pyobject(vm))
338326
}
339327

stdlib/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ pub fn get_module_inits() -> impl Iterator<Item = (Cow<'static, str>, StdlibInit
111111
"_sha1" => sha1::make_module,
112112
"_sha3" => sha3::make_module,
113113
"_sha256" => sha256::make_module,
114-
// "_sha512" => sha512::make_module, TODO: RUSPYTHON fix strange fail on vm
114+
// "_sha512" => sha512::make_module, // TODO: RUSPYTHON fix strange fail on vm: 'static type has not been initialized'
115115
"_md5" => md5::make_module,
116116
"_blake2" => blake2::make_module,
117117
"_json" => json::make_module,

stdlib/src/md5.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,11 @@ pub(crate) use _md5::make_module;
22

33
#[pymodule]
44
mod _md5 {
5-
use crate::hashlib::_hashlib::{HashArgs, HashWrapper, PyHasher};
6-
use crate::vm::{PyObjectRef, PyPayload, PyResult, VirtualMachine};
7-
use md5::Md5;
5+
use crate::hashlib::_hashlib::{local_md5, HashArgs};
6+
use crate::vm::{PyPayload, PyResult, VirtualMachine};
87

9-
#[pyfunction(name = "md5")]
10-
fn md5(args: HashArgs, vm: &VirtualMachine) -> PyResult<PyObjectRef> {
11-
Ok(PyHasher::new("md5", HashWrapper::new::<Md5>(args.string)).into_pyobject(vm))
8+
#[pyfunction]
9+
fn md5(args: HashArgs, vm: &VirtualMachine) -> PyResult {
10+
Ok(local_md5(args).into_pyobject(vm))
1211
}
1312
}

stdlib/src/sha1.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,11 @@ pub(crate) use _sha1::make_module;
22

33
#[pymodule]
44
mod _sha1 {
5-
use crate::vm::{PyObjectRef, PyPayload, PyResult, VirtualMachine};
6-
use sha1::Sha1;
5+
use crate::hashlib::_hashlib::{local_sha1, HashArgs};
6+
use crate::vm::{PyPayload, PyResult, VirtualMachine};
77

8-
use crate::hashlib::_hashlib::{HashArgs, HashWrapper, PyHasher};
9-
#[pyfunction(name = "sha1")]
10-
fn sha1(args: HashArgs, vm: &VirtualMachine) -> PyResult<PyObjectRef> {
11-
Ok(PyHasher::new("sha1", HashWrapper::new::<Sha1>(args.string)).into_pyobject(vm))
8+
#[pyfunction]
9+
fn sha1(args: HashArgs, vm: &VirtualMachine) -> PyResult {
10+
Ok(local_sha1(args).into_pyobject(vm))
1211
}
1312
}

stdlib/src/sha256.rs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,16 @@ pub(crate) use _sha256::make_module;
22

33
#[pymodule]
44
mod _sha256 {
5-
use crate::hashlib::_hashlib::{HashArgs, HashWrapper, PyHasher};
6-
use crate::vm::{PyObjectRef, PyPayload, PyResult, VirtualMachine};
7-
use sha2::{Sha224, Sha256};
5+
use crate::hashlib::_hashlib::{local_sha224, local_sha256, HashArgs};
6+
use crate::vm::{PyPayload, PyResult, VirtualMachine};
87

98
#[pyfunction]
10-
fn sha224(args: HashArgs, vm: &VirtualMachine) -> PyResult<PyObjectRef> {
11-
Ok(PyHasher::new("sha224", HashWrapper::new::<Sha224>(args.string)).into_pyobject(vm))
9+
fn sha224(args: HashArgs, vm: &VirtualMachine) -> PyResult {
10+
Ok(local_sha224(args).into_pyobject(vm))
1211
}
1312

1413
#[pyfunction]
15-
fn sha256(args: HashArgs, vm: &VirtualMachine) -> PyResult<PyObjectRef> {
16-
Ok(PyHasher::new("sha256", HashWrapper::new::<Sha256>(args.string)).into_pyobject(vm))
14+
fn sha256(args: HashArgs, vm: &VirtualMachine) -> PyResult {
15+
Ok(local_sha256(args).into_pyobject(vm))
1716
}
1817
}

stdlib/src/sha3.rs

Lines changed: 23 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,43 +2,39 @@ pub(crate) use _sha3::make_module;
22

33
#[pymodule]
44
mod _sha3 {
5-
use crate::hashlib::_hashlib::{HashArgs, HashWrapper, HashXofWrapper, PyHasher, PyHasherXof};
6-
use crate::vm::{PyObjectRef, PyPayload, PyResult, VirtualMachine};
7-
use sha3::{Sha3_224, Sha3_256, Sha3_384, Sha3_512};
5+
use crate::hashlib::_hashlib::{
6+
local_sha3_224, local_sha3_256, local_sha3_384, local_sha3_512, local_shake_128,
7+
local_shake_256, HashArgs,
8+
};
9+
use crate::vm::{PyPayload, PyResult, VirtualMachine};
810

9-
#[pyfunction(name = "sha3_224")]
10-
fn sha3_224(args: HashArgs, vm: &VirtualMachine) -> PyResult<PyObjectRef> {
11-
Ok(PyHasher::new("sha3_224", HashWrapper::new::<Sha3_224>(args.string)).into_pyobject(vm))
11+
#[pyfunction]
12+
fn sha3_224(args: HashArgs, vm: &VirtualMachine) -> PyResult {
13+
Ok(local_sha3_224(args).into_pyobject(vm))
1214
}
1315

14-
#[pyfunction(name = "sha3_256")]
15-
fn sha3_256(args: HashArgs, vm: &VirtualMachine) -> PyResult<PyObjectRef> {
16-
Ok(PyHasher::new("sha3_256", HashWrapper::new::<Sha3_256>(args.string)).into_pyobject(vm))
16+
#[pyfunction]
17+
fn sha3_256(args: HashArgs, vm: &VirtualMachine) -> PyResult {
18+
Ok(local_sha3_256(args).into_pyobject(vm))
1719
}
1820

19-
#[pyfunction(name = "sha3_384")]
20-
fn sha3_384(args: HashArgs, vm: &VirtualMachine) -> PyResult<PyObjectRef> {
21-
Ok(PyHasher::new("sha3_384", HashWrapper::new::<Sha3_384>(args.string)).into_pyobject(vm))
21+
#[pyfunction]
22+
fn sha3_384(args: HashArgs, vm: &VirtualMachine) -> PyResult {
23+
Ok(local_sha3_384(args).into_pyobject(vm))
2224
}
2325

24-
#[pyfunction(name = "sha3_512")]
25-
fn sha3_512(args: HashArgs, vm: &VirtualMachine) -> PyResult<PyObjectRef> {
26-
Ok(PyHasher::new("sha3_512", HashWrapper::new::<Sha3_512>(args.string)).into_pyobject(vm))
26+
#[pyfunction]
27+
fn sha3_512(args: HashArgs, vm: &VirtualMachine) -> PyResult {
28+
Ok(local_sha3_512(args).into_pyobject(vm))
2729
}
2830

29-
#[pyfunction(name = "shake_128")]
30-
fn shake_128(args: HashArgs, vm: &VirtualMachine) -> PyResult<PyObjectRef> {
31-
Ok(
32-
PyHasherXof::new("shake_128", HashXofWrapper::new_shake_128(args.string))
33-
.into_pyobject(vm),
34-
)
31+
#[pyfunction]
32+
fn shake_128(args: HashArgs, vm: &VirtualMachine) -> PyResult {
33+
Ok(local_shake_128(args).into_pyobject(vm))
3534
}
3635

37-
#[pyfunction(name = "shake_256")]
38-
fn shake_256(args: HashArgs, vm: &VirtualMachine) -> PyResult<PyObjectRef> {
39-
Ok(
40-
PyHasherXof::new("shake_256", HashXofWrapper::new_shake_256(args.string))
41-
.into_pyobject(vm),
42-
)
36+
#[pyfunction]
37+
fn shake_256(args: HashArgs, vm: &VirtualMachine) -> PyResult {
38+
Ok(local_shake_256(args).into_pyobject(vm))
4339
}
4440
}

0 commit comments

Comments
 (0)