Commit Graph

5425 Commits

Author SHA1 Message Date
jfh
d42d048c70 Clean up edge cases in isinstance and issubclass. 2021-08-29 15:12:30 +03:00
Lee Dogeon
abdfe3222b Fix __repr__, __qualname__ (#2977) 2021-08-27 17:07:10 +03:00
snowapril
1ddeb67ad0 builtins: fix issubclass method miswork
This commit fix issue #2943.

In cpython, both first and second argument can be value (not type).
As second parameter `cls` is defined as PyTypeRef,
`vm.call_special_method` use `subclasscheck` method in `PyTuple`, never could reach
to user defined `subclasscheck` method.

In general, first argument of `issubclass` must be `<class Type>`, but
if second argument define `__subclasscheck__`, rustpython must test it
first. Therefore, for first argument enable to have different type, I
switch it's type as `PyObjectRef`.

Signed-off-by: snowapril <sinjihng@gmail.com>
2021-08-27 19:28:01 +09:00
Jeong YunWon
3a861e47c6 Merge pull request #2976 from DimitrisJim/bump_recursion_limit
Bump recursion limit to match CPython's
2021-08-27 16:44:58 +09:00
jfh
01e5b12290 Bump recursion limit to match CPython's 2021-08-27 09:29:52 +03:00
Jeong YunWon
f1c3935f27 Merge pull request #2961 from qingshi163/main
fix pattern for construct the bytes and bytearray
2021-08-27 10:02:02 +09:00
Jeong YunWon
6269d7eb00 hide builtins::isinstance from rust interface 2021-08-27 03:20:14 +09:00
Jeong YunWon
d387399587 simplify ByteInnerNewOptions::get_bytes() 2021-08-27 03:15:23 +09:00
Jeong YunWon
fbea3f072e Merge pull request #2952 from Snowapril/fix-isinstance
Fix `isinstance` to support Generic type object
2021-08-27 02:16:53 +09:00
Jim Fasarakis-Hilliard
48f0eb2810 Merge pull request #2972 from DimitrisJim/deque_pickle_tests
Implement __reduce__ for deque.
2021-08-26 20:03:41 +03:00
Jeong YunWon
84dd5b02ce Merge pull request #2963 from moreal/bugfix/correct-init-method-error-message
Fix missing positional argument message
2021-08-27 01:54:25 +09:00
jfh
5e758f07b5 Add deque.__reduce__. 2021-08-26 19:15:32 +03:00
Moreal
46cbce49c2 Add comma for compatibility 2021-08-27 00:12:38 +09:00
Alexander Stromberger
4e733c450b added __add__ method to collections.deque 2021-08-26 22:50:22 +09:00
Jim Fasarakis-Hilliard
c57285bd83 Merge pull request #2969 from eldpswp99/add-mutation-check-logic-in-dict-update
Add mutation check in dict.merge.
2021-08-26 16:15:28 +03:00
eldpswp99
9addff5ba9 add mutation check in dict.merge 2021-08-26 21:02:45 +09:00
Jeong YunWon
2657b8f936 Merge pull request #2968 from eldpswp99/make-dict-copy-order-when-copied-from-ordered-dict
make dict copy order when copied from ordered dict
2021-08-26 20:58:44 +09:00
Jeong YunWon
30b0a5af5e Simpler function args error formatting 2021-08-26 20:57:48 +09:00
Jeong YunWon
9f4f26300b Merge pull request #2741 from RustPython/coolreader18/fix-wasi
Fix compilation on wasi
2021-08-26 20:32:02 +09:00
eldpswp99
e7948e94a9 make dict copy order when copied from ordered dict 2021-08-26 19:55:23 +09:00
snowapril
d0afc4c3bc set range iter type not creatable by calling type
This commit fix `RangeTest.test_range_iterators_invocation` in
[`test_range.py`](https://github.com/RustPython/RustPython/blob/main/Lib/test/test_range.py#L507).

This is last `TODO` in `test_range.py`.

By add slot tp_new to both types and return new_type_error, prevent
creation of range_iterator and longrange_iterator by calling its type.

Signed-off-by: snowapril <sinjihng@gmail.com>
2021-08-26 16:15:28 +09:00
Noah
2969fa5625 Fix compilation on wasi 2021-08-25 19:58:20 -05:00
Moreal
6c9f8445e5 Fix missing positional argument message
See also https://github.com/RustPython/RustPython/issues/2939
2021-08-26 00:07:35 +09:00
Kangzhi Shi
343d158c34 fix pattern for construct the bytes and bytearray 2021-08-25 09:44:48 +02:00
Jeong YunWon
d7bacf0580 Merge pull request #2935 from zetwhite/master
os: implement os.nice
2021-08-25 14:15:31 +09:00
snowapril
7ffc33119b builtins: fix isinstance method miswork
This commit fix issue #2936.

In original codes, there are problem in both `builtins::isinstance` and
`vm.isinstance`.

`builtins::isinstance` use `single_or_tuple_any` function for checking
given object is `<class 'type'>` or if it is tuple, iterating over them
recursively.
But it did not check given object have `__instancecheck__`
if it is not `<class 'type'>`.

`vm.isinstance` get second argument as `PyTypeRef`. Because of it,
`call_special_method` use `instancecheck` of `TypeProtocol`'s one and
never reach to user defined `__instancecheck__`

Therefore I referenced cpython implementation and fix it.

Signed-off-by: snowapril <sinjihng@gmail.com>
2021-08-25 13:17:13 +09:00
Jeong YunWon
67b338863e Merge pull request #2897 from sobolevn/better-exceptions
Adds better exception macro
2021-08-25 03:22:14 +09:00
zetwhite
c57b8fbf43 Add os.nice 2021-08-25 02:35:39 +09:00
Jeong YunWon
aff0e3c2da Merge pull request #2929 from youknowone/dict
prepare extension for each dict iterator types
2021-08-25 01:19:45 +09:00
jfh
ab5ccd6beb Use SequenceIndex instead of Either. 2021-08-24 18:11:49 +03:00
Jim Fasarakis-Hilliard
7f946daec4 Merge pull request #2955 from DimitrisJim/fix_empty_array_panic
Fixes panic when empty array is indexed.
2021-08-24 17:13:08 +03:00
jfh
92491906f5 Fixes panic when empty array is indexed. 2021-08-24 16:24:21 +03:00
Jim Fasarakis-Hilliard
45a64e10fe Merge pull request #2954 from eldpswp99/add-deque.__copy__
add deque.__copy__
2021-08-24 16:18:29 +03:00
eldpswp99
4e62e82d4f add deque.__copy__ 2021-08-24 21:17:45 +09:00
eldpswp99
988c686e7d resolve deque.rotate panic 2021-08-24 20:04:46 +09:00
Bonsai
e66566f7b8 add deque __bool__ method (#2931)
Adds deque.bool
2021-08-24 08:30:20 +03:00
Jim Fasarakis-Hilliard
d544988aa6 Merge pull request #2946 from youknowone/format
Trivial clean up
2021-08-24 06:44:01 +03:00
Jeong YunWon
a4c65049bf Fix int/float enum pickle (#2945)
Add {int,float}.__getnewargs__
2021-08-24 06:33:55 +03:00
Jeong YunWon
f4e863927d reduce too deep indent depth 2021-08-24 02:52:33 +09:00
Jeong YunWon
1fe71aa2a1 clean up clippy allows 2021-08-24 01:53:46 +09:00
Jeong YunWon
43d4b10416 Merge pull request #2942 from qingshi163/bytes-fromhex-subclass
fix bytes and bytearray fromhex to support subclass
2021-08-24 00:50:41 +09:00
Jeong YunWon
1b20dd5d1a Merge pull request #2932 from moreal/bugfix/dict-contains-check-from-its-attributes
Find key from only its attributes
2021-08-24 00:48:21 +09:00
Myunghoon Park
ca1e349a18 support deuqe.index using start, end index (#2944)
Support deque.index using start, end index
2021-08-23 17:44:14 +03:00
Kangzhi Shi
1384133636 fix bytes and bytearray fromhex support subclass 2021-08-23 16:43:01 +02:00
snowapril
9ab1c96720 builtins: fix error message incompatibility
This commit fix issue #2939.

Add self.code.obj field in error message for
remove incompatibility with cpython.

Signed-off-by: snowapril <sinjihng@gmail.com>
2021-08-23 16:19:40 +09:00
Kangzhi Shi
67b81c8db5 fix object.__format__ error string 2021-08-23 08:18:45 +02:00
Moreal
4b3220b888 Find key from only attributes 2021-08-23 08:54:12 +09:00
Jeong YunWon
60edbdd427 Merge pull request #2938 from DimitrisJim/deque_repr
Fix deque repr hang if element __repr__ mutates.
2021-08-23 00:25:00 +09:00
whgusdn321
04d77c23be Fix extendleft method of deque (#2893)
Fix extendleft function of deque.
2021-08-22 17:55:25 +03:00
jfh
fd23e4e917 Fix repr hang if __repr__ is evil. 2021-08-22 16:57:05 +03:00