Skip to content
This repository has been archived by the owner on Oct 29, 2018. It is now read-only.

Viewing large content/file within chat unusably slow #140

Closed
edmundcraske opened this issue Jun 11, 2015 · 14 comments
Closed

Viewing large content/file within chat unusably slow #140

edmundcraske opened this issue Jun 11, 2015 · 14 comments

Comments

@edmundcraske
Copy link

Hi, not really sure how to report this, but here goes - a colleague added an 8KB Python file to a chat, and whilst the preview shows just fine and doesn't affect the performance of ScudCloud, if I click on the name of the file, or any of the other links which cause the sidebar to open to show the full file, ScudCloud becomes unusably slow - I'm unable to scroll in a timely fashion, and ScudCloud quickly times out its connections to Slack, showing an orange 'reconnecting...' bar at the top. If I click the x to close the sidebar, then after a few moments it will close the sidebar, and performance goes back to normal.

Not sure how to diagnose the cause of the issue at this point, I'm afraid.

@tvolkov
Copy link

tvolkov commented Jun 22, 2015

I've got the same problem: a colleague added 19KB xml file to a chat, and ScudCloud literally freezes

@raelgc
Copy link
Owner

raelgc commented Jun 22, 2015

This is related to how webkit handles the files. Probably we should make ScudCloud open all non image/video files externally (using xdg-open).

What is the URL of the files when you're about to click on it?

@moonwolf-github
Copy link
Contributor

I've just opened 194KB plain text file. Boy, it was painful (;) But does open exetrnally means file will open in other application? I would like to avoid it.

@bkconrad
Copy link
Contributor

Another helpless victim reporting in. Here's some profiler output from my repro case. Unfortunately, I'm not wise enough to identify the problem. Perhaps some sage pythonista can tell what's going on though:

python3.4 -m cProfile -s cumtime ./scudcloud-1.0/scudcloud
SpellCheck: Language = "en_US" 
         45554 function calls (44463 primitive calls) in 114.456 seconds

   Ordered by: cumulative time

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
     74/1    0.006    0.000  114.465  114.465 {built-in method exec}
        1    0.000    0.000  114.465  114.465 scudcloud:2(<module>)
        1    0.080    0.080  114.334  114.334 scudcloud:15(main)
        1  113.648  113.648  114.121  114.121 {built-in method exec_}
  488/438    0.217    0.000    0.251    0.001 {built-in method evaluateJavaScript}
        5    0.000    0.000    0.237    0.047 leftpane.py:48(switchTo)
        5    0.001    0.000    0.237    0.047 scudcloud.py:231(switchTo)
       10    0.000    0.000    0.226    0.023 wrapper.py:57(urlChanged)
        2    0.177    0.089    0.177    0.089 {built-in method setCurrentIndex}
     98/8    0.000    0.000    0.136    0.017 <frozen importlib._bootstrap>:2234(_find_and_load)
     98/8    0.000    0.000    0.136    0.017 <frozen importlib._bootstrap>:2207(_find_and_load_unlocked)
     92/8    0.000    0.000    0.133    0.017 <frozen importlib._bootstrap>:1186(_load_unlocked)
   112/12    0.000    0.000    0.131    0.011 <frozen importlib._bootstrap>:313(_call_with_frames_removed)
     58/7    0.000    0.000    0.102    0.015 <frozen importlib._bootstrap>:1122(_exec)
     58/7    0.000    0.000    0.102    0.015 <frozen importlib._bootstrap>:1465(exec_module)
    16/11    0.000    0.000    0.097    0.009 {built-in method __import__}
        1    0.000    0.000    0.092    0.092 scudcloud.py:2(<module>)
    34/16    0.000    0.000    0.091    0.006 <frozen importlib._bootstrap>:1156(_load_backward_compatible)
  202/140    0.000    0.000    0.083    0.001 <frozen importlib._bootstrap>:2264(_handle_fromlist)
    78/63    0.000    0.000    0.077    0.001 <frozen importlib._bootstrap>:534(_check_name_wrapper)
     20/7    0.000    0.000    0.077    0.011 <frozen importlib._bootstrap>:1708(load_module)
     20/7    0.072    0.004    0.077    0.011 {built-in method load_dynamic}
        1    0.002    0.002    0.071    0.071 scudcloud.py:30(__init__)
        1    0.000    0.000    0.059    0.059 qsingleapplication.py:36(singleStart)
        1    0.000    0.000    0.058    0.058 {built-in method connectToServer}
        1    0.000    0.000    0.058    0.058 qsingleapplication.py:56(startApplication)
        1    0.000    0.000    0.058    0.058 qsingleapplication.py:52(show)
        1    0.000    0.000    0.058    0.058 scudcloud.py:288(show)
        1    0.057    0.057    0.057    0.057 {built-in method setWindowState}
      237    0.001    0.000    0.049    0.000 wrapper.py:50(call)
       10    0.000    0.000    0.044    0.004 scudcloud.py:222(teams)
       24    0.000    0.000    0.041    0.002 leftpane.py:30(addTeam)
        1    0.000    0.000    0.040    0.040 leftpane.py:1(<module>)
       55    0.000    0.000    0.039    0.001 wrapper.py:149(count)
       55    0.002    0.000    0.039    0.001 scudcloud.py:321(count)
        1    0.000    0.000    0.028    0.028 notifier.py:1(<module>)
        5    0.000    0.000    0.026    0.005 wrapper.py:121(listChannels)
      217    0.000    0.000    0.022    0.000 wrapper.py:103(team)
        1    0.000    0.000    0.019    0.019 scudcloud.py:65(webSettings)
       58    0.000    0.000    0.018    0.000 <frozen importlib._bootstrap>:1534(get_code)
        5    0.018    0.004    0.018    0.004 {globalSettings}
        4    0.016    0.004    0.016    0.004 {built-in method load}
        3    0.015    0.005    0.015    0.005 {built-in method setCurrentWidget}
    95/88    0.000    0.000    0.015    0.000 <frozen importlib._bootstrap>:2240(_gcd_import)
     1312    0.006    0.000    0.014    0.000 scudcloud.py:252(eventFilter)
      6/4    0.000    0.000    0.014    0.003 importer.py:55(load_module)
     13/6    0.000    0.000    0.014    0.002 __init__.py:91(import_module)
      6/4    0.000    0.000    0.014    0.003 module.py:293(_load)
        2    0.000    0.000    0.014    0.007 __init__.py:21(<module>)
       57    0.014    0.000    0.014    0.000 {fromTheme}
        1    0.000    0.000    0.013    0.013 systray.py:8(__init__)
       97    0.001    0.000    0.013    0.000 <frozen importlib._bootstrap>:2147(_find_spec)
        1    0.000    0.000    0.013    0.013 __init__.py:10(<module>)
        4    0.000    0.000    0.012    0.003 wrapper.py:15(__init__)
       89    0.000    0.000    0.011    0.000 <frozen importlib._bootstrap>:1934(find_spec)
       89    0.001    0.000    0.011    0.000 <frozen importlib._bootstrap>:1902(_get_spec)
        1    0.000    0.000    0.011    0.011 _dbus.py:1(<module>)
    84/41    0.001    0.000    0.010    0.000 module.py:135(__getattr__)
      227    0.003    0.000    0.010    0.000 <frozen importlib._bootstrap>:2016(find_spec)
       10    0.000    0.000    0.010    0.001 <frozen importlib._bootstrap>:1526(source_to_code)
       10    0.010    0.001    0.010    0.001 {built-in method compile}
        4    0.010    0.002    0.010    0.002 {built-in method show}
        4    0.000    0.000    0.009    0.002 wrapper.py:37(addActions)
        1    0.000    0.000    0.009    0.009 importer.py:23(<module>)
        1    0.000    0.000    0.009    0.009 bus.py:23(<module>)
        1    0.000    0.000    0.009    0.009 Unity.py:1(<module>)
        1    0.000    0.000    0.009    0.009 module.py:23(<module>)
       52    0.009    0.000    0.009    0.000 {built-in method pageAction}
       15    0.004    0.000    0.009    0.001 scudcloud.py:297(quicklist)
  188/184    0.003    0.000    0.008    0.000 {built-in method __build_class__}
        1    0.000    0.000    0.008    0.008 types.py:23(<module>)
       15    0.000    0.000    0.008    0.001 __init__.py:301(namedtuple)
        1    0.000    0.000    0.007    0.007 _signalhelper.py:20(<module>)
        1    0.000    0.000    0.006    0.006 inspect.py:27(<module>)
        1    0.000    0.000    0.006    0.006 __init__.py:24(<module>)
      217    0.001    0.000    0.006    0.000 leftpane.py:44(stopAlert)
     2624    0.005    0.000    0.005    0.000 {built-in method type}
       48    0.000    0.000    0.005    0.000 <frozen importlib._bootstrap>:654(_compile_bytecode)
  416/410    0.001    0.000    0.005    0.000 module.py:305(__getattr__)
       55    0.000    0.000    0.005    0.000 systray.py:31(setCounter)
       83    0.005    0.000    0.005    0.000 {method 'set_property' of 'gi._gobject.GObject' objects}
       48    0.005    0.000    0.005    0.000 {built-in method loads}
       21    0.000    0.000    0.005    0.000 re.py:221(compile)
        1    0.000    0.000    0.005    0.005 wrapper.py:1(<module>)
       21    0.000    0.000    0.005    0.000 re.py:277(_compile)
 1148/967    0.001    0.000    0.005    0.000 {built-in method getattr}
       11    0.000    0.000    0.004    0.000 sre_compile.py:563(compile)
       56    0.004    0.000    0.004    0.000 {built-in method setIcon}
        1    0.000    0.000    0.004    0.004 leftpane.py:9(__init__)
        1    0.000    0.000    0.004    0.004 scudcloud.py:95(systray)
      507    0.004    0.000    0.004    0.000 {built-in method page}
      7/5    0.000    0.000    0.003    0.001 module.py:79(get_parent_for_object)
     1358    0.001    0.000    0.003    0.000 <frozen importlib._bootstrap>:50(_path_join)
        7    0.000    0.000    0.003    0.000 module.py:102(get_interfaces_for_object)
        1    0.000    0.000    0.003    0.003 scudcloud:41(parse_arguments)
        6    0.000    0.000    0.003    0.001 leftpane.py:22(show)
      499    0.003    0.000    0.003    0.000 {built-in method currentFrame}
        1    0.000    0.000    0.003    0.003 cookiejar.py:2(<module>)
        1    0.000    0.000    0.003    0.003 GObject.py:24(<module>)
        1    0.000    0.000    0.003    0.003 traceback.py:1(<module>)
        1    0.000    0.000    0.002    0.002 GLib.py:22(<module>)
       11    0.000    0.000    0.002    0.000 sre_parse.py:750(parse)
        1    0.000    0.000    0.002    0.002 linecache.py:6(<module>)
    19/11    0.000    0.000    0.002    0.000 sre_parse.py:363(_parse_sub)
    24/12    0.001    0.000    0.002    0.000 sre_parse.py:441(_parse)
        1    0.000    0.000    0.002    0.002 string.py:15(<module>)
        1    0.000    0.000    0.002    0.002 parse.py:28(<module>)
       11    0.000    0.000    0.002    0.000 sre_compile.py:548(_code)
      470    0.000    0.000    0.002    0.000 <frozen importlib._bootstrap>:68(_path_stat)
     1312    0.002    0.000    0.002    0.000 {eventFilter}
        1    0.000    0.000    0.002    0.002 string.py:61(__init__)
      504    0.002    0.000    0.002    0.000 {built-in method stat}
        1    0.000    0.000    0.002    0.002 connection.py:23(<module>)
        1    0.000    0.000    0.002    0.002 tokenize.py:21(<module>)
      225    0.002    0.000    0.002    0.000 {built-in method widget}
     1358    0.001    0.000    0.002    0.000 <frozen importlib._bootstrap>:52(<listcomp>)
    47/11    0.000    0.000    0.002    0.000 sre_compile.py:70(_compile)
        1    0.000    0.000    0.002    0.002 dis.py:1(<module>)
       58    0.000    0.000    0.002    0.000 <frozen importlib._bootstrap>:1099(create)
        1    0.000    0.000    0.001    0.001 cookiejar.py:6(__init__)
        1    0.000    0.000    0.001    0.001 subprocess.py:345(<module>)
       69    0.001    0.000    0.001    0.000 {method 'get_g_type' of 'gi.RegisteredTypeInfo' objects}
        1    0.001    0.001    0.001    0.001 scudcloud.py:129(addMenu)
       80    0.000    0.000    0.001    0.000 <frozen importlib._bootstrap>:2011(_get_spec)
       11    0.001    0.000    0.001    0.000 {built-in method settings}
        1    0.000    0.000    0.001    0.001 resources.py:1(<module>)
       15    0.000    0.000    0.001    0.000 types.py:212(__init__)
        1    0.000    0.000    0.001    0.001 resources.py:3(Resources)
       41    0.000    0.000    0.001    0.000 <frozen importlib._bootstrap>:2322(__import__)
        1    0.000    0.000    0.001    0.001 proxies.py:26(<module>)
       80    0.000    0.000    0.001    0.000 <frozen importlib._bootstrap>:884(spec_from_file_location)
       58    0.000    0.000    0.001    0.000 <frozen importlib._bootstrap>:1019(init_module_attrs)
        1    0.000    0.000    0.001    0.001 argparse.py:1609(__init__)
       68    0.001    0.000    0.001    0.000 <frozen importlib._bootstrap>:1621(get_data)
        4    0.001    0.000    0.001    0.000 {built-in method setZoomFactor}
       19    0.000    0.000    0.001    0.000 sre_compile.py:227(_compile_charset)
        2    0.000    0.000    0.001    0.001 cookiejar.py:12(save)
       19    0.001    0.000    0.001    0.000 sre_compile.py:255(_optimize_charset)
      107    0.001    0.000    0.001    0.000 <frozen importlib._bootstrap>:790(__init__)
      543    0.000    0.000    0.001    0.000 sre_parse.py:220(get)
       91    0.000    0.000    0.001    0.000 <frozen importlib._bootstrap>:293(_lock_unlock_module)
       98    0.000    0.000    0.001    0.000 <frozen importlib._bootstrap>:261(__enter__)
        1    0.000    0.000    0.001    0.001 scudcloud.py:293(exit)
       22    0.000    0.000    0.001    0.000 types.py:319(__init__)
      175    0.000    0.000    0.001    0.000 <frozen importlib._bootstrap>:78(_path_is_mode_type)
        1    0.000    0.000    0.001    0.001 _expat_introspect_parser.py:26(<module>)
        1    0.000    0.000    0.001    0.001 cookiejar.py:20(load)
      116    0.000    0.000    0.001    0.000 <frozen importlib._bootstrap>:437(cache_from_source)
       11    0.001    0.000    0.001    0.000 {built-in method addToJavaScriptWindowObject}
       15    0.000    0.000    0.001    0.000 wrapper.py:118(isConnected)
      189    0.001    0.000    0.001    0.000 <frozen importlib._bootstrap>:274(_get_module_lock)
        1    0.001    0.001    0.001    0.001 {built-in method setUrl}
      142    0.000    0.000    0.001    0.000 <frozen importlib._bootstrap>:87(_path_isfile)
        1    0.000    0.000    0.001    0.001 {built-in method close}
        1    0.001    0.001    0.001    0.001 {parseCookies}
      602    0.001    0.000    0.001    0.000 sre_parse.py:195(__next)
        1    0.000    0.000    0.001    0.001 selectors.py:5(<module>)
        1    0.000    0.000    0.001    0.001 datetime.py:5(<module>)
       19    0.000    0.000    0.001    0.000 types.py:54(_setup_methods)
        5    0.000    0.000    0.001    0.000 {built-in method open}
        1    0.000    0.000    0.001    0.001 types.py:1(<module>)
     1735    0.001    0.000    0.001    0.000 {built-in method isinstance}
        1    0.000    0.000    0.001    0.001 scudcloud.py:279(closeEvent)
       95    0.000    0.000    0.001    0.000 scudcloud.py:219(current)
     1325    0.001    0.000    0.001    0.000 {method 'format' of 'str' objects}
      116    0.000    0.000    0.001    0.000 <frozen importlib._bootstrap>:824(cached)
        8    0.000    0.000    0.001    0.000 <frozen importlib._bootstrap>:2138(_find_spec_legacy)
     1526    0.000    0.000    0.001    0.000 {method 'join' of 'str' objects}
       82    0.001    0.000    0.001    0.000 {built-in method toRawForm}
        1    0.000    0.000    0.001    0.001 argparse.py:62(<module>)
       95    0.001    0.000    0.001    0.000 {built-in method currentWidget}
        8    0.000    0.000    0.001    0.000 importer.py:41(find_module)
     1353    0.001    0.000    0.001    0.000 <frozen importlib._bootstrap>:518(_verbose_message)
        2    0.000    0.000    0.001    0.000 pkgutil.py:495(extend_path)
       10    0.001    0.000    0.001    0.000 {built-in method setUserStyleSheetUrl}
        6    0.001    0.000    0.001    0.000 {method 'enumerate_versions' of 'gi.Repository' objects}
        1    0.000    0.000    0.001    0.001 Dee.py:1(<module>)
       16    0.000    0.000    0.001    0.000 <frozen importlib._bootstrap>:546(_requires_builtin_wrapper)
       10    0.000    0.000    0.001    0.000 <frozen importlib._bootstrap>:666(_code_to_bytecode)
      218    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:1870(_path_importer_cache)
     2834    0.000    0.000    0.000    0.000 {method 'rstrip' of 'str' objects}
        1    0.000    0.000    0.000    0.000 opcode.py:5(<module>)
        8    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:1287(load_module)
      599    0.000    0.000    0.000    0.000 {built-in method setattr}
        5    0.000    0.000    0.000    0.000 argparse.py:1313(add_argument)
       48    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:599(_validate_bytecode_header)
        3    0.000    0.000    0.000    0.000 gettext.py:512(gettext)
        3    0.000    0.000    0.000    0.000 gettext.py:474(dgettext)
      189    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:192(acquire)
       71    0.000    0.000    0.000    0.000 {method 'connect' of 'gi._gobject.GObject' objects}
        3    0.000    0.000    0.000    0.000 gettext.py:408(translation)
        3    0.000    0.000    0.000    0.000 argparse.py:1232(__init__)
        3    0.000    0.000    0.000    0.000 gettext.py:353(find)
      189    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:217(release)
       10    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:1636(_cache_bytecode)
       58    0.000    0.000    0.000    0.000 {method 'read' of '_io.FileIO' objects}
        8    0.000    0.000    0.000    0.000 {built-in method init_builtin}
      728    0.000    0.000    0.000    0.000 {built-in method hasattr}
       10    0.000    0.000    0.000    0.000 {built-in method dumps}
        4    0.000    0.000    0.000    0.000 wrapper.py:27(configure_proxy)
       15    0.000    0.000    0.000    0.000 types.py:189(__init__)
       52    0.000    0.000    0.000    0.000 posixpath.py:70(join)
        1    0.000    0.000    0.000    0.000 scudcloud.py:85(restore)
        3    0.000    0.000    0.000    0.000 __init__.py:1(<module>)
       98    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:268(__exit__)
        9    0.000    0.000    0.000    0.000 module.py:264(get_introspection_module)
       12    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:2061(_fill_cache)
       10    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:1641(set_data)
      181    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:172(__init__)
       15    0.000    0.000    0.000    0.000 types.py:236(mro)
       15    0.000    0.000    0.000    0.000 types.py:256(mro)
        6    0.000    0.000    0.000    0.000 module.py:121(__init__)
       20    0.000    0.000    0.000    0.000 scudcloud.py:198(enableMenus)
       17    0.000    0.000    0.000    0.000 types.py:69(_setup_fields)
       11    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:1853(_path_hooks)
        1    0.000    0.000    0.000    0.000 threading.py:1(<module>)
       58    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:739(__exit__)
       18    0.000    0.000    0.000    0.000 resources.py:15(get_path)
       11    0.000    0.000    0.000    0.000 sre_compile.py:444(_compile_info)
        6    0.000    0.000    0.000    0.000 types.py:80(_setup_vfuncs)
        5    0.000    0.000    0.000    0.000 argparse.py:2354(_get_formatter)
        5    0.000    0.000    0.000    0.000 argparse.py:160(__init__)
        6    0.000    0.000    0.000    0.000 {method 'require' of 'gi.Repository' objects}
       58    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:1631(path_stats)
       12    0.000    0.000    0.000    0.000 {built-in method listdir}
        1    0.000    0.000    0.000    0.000 {built-in method restoreGeometry}
        1    0.000    0.000    0.000    0.000 notifier.py:10(__init__)
       13    0.000    0.000    0.000    0.000 scudcloud.py:204(createAction)
        1    0.000    0.000    0.000    0.000 {built-in method menuBar}
      154    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:56(_path_split)
        1    0.000    0.000    0.000    0.000 GLib.py:84(_VariantCreator)
       32    0.000    0.000    0.000    0.000 {built-in method setShortcuts}
       12    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:2102(path_hook_for_FileFinder)
1869/1845    0.000    0.000    0.000    0.000 {built-in method len}
      106    0.000    0.000    0.000    0.000 {built-in method any}
        6    0.000    0.000    0.000    0.000 abc.py:132(__new__)
    67/31    0.000    0.000    0.000    0.000 sre_parse.py:152(getwidth)
       60    0.000    0.000    0.000    0.000 {built-in method count}
       18    0.000    0.000    0.000    0.000 {built-in method toString}
        4    0.000    0.000    0.000    0.000 parse.py:286(urlparse)
       97    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:1266(find_spec)
      283    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:2124(__exit__)
        8    0.000    0.000    0.000    0.000 {built-in method value}
      173    0.000    0.000    0.000    0.000 sre_parse.py:142(__getitem__)
      283    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:2120(__enter__)
        1    0.000    0.000    0.000    0.000 _option.py:28(<module>)
       82    0.000    0.000    0.000    0.000 {built-in method setEnabled}
       33    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:92(_path_isdir)
       14    0.000    0.000    0.000    0.000 {built-in method setValue}
        1    0.000    0.000    0.000    0.000 expat.py:1(<module>)
     1250    0.000    0.000    0.000    0.000 {method 'append' of 'list' objects}
        9    0.000    0.000    0.000    0.000 datetime.py:302(__new__)
       15    0.000    0.000    0.000    0.000 __init__.py:77(override)
        1    0.000    0.000    0.000    0.000 scudcloud.py:272(focusInEvent)
        1    0.000    0.000    0.000    0.000 ast.py:26(<module>)
        4    0.000    0.000    0.000    0.000 wrapper.py:128(enableMenus)
       24    0.000    0.000    0.000    0.000 genericpath.py:16(exists)
        5    0.000    0.000    0.000    0.000 {built-in method flags_register_new_gtype_and_add}
       15    0.000    0.000    0.000    0.000 _propertyhelper.py:380(install_properties)
       15    0.000    0.000    0.000    0.000 _signalhelper.py:232(install_signals)
       20    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:1726(is_package)
       86    0.000    0.000    0.000    0.000 __init__.py:366(<genexpr>)
      717    0.000    0.000    0.000    0.000 {method 'rpartition' of 'str' objects}
       12    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:1979(__init__)
        9    0.000    0.000    0.000    0.000 {built-in method connect}
       84    0.000    0.000    0.000    0.000 {method 'find_by_name' of 'gi.Repository' objects}
       15    0.000    0.000    0.000    0.000 __init__.py:57(register)
        1    0.000    0.000    0.000    0.000 exceptions.py:1(<module>)
       58    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:129(_new_module)
       11    0.000    0.000    0.000    0.000 sre_compile.py:406(_mk_bitmap)
        2    0.000    0.000    0.000    0.000 {built-in method hook_up_vfunc_implementation}
       16    0.000    0.000    0.000    0.000 {method 'connect' of 'PyQt4.QtCore.pyqtBoundSignal' objects}
      152    0.000    0.000    0.000    0.000 sre_parse.py:214(match)
       19    0.000    0.000    0.000    0.000 os.py:628(__getitem__)
      419    0.000    0.000    0.000    0.000 {method 'startswith' of 'str' objects}
        4    0.000    0.000    0.000    0.000 {built-in method networkAccessManager}
       15    0.000    0.000    0.000    0.000 __init__.py:26(__setitem__)
       11    0.000    0.000    0.000    0.000 _collections_abc.py:419(get)
      173    0.000    0.000    0.000    0.000 sre_parse.py:150(append)
        4    0.000    0.000    0.000    0.000 {built-in method enum_register_new_gtype_and_add}
       14    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:859(spec_from_loader)
       89    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:1336(find_spec)
        4    0.000    0.000    0.000    0.000 {built-in method addMenu}
        1    0.000    0.000    0.000    0.000 systray.py:27(stopAlert)
       39    0.000    0.000    0.000    0.000 {built-in method __new__ of type object at 0x9e4fc0}
       55    0.000    0.000    0.000    0.000 posixpath.py:38(_get_sep)
       86    0.000    0.000    0.000    0.000 __init__.py:364(<genexpr>)
       96    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:45(_r_long)
       95    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:2187(_sanity_check)
       28    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:147(__exit__)
       26    0.000    0.000    0.000    0.000 {method 'get_methods' of 'StructInfo' objects}
       25    0.000    0.000    0.000    0.000 {built-in method addAction}
      164    0.000    0.000    0.000    0.000 sre_compile.py:107(fixup)
      364    0.000    0.000    0.000    0.000 {built-in method allocate_lock}
       53    0.000    0.000    0.000    0.000 {method 'extend' of 'list' objects}
        5    0.000    0.000    0.000    0.000 {method 'read' of '_io.TextIOWrapper' objects}
        1    0.000    0.000    0.000    0.000 argparse.py:1230(_ActionsContainer)
      472    0.000    0.000    0.000    0.000 {built-in method release_lock}
       11    0.000    0.000    0.000    0.000 sre_compile.py:408(<listcomp>)
        9    0.000    0.000    0.000    0.000 types.py:125(_setup_native_vfuncs)
      379    0.000    0.000    0.000    0.000 {built-in method get_ident}
      8/2    0.000    0.000    0.000    0.000 types.py:170(find_vfunc_conflict_in_bases)
       41    0.000    0.000    0.000    0.000 {built-in method is_builtin}
        1    0.000    0.000    0.000    0.000 token.py:1(<module>)
       73    0.000    0.000    0.000    0.000 {method 'translate' of 'str' objects}
       28    0.000    0.000    0.000    0.000 __init__.py:86(deprecated)
        2    0.000    0.000    0.000    0.000 argparse.py:1360(add_argument_group)
        4    0.000    0.000    0.000    0.000 parse.py:90(_encode_result)
      119    0.000    0.000    0.000    0.000 {method 'get_name' of 'gi.BaseInfo' objects}
      378    0.000    0.000    0.000    0.000 {built-in method acquire_lock}
        8    0.000    0.000    0.000    0.000 {built-in method addSeparator}
       20    0.000    0.000    0.000    0.000 sre_compile.py:418(_simple)
        1    0.000    0.000    0.000    0.000 GLib.py:727(IOChannel)
       82    0.000    0.000    0.000    0.000 {built-in method append}
       10    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:506(_calc_mode)
        8    0.000    0.000    0.000    0.000 parse.py:98(_coerce_args)
       75    0.000    0.000    0.000    0.000 types.py:295(<listcomp>)
        1    0.000    0.000    0.000    0.000 GObject.py:540(Object)
        2    0.000    0.000    0.000    0.000 argparse.py:1539(__init__)
        6    0.000    0.000    0.000    0.000 gettext.py:111(_expand_lang)
       16    0.000    0.000    0.000    0.000 {method 'match' of '_sre.SRE_Pattern' objects}
        1    0.000    0.000    0.000    0.000 _propertyhelper.py:20(<module>)
       11    0.000    0.000    0.000    0.000 sre_parse.py:190(__init__)
        1    0.000    0.000    0.000    0.000 {built-in method listen}
       11    0.000    0.000    0.000    0.000 {fromLocalFile}
      181    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:288(cb)
        1    0.000    0.000    0.000    0.000 qsingleapplication.py:24(<module>)
        4    0.000    0.000    0.000    0.000 parse.py:119(encode)
       98    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:257(__init__)
       58    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:842(parent)
       19    0.000    0.000    0.000    0.000 os.py:704(encode)
      186    0.000    0.000    0.000    0.000 {method 'endswith' of 'str' objects}
        1    0.000    0.000    0.000    0.000 token.py:71(<dictcomp>)
        3    0.000    0.000    0.000    0.000 __init__.py:1769(getLogger)
      232    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:742(<genexpr>)
        1    0.000    0.000    0.000    0.000 argparse.py:1736(parse_args)
       89    0.000    0.000    0.000    0.000 {built-in method is_frozen}
        1    0.000    0.000    0.000    0.000 systray.py:1(<module>)
        1    0.000    0.000    0.000    0.000 argparse.py:1743(parse_known_args)
       82    0.000    0.000    0.000    0.000 {built-in method isSessionCookie}
       58    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:732(__enter__)
        3    0.000    0.000    0.000    0.000 __init__.py:1127(getLogger)
        9    0.000    0.000    0.000    0.000 genericpath.py:27(isfile)
        7    0.000    0.000    0.000    0.000 types.py:58(_setup_class_methods)
       20    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:40(_w_long)
        1    0.000    0.000    0.000    0.000 <string>:1(<module>)
        8    0.000    0.000    0.000    0.000 {built-in method mkdir}
        6    0.000    0.000    0.000    0.000 abc.py:135(<setcomp>)
        1    0.000    0.000    0.000    0.000 datetime.py:1808(timezone)
      100    0.000    0.000    0.000    0.000 {method 'replace' of 'str' objects}
        4    0.000    0.000    0.000    0.000 parse.py:319(urlsplit)
        5    0.000    0.000    0.000    0.000 argparse.py:1716(_add_action)
       34    0.000    0.000    0.000    0.000 {built-in method getcwd}
      227    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:34(_relax_case)
        2    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:99(_write_atomic)
       60    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:1591(__init__)
       92    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:1000(__init__)
        1    0.000    0.000    0.000    0.000 threading.py:1194(__init__)
        8    0.000    0.000    0.000    0.000 {built-in method url}
       58    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:728(__init__)
        5    0.000    0.000    0.000    0.000 argparse.py:1561(_add_action)
       33    0.000    0.000    0.000    0.000 __init__.py:18(assign)
        5    0.000    0.000    0.000    0.000 _bootlocale.py:23(getpreferredencoding)
        4    0.000    0.000    0.000    0.000 parse.py:143(hostname)
       34    0.000    0.000    0.000    0.000 argparse.py:1284(register)
      100    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:1729(<genexpr>)
       75    0.000    0.000    0.000    0.000 sre_parse.py:138(__len__)
       10    0.000    0.000    0.000    0.000 {built-in method maketrans}
        7    0.000    0.000    0.000    0.000 {built-in method setShortcut}
        2    0.000    0.000    0.000    0.000 {built-in method get_default}
        1    0.000    0.000    0.000    0.000 __future__.py:48(<module>)
       94    0.000    0.000    0.000    0.000 {method 'get' of 'dict' objects}
        9    0.000    0.000    0.000    0.000 pkgutil.py:397(get_importer)
        1    0.000    0.000    0.000    0.000 {built-in method setLayout}
        1    0.000    0.000    0.000    0.000 {built-in method restoreState}
       96    0.000    0.000    0.000    0.000 {built-in method from_bytes}
        2    0.000    0.000    0.000    0.000 {built-in method allCookies}
        5    0.000    0.000    0.000    0.000 argparse.py:1370(_add_action)
       75    0.000    0.000    0.000    0.000 {method 'find' of 'bytearray' objects}
       47    0.000    0.000    0.000    0.000 sre_parse.py:90(__init__)
        1    0.000    0.000    0.000    0.000 argparse.py:1778(_parse_known_args)
        4    0.000    0.000    0.000    0.000 parse.py:94(_decode_args)
      107    0.000    0.000    0.000    0.000 {built-in method min}
      108    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:1985(<genexpr>)
        1    0.000    0.000    0.000    0.000 wrapper.py:11(Wrapper)
        9    0.000    0.000    0.000    0.000 {built-in method host}
      101    0.000    0.000    0.000    0.000 opcode.py:41(def_op)
        4    0.000    0.000    0.000    0.000 parse.py:208(_hostinfo)
        1    0.000    0.000    0.000    0.000 argparse.py:153(HelpFormatter)
       39    0.000    0.000    0.000    0.000 {method 'get' of 'mappingproxy' objects}
        1    0.000    0.000    0.000    0.000 _propertyhelper.py:51(Property)
       15    0.000    0.000    0.000    0.000 {built-in method repr}
       28    0.000    0.000    0.000    0.000 parse.py:120(<genexpr>)
        5    0.000    0.000    0.000    0.000 codecs.py:316(decode)
      168    0.000    0.000    0.000    0.000 {built-in method getlower}
        9    0.000    0.000    0.000    0.000 {built-in method SIGNAL}
        5    0.000    0.000    0.000    0.000 {built-in method nl_langinfo}
        5    0.000    0.000    0.000    0.000 argparse.py:1450(_get_optional_kwargs)
       19    0.000    0.000    0.000    0.000 _weakrefset.py:36(__init__)
       43    0.000    0.000    0.000    0.000 {method 'encode' of 'str' objects}
      112    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:148(<genexpr>)
        1    0.000    0.000    0.000    0.000 _error.py:30(<module>)
        1    0.000    0.000    0.000    0.000 {built-in method flags_add}
        1    0.000    0.000    0.000    0.000 _constants.py:20(<module>)
       12    0.000    0.000    0.000    0.000 sre_parse.py:265(_class_escape)
        3    0.000    0.000    0.000    0.000 datetime.py:1300(__new__)
        1    0.000    0.000    0.000    0.000 _signalhelper.py:34(Signal)
        5    0.000    0.000    0.000    0.000 argparse.py:581(_format_args)
       48    0.000    0.000    0.000    0.000 {built-in method _fix_co_filename}
        4    0.000    0.000    0.000    0.000 sre_compile.py:411(_bytes_to_codes)
       36    0.000    0.000    0.000    0.000 {method 'items' of 'mappingproxy' objects}
        7    0.000    0.000    0.000    0.000 {method 'get_methods' of 'ObjectInfo' objects}
        5    0.000    0.000    0.000    0.000 datetime.py:646(__new__)
       86    0.000    0.000    0.000    0.000 {method '__contains__' of 'frozenset' objects}
        7    0.000    0.000    0.000    0.000 {built-in method setFixedWidth}
        2    0.000    0.000    0.000    0.000 _collections_abc.py:426(__contains__)
        5    0.000    0.000    0.000    0.000 GObject.py:530(_signalmethod)
      220    0.000    0.000    0.000    0.000 {method 'is_constructor' of 'gi.FunctionInfo' objects}
       12    0.000    0.000    0.000    0.000 {built-in method setVisible}
        1    0.000    0.000    0.000    0.000 scudcloud.py:107(readZoom)
       28    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:144(__enter__)
        1    0.000    0.000    0.000    0.000 threading.py:761(__init__)
        1    0.000    0.000    0.000    0.000 {built-in method setWindowTitle}
        1    0.000    0.000    0.000    0.000 __init__.py:1049(__init__)
       10    0.000    0.000    0.000    0.000 sre_parse.py:307(_escape)
        3    0.000    0.000    0.000    0.000 __init__.py:1178(_fixupParents)
       24    0.000    0.000    0.000    0.000 {method 'get_value' of 'gi.ConstantInfo' objects}
        6    0.000    0.000    0.000    0.000 {built-in method setAttribute}
        1    0.000    0.000    0.000    0.000 {built-in method setApplicationName}
       22    0.000    0.000    0.000    0.000 sre_compile.py:545(isstring)
        1    0.000    0.000    0.000    0.000 leftpane.py:7(LeftPane)
        1    0.000    0.000    0.000    0.000 posixpath.py:221(expanduser)
        1    0.000    0.000    0.000    0.000 __init__.py:759(__init__)
        1    0.000    0.000    0.000    0.000 datetime.py:485(__neg__)
        1    0.000    0.000    0.000    0.000 argparse.py:1055(_SubParsersAction)
       28    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:141(__init__)
        4    0.000    0.000    0.000    0.000 {built-in method setCookieJar}
        1    0.000    0.000    0.000    0.000 docstring.py:23(<module>)
       12    0.000    0.000    0.000    0.000 {method 'get_vfuncs' of 'ObjectInfo' objects}
      172    0.000    0.000    0.000    0.000 {built-in method ord}
       30    0.000    0.000    0.000    0.000 {method 'extend' of 'bytearray' objects}
        4    0.000    0.000    0.000    0.000 __init__.py:1234(__init__)
        1    0.000    0.000    0.000    0.000 _option.py:62(Option)
        1    0.000    0.000    0.000    0.000 {built-in method saveGeometry}
       90    0.000    0.000    0.000    0.000 {method 'isidentifier' of 'str' objects}
        5    0.000    0.000    0.000    0.000 {built-in method pyqtSlot}
        5    0.000    0.000    0.000    0.000 codecs.py:306(__init__)
        5    0.000    0.000    0.000    0.000 {built-in method _deco}
        9    0.000    0.000    0.000    0.000 types.py:74(_setup_constants)
       19    0.000    0.000    0.000    0.000 tokenize.py:109(group)
        4    0.000    0.000    0.000    0.000 argparse.py:836(__init__)
       11    0.000    0.000    0.000    0.000 sre_parse.py:738(fix_flags)
        9    0.000    0.000    0.000    0.000 {built-in method round}
       73    0.000    0.000    0.000    0.000 {method 'get_name_unescaped' of 'gi.BaseInfo' objects}
        8    0.000    0.000    0.000    0.000 <string>:12(__new__)
       58    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:1616(get_filename)
        6    0.000    0.000    0.000    0.000 locale.py:373(normalize)
        7    0.000    0.000    0.000    0.000 {method 'get_parent' of 'ObjectInfo' objects}
      131    0.000    0.000    0.000    0.000 {built-in method globals}
       11    0.000    0.000    0.000    0.000 sre_parse.py:67(__init__)
       24    0.000    0.000    0.000    0.000 {built-in method type_from_name}
        1    0.000    0.000    0.000    0.000 scudcloud:34(load_settings)
       20    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:1697(__init__)
       73    0.000    0.000    0.000    0.000 {method 'get_value' of 'gi.ValueInfo' objects}
       10    0.000    0.000    0.000    0.000 {method 'get_values' of 'gi.EnumInfo' objects}
        1    0.000    0.000    0.000    0.000 datetime.py:1290(datetime)
       10    0.000    0.000    0.000    0.000 {method 'get_fields' of 'StructInfo' objects}
       32    0.000    0.000    0.000    0.000 {method 'get_namespace' of 'gi.BaseInfo' objects}
        1    0.000    0.000    0.000    0.000 scudcloud.py:23(ScudCloud)
        2    0.000    0.000    0.000    0.000 {method 'get_methods' of 'InterfaceInfo' objects}
        1    0.000    0.000    0.000    0.000 <string>:5(_Instruction)
       15    0.000    0.000    0.000    0.000 types.py:195(_type_register)
        1    0.000    0.000    0.000    0.000 <string>:5(FullArgSpec)
       20    0.000    0.000    0.000    0.000 {method 'to_bytes' of 'int' objects}
        1    0.000    0.000    0.000    0.000 GLib.py:615(Idle)
        1    0.000    0.000    0.000    0.000 <string>:5(TokenInfo)
       11    0.000    0.000    0.000    0.000 opcode.py:45(name_op)
       16    0.000    0.000    0.000    0.000 {method 'split' of 'str' objects}
        2    0.000    0.000    0.000    0.000 datetime.py:1002(__new__)
        5    0.000    0.000    0.000    0.000 argparse.py:1486(_pop_action_class)
        1    0.000    0.000    0.000    0.000 threading.py:742(Thread)
        1    0.000    0.000    0.000    0.000 <string>:5(SignalQuery)
        1    0.000    0.000    0.000    0.000 {built-in method setWindowIcon}
       11    0.000    0.000    0.000    0.000 {method 'translate' of 'bytearray' objects}
        1    0.000    0.000    0.000    0.000 <string>:5(ParseResult)
        1    0.000    0.000    0.000    0.000 datetime.py:616(date)
        1    0.000    0.000    0.000    0.000 {built-in method setAllCookies}
        6    0.000    0.000    0.000    0.000 sre_parse.py:72(opengroup)
       11    0.000    0.000    0.000    0.000 argparse.py:1288(_registry_get)
        5    0.000    0.000    0.000    0.000 {built-in method utf_8_decode}
       73    0.000    0.000    0.000    0.000 {method 'add' of 'set' objects}
        1    0.000    0.000    0.000    0.000 threading.py:507(set)
        1    0.000    0.000    0.000    0.000 datetime.py:283(timedelta)
        1    0.000    0.000    0.000    0.000 __init__.py:1219(Logger)
        5    0.000    0.000    0.000    0.000 datetime.py:252(_check_date_fields)
        1    0.000    0.000    0.000    0.000 <string>:5(SelectorKey)
       21    0.000    0.000    0.000    0.000 {method 'is_a' of 'gobject.GType' objects}
        4    0.000    0.000    0.000    0.000 {built-in method setLinkDelegationPolicy}
        1    0.000    0.000    0.000    0.000 <string>:5(Traceback)
       33    0.000    0.000    0.000    0.000 __init__.py:17(wraps)
       12    0.000    0.000    0.000    0.000 {method 'get_typelib_path' of 'gi.Repository' objects}
        1    0.000    0.000    0.000    0.000 genericpath.py:39(isdir)
       12    0.000    0.000    0.000    0.000 {method 'rsplit' of 'str' objects}
        1    0.000    0.000    0.000    0.000 weakref.py:101(__init__)
        1    0.000    0.000    0.000    0.000 <string>:5(Attribute)
       20    0.000    0.000    0.000    0.000 {method 'find' of 'str' objects}
        1    0.000    0.000    0.000    0.000 <string>:5(ModuleInfo)
        1    0.000    0.000    0.000    0.000 <string>:5(SplitResult)
        1    0.000    0.000    0.000    0.000 <string>:5(ArgSpec)
       34    0.000    0.000    0.000    0.000 {method 'items' of 'dict' objects}
        5    0.000    0.000    0.000    0.000 argparse.py:794(__init__)
        1    0.000    0.000    0.000    0.000 threading.py:493(__init__)
        1    0.000    0.000    0.000    0.000 GLib.py:566(Source)
        1    0.000    0.000    0.000    0.000 lowlevel.py:23(<module>)
        1    0.000    0.000    0.000    0.000 bus.py:101(BusConnection)
        6    0.000    0.000    0.000    0.000 __init__.py:109(get_required_version)
        1    0.000    0.000    0.000    0.000 <string>:5(ClosureVars)
        1    0.000    0.000    0.000    0.000 <string>:5(ArgInfo)
        1    0.000    0.000    0.000    0.000 datetime.py:978(time)
        1    0.000    0.000    0.000    0.000 argparse.py:1591(ArgumentParser)
        1    0.000    0.000    0.000    0.000 proxies.py:172(ProxyObject)
        1    0.000    0.000    0.000    0.000 subprocess.py:742(Popen)
       81    0.000    0.000    0.000    0.000 {built-in method abs}
       58    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:850(has_location)
        1    0.000    0.000    0.000    0.000 threading.py:352(notify_all)
        6    0.000    0.000    0.000    0.000 opcode.py:53(jabs_op)
        1    0.000    0.000    0.000    0.000 _bootlocale.py:5(<module>)
        1    0.000    0.000    0.000    0.000 <string>:5(Arguments)
        6    0.000    0.000    0.000    0.000 module.py:287(__init__)
        1    0.000    0.000    0.000    0.000 __init__.py:740(_addHandlerRef)
        1    0.000    0.000    0.000    0.000 threading.py:210(__init__)
        1    0.000    0.000    0.000    0.000 selectors.py:70(BaseSelector)
        5    0.000    0.000    0.000    0.000 inspect.py:2067(__new__)
        1    0.000    0.000    0.000    0.000 __init__.py:750(Handler)
        1    0.000    0.000    0.000    0.000 proxies.py:492(Interface)
        7    0.000    0.000    0.000    0.000 {method 'get_class_struct' of 'ObjectInfo' objects}
        1    0.000    0.000    0.000    0.000 {built-in method setToolTip}
        5    0.000    0.000    0.000    0.000 os.py:708(decode)
        6    0.000    0.000    0.000    0.000 opcode.py:49(jrel_op)
        1    0.000    0.000    0.000    0.000 threading.py:570(Barrier)
        6    0.000    0.000    0.000    0.000 {method 'get_version' of 'gi.Repository' objects}
        5    0.000    0.000    0.000    0.000 argparse.py:574(format)
        8    0.000    0.000    0.000    0.000 module.py:183(<genexpr>)
        1    0.000    0.000    0.000    0.000 __init__.py:1542(__init__)
        1    0.000    0.000    0.000    0.000 <string>:5(DefragResult)
        1    0.000    0.000    0.000    0.000 posixpath.py:145(dirname)
        6    0.000    0.000    0.000    0.000 sre_parse.py:83(closegroup)
        3    0.000    0.000    0.000    0.000 argparse.py:1490(_get_handler)
        1    0.000    0.000    0.000    0.000 argparse.py:1923(consume_positionals)
       22    0.000    0.000    0.000    0.000 {built-in method chr}
        1    0.000    0.000    0.000    0.000 argparse.py:1012(__init__)
       10    0.000    0.000    0.000    0.000 {method 'get_methods' of 'gi.EnumInfo' objects}
        1    0.000    0.000    0.000    0.000 {built-in method saveState}
        1    0.000    0.000    0.000    0.000 GObject.py:207(Value)
        7    0.000    0.000    0.000    0.000 {method 'get_fields' of 'ObjectInfo' objects}
        8    0.000    0.000    0.000    0.000 {method 'rfind' of 'str' objects}
        8    0.000    0.000    0.000    0.000 __future__.py:77(__init__)
       41    0.000    0.000    0.000    0.000 {method 'partition' of 'str' objects}
       45    0.000    0.000    0.000    0.000 {built-in method divmod}
        5    0.000    0.000    0.000    0.000 __init__.py:182(_checkLevel)
       20    0.000    0.000    0.000    0.000 sre_parse.py:146(__setitem__)
       52    0.000    0.000    0.000    0.000 {method 'remove' of 'list' objects}
       17    0.000    0.000    0.000    0.000 {method 'decode' of 'bytes' objects}
        4    0.000    0.000    0.000    0.000 __init__.py:220(_releaseLock)
       13    0.000    0.000    0.000    0.000 {built-in method max}
        1    0.000    0.000    0.000    0.000 __init__.py:1550(LoggerAdapter)
        1    0.000    0.000    0.000    0.000 inspect.py:2086(Parameter)
        4    0.000    0.000    0.000    0.000 __init__.py:211(_acquireLock)
       41    0.000    0.000    0.000    0.000 {method 'setdefault' of 'dict' objects}
        1    0.000    0.000    0.000    0.000 threading.py:198(Condition)
        2    0.000    0.000    0.000    0.000 {built-in method addWidget}
        1    0.000    0.000    0.000    0.000 _dbus.py:47(Bus)
        1    0.000    0.000    0.000    0.000 {built-in method setContentsMargins}
        1    0.000    0.000    0.000    0.000 scudcloud.py:213(domain)
        1    0.000    0.000    0.000    0.000 connection.py:248(Connection)
        5    0.000    0.000    0.000    0.000 codecs.py:257(__init__)
        1    0.000    0.000    0.000    0.000 _expat_introspect_parser.py:29(_Parser)
        5    0.000    0.000    0.000    0.000 datetime.py:263(_check_time_fields)
        1    0.000    0.000    0.000    0.000 threading.py:329(notify)
       15    0.000    0.000    0.000    0.000 {built-in method _getframe}
        1    0.000    0.000    0.000    0.000 inspect.py:2298(Signature)
        1    0.000    0.000    0.000    0.000 _error.py:30(GError)
       12    0.000    0.000    0.000    0.000 parse.py:96(<genexpr>)
        1    0.000    0.000    0.000    0.000 Dee.py:53(Model)
        1    0.000    0.000    0.000    0.000 connection.py:53(SignalMatch)
        1    0.000    0.000    0.000    0.000 threading.py:897(_set_tstate_lock)
        5    0.000    0.000    0.000    0.000 argparse.py:205(__init__)
        4    0.000    0.000    0.000    0.000 {method 'rpartition' of 'bytes' objects}
        1    0.000    0.000    0.000    0.000 parse.py:273(_fix_result_transcoding)
        1    0.000    0.000    0.000    0.000 posixpath.py:136(basename)
        4    0.000    0.000    0.000    0.000 {method 'tolist' of 'memoryview' objects}
        2    0.000    0.000    0.000    0.000 tokenize.py:111(maybe)
        1    0.000    0.000    0.000    0.000 __init__.py:392(StringTemplateStyle)
        1    0.000    0.000    0.000    0.000 re.py:239(escape)
        5    0.000    0.000    0.000    0.000 argparse.py:565(_metavar_formatter)
        1    0.000    0.000    0.000    0.000 {built-in method setCheckable}
        4    0.000    0.000    0.000    0.000 {method 'acquire' of '_thread.RLock' objects}
        1    0.000    0.000    0.000    0.000 argparse.py:2288(_get_value)
        2    0.000    0.000    0.000    0.000 {built-in method isActiveWindow}
        1    0.000    0.000    0.000    0.000 inspect.py:2211(BoundArguments)
        1    0.000    0.000    0.000    0.000 __init__.py:460(__init__)
        1    0.000    0.000    0.000    0.000 {built-in method setCentralWidget}
       13    0.000    0.000    0.000    0.000 {built-in method callable}
        1    0.000    0.000    0.000    0.000 _compat.py:3(<module>)
        1    0.000    0.000    0.000    0.000 {built-in method windowState}
        1    0.000    0.000    0.000    0.000 __init__.py:416(Formatter)
        7    0.000    0.000    0.000    0.000 {method 'get_interfaces' of 'ObjectInfo' objects}
        1    0.000    0.000    0.000    0.000 {built-in method installEventFilter}
        1    0.000    0.000    0.000    0.000 GLib.py:226(Variant)
        4    0.000    0.000    0.000    0.000 sre_parse.py:140(__delitem__)
        3    0.000    0.000    0.000    0.000 datetime.py:1832(_create)
        1    0.000    0.000    0.000    0.000 argparse.py:892(_StoreTrueAction)
        5    0.000    0.000    0.000    0.000 datetime.py:275(_check_tzinfo_arg)
        1    0.000    0.000    0.000    0.000 _option.py:146(OptionGroup)
        1    0.000    0.000    0.000    0.000 Unity.py:11(ScopeSearchBase)
        1    0.000    0.000    0.000    0.000 types.py:53(MetaClassHelper)
        1    0.000    0.000    0.000    0.000 qsingleapplication.py:35(QSingleApplication)
        4    0.000    0.000    0.000    0.000 {method 'release' of '_thread.RLock' objects}
        1    0.000    0.000    0.000    0.000 threading.py:482(Event)
        1    0.000    0.000    0.000    0.000 __init__.py:1116(__init__)
        1    0.000    0.000    0.000    0.000 {built-in method setChecked}
        1    0.000    0.000    0.000    0.000 string.py:162(Formatter)
        3    0.000    0.000    0.000    0.000 datetime.py:40(_days_before_year)
        1    0.000    0.000    0.000    0.000 __init__.py:986(FileHandler)
       10    0.000    0.000    0.000    0.000 {method 'pop' of 'dict' objects}
        1    0.000    0.000    0.000    0.000 {built-in method exit}
        1    0.000    0.000    0.000    0.000 threading.py:1162(Timer)
        1    0.000    0.000    0.000    0.000 tokenize.py:223(Untokenizer)
        1    0.000    0.000    0.000    0.000 {built-in method sysconf}
        1    0.000    0.000    0.000    0.000 {built-in method setContextMenu}
        4    0.000    0.000    0.000    0.000 abc.py:9(abstractmethod)
        1    0.000    0.000    0.000    0.000 Dee.py:9(RowWrapper)
        1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}
        1    0.000    0.000    0.000    0.000 selectors.py:50(_SelectorMapping)
        1    0.000    0.000    0.000    0.000 argparse.py:2074(_match_arguments_partial)
        2    0.000    0.000    0.000    0.000 {method 'setter' of 'property' objects}
        1    0.000    0.000    0.000    0.000 parse.py:163(_NetlocResultMixinStr)
        7    0.000    0.000    0.000    0.000 {method 'get_constants' of 'ObjectInfo' objects}
        1    0.000    0.000    0.000    0.000 __init__.py:668(Filterer)
        1    0.000    0.000    0.000    0.000 {built-in method activateWindow}
        1    0.000    0.000    0.000    0.000 threading.py:249(_is_owned)
        5    0.000    0.000    0.000    0.000 __init__.py:673(__init__)
        2    0.000    0.000    0.000    0.000 {built-in method register_interface_info}
        1    0.000    0.000    0.000    0.000 selectors.py:196(_BaseSelectorImpl)
        1    0.000    0.000    0.000    0.000 weakref.py:255(update)
        1    0.000    0.000    0.000    0.000 dis.py:401(Bytecode)
        1    0.000    0.000    0.000    0.000 sre_compile.py:423(_generate_overlap_table)
        1    0.000    0.000    0.000    0.000 parse.py:131(_NetlocResultMixinBase)
        1    0.000    0.000    0.000    0.000 threading.py:88(_RLock)
        1    0.000    0.000    0.000    0.000 tokenize.py:110(any)
        5    0.000    0.000    0.000    0.000 argparse.py:1499(_check_conflict)
        1    0.000    0.000    0.000    0.000 __future__.py:76(_Feature)
        1    0.000    0.000    0.000    0.000 _signalhelper.py:84(BoundSignal)
        1    0.000    0.000    0.000    0.000 __init__.py:589(BufferingFormatter)
        1    0.000    0.000    0.000    0.000 selectors.py:385(EpollSelector)
        1    0.000    0.000    0.000    0.000 argparse.py:1728(_get_positional_actions)
        5    0.000    0.000    0.000    0.000 datetime.py:45(_days_in_month)
        1    0.000    0.000    0.000    0.000 __init__.py:788(createLock)
        1    0.000    0.000    0.000    0.000 types.py:210(GObjectMeta)
        3    0.000    0.000    0.000    0.000 {method 'get_arguments' of 'gi.CallableInfo' objects}
        1    0.000    0.000    0.000    0.000 selectors.py:334(PollSelector)
        1    0.000    0.000    0.000    0.000 _weakrefset.py:81(add)
        1    0.000    0.000    0.000    0.000 __init__.py:1043(_StderrHandler)
        1    0.000    0.000    0.000    0.000 {built-in method time}
        1    0.000    0.000    0.000    0.000 threading.py:1192(_MainThread)
        1    0.000    0.000    0.000    0.000 selectors.py:281(SelectSelector)
        1    0.000    0.000    0.000    0.000 argparse.py:1151(FileType)
        1    0.000    0.000    0.000    0.000 argparse.py:203(_Section)
        1    0.000    0.000    0.000    0.000 __init__.py:25(_Registry)
        1    0.000    0.000    0.000    0.000 inspect.py:2062(_empty)
        1    0.000    0.000    0.000    0.000 _option.py:243(OptionParser)
        1    0.000    0.000    0.000    0.000 inspect.py:2066(_ParameterKind)
        1    0.000    0.000    0.000    0.000 ast.py:258(NodeTransformer)
        1    0.000    0.000    0.000    0.000 parse.py:243(SplitResult)
        1    0.000    0.000    0.000    0.000 Unity.py:27(ResultPreviewer)
        8    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:1311(is_package)
        1    0.000    0.000    0.000    0.000 GObject.py:519(_FreezeNotifyManager)
        1    0.000    0.000    0.000    0.000 subprocess.py:366(CalledProcessError)
        1    0.000    0.000    0.000    0.000 __init__.py:1536(RootLogger)
        1    0.000    0.000    0.000    0.000 threading.py:724(BrokenBarrierError)
        1    0.000    0.000    0.000    0.000 argparse.py:963(_AppendConstAction)
        1    0.000    0.000    0.000    0.000 __init__.py:58(_DummyStaticModule)
        1    0.000    0.000    0.000    0.000 GLib.py:629(Timeout)
        1    0.000    0.000    0.000    0.000 exceptions.py:129(NameExistsException)
        1    0.000    0.000    0.000    0.000 exceptions.py:93(MissingErrorHandlerException)
        2    0.000    0.000    0.000    0.000 {built-in method id}
        1    0.000    0.000    0.000    0.000 exceptions.py:107(ValidationException)
        1    0.000    0.000    0.000    0.000 parse.py:115(_ResultMixinStr)
        1    0.000    0.000    0.000    0.000 Unity.py:124(SearchContext)
        1    0.000    0.000    0.000    0.000 threading.py:894(_set_ident)
        1    0.000    0.000    0.000    0.000 _dbus.py:179(SystemBus)
        1    0.000    0.000    0.000    0.000 proxies.py:50(_DeferredMethod)
        1    0.000    0.000    0.000    0.000 module.py:113(IntrospectionModule)
        1    0.000    0.000    0.000    0.000 tokenize.py:96(TokenInfo)
        1    0.000    0.000    0.000    0.000 exceptions.py:100(MissingReplyHandlerException)
        2    0.000    0.000    0.000    0.000 __init__.py:1079(append)
        1    0.000    0.000    0.000    0.000 datetime.py:909(tzinfo)
        1    0.000    0.000    0.000    0.000 {built-in method issubclass}
        1    0.000    0.000    0.000    0.000 bus.py:58(NameOwnerWatch)
        6    0.000    0.000    0.000    0.000 {method 'reverse' of 'list' objects}
        2    0.000    0.000    0.000    0.000 threading.py:75(RLock)
        1    0.000    0.000    0.000    0.000 exceptions.py:33(DBusException)
        1    0.000    0.000    0.000    0.000 types.py:187(_GObjectMetaBase)
        1    0.000    0.000    0.000    0.000 threading.py:1211(_DummyThread)
        1    0.000    0.000    0.000    0.000 argparse.py:1212(__init__)
        1    0.000    0.000    0.000    0.000 {built-in method setSpacing}
        1    0.000    0.000    0.000    0.000 cookiejar.py:4(PersistentCookieJar)
        1    0.000    0.000    0.000    0.000 parse.py:235(DefragResult)
        4    0.000    0.000    0.000    0.000 {method 'cast' of 'memoryview' objects}
        1    0.000    0.000    0.000    0.000 __init__.py:231(LogRecord)
        1    0.000    0.000    0.000    0.000 Dee.py:178(ModelIter)
        1    0.000    0.000    0.000    0.000 GLib.py:557(MainContext)
        1    0.000    0.000    0.000    0.000 dis.py:159(Instruction)
        1    0.000    0.000    0.000    0.000 __init__.py:368(PercentStyle)
        1    0.000    0.000    0.000    0.000 proxies.py:76(_ProxyMethod)
        1    0.000    0.000    0.000    0.000 argparse.py:642(RawDescriptionHelpFormatter)
        1    0.000    0.000    0.000    0.000 argparse.py:1571(_MutuallyExclusiveGroup)
        1    0.000    0.000    0.000    0.000 tokenize.py:218(TokenError)
        1    0.000    0.000    0.000    0.000 argparse.py:1029(_VersionAction)
        1    0.000    0.000    0.000    0.000 __init__.py:1111(Manager)
        1    0.000    0.000    0.000    0.000 Unity.py:114(ScopeResult)
        1    0.000    0.000    0.000    0.000 _version.py:2(<module>)
        1    0.000    0.000    0.000    0.000 argparse.py:1729(<listcomp>)
        1    0.000    0.000    0.000    0.000 notifier.py:8(Notifier)
        1    0.000    0.000    0.000    0.000 argparse.py:869(_StoreConstAction)
        1    0.000    0.000    0.000    0.000 argparse.py:834(_StoreAction)
        1    0.000    0.000    0.000    0.000 __init__.py:383(StrFormatStyle)
        1    0.000    0.000    0.000    0.000 parse.py:254(DefragResultBytes)
        1    0.000    0.000    0.000    0.000 argparse.py:664(ArgumentDefaultsHelpFormatter)
        1    0.000    0.000    0.000    0.000 posixpath.py:49(normcase)
        8    0.000    0.000    0.000    0.000 {method 'partition' of 'bytes' objects}
        3    0.000    0.000    0.000    0.000 {method 'acquire' of '_thread.lock' objects}
        1    0.000    0.000    0.000    0.000 argparse.py:734(ArgumentTypeError)
        1    0.000    0.000    0.000    0.000 {built-in method _set_sentinel}
        1    0.000    0.000    0.000    0.000 __init__.py:1073(__init__)
        1    0.000    0.000    0.000    0.000 module.py:278(DynamicModule)
        1    0.000    0.000    0.000    0.000 parse.py:262(SplitResultBytes)
        1    0.000    0.000    0.000    0.000 GLib.py:521(MainLoop)
       10    0.000    0.000    0.000    0.000 {method 'is_flags' of 'gi.EnumInfo' objects}
        1    0.000    0.000    0.000    0.000 argparse.py:1537(_ArgumentGroup)
        1    0.000    0.000    0.000    0.000 string.py:73(Template)
        1    0.000    0.000    0.000    0.000 argparse.py:118(_AttributeHolder)
        1    0.000    0.000    0.000    0.000 argparse.py:714(ArgumentError)
        1    0.000    0.000    0.000    0.000 parse.py:123(_ResultMixinBytes)
        1    0.000    0.000    0.000    0.000 parse.py:193(_NetlocResultMixinBytes)
        1    0.000    0.000    0.000    0.000 __init__.py:1067(PlaceHolder)
        1    0.000    0.000    0.000    0.000 argparse.py:926(_AppendAction)
        1    0.000    0.000    0.000    0.000 tokenize.py:220(StopTokenizing)
        1    0.000    0.000    0.000    0.000 GObject.py:683(Binding)
        1    0.000    0.000    0.000    0.000 _dbus.py:213(StarterBus)
        1    0.000    0.000    0.000    0.000 __init__.py:935(StreamHandler)
        1    0.000    0.000    0.000    0.000 threading.py:444(BoundedSemaphore)
        1    0.000    0.000    0.000    0.000 {built-in method _install_metaclass}
        1    0.000    0.000    0.000    0.000 parse.py:630(Quoter)
        2    0.000    0.000    0.000    0.000 {method 'get_constants' of 'InterfaceInfo' objects}
        1    0.000    0.000    0.000    0.000 argparse.py:1010(_HelpAction)
        1    0.000    0.000    0.000    0.000 {built-in method iter}
        1    0.000    0.000    0.000    0.000 argparse.py:743(Action)
        1    0.000    0.000    0.000    0.000 GLib.py:808(PollFD)
        1    0.000    0.000    0.000    0.000 argparse.py:1205(Namespace)
        1    0.000    0.000    0.000    0.000 __init__.py:631(Filter)
        1    0.000    0.000    0.000    0.000 threading.py:364(Semaphore)
        1    0.000    0.000    0.000    0.000 systray.py:4(Systray)
        1    0.000    0.000    0.000    0.000 __init__.py:1898(NullHandler)
        1    0.000    0.000    0.000    0.000 exceptions.py:114(IntrospectionParserException)
        1    0.000    0.000    0.000    0.000 GObject.py:431(_HandlerBlockManager)
        1    0.000    0.000    0.000    0.000 importer.py:34(DynamicImporter)
        1    0.000    0.000    0.000    0.000 types.py:316(StructMeta)
        4    0.000    0.000    0.000    0.000 parse.py:87(_noop)
        1    0.000    0.000    0.000    0.000 Unity.py:44(ResultSet)
        1    0.000    0.000    0.000    0.000 exceptions.py:121(UnknownMethodException)
        1    0.000    0.000    0.000    0.000 docstring.py:37(set_doc_string_generator)
        1    0.000    0.000    0.000    0.000 argparse.py:596(<listcomp>)
        1    0.000    0.000    0.000    0.000 parse.py:267(ParseResultBytes)
        6    0.000    0.000    0.000    0.000 {method 'lower' of 'str' objects}
        1    0.000    0.000    0.000    0.000 argparse.py:653(RawTextHelpFormatter)
        1    0.000    0.000    0.000    0.000 _signalhelper.py:195(SignalOverride)
        1    0.000    0.000    0.000    0.000 {built-in method S_ISDIR}
        1    0.000    0.000    0.000    0.000 argparse.py:1645(identity)
        1    0.000    0.000    0.000    0.000 argparse.py:989(_CountAction)
        1    0.000    0.000    0.000    0.000 {method 'values' of 'dict' objects}
        1    0.000    0.000    0.000    0.000 inspect.py:765(EndOfBlock)
        1    0.000    0.000    0.000    0.000 {method 'release' of '_thread.lock' objects}
        1    0.000    0.000    0.000    0.000 string.py:51(_TemplateMetaclass)
        1    0.000    0.000    0.000    0.000 _propertyhelper.py:151(__metaclass__)
        1    0.000    0.000    0.000    0.000 __init__.py:8(<module>)
        1    0.000    0.000    0.000    0.000 __init__.py:374(__init__)
        1    0.000    0.000    0.000    0.000 subprocess.py:380(TimeoutExpired)
        1    0.000    0.000    0.000    0.000 ast.py:221(NodeVisitor)
        1    0.000    0.000    0.000    0.000 argparse.py:681(MetavarTypeHelpFormatter)
        1    0.000    0.000    0.000    0.000 __init__.py:17(<module>)
        1    0.000    0.000    0.000    0.000 _dbus.py:196(SessionBus)
        1    0.000    0.000    0.000    0.000 inspect.py:767(BlockFinder)
        1    0.000    0.000    0.000    0.000 {method 'lstrip' of 'str' objects}
        1    0.000    0.000    0.000    0.000 importer.py:38(__init__)
        1    0.000    0.000    0.000    0.000 argparse.py:909(_StoreFalseAction)
        1    0.000    0.000    0.000    0.000 parse.py:248(ParseResult)
        1    0.000    0.000    0.000    0.000 argparse.py:1057(_ChoicesPseudoAction)
        1    0.000    0.000    0.000    0.000 sre_parse.py:235(seek)
        1    0.000    0.000    0.000    0.000 inspect.py:2058(_void)
        1    0.000    0.000    0.000    0.000 {built-in method register}
        1    0.000    0.000    0.000    0.000 subprocess.py:363(SubprocessError)
        1    0.000    0.000    0.000    0.000 __init__.py:61(overridefunc)
        1    0.000    0.000    0.000    0.000 sre_parse.py:233(tell)

@bkconrad
Copy link
Contributor

I also managed to wire up the WebKit debugger and run the same. Looks similarly innocent to me:
wk-prof

@raelgc
Copy link
Owner

raelgc commented Sep 12, 2015

This will be fixed only in the Slack side or in a maybe can be improved upgrading to Qt5 (to get a newer version of QtWebKit).

@stieg
Copy link
Collaborator

stieg commented Feb 15, 2016

If you find yourself in this situation you can work around the issue by closing scudcloud, deleting your config data in ~/.config/scudcloud, and re-opening scudcloud. The app will re-open the channels with snippets collapsed, thus preventing the issue.

@raelgc
Copy link
Owner

raelgc commented Feb 15, 2016

I've made some efforts to port to Qt5, but this do not solves the problem (after search Google, I saw that even on Qt5, Webkit still will hang on large content).

Appears the solution will be port to Qt5 and changed QWebView by QtWebEngine (here is a guide to migrate).

@raelgc
Copy link
Owner

raelgc commented Feb 16, 2016

For now, we could try a workaround for files: we can intercept a click in Files and open it in the user browser.

But large snippets, while expanded, will always slow the webkit, mainly while scrolling (it'll get back to normal after collapsed back).

@stieg
Copy link
Collaborator

stieg commented Feb 16, 2016

Would be wonderful if Slack had a re-collapse feature so that you could collapse them all back down.

@raelgc raelgc changed the title Viewing 8KB Python file within chat unusably slow Viewing large content/file within chat unusably slow Feb 17, 2016
@GabLeRoux
Copy link

4 teams, only 2 actives, 250 lines shell snippet (but it's not a bash script) very very slow, "Reconnecting" banner appears and then disapear, impossible to scroll on the conversation I am on.

Web version is very fast on the same channel on chrome.

 uname -a
Linux zbookarch 4.4.5-1-ARCH #1 SMP PREEMPT Thu Mar 10 07:38:19 CET 2016 x86_64 GNU/Linux

When I launch the app from command line

/usr/lib/python3.5/site-packages/pkg_resources/__init__.py:542: PyGIWarning: Notify was imported without specifying a version first. Use gi.require_version('Notify', '0.7') before import to ensure that the right version gets loaded.
  return get_distribution(dist).load_entry_point(group, name)
 scudcloud --version
/usr/lib/python3.5/site-packages/pkg_resources/__init__.py:542: PyGIWarning: Notify was imported without specifying a version first. Use gi.require_version('Notify', '0.7') before import to ensure that the right version gets loaded.
  return get_distribution(dist).load_entry_point(group, name)
ScudCloud 1.20
Python 3.5.1
Qt 4.8.7
PyQt 4.11.4
SIP 4.17

Installed app using different ways, but had same problem each time.
I tried these

aura -A scudcloud
aura -A scudcloud-git
aura -S scudcloud

But the output I gave in current issue is from the following:

git clone git@github.com:raelgc/scudcloud.git
cd scudcloud
python setup.py build
sudo python setup.py install

@raelgc
Copy link
Owner

raelgc commented Apr 1, 2016

Hi @GabLeRoux, thanks for adding more info.

Unfortunately this is inherit to the webkit used by ScudCloud (i.e., the one used in Ubuntu 14.04).

I'll test to upgrade to a newer webkit or use the new HTML engine available in qt5 to check the performance of the JS while viewing snippets.

@amias-channer
Copy link

another me too here i'm afraid.

Am using ubuntu 16.04 and it was as bad on 15.04 as well. Pretty much any snippet opening causes hangs , i switched to the slack beta for linux and it doesnt' have this problem.

raelgc added a commit that referenced this issue Nov 15, 2016
raelgc added a commit that referenced this issue Nov 15, 2016
@raelgc
Copy link
Owner

raelgc commented Nov 16, 2016

I just release a new version with an option to disable snippets (they'll be viewable in browser after click).

After upgrade, open your config file located at ~/.config/scudcloud/scudcloud.cfg and add the following line:

Snippets=False

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants