problem with tuple+obj and list+obj expressions
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 25/100
- Issue type
- Bug
- Clarity
- Needs clarification
- Activity status
- Stale
- Tech stack
- javascript, python
- Domain
- compilers
Research direction
No source file or test is named. Start by reproducing the supplied Transcrypt Python snippet in the stated Python 3.9 and Firefox environment, then trace operator dispatch in the compiler. Done means tuple/list operations correctly honor the operand's reflected methods, including the reported addition and multiplication cases.
Written by the indexing model from the issue text.
Description
There is an apparent problem with tuple + obj and list + obj expressions. Rather than call obj.__radd__, it seems that tuple.__add__/list.__add__ are called. Similar problem occurs with tuple * obj and list * obj. Problem appears to stem from the fact that tuple and list have __add__ and __mul__ methods that seem to take priority.
python code:
# __pragma__ ('opov')
class Obj:
def __init__(self, x, y):
self.x = x
self.y = y
self._message = None
def __str__(self):
return 'obj'
def __add__(self, other):
self._message = 'obj.__add__'
return (self.x + other[0], self.y + other[1])
def __sub__(self, other):
self._message = 'obj.__sub__'
return (self.x - other[0], self.y - other[1])
def __radd__(self, other):
self._message = 'obj.__radd__'
return (other[0] + self.x, other[1] + self.y)
def __rsub__(self, other):
self._message = 'obj.__rsub__'
return (other[0] - self.x, other[1] - self.y)
@property
def message(self):
message = self._message
self._message = None
return message
obj = Obj(4, 2)
_tuple = (4, 2)
_list = [4, 2]
print('obj + tuple:', obj + _tuple, '\t\tcalled:', obj.message)
print('obj - tuple:', obj - _tuple, '\t\tcalled:', obj.message)
print('tuple + obj:', _tuple + obj, '\tcalled:', obj.message)
print('tuple - obj:', _tuple - obj, '\t\tcalled:', obj.message)
print('obj + list:', obj + _list, '\t\tcalled:', obj.message)
print('obj - list:', obj - _list, '\t\tcalled:', obj.message)
print('list + obj:', _list + obj, '\tcalled:', obj.message)
print('list - obj:', _list - obj, '\t\tcalled:', obj.message)
console output:
obj + tuple: (8, 4) called: obj.__add__
obj - tuple: (0, 0) called: obj.__sub__
tuple + obj: [4, 2, obj] called: None
tuple - obj: (0, 0) called: obj.__rsub__
obj + list: (8, 4) called: obj.__add__
obj - list: (0, 0) called: obj.__sub__
list + obj: [4, 2, obj] called: None
list - obj: (0, 0) called: obj.__rsub__
env: Python3.9 venv with pip install Transcrypt
testing: Firefox version 133 in Linux
- Dominant language
- Python
- Stars
- 2.9k
- Forks
- 218
- PR merge metrics
- No merged PRs in 30d
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from TranscryptOrg/Transcrypt
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
TranscryptOrg/Transcrypt#913 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
TranscryptOrg/Transcrypt#911 · 2 comments ·
-
IS: bug
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
TranscryptOrg/Transcrypt#908 ·
-
SUB: documentation
Difficulty 1/5 Under an hour Newbie friendliness 62/100
TranscryptOrg/Transcrypt#656 · 7 comments ·
-
Difficulty 3/5 1-2 days Newbie friendliness 76/100
TranscryptOrg/Transcrypt#914 ·
All issues in TranscryptOrg/Transcrypt
Similar issues
-
area/auth bug comp/agent P3 platform/discord type/security
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
NousResearch/hermes-agent#117848 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
bancolombia/sentinel#23 ·
-
test md OpenCI
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
-
integration:quickjs org:external priority:backlog topic:code-interpreter topic:middleware type:feature
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
langchain-ai/deepagents#6450 ·
-
bug client
Difficulty 2/5 1-3 hours Newbie friendliness 88/100