7006259 function calls (6988005 primitive calls) in 57.621 seconds Ordered by: internal time ncalls tottime percall cumtime percall filename:lineno(function) 2324 35.276 0.015 50.626 0.022 glyphSet.py:69(writeGlyph) 4665 4.710 0.001 4.710 0.001 {built-in method io.open} 2701650 4.438 0.000 6.516 0.000 glyphSet.py:75() 2724114 2.096 0.000 2.096 0.000 {method 'lower' of 'str' objects} 2324 1.778 0.001 1.907 0.001 glyphSet.py:283(treeFromOutline) 2324 1.243 0.001 5.029 0.002 glyphSet.py:36(readGlyph) 2324 1.016 0.000 1.381 0.001 glyphSet.py:193(outlineFromTree) 2324 0.937 0.000 4.313 0.002 glyphSet.py:220(treeFromGlyph) 1 0.825 0.825 51.759 51.759 layer.py:108(save) 2035 0.370 0.000 1.130 0.001 {method 'ParseFile' of 'pyexpat.xmlparser' objects} 2324 0.319 0.000 0.396 0.000 filenames.py:21(userNameToFileName) 35902 0.319 0.000 0.549 0.000 plistlib.py:442(writeln) 2324 0.318 0.000 2.689 0.001 glyphSet.py:145(glyphFromTree) 103022 0.185 0.000 0.185 0.000 glyphSet.py:112(_number) 125158 0.176 0.000 0.176 0.000 {method 'replace' of 'str' objects} 109264 0.169 0.000 0.169 0.000 {built-in method builtins.repr} 19853/2036 0.169 0.000 1.582 0.001 plistlib.py:470(write_value) 22234 0.166 0.000 0.394 0.000 plistlib.py:300(_escape) 22570 0.165 0.000 0.888 0.000 plistlib.py:434(simple_element) 2324 0.163 0.000 5.196 0.002 layer.py:77(loadGlyph) 150860 0.155 0.000 0.155 0.000 {built-in method builtins.isinstance} 11664 0.149 0.000 0.202 0.000 ntpath.py:121(splitdrive) 58683 0.145 0.000 0.145 0.000 {built-in method builtins.getattr} 4670 0.112 0.000 0.300 0.000 ntpath.py:74(join) 89969 0.109 0.000 0.147 0.000 plistlib.py:339(handle_data) 186647 0.096 0.000 0.096 0.000 {method 'append' of 'list' objects} 80191 0.090 0.000 0.090 0.000 {method 'write' of '_io.BytesIO' objects} 19851 0.080 0.000 0.097 0.000 plistlib.py:342(add_object) 29232 0.080 0.000 0.396 0.000 plistlib.py:334(handle_end_element) 22234 0.079 0.000 0.079 0.000 {method 'search' of '_sre.SRE_Pattern' objects} 29232 0.079 0.000 0.217 0.000 plistlib.py:328(handle_begin_element) 45458 0.076 0.000 0.076 0.000 :1(__init__) 35939 0.076 0.000 0.076 0.000 {method 'encode' of 'str' objects} 2468/2035 0.075 0.000 1.544 0.001 plistlib.py:523(write_dict) 2324 0.072 0.000 0.157 0.000 ntpath.py:471(normpath) 45458 0.061 0.000 0.082 0.000 contour.py:29(append) 2036 0.058 0.000 1.800 0.001 plistlib.py:1009(dump) 8738 0.057 0.000 0.124 0.000 plistlib.py:399(end_real) 4650 0.054 0.000 5.281 0.001 layer.py:39(__iter__) 4630 0.049 0.000 0.128 0.000 plistlib.py:423(begin_element) 22268 0.044 0.000 0.057 0.000 plistlib.py:358(get_data) 4630 0.044 0.000 0.118 0.000 plistlib.py:428(end_element) 2324 0.042 0.000 0.042 0.000 :1(__init__) 2467 0.041 0.000 0.041 0.000 {built-in method builtins.sorted} 29551 0.040 0.000 0.040 0.000 {method 'write' of '_io.BufferedWriter' objects} 1 0.040 0.040 0.045 0.045 writer.py:102(writeFeatures) 2130/2129 0.038 0.000 0.858 0.000 plistlib.py:543(write_array) 7346 0.036 0.000 0.062 0.000 plistlib.py:376(end_key) 2035 0.030 0.000 1.173 0.001 plistlib.py:320(parse) 4648 0.030 0.000 5.226 0.001 layer.py:34(__getitem__) 2035 0.029 0.000 1.222 0.001 plistlib.py:978(load) 2029 0.029 0.000 1.445 0.001 plistlib.py:1020(dumps) 4648 0.028 0.000 0.028 0.000 {method 'split' of 'str' objects} 29240 0.027 0.000 0.027 0.000 {method 'join' of 'str' objects} 20982 0.027 0.000 0.027 0.000 {built-in method nt.fspath} 965 0.023 0.000 0.033 0.000 glyphSet.py:119(_transformation) 32656 0.022 0.000 0.022 0.000 {built-in method builtins.len} 2036 0.021 0.000 0.041 0.000 plistlib.py:455(__init__) 8158 0.020 0.000 0.031 0.000 contour.py:23(__iter__) 11620 0.020 0.000 0.020 0.000 glyph.py:30(name) 6101 0.020 0.000 0.028 0.000 enum.py:579(__hash__) 1 0.019 0.019 0.251 0.251 glyphSet.py:64(writeContents) 2324 0.019 0.000 0.195 0.000 ntpath.py:538(abspath) 9228 0.018 0.000 0.018 0.000 {method 'pop' of 'list' objects} 1 0.018 0.018 0.026 0.026 writer.py:124(writeInfo) 2036 0.018 0.000 1.682 0.001 plistlib.py:465(write) 2324 0.016 0.000 0.016 0.000 {built-in method nt._getfullpathname} 2036 0.015 0.000 0.015 0.000 plistlib.py:417(__init__) 1 0.014 0.014 0.088 0.088 writer.py:146(writeLib) 1 0.014 0.014 0.015 0.015 writer.py:30(_writeMetaInfo) 2035 0.013 0.000 0.013 0.000 {built-in method pyexpat.ParserCreate} 1 0.013 0.013 0.092 0.092 writer.py:135(writeKerning) 2029 0.013 0.000 0.918 0.000 plistlib.py:1000(loads) 1 0.013 0.013 0.015 0.015 writer.py:64(writeLayerContents) 1 0.012 0.012 0.014 0.014 glyphSet.py:84(writeLayerInfo) 4079 0.012 0.000 0.012 0.000 :1(__init__) 2324 0.012 0.000 0.012 0.000 {method 'get' of 'dict' objects} 4666 0.012 0.000 0.045 0.000 plistlib.py:402(end_string) 2467 0.012 0.000 0.020 0.000 plistlib.py:365(begin_dict) 8166/8163 0.010 0.000 0.010 0.000 {built-in method builtins.iter} 4648 0.010 0.000 0.010 0.000 {method 'startswith' of 'str' objects} 2035 0.009 0.000 0.009 0.000 plistlib.py:313(__init__) 6166 0.008 0.000 0.008 0.000 {built-in method builtins.hash} 965 0.008 0.000 0.010 0.000 glyphSet.py:130(_transformation_back) 2131 0.007 0.000 0.022 0.000 plistlib.py:382(begin_array) 1481 0.007 0.000 0.017 0.000 plistlib.py:396(end_integer) 2324 0.006 0.000 0.006 0.000 {method 'lstrip' of 'str' objects} 2467 0.005 0.000 0.010 0.000 plistlib.py:370(end_dict) 2324 0.005 0.000 0.005 0.000 glyphSet.py:96(__contains__) 2330 0.004 0.000 0.004 0.000 {method 'values' of 'dict' objects} 2153 0.004 0.000 0.004 0.000 :1(__init__) 2131 0.004 0.000 0.007 0.000 plistlib.py:387(end_array) 2010 0.004 0.000 0.004 0.000 {built-in method builtins.setattr} 2029 0.003 0.000 0.003 0.000 {method 'getvalue' of '_io.BytesIO' objects} 965 0.003 0.000 0.003 0.000 :1(__init__) 2468 0.003 0.000 0.003 0.000 {method 'items' of 'dict' objects} 1 0.002 0.002 0.002 0.002 {built-in method _codecs.charmap_encode} 2 0.002 0.001 0.002 0.001 {built-in method nt.mkdir} 965 0.002 0.000 0.002 0.000 :1(__init__) 1 0.001 0.001 0.002 0.002 {method 'read' of '_io.TextIOWrapper' objects} 1 0.001 0.001 0.003 0.003 {method 'write' of '_io.TextIOWrapper' objects} 1 0.001 0.001 0.001 0.001 {built-in method _codecs.charmap_decode} 1 0.001 0.001 0.001 0.001 {built-in method nt.remove} 37 0.001 0.000 0.004 0.000 plistlib.py:510(write_bytes) 1 0.001 0.001 0.001 0.001 layer.py:18(__attrs_post_init__) 6 0.001 0.000 0.001 0.000 {method 'read' of '_io.BufferedReader' objects} 314 0.001 0.000 0.002 0.000 plistlib.py:393(end_false) 1 0.001 0.001 0.002 0.002 _funcs.py:10(asdict) 37 0.000 0.000 0.001 0.000 plistlib.py:260(_encode_base64) 1 0.000 0.000 52.226 52.226 font.py:164(save) 1 0.000 0.000 0.009 0.009 font.py:100(info) 2 0.000 0.000 0.000 0.000 {built-in method nt.listdir} 37 0.000 0.000 0.001 0.000 plistlib.py:269(_decode_base64) 37 0.000 0.000 0.001 0.000 plistlib.py:405(end_data) 1 0.000 0.000 0.000 0.000 {built-in method nt.stat} 37 0.000 0.000 0.000 0.000 {method 'replace' of 'bytes' objects} 65 0.000 0.000 0.000 0.000 :1(__hash__) 93 0.000 0.000 0.000 0.000 filters.py:49(exclude_) 37 0.000 0.000 0.000 0.000 {built-in method builtins.max} 1 0.000 0.000 51.790 51.790 layerSet.py:115(save) 2 0.000 0.000 0.158 0.079 glyphSet.py:27(rebuildContents) 37 0.000 0.000 0.000 0.000 {built-in method binascii.a2b_base64} 1 0.000 0.000 0.003 0.003 reader.py:98(readFeatures) 125 0.000 0.000 0.000 0.000 _funcs.py:142(has) 37 0.000 0.000 0.000 0.000 {method 'split' of 'bytes' objects} 1 0.000 0.000 0.001 0.001 reader.py:59(getLayerContents) 1 0.000 0.000 0.077 0.077 reader.py:125(readKerning) 1 0.000 0.000 0.008 0.008 reader.py:116(readInfo) 1 0.000 0.000 0.001 0.001 glyphSet.py:46(readLayerInfo) 1 0.000 0.000 0.076 0.076 reader.py:134(readLib) 6 0.000 0.000 0.000 0.000 {method 'seek' of '_io.BufferedReader' objects} 1 0.000 0.000 0.161 0.161 font.py:29(__attrs_post_init__) 13 0.000 0.000 0.000 0.000 _funcs.py:52() 1 0.000 0.000 0.003 0.003 font.py:70(features) 37 0.000 0.000 0.000 0.000 {method 'join' of 'bytes' objects} 1 0.000 0.000 0.017 0.017 writer.py:19(__attrs_post_init__) 1 0.000 0.000 0.077 0.077 font.py:121(kerning) 1 0.000 0.000 0.002 0.002 layerSet.py:72(newLayer) 1 0.000 0.000 0.000 0.000 :1(__init__) 2 0.000 0.000 0.000 0.000 _bootlocale.py:11(getpreferredencoding) 1 0.000 0.000 0.076 0.076 font.py:135(lib) 6 0.000 0.000 0.000 0.000 plistlib.py:554(_is_fmt_xml) 2 0.000 0.000 0.000 0.000 {built-in method _locale._getdefaultlocale} 1 0.000 0.000 0.001 0.001 writer.py:113(writeGroups) 1 0.000 0.000 0.000 0.000 font.py:90(groups) 4 0.000 0.000 0.000 0.000 layerSet.py:26(__iter__) 1 0.000 0.000 0.001 0.001 writer.py:47(getGlyphSet) 1 0.000 0.000 0.001 0.001 :1(__init__) 3 0.000 0.000 0.000 0.000 layerSet.py:38(defaultLayer) 1 0.000 0.000 0.000 0.000 reader.py:107(readGroups) 2 0.000 0.000 0.158 0.079 glyphSet.py:18(__attrs_post_init__) 17 0.000 0.000 0.000 0.000 plistlib.py:390(end_true) 1 0.000 0.000 0.001 0.001 cp1252.py:22(decode) 6 0.000 0.000 0.000 0.000 {method 'startswith' of 'bytes' objects} 1 0.000 0.000 0.000 0.000 layerSet.py:60(layerOrder) 1 0.000 0.000 0.000 0.000 genericpath.py:16(exists) 1 0.000 0.000 0.000 0.000 filters.py:11(_split_what) 6 0.000 0.000 0.000 0.000 :1(__init__) 1 0.000 0.000 0.000 0.000 glyphSet.py:105(keys) 1 0.000 0.000 0.000 0.000 reader.py:27(_getDirectoryListing) 1 0.000 0.000 0.161 0.161 :1(__init__) 1 0.000 0.000 0.000 0.000 reader.py:21(getDataDirectoryListing) 1 0.000 0.000 0.158 0.158 reader.py:72(getGlyphSet) 2 0.000 0.000 0.000 0.000 :1(__init__) 1 0.000 0.000 0.002 0.002 cp1252.py:18(encode) 1 0.000 0.000 0.000 0.000 reader.py:43(getImageDirectoryListing) 2 0.000 0.000 0.000 0.000 misc.py:46(save) 1 0.000 0.000 0.017 0.017 :1(__init__) 1 0.000 0.000 0.000 0.000 :1(__eq__) 3 0.000 0.000 0.000 0.000 {built-in method builtins.next} 1 0.000 0.000 0.000 0.000 codecs.py:259(__init__) 1 0.000 0.000 0.000 0.000 font.py:58(__iter__) 4 0.000 0.000 0.000 0.000 {method 'values' of 'collections.OrderedDict' objects} 1 0.000 0.000 0.000 0.000 filters.py:38(exclude) 2 0.000 0.000 0.000 0.000 filters.py:16() 1 0.000 0.000 0.000 0.000 :1(__init__) 1 0.000 0.000 0.000 0.000 codecs.py:185(__init__) 1 0.000 0.000 0.000 0.000 layerSet.py:11(__attrs_post_init__) 1 0.000 0.000 0.000 0.000 _make.py:1003(fields) 2 0.000 0.000 0.000 0.000 _compat.py:78(isclass) 1 0.000 0.000 0.000 0.000 font.py:131(layers) 1 0.000 0.000 0.000 0.000 {method 'pop' of 'dict' objects} 2 0.000 0.000 0.000 0.000 layer.py:65(name) 1 0.000 0.000 0.000 0.000 font.py:84(guidelines) 1 0.000 0.000 0.000 0.000 {method 'keys' of 'dict' objects} 1 0.000 0.000 0.000 0.000 filters.py:17() 1 0.000 0.000 0.000 0.000 layerSet.py:29(__len__) 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}