This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2014年08月05日 16:13 by donlorenzo, last changed 2022年04月11日 14:58 by admin. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| rlcompleter.diff | donlorenzo, 2014年08月05日 16:13 | collect possible match words in a set instead of a list | ||
| rlcompleter_22143.patch | donlorenzo, 2014年10月29日 13:51 | fix + test | ||
| rlcompleter_22143.patch | donlorenzo, 2014年10月30日 13:34 | fix + test (using assertIn and assertIsNone) | ||
| Messages (10) | |||
|---|---|---|---|
| msg224852 - (view) | Author: Lorenz Quack (donlorenzo) * | Date: 2014年08月05日 16:13 | |
Example:
>>> import rlcompleter
>>> completer = rlcompleter.Completer()
>>> class A(object):
... foo = None
>>> class B(A):
... pass
>>> b = B()
>>> print([completer.complete("b.foo", i) for i in range(4)])
['b.foo', 'b.foo', 'b.foo', None]
I would expect the completions to be unique.
This happens because the possible words to match are put into a list.
A possible fix is putting them into a set instead.
Patch attached.
|
|||
| msg227592 - (view) | Author: PCManticore (Claudiu.Popa) * (Python triager) | Date: 2014年09月26日 07:54 | |
The patch looks good. Could you add a test? |
|||
| msg230209 - (view) | Author: Lorenz Quack (donlorenzo) * | Date: 2014年10月29日 13:51 | |
Hi, here finally the updated patch with test case. It depends on and should be applied after the patch included in issue22141. This patch does changes two things: 1) completions are now unique 2) completions are now in no specific order I had to touch some other rlcompleter tests because they assumed a certain order of the returned matches. Thanks for reviewing! |
|||
| msg230269 - (view) | Author: PCManticore (Claudiu.Popa) * (Python triager) | Date: 2014年10月30日 13:03 | |
I don't know why there's no review link for your patch. Anyway..
+ self.assertTrue(c.complete("A.foo", 0) in ['A.foo(', 'A.foobar('])
+ self.assertTrue(c.complete("A.foo", 1) in ['A.foo(', 'A.foobar('])
You can use self.assertIn for these.
+ self.assertEqual(c.complete("b.foo", 1), None)
self.assertIsNone.
Otherwise, the patch looks good to me.
|
|||
| msg230270 - (view) | Author: Lorenz Quack (donlorenzo) * | Date: 2014年10月30日 13:34 | |
Thanks for reviewing! test now use assertIn and assertIsNone as suggested PS: My Contributors Agreement is in progress. Just emailed the PSF with some question (but I intend to sign it) |
|||
| msg230356 - (view) | Author: Ezio Melotti (ezio.melotti) * (Python committer) | Date: 2014年10月31日 17:04 | |
+ return list(set(matches)) Shouldn't this be sorted before being returned? |
|||
| msg230376 - (view) | Author: Lorenz Quack (donlorenzo) * | Date: 2014年10月31日 18:53 | |
I couldn't find anything concerning order in the docs so I didn't see any reason the have them sorted. I'm not opposed to sorting them. I guess you could call me +0 on returning sorted(set(matches)) |
|||
| msg236419 - (view) | Author: Lorenz Quack (donlorenzo) * | Date: 2015年02月22日 22:52 | |
sorry it took so long but my contributor agreement is now signed. Do you want me to write a patch with the results sorted? If so, should I also change the docs to reflect that the results are sorted? This would then also affect other implementations because they would be required to also return sorted results. |
|||
| msg265470 - (view) | Author: Martin Panter (martin.panter) * (Python committer) | Date: 2016年05月13日 12:28 | |
I think this was fixed by Issue 25663. (Sorry I wasn’t aware of the work already done here.) |
|||
| msg265471 - (view) | Author: Martin Panter (martin.panter) * (Python committer) | Date: 2016年05月13日 12:39 | |
Actually more like Issue 25590 (this was about attribute names, not global names) |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:58:06 | admin | set | github: 66341 |
| 2016年05月13日 12:39:24 | martin.panter | set | superseder: Make rlcompleter avoid duplicate global names -> tab-completition on instances repeatedly accesses attribute/descriptors values messages: + msg265471 |
| 2016年05月13日 12:28:37 | martin.panter | set | status: open -> closed nosy: + martin.panter messages: + msg265470 superseder: Make rlcompleter avoid duplicate global names resolution: out of date |
| 2015年02月22日 22:52:24 | donlorenzo | set | messages: + msg236419 |
| 2014年10月31日 18:53:12 | donlorenzo | set | messages: + msg230376 |
| 2014年10月31日 17:04:40 | ezio.melotti | set | messages: + msg230356 |
| 2014年10月30日 13:34:32 | donlorenzo | set | files:
+ rlcompleter_22143.patch messages: + msg230270 |
| 2014年10月30日 13:03:38 | Claudiu.Popa | set | messages: + msg230269 |
| 2014年10月29日 13:51:52 | donlorenzo | set | files:
+ rlcompleter_22143.patch messages: + msg230209 |
| 2014年09月26日 07:54:27 | Claudiu.Popa | set | nosy:
+ Claudiu.Popa messages: + msg227592 |
| 2014年08月05日 16:17:27 | ezio.melotti | set | nosy:
+ ezio.melotti stage: patch review type: behavior versions: - Python 3.1, Python 3.2, Python 3.3 |
| 2014年08月05日 16:13:15 | donlorenzo | create | |