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 2010年11月08日 09:22 by Valery.Khamenya, last changed 2022年04月11日 14:57 by admin.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| rlcompleter-dict-keys-autocompletion.tar.gz | Valery.Khamenya, 2010年11月08日 09:22 | patch, rlcomeplter.py -- full, test_rlcompleter -- full | ||
| patch.diff | Valery.Khamenya, 2010年11月09日 10:26 | |||
| Messages (7) | |||
|---|---|---|---|
| msg120721 - (view) | Author: Valery Khamenya (Valery.Khamenya) | Date: 2010年11月08日 09:22 | |
1. The patch introduces autocompletion for keys in dictionaries (patch attached)
2. The patched rlcompleter as such works OK for unicode dictionary keys as well. All tests pass OK. HOWEVER, readline's completion mechanism seem to be confused with unicode strings -- see comments to Completer.dict_key_matches(). So, perhaps, one day some changes should be applied to readline code too.
3. rlcompleter.py has no tests in trunk -- I spawn a separate issue for it. Meanwhile I took test_rlcompleter.py from 2.7 and extended it.
4. The following usual lines in .pythonstartup:
import readline
import rlcompleter
readline.parse_and_bind('tab: complete')
readline.parse_and_bind('Control-Space: complete')
should be extended by this one:
readline.set_completer_delims(re.compile(r'[\'"\\[]').sub('', readline.get_completer_delims()))
|
|||
| msg120753 - (view) | Author: Éric Araujo (eric.araujo) * (Python committer) | Date: 2010年11月08日 15:14 | |
Thank you for the report and patch. This is a new feature, thus targetting the py3k branch (future 3.2). If your patch is not against this branch, can you refresh it? Also, please attach it as text file(s), and generally follow guidelines outlined at http://www.python.org/dev/patches/ Thanks again! |
|||
| msg120855 - (view) | Author: Valery Khamenya (Valery.Khamenya) | Date: 2010年11月09日 10:26 | |
Hi Éric, thanks for guiding. So, attached is the concatenation of two forward unified diffs for rlcompleter.py and test_rlcompleter.py -- both as of py3k trunk. Tested against Python 3.1.2 though. P.S. hm, py3k code appeared to be surprisingly nicer -- no unicode troubles and work-arounds at all... regards Valery |
|||
| msg121451 - (view) | Author: Valery Khamenya (Valery.Khamenya) | Date: 2010年11月18日 10:21 | |
Guys, do you expect anythig else from me in respect to this issue? Let me know it before my non-stopable garbage collector wipes all the details from my brain away :) |
|||
| msg121631 - (view) | Author: Éric Araujo (eric.araujo) * (Python committer) | Date: 2010年11月20日 13:12 | |
I will review your patch later today. |
|||
| msg122125 - (view) | Author: Éric Araujo (eric.araujo) * (Python committer) | Date: 2010年11月22日 14:10 | |
Review time!
+ elif "[" in text:
+ self.matches = self.dict_key_matches(text)
Does this complete only dicts? What about other mappings? What about other sequences implementing __getitem__? One of the function name and the function docstring ("Compute matches when text contains a [") is wrong.
I’m not familiar with rlcompleter’s internals, so I’d like a few comments sprinkled in the code.
Please wrap your lines at 79 columns, and follow other advice given at http://www.python.org/dev/patches/ for the next version of your patch.
+ The evaluation of the part before the '[' could be enhanced.
This belongs in a comment or a test, not the docstring.
+ 'DictCompleteMe[\'öh, вау!\']',
I find it more readable to avoid escaped quotes whenever possible. Here I would use "DictCompleteMe['öh, вау!']".
|
|||
| msg256042 - (view) | Author: Martin Panter (martin.panter) * (Python committer) | Date: 2015年12月07日 02:13 | |
Some thoughts and observations from trying this patch out: * It supports single and double quotes, but triple-quoted strings get trashed * It supports Python 2’s u". . ." syntax, but not r". . .", b". . .", etc * It supports integer keys, but not indexes of lists * It does not seem to support multi-level dictionaries (e.g. config parser): d[key1][key2] * Control codes in strings are awkward * Escape codes in strings don’t seem to be parsed or generated properly * The module doc string would sort of become out of date: "indexing operations are *not* evaluated" It works for custom dictionaries, so it can invoke custom code to list the keys. Maybe this is okay; I wouldn’t expect listing an object’s keys to have a serious effect. But you could add a Mapping (and Sequence) ABC check in case the object implements keys() but is not really a dictionary. It would be nice for this to work by default, because Tab completion is now enabled by default. But I worry if changing the default completer delimiters globally will be a compatibility problem. There is a mega ugly regular expression in the patch. Is there another way to do whatever it is doing? Failing that, you could add comments, group names, etc to make it more understandable. |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:57:08 | admin | set | github: 54560 |
| 2015年12月07日 10:05:22 | serhiy.storchaka | set | nosy:
+ serhiy.storchaka versions: + Python 3.6, - Python 3.5 |
| 2015年12月07日 02:13:09 | martin.panter | set | messages: + msg256042 |
| 2015年02月12日 05:08:45 | rhettinger | set | versions: + Python 3.5, - Python 3.2 |
| 2015年02月11日 10:58:28 | martin.panter | set | nosy:
+ martin.panter |
| 2010年11月22日 14:10:37 | eric.araujo | set | nosy:
- docs@python messages: + msg122125 assignee: docs@python -> components: - Documentation |
| 2010年11月21日 13:25:30 | rbp | set | nosy:
+ rbp |
| 2010年11月20日 13:12:06 | eric.araujo | set | messages: + msg121631 |
| 2010年11月18日 10:40:18 | pitrou | set | nosy:
+ georg.brandl, facundobatista |
| 2010年11月18日 10:21:52 | Valery.Khamenya | set | messages: + msg121451 |
| 2010年11月12日 23:44:10 | ezio.melotti | set | nosy:
+ ezio.melotti |
| 2010年11月09日 23:55:00 | Trundle | set | nosy:
+ Trundle |
| 2010年11月09日 10:26:05 | Valery.Khamenya | set | files:
+ patch.diff assignee: docs@python components: + Documentation keywords: + patch nosy: + docs@python messages: + msg120855 |
| 2010年11月08日 15:14:57 | eric.araujo | set | versions:
- Python 2.6, Python 3.1, Python 2.7, Python 3.3 type: behavior -> enhancement nosy: + eric.araujo title: to introduce autocompletion for keys in dictionaries (patch attached) -> Add autocompletion for keys in dictionaries messages: + msg120753 stage: patch review |
| 2010年11月08日 09:22:36 | Valery.Khamenya | create | |