golden hour
/opt/alt/python27/lib64/python2.7/idlelib
⬆️ Go Up
Upload
File/Folder
Size
Actions
AutoComplete.py
8.75 KB
Del
OK
AutoComplete.pyc
7.99 KB
Del
OK
AutoComplete.pyo
7.99 KB
Del
OK
AutoCompleteWindow.py
16.91 KB
Del
OK
AutoCompleteWindow.pyc
12.42 KB
Del
OK
AutoCompleteWindow.pyo
12.36 KB
Del
OK
AutoExpand.py
3.32 KB
Del
OK
AutoExpand.pyc
3.5 KB
Del
OK
AutoExpand.pyo
3.5 KB
Del
OK
Bindings.py
2.91 KB
Del
OK
Bindings.pyc
4.6 KB
Del
OK
Bindings.pyo
4.6 KB
Del
OK
CREDITS.txt
1.82 KB
Del
OK
CallTipWindow.py
5.92 KB
Del
OK
CallTipWindow.pyc
6.14 KB
Del
OK
CallTipWindow.pyo
6.14 KB
Del
OK
CallTips.py
7.56 KB
Del
OK
CallTips.pyc
8.16 KB
Del
OK
CallTips.pyo
8.16 KB
Del
OK
ChangeLog
55.07 KB
Del
OK
ClassBrowser.py
6.83 KB
Del
OK
ClassBrowser.pyc
9.66 KB
Del
OK
ClassBrowser.pyo
9.66 KB
Del
OK
CodeContext.py
8.15 KB
Del
OK
CodeContext.pyc
6.63 KB
Del
OK
CodeContext.pyo
6.59 KB
Del
OK
ColorDelegator.py
9.53 KB
Del
OK
ColorDelegator.pyc
8.91 KB
Del
OK
ColorDelegator.pyo
8.91 KB
Del
OK
Debugger.py
17.81 KB
Del
OK
Debugger.pyc
17.72 KB
Del
OK
Debugger.pyo
17.72 KB
Del
OK
Delegator.py
665 B
Del
OK
Delegator.pyc
1.31 KB
Del
OK
Delegator.pyo
1.31 KB
Del
OK
EditorWindow.py
63.96 KB
Del
OK
EditorWindow.pyc
57.15 KB
Del
OK
EditorWindow.pyo
57.05 KB
Del
OK
FileList.py
3.63 KB
Del
OK
FileList.pyc
4.07 KB
Del
OK
FileList.pyo
4.04 KB
Del
OK
FormatParagraph.py
7.12 KB
Del
OK
FormatParagraph.pyc
7.14 KB
Del
OK
FormatParagraph.pyo
7.14 KB
Del
OK
GrepDialog.py
5.02 KB
Del
OK
GrepDialog.pyc
6.45 KB
Del
OK
GrepDialog.pyo
6.45 KB
Del
OK
HISTORY.txt
10.08 KB
Del
OK
HyperParser.py
10.25 KB
Del
OK
HyperParser.pyc
6.64 KB
Del
OK
HyperParser.pyo
6.64 KB
Del
OK
IOBinding.py
21.4 KB
Del
OK
IOBinding.pyc
18.62 KB
Del
OK
IOBinding.pyo
18.62 KB
Del
OK
Icons
-
Del
OK
IdleHistory.py
3.96 KB
Del
OK
IdleHistory.pyc
4.05 KB
Del
OK
IdleHistory.pyo
4.05 KB
Del
OK
MultiCall.py
17.29 KB
Del
OK
MultiCall.pyc
16.4 KB
Del
OK
MultiCall.pyo
16.33 KB
Del
OK
MultiStatusBar.py
1.32 KB
Del
OK
MultiStatusBar.pyc
2.3 KB
Del
OK
MultiStatusBar.pyo
2.3 KB
Del
OK
NEWS.txt
46.14 KB
Del
OK
ObjectBrowser.py
4.27 KB
Del
OK
ObjectBrowser.pyc
7.26 KB
Del
OK
ObjectBrowser.pyo
7.26 KB
Del
OK
OutputWindow.py
4.47 KB
Del
OK
OutputWindow.pyc
5.3 KB
Del
OK
OutputWindow.pyo
5.3 KB
Del
OK
ParenMatch.py
6.56 KB
Del
OK
ParenMatch.pyc
7.18 KB
Del
OK
ParenMatch.pyo
7.18 KB
Del
OK
PathBrowser.py
2.94 KB
Del
OK
PathBrowser.pyc
4.57 KB
Del
OK
PathBrowser.pyo
4.57 KB
Del
OK
Percolator.py
3.15 KB
Del
OK
Percolator.pyc
4.69 KB
Del
OK
Percolator.pyo
4.51 KB
Del
OK
PyParse.py
19.05 KB
Del
OK
PyParse.pyc
9.99 KB
Del
OK
PyParse.pyo
9.56 KB
Del
OK
PyShell.py
57.49 KB
Del
OK
PyShell.pyc
53 KB
Del
OK
PyShell.pyo
52.9 KB
Del
OK
README.txt
7.71 KB
Del
OK
RemoteDebugger.py
11.36 KB
Del
OK
RemoteDebugger.pyc
16.73 KB
Del
OK
RemoteDebugger.pyo
16.58 KB
Del
OK
RemoteObjectBrowser.py
942 B
Del
OK
RemoteObjectBrowser.pyc
2.23 KB
Del
OK
RemoteObjectBrowser.pyo
2.23 KB
Del
OK
ReplaceDialog.py
6.48 KB
Del
OK
ReplaceDialog.pyc
7.83 KB
Del
OK
ReplaceDialog.pyo
7.83 KB
Del
OK
RstripExtension.py
1.03 KB
Del
OK
RstripExtension.pyc
1.63 KB
Del
OK
RstripExtension.pyo
1.63 KB
Del
OK
ScriptBinding.py
8.26 KB
Del
OK
ScriptBinding.pyc
8.17 KB
Del
OK
ScriptBinding.pyo
8.17 KB
Del
OK
ScrolledList.py
4.27 KB
Del
OK
ScrolledList.pyc
6.61 KB
Del
OK
ScrolledList.pyo
6.61 KB
Del
OK
SearchDialog.py
2.57 KB
Del
OK
SearchDialog.pyc
4.04 KB
Del
OK
SearchDialog.pyo
4.04 KB
Del
OK
SearchDialogBase.py
6.93 KB
Del
OK
SearchDialogBase.pyc
8.43 KB
Del
OK
SearchDialogBase.pyo
8.43 KB
Del
OK
SearchEngine.py
7.29 KB
Del
OK
SearchEngine.pyc
8.37 KB
Del
OK
SearchEngine.pyo
8.37 KB
Del
OK
StackViewer.py
4.33 KB
Del
OK
StackViewer.pyc
6.52 KB
Del
OK
StackViewer.pyo
6.52 KB
Del
OK
TODO.txt
8.28 KB
Del
OK
ToolTip.py
3.1 KB
Del
OK
ToolTip.pyc
4.78 KB
Del
OK
ToolTip.pyo
4.78 KB
Del
OK
TreeWidget.py
14.68 KB
Del
OK
TreeWidget.pyc
17.95 KB
Del
OK
TreeWidget.pyo
17.95 KB
Del
OK
UndoDelegator.py
10.53 KB
Del
OK
UndoDelegator.pyc
13.88 KB
Del
OK
UndoDelegator.pyo
13.88 KB
Del
OK
WidgetRedirector.py
6.74 KB
Del
OK
WidgetRedirector.pyc
7.76 KB
Del
OK
WidgetRedirector.pyo
7.76 KB
Del
OK
WindowList.py
2.42 KB
Del
OK
WindowList.pyc
3.74 KB
Del
OK
WindowList.pyo
3.74 KB
Del
OK
ZoomHeight.py
1.27 KB
Del
OK
ZoomHeight.pyc
1.67 KB
Del
OK
ZoomHeight.pyo
1.67 KB
Del
OK
__init__.py
288 B
Del
OK
__init__.pyc
444 B
Del
OK
__init__.pyo
444 B
Del
OK
aboutDialog.py
6.85 KB
Del
OK
aboutDialog.pyc
6.85 KB
Del
OK
aboutDialog.pyo
6.85 KB
Del
OK
config-extensions.def
2.9 KB
Del
OK
config-highlight.def
2.46 KB
Del
OK
config-keys.def
7.59 KB
Del
OK
config-main.def
2.5 KB
Del
OK
configDialog.py
64.41 KB
Del
OK
configDialog.pyc
53.16 KB
Del
OK
configDialog.pyo
53.16 KB
Del
OK
configHandler.py
31.72 KB
Del
OK
configHandler.pyc
29.28 KB
Del
OK
configHandler.pyo
29.28 KB
Del
OK
configHelpSourceEdit.py
6.53 KB
Del
OK
configHelpSourceEdit.pyc
6.55 KB
Del
OK
configHelpSourceEdit.pyo
6.55 KB
Del
OK
configSectionNameDialog.py
3.95 KB
Del
OK
configSectionNameDialog.pyc
4.4 KB
Del
OK
configSectionNameDialog.pyo
4.4 KB
Del
OK
dynOptionMenuWidget.py
1.94 KB
Del
OK
dynOptionMenuWidget.pyc
2.8 KB
Del
OK
dynOptionMenuWidget.pyo
2.8 KB
Del
OK
extend.txt
3.56 KB
Del
OK
help.html
41.42 KB
Del
OK
help.py
10.78 KB
Del
OK
help.pyc
12.25 KB
Del
OK
help.pyo
12.25 KB
Del
OK
help.txt
11.86 KB
Del
OK
idle.py
453 B
Del
OK
idle.pyc
423 B
Del
OK
idle.pyo
423 B
Del
OK
idle.pyw
563 B
Del
OK
idle_test
-
Del
OK
idlever.py
415 B
Del
OK
idlever.pyc
591 B
Del
OK
idlever.pyo
591 B
Del
OK
keybindingDialog.py
12.18 KB
Del
OK
keybindingDialog.pyc
12.08 KB
Del
OK
keybindingDialog.pyo
12.08 KB
Del
OK
macosxSupport.py
8.24 KB
Del
OK
macosxSupport.pyc
8.38 KB
Del
OK
macosxSupport.pyo
8.25 KB
Del
OK
rpc.py
19.68 KB
Del
OK
rpc.pyc
21.97 KB
Del
OK
rpc.pyo
21.86 KB
Del
OK
run.py
12.61 KB
Del
OK
run.pyc
13.45 KB
Del
OK
run.pyo
13.39 KB
Del
OK
tabbedpages.py
18.01 KB
Del
OK
tabbedpages.pyc
18.63 KB
Del
OK
tabbedpages.pyo
18.63 KB
Del
OK
textView.py
3.44 KB
Del
OK
textView.pyc
4.02 KB
Del
OK
textView.pyo
4.02 KB
Del
OK
Edit: CallTips.py
"""CallTips.py - An IDLE Extension to Jog Your Memory Call Tips are floating windows which display function, class, and method parameter and docstring information when you type an opening parenthesis, and which disappear when you type a closing parenthesis. """ import __main__ import re import sys import textwrap import types from idlelib import CallTipWindow from idlelib.HyperParser import HyperParser class CallTips: menudefs = [ ('edit', [ ("Show call tip", "<<force-open-calltip>>"), ]) ] def __init__(self, editwin=None): if editwin is None: # subprocess and test self.editwin = None return self.editwin = editwin self.text = editwin.text self.calltip = None self._make_calltip_window = self._make_tk_calltip_window def close(self): self._make_calltip_window = None def _make_tk_calltip_window(self): # See __init__ for usage return CallTipWindow.CallTip(self.text) def _remove_calltip_window(self, event=None): if self.calltip: self.calltip.hidetip() self.calltip = None def force_open_calltip_event(self, event): """Happens when the user really wants to open a CallTip, even if a function call is needed. """ self.open_calltip(True) def try_open_calltip_event(self, event): """Happens when it would be nice to open a CallTip, but not really necessary, for example after an opening bracket, so function calls won't be made. """ self.open_calltip(False) def refresh_calltip_event(self, event): """If there is already a calltip window, check if it is still needed, and if so, reload it. """ if self.calltip and self.calltip.is_active(): self.open_calltip(False) def open_calltip(self, evalfuncs): self._remove_calltip_window() hp = HyperParser(self.editwin, "insert") sur_paren = hp.get_surrounding_brackets('(') if not sur_paren: return hp.set_index(sur_paren[0]) expression = hp.get_expression() if not expression or (not evalfuncs and expression.find('(') != -1): return arg_text = self.fetch_tip(expression) if not arg_text: return self.calltip = self._make_calltip_window() self.calltip.showtip(arg_text, sur_paren[0], sur_paren[1]) def fetch_tip(self, expression): """Return the argument list and docstring of a function or class If there is a Python subprocess, get the calltip there. Otherwise, either fetch_tip() is running in the subprocess itself or it was called in an IDLE EditorWindow before any script had been run. The subprocess environment is that of the most recently run script. If two unrelated modules are being edited some calltips in the current module may be inoperative if the module was not the last to run. To find methods, fetch_tip must be fed a fully qualified name. """ try: rpcclt = self.editwin.flist.pyshell.interp.rpcclt except AttributeError: rpcclt = None if rpcclt: return rpcclt.remotecall("exec", "get_the_calltip", (expression,), {}) else: entity = self.get_entity(expression) return get_arg_text(entity) def get_entity(self, expression): """Return the object corresponding to expression evaluated in a namespace spanning sys.modules and __main.dict__. """ if expression: namespace = sys.modules.copy() namespace.update(__main__.__dict__) try: return eval(expression, namespace) except BaseException: # An uncaught exception closes idle, and eval can raise any # exception, especially if user classes are involved. return None def _find_constructor(class_ob): # Given a class object, return a function object used for the # constructor (ie, __init__() ) or None if we can't find one. try: return class_ob.__init__.im_func except AttributeError: for base in class_ob.__bases__: rc = _find_constructor(base) if rc is not None: return rc return None # The following are used in get_arg_text _MAX_COLS = 85 _MAX_LINES = 5 # enough for bytes _INDENT = ' '*4 # for wrapped signatures def get_arg_text(ob): '''Return a string describing the signature of a callable object, or ''. For Python-coded functions and methods, the first line is introspected. Delete 'self' parameter for classes (.__init__) and bound methods. The next lines are the first lines of the doc string up to the first empty line or _MAX_LINES. For builtins, this typically includes the arguments in addition to the return value. ''' argspec = "" try: ob_call = ob.__call__ except BaseException: if type(ob) is types.ClassType: # old-style ob_call = ob else: return argspec arg_offset = 0 if type(ob) in (types.ClassType, types.TypeType): # Look for the first __init__ in the class chain with .im_func. # Slot wrappers (builtins, classes defined in funcs) do not. fob = _find_constructor(ob) if fob is None: fob = lambda: None else: arg_offset = 1 elif type(ob) == types.MethodType: # bit of a hack for methods - turn it into a function # and drop the "self" param for bound methods fob = ob.im_func if ob.im_self is not None: arg_offset = 1 elif type(ob_call) == types.MethodType: # a callable class instance fob = ob_call.im_func arg_offset = 1 else: fob = ob # Try to build one for Python defined functions if type(fob) in [types.FunctionType, types.LambdaType]: argcount = fob.func_code.co_argcount real_args = fob.func_code.co_varnames[arg_offset:argcount] defaults = fob.func_defaults or [] defaults = list(map(lambda name: "=%s" % repr(name), defaults)) defaults = [""] * (len(real_args) - len(defaults)) + defaults items = map(lambda arg, dflt: arg + dflt, real_args, defaults) for flag, pre, name in ((0x4, '*', 'args'), (0x8, '**', 'kwargs')): if fob.func_code.co_flags & flag: pre_name = pre + name if name not in real_args: items.append(pre_name) else: i = 1 while ((name+'%s') % i) in real_args: i += 1 items.append((pre_name+'%s') % i) argspec = ", ".join(items) argspec = "(%s)" % re.sub("(?<!\d)\.\d+", "<tuple>", argspec) lines = (textwrap.wrap(argspec, _MAX_COLS, subsequent_indent=_INDENT) if len(argspec) > _MAX_COLS else [argspec] if argspec else []) if isinstance(ob_call, types.MethodType): doc = ob_call.__doc__ else: doc = getattr(ob, "__doc__", "") if doc: for line in doc.split('\n', _MAX_LINES)[:_MAX_LINES]: line = line.strip() if not line: break if len(line) > _MAX_COLS: line = line[: _MAX_COLS - 3] + '...' lines.append(line) argspec = '\n'.join(lines) return argspec if __name__ == '__main__': from unittest import main main('idlelib.idle_test.test_calltips', verbosity=2)
Save