Skip to content

Instantly share code, notes, and snippets.

@adrientetar
Created February 19, 2018 16:02
Show Gist options
  • Save adrientetar/bbe2f05cbc1088b2bf758dc161fa7dfa to your computer and use it in GitHub Desktop.
Save adrientetar/bbe2f05cbc1088b2bf758dc161fa7dfa to your computer and use it in GitHub Desktop.
import cProfile
def profile_defcon():
from defcon import Font
pr = cProfile.Profile()
pr.enable()
font = Font("Roboto-Regular.ufo")
for glyph in font:
for contour in glyph:
for point in contour:
point.x = 0
point.y = 0
font.save("result1.ufo")
pr.disable()
pr.print_stats(sort='time')
def profile_fontTools():
from fontTools.ufoLib import Font
pr = cProfile.Profile()
pr.enable()
font = Font("Roboto-Regular.ufo")
for glyph in font:
for contour in glyph.contours:
for point in contour:
point.x = 0
point.y = 0
font.save("result2.ufo")
pr.disable()
pr.print_stats(sort='time')
if __name__ == "__main__":
profile_defcon()
profile_fontTools()
10228645 function calls (10129812 primitive calls) in 77.089 seconds
Ordered by: internal time
ncalls tottime percall cumtime percall filename:lineno(function)
2324 31.794 0.014 56.376 0.024 glifLib.py:306(writeGlyph)
7013 5.480 0.001 5.480 0.001 {built-in method io.open}
21014 4.832 0.000 4.832 0.000 {built-in method nt.stat}
2323 2.855 0.001 4.650 0.002 glifLib.py:457(<listcomp>)
181713/166030 1.990 0.000 2.986 0.000 notifications.py:120(postNotification)
2726438 1.819 0.000 1.819 0.000 {method 'lower' of 'str' objects}
63202 1.194 0.000 4.171 0.000 xmlWriter.py:143(stringifyattrs)
862421 1.139 0.000 1.139 0.000 {method 'replace' of 'str' objects}
45458 1.108 0.000 6.442 0.000 glifLib.py:1470(addPoint)
142786 0.976 0.000 2.089 0.000 xmlWriter.py:160(escape)
4680 0.885 0.000 0.885 0.000 {method 'read' of '_io.BufferedReader' objects}
703234 0.788 0.000 0.866 0.000 {built-in method builtins.isinstance}
4079 0.773 0.000 1.139 0.000 glifLib.py:1178(_validateAndMassagePointStructures)
4079 0.769 0.000 7.929 0.002 contour.py:594(drawPoints)
188172/172489 0.720 0.000 3.844 0.000 base.py:206(postNotification)
11620 0.713 0.000 7.952 0.001 glifLib.py:218(getGLIF)
76282 0.711 0.000 1.476 0.000 xmlWriter.py:76(_writeraw)
429518 0.702 0.000 0.909 0.000 base.py:69(_get_dispatcher)
2324 0.595 0.000 0.659 0.000 filenames.py:21(userNameToFileName)
2324 0.544 0.000 0.544 0.000 {method 'feed' of 'xml.etree.ElementTree.XMLParser' objects}
109362/100358 0.487 0.000 3.522 0.000 base.py:379(_set_dirty)
49458 0.471 0.000 0.492 0.000 notifications.py:52(addObserver)
52446 0.469 0.000 5.399 0.000 xmlWriter.py:103(simpletag)
142786 0.459 0.000 2.721 0.000 xmlWriter.py:168(escapeattr)
32668 0.408 0.000 0.573 0.000 ntpath.py:121(splitdrive)
76282 0.390 0.000 0.468 0.000 xmlWriter.py:86(newline)
312768 0.387 0.000 0.387 0.000 {method 'write' of '_io.BytesIO' objects}
16333 0.363 0.000 1.008 0.000 ntpath.py:74(join)
45458 0.331 0.000 1.397 0.000 contour.py:172(insertPoint)
45458 0.329 0.000 1.906 0.000 contour.py:577(addPoint)
2324 0.319 0.000 5.646 0.002 glifLib.py:452(glyphNameToFileName)
127223/108524 0.315 0.000 2.584 0.000 {built-in method builtins.getattr}
83254 0.297 0.000 0.632 0.000 py23.py:124(tobytes)
51611 0.288 0.000 1.180 0.000 base.py:82(addObserver)
45458 0.285 0.000 0.310 0.000 glyphObjectPointPen.py:64(addPoint)
115143 0.276 0.000 0.276 0.000 {method 'encode' of 'str' objects}
2324 0.274 0.000 14.318 0.006 glifLib.py:508(writeGlyphToString)
31852 0.264 0.000 0.446 0.000 plistlib.py:442(writeln)
39929 0.256 0.000 0.344 0.000 base.py:336(_destroyRepresentationsForNotification)
142787 0.251 0.000 0.370 0.000 py23.py:129(tounicode)
25051 0.223 0.000 1.357 0.000 base.py:471(__setitem__)
333556 0.220 0.000 0.220 0.000 {method 'append' of 'list' objects}
4079 0.203 0.000 0.541 0.000 glifLib.py:1127(_buildOutlinePointsFormat2)
17506/2029 0.182 0.000 0.791 0.000 plistFromETree.py:21(parseElement)
106940 0.180 0.000 0.180 0.000 {built-in method builtins.repr}
2324 0.179 0.000 2.001 0.001 image.py:41(__init__)
10756 0.165 0.000 0.671 0.000 xmlWriter.py:108(begintag)
19856/2038 0.164 0.000 1.482 0.001 plistlib.py:470(write_value)
45458 0.159 0.000 0.159 0.000 point.py:12(__init__)
22235 0.158 0.000 0.368 0.000 plistlib.py:300(_escape)
2324 0.156 0.000 62.194 0.027 layer.py:571(saveGlyph)
1927 0.155 0.000 2.920 0.002 glyph.py:468(_drawShallowLoadedContours)
22574 0.154 0.000 0.825 0.000 plistlib.py:434(simple_element)
235075/230996 0.150 0.000 0.158 0.000 {built-in method builtins.len}
100212 0.148 0.000 0.148 0.000 glifLib.py:1279(_number)
204159 0.138 0.000 0.138 0.000 {method 'get' of 'xml.etree.ElementTree.Element' objects}
39929 0.134 0.000 0.478 0.000 base.py:234(selfNotificationCallback)
4648 0.129 0.000 7.587 0.002 layer.py:585(_stampGlyphDataState)
45458 0.127 0.000 2.033 0.000 glyphObjectPointPen.py:25(addPoint)
10756 0.117 0.000 0.336 0.000 xmlWriter.py:115(endtag)
2324/2141 0.114 0.000 10.300 0.005 layer.py:172(loadGlyph)
4306 0.103 0.000 0.170 0.000 validators.py:78(genericDictValidator)
2324/2141 0.102 0.000 5.495 0.003 glifLib.py:890(_readGlyphFromTreeFormat2)
2324 0.099 0.000 0.260 0.000 xmlWriter.py:14(__init__)
24 0.090 0.004 0.294 0.012 {method 'ParseFile' of 'pyexpat.xmlparser' objects}
86592 0.088 0.000 0.088 0.000 {method 'get' of 'dict' objects}
90916 0.088 0.000 0.088 0.000 point.py:77(_get_identifier)
39929 0.087 0.000 0.087 0.000 notifications.py:347(__init__)
4648 0.085 0.000 6.019 0.001 glifLib.py:252(getGLIFModificationTime)
2324 0.083 0.000 0.629 0.000 ElementTree.py:1301(XML)
2029 0.081 0.000 1.589 0.001 glifLib.py:731(_writeLib)
4079 0.080 0.000 1.792 0.000 glifLib.py:1107(_buildOutlineContourFormat2)
19903 0.079 0.000 0.095 0.000 plistlib.py:342(add_object)
22235 0.077 0.000 0.077 0.000 {method 'search' of '_sre.SRE_Pattern' objects}
27301 0.074 0.000 0.380 0.000 plistlib.py:334(handle_end_element)
2470/2037 0.074 0.000 1.446 0.001 plistlib.py:523(write_dict)
2324 0.070 0.000 0.149 0.000 glyph.py:101(__init__)
9017 0.070 0.000 0.070 0.000 {built-in method builtins.hasattr}
11628 0.070 0.000 2.619 0.000 genericpath.py:53(getmtime)
27301 0.069 0.000 0.203 0.000 plistlib.py:328(handle_begin_element)
9383 0.068 0.000 2.350 0.000 genericpath.py:16(exists)
49006 0.068 0.000 0.068 0.000 {built-in method nt.fspath}
5 0.067 0.013 0.067 0.013 {method 'close' of '_io.BufferedWriter' objects}
17506 0.064 0.000 0.221 0.000 plistlib.py:41(handleBeginElement)
6805 0.063 0.000 0.091 0.000 base.py:453(__init__)
2324 0.062 0.000 0.693 0.000 glifLib.py:815(_glifTreeFromString)
4079 0.061 0.000 0.279 0.000 glyph.py:553(insertContour)
4306 0.059 0.000 0.242 0.000 validators.py:594(anchorValidator)
61386 0.057 0.000 0.057 0.000 {method 'items' of 'dict' objects}
8738 0.055 0.000 0.124 0.000 plistlib.py:399(end_real)
45458 0.055 0.000 0.055 0.000 glifLib.py:1190(<listcomp>)
52655 0.054 0.000 0.054 0.000 {method 'insert' of 'list' objects}
4058 0.054 0.000 0.143 0.000 validators.py:995(glyphLibValidator)
2153 0.054 0.000 0.623 0.000 glyph.py:807(insertAnchor)
797 0.054 0.000 0.497 0.001 glifLib.py:706(_writeAnchors)
2324 0.053 0.000 0.282 0.000 glifLib.py:592(_writeAdvance)
45458 0.053 0.000 0.053 0.000 point.py:33(_get_x)
42507 0.052 0.000 0.072 0.000 plistlib.py:339(handle_data)
2153 0.051 0.000 0.356 0.000 anchor.py:33(__init__)
4251 0.051 0.000 0.119 0.000 glyph.py:486(getPointPen)
2324 0.051 0.000 0.292 0.000 image.py:230(beginSelfImageSetNotificationObservation)
6338 0.051 0.000 0.051 0.000 {built-in method builtins.sorted}
17506 0.050 0.000 0.317 0.000 plistlib.py:47(handleEndElement)
1858 0.049 0.000 0.220 0.000 glifLib.py:615(_writeUnicodes)
45458 0.048 0.000 0.048 0.000 point.py:25(_get_segmentType)
45458 0.048 0.000 0.048 0.000 point.py:41(_get_y)
14180 0.047 0.000 0.047 0.000 base.py:48(_init)
16333 0.047 0.000 0.634 0.000 base.py:227(beginSelfNotificationObservation)
48940 0.047 0.000 0.047 0.000 {method 'items' of 'collections.OrderedDict' objects}
39929 0.047 0.000 0.047 0.000 notifications.py:355(_get_name)
4079 0.046 0.000 0.206 0.000 contour.py:61(__init__)
4079 0.045 0.000 0.197 0.000 glifLib.py:1460(endPath)
4630 0.044 0.000 0.125 0.000 plistlib.py:423(begin_element)
8470 0.044 0.000 0.078 0.000 abc.py:178(__instancecheck__)
4630 0.043 0.000 0.119 0.000 plistlib.py:428(end_element)
22328 0.043 0.000 0.055 0.000 plistlib.py:358(get_data)
8340 0.042 0.000 0.042 0.000 notifications.py:306(enableNotifications)
45458 0.042 0.000 0.042 0.000 point.py:49(_get_smooth)
54814 0.042 0.000 0.042 0.000 {method 'keys' of 'dict' objects}
45458 0.041 0.000 0.041 0.000 point.py:57(_get_name)
11265/11202 0.040 0.000 1.533 0.000 {built-in method builtins.setattr}
17224 0.038 0.000 0.054 0.000 anchor.py:54(_get_font)
8340 0.038 0.000 0.038 0.000 notifications.py:278(disableNotifications)
2131/2130 0.038 0.000 0.851 0.000 plistlib.py:543(write_array)
4079 0.037 0.000 0.227 0.000 glifLib.py:1447(beginPath)
45458 0.036 0.000 0.036 0.000 {method 'pop' of 'dict' objects}
13053 0.036 0.000 0.063 0.000 plistlib.py:44(handleData)
965 0.035 0.000 0.152 0.000 glifLib.py:1516(addComponent)
2324 0.034 0.000 8.128 0.003 glyph.py:456(drawPoints)
7374 0.034 0.000 0.059 0.000 plistlib.py:376(end_key)
8492 0.033 0.000 0.033 0.000 _weakrefset.py:70(__contains__)
16296 0.033 0.000 0.033 0.000 {method 'write' of '_io.BufferedWriter' objects}
2324 0.032 0.000 3.055 0.001 glyph.py:511(_fullyLoadShallowLoadedContours)
4648 0.032 0.000 0.107 0.000 glyph.py:205(_set_name)
1 0.032 0.032 0.034 0.034 __init__.py:1213(writeFileAtomically)
965 0.031 0.000 1.429 0.001 glifLib.py:1147(_buildOutlineComponentFormat2)
4079 0.031 0.000 0.433 0.000 glyphObjectPointPen.py:19(endPath)
2326 0.031 0.000 0.214 0.000 lib.py:59(__init__)
4648 0.030 0.000 0.043 0.000 image.py:75(_get_font)
8340 0.030 0.000 0.081 0.000 base.py:190(enableNotifications)
2324 0.030 0.000 0.165 0.000 layer.py:239(_insertGlyph)
2324 0.029 0.000 3.087 0.001 glyph.py:1110(__iter__)
10756 0.029 0.000 0.029 0.000 xmlWriter.py:139(dedent)
8364 0.029 0.000 0.029 0.000 glyph.py:220(_get_unicodes)
2029 0.029 0.000 0.052 0.000 plistlib.py:15(__init__)
2324/2141 0.029 0.000 6.733 0.003 glifLib.py:266(readGlyph)
8340 0.029 0.000 0.076 0.000 base.py:173(disableNotifications)
2324/2141 0.028 0.000 5.525 0.003 glifLib.py:823(_readGlyphFromTree)
4079 0.028 0.000 0.237 0.000 glyph.py:524(instantiateContour)
45458 0.027 0.000 0.027 0.000 point.py:36(_set_x)
2324 0.027 0.000 0.176 0.000 layer.py:146(instantiateGlyphObject)
6382 0.026 0.000 0.308 0.000 glyph.py:1007(_get_lib)
45458 0.026 0.000 0.026 0.000 point.py:44(_set_y)
2324 0.026 0.000 2.026 0.001 glyph.py:1043(instantiateImage)
2324 0.025 0.000 0.132 0.000 glyph.py:1081(beginSelfImageNotificationObservation)
2324 0.025 0.000 0.483 0.000 image.py:218(beginSelfNotificationObservation)
2029 0.025 0.000 1.569 0.001 glifLib.py:990(_readLib)
1594 0.024 0.000 0.270 0.000 validators.py:576(anchorsValidator)
2324 0.024 0.000 2.182 0.001 glyph.py:1049(_get_image)
2332 0.023 0.000 0.187 0.000 font.py:1017(_objectDirtyStateChange)
10756 0.023 0.000 0.023 0.000 xmlWriter.py:136(indent)
4079 0.022 0.000 0.295 0.000 glyphObjectPointPen.py:10(beginPath)
2324 0.022 0.000 0.033 0.000 image.py:103(_get_layer)
2153 0.021 0.000 0.083 0.000 anchor.py:118(_set_x)
2010 0.021 0.000 0.088 0.000 glyph.py:366(_set_width)
26983 0.021 0.000 0.021 0.000 {method 'join' of 'str' objects}
4079 0.021 0.000 0.031 0.000 contour.py:88(_get_font)
2324 0.020 0.000 0.876 0.000 layer.py:691(_glyphDirtyStateChange)
11028 0.020 0.000 1.549 0.000 glifLib.py:1273(_relaxedSetattr)
2 0.020 0.010 0.688 0.344 glifLib.py:126(rebuildContents)
2032 0.020 0.000 0.343 0.000 base.py:508(update)
2325 0.019 0.000 10.343 0.004 font.py:214(__iter__)
2029 0.018 0.000 0.640 0.000 glyph.py:1013(_set_lib)
1 0.018 0.018 0.178 0.178 glifLib.py:169(writeContents)
6579 0.018 0.000 0.084 0.000 <frozen importlib._bootstrap>:989(_handle_fromlist)
2326 0.018 0.000 0.522 0.000 layerSet.py:347(_layerDirtyStateChange)
5613/4648 0.018 0.000 10.316 0.002 layer.py:259(__getitem__)
4079 0.018 0.000 0.021 0.000 glyphObjectPointPen.py:46(beginPath)
2324 0.018 0.000 0.231 0.000 glyph.py:1001(instantiateLib)
1858 0.018 0.000 0.066 0.000 glyph.py:223(_set_unicodes)
18841 0.018 0.000 0.018 0.000 font.py:182(_get_dispatcher)
9248 0.018 0.000 0.018 0.000 {method 'pop' of 'list' objects}
2324/2141 0.018 0.000 3.096 0.001 glifLib.py:1098(buildOutlineFormat2)
11845 0.017 0.000 0.017 0.000 glyph.py:171(_get_font)
2324 0.017 0.000 0.017 0.000 image.py:122(_set_glyph)
2324 0.017 0.000 0.122 0.000 layer.py:159(beginSelfGlyphNotificationObservation)
2010 0.017 0.000 0.138 0.000 glifLib.py:979(_readAdvance)
1 0.017 0.017 62.401 62.401 layer.py:549(save)
2153 0.016 0.000 0.069 0.000 anchor.py:130(_set_y)
7375 0.016 0.000 0.036 0.000 base.py:45(__init__)
2324 0.016 0.000 0.016 0.000 {method 'decode' of 'bytes' objects}
965 0.016 0.000 0.069 0.000 component.py:42(__init__)
9296 0.016 0.000 0.016 0.000 glyph.py:213(_get_name)
2325 0.016 0.000 0.024 0.000 lib.py:122(_get_layer)
2324 0.016 0.000 0.022 0.000 glyphObjectPointPen.py:42(__init__)
4079 0.016 0.000 0.074 0.000 glyph.py:531(beginSelfContourNotificationObservation)
2153 0.016 0.000 0.068 0.000 anchor.py:144(_set_name)
2324 0.015 0.000 0.015 0.000 glifLib.py:1438(__init__)
12237 0.015 0.000 0.015 0.000 contour.py:130(_get_glyph)
965 0.015 0.000 0.084 0.000 glyph.py:663(insertComponent)
2325 0.015 0.000 0.042 0.000 lib.py:108(_get_layerSet)
2326 0.015 0.000 0.061 0.000 lib.py:86(_get_font)
2324 0.015 0.000 0.015 0.000 glyph.py:875(_get_guidelines)
2029 0.014 0.000 0.833 0.000 plistFromETree.py:6(readPlistFromTree)
2038 0.014 0.000 0.024 0.000 plistlib.py:455(__init__)
965 0.014 0.000 0.957 0.001 component.py:317(_beginBaseGlyphObservations)
2029 0.014 0.000 0.022 0.000 plistlib.py:35(__init__)
6805 0.014 0.000 0.021 0.000 base.py:468(__hash__)
4079 0.014 0.000 0.014 0.000 contour.py:135(_set_glyph)
17224 0.013 0.000 0.013 0.000 anchor.py:96(_get_glyph)
965 0.013 0.000 1.385 0.001 glyphObjectPointPen.py:30(addComponent)
965 0.013 0.000 1.135 0.001 component.py:138(_set_baseGlyph)
2029 0.013 0.000 1.196 0.001 plistlib.py:21(writeValue)
4648 0.013 0.000 0.013 0.000 image.py:117(_get_glyph)
4079 0.012 0.000 0.312 0.000 glyph.py:542(appendContour)
2483 0.012 0.000 0.021 0.000 plistlib.py:365(begin_dict)
4306 0.012 0.000 0.012 0.000 anchor.py:101(_set_glyph)
4648 0.012 0.000 0.012 0.000 glifLib.py:260(_purgeCachedGLIF)
9298 0.012 0.000 0.012 0.000 layer.py:135(_get_layerSet)
2153 0.012 0.000 0.368 0.000 glyph.py:781(instantiateAnchor)
2324 0.012 0.000 0.051 0.000 glyph.py:1021(beginSelfLibNotificationObservation)
4684 0.012 0.000 0.042 0.000 plistlib.py:402(end_string)
1930 0.012 0.000 0.978 0.001 component.py:295(beginSelfBaseGlyphNotificationObservation)
1596 0.012 0.000 0.012 0.000 notifications.py:207(holdNotifications)
2333 0.012 0.000 0.012 0.000 {method 'split' of 'str' objects}
2324 0.011 0.000 0.011 0.000 lib.py:149(_set_glyph)
4251 0.011 0.000 0.011 0.000 glyphObjectPointPen.py:5(__init__)
965 0.011 0.000 0.165 0.000 component.py:181(drawPoints)
1596 0.011 0.000 0.011 0.000 notifications.py:237(releaseHeldNotifications)
2331 0.011 0.000 0.011 0.000 {method 'getvalue' of '_io.BytesIO' objects}
797 0.011 0.000 0.690 0.001 glyph.py:772(_set_anchors)
1 0.011 0.011 0.013 0.013 glifLib.py:195(writeLayerInfo)
5613 0.011 0.000 0.011 0.000 glyph.py:185(_get_layer)
4063 0.011 0.000 0.082 0.000 validators.py:24(isDictEnough)
3121 0.010 0.000 0.010 0.000 glyph.py:769(_get_anchors)
2029 0.010 0.000 0.065 0.000 glyph.py:1263(_libContentChanged)
6586 0.010 0.000 0.010 0.000 base.py:385(_get_dirty)
2038 0.010 0.000 0.010 0.000 plistlib.py:417(__init__)
2324 0.010 0.000 0.031 0.000 glifLib.py:972(_readName)
2324 0.010 0.000 0.010 0.000 image.py:58(__len__)
3860 0.009 0.000 0.012 0.000 component.py:94(_get_layer)
2153 0.008 0.000 0.038 0.000 glyph.py:785(beginSelfAnchorNotificationObservation)
4079 0.008 0.000 0.010 0.000 glyph.py:1105(__len__)
2053 0.008 0.000 0.008 0.000 plistlib.py:313(__init__)
2153 0.008 0.000 0.633 0.000 glyph.py:796(appendAnchor)
6459 0.008 0.000 0.011 0.000 anchor.py:184(_get_identifier)
2325 0.008 0.000 0.010 0.000 font.py:191(_get_glyphSet)
797 0.007 0.000 0.029 0.000 glyph.py:855(clearAnchors)
4651 0.007 0.000 0.007 0.000 layerSet.py:94(_get_font)
2324 0.007 0.000 0.011 0.000 glifLib.py:382(__len__)
2135 0.007 0.000 0.021 0.000 plistlib.py:382(begin_array)
6805 0.007 0.000 0.007 0.000 {built-in method builtins.id}
2332 0.007 0.000 0.007 0.000 notifications.py:360(_get_object)
1596 0.007 0.000 0.020 0.000 base.py:157(releaseHeldNotifications)
965 0.007 0.000 0.069 0.000 component.py:156(_set_transformation)
965 0.006 0.000 0.076 0.000 glyph.py:633(instantiateComponent)
2153 0.006 0.000 0.014 0.000 anchor.py:187(_set_identifier)
1596 0.006 0.000 0.020 0.000 base.py:140(holdNotifications)
1495 0.006 0.000 0.016 0.000 plistlib.py:396(end_integer)
4079 0.006 0.000 0.006 0.000 glyph.py:1100(__contains__)
4079 0.006 0.000 0.009 0.000 contour.py:233(__iter__)
1 0.006 0.006 0.091 0.091 __init__.py:883(writeKerning)
4079 0.006 0.000 0.006 0.000 contour.py:626(_get_identifier)
965 0.006 0.000 0.044 0.000 component.py:283(beginSelfNotificationObservation)
965 0.006 0.000 0.009 0.000 component.py:66(_get_font)
965 0.006 0.000 0.031 0.000 glyph.py:639(beginSelfComponentNotificationObservation)
2029 0.006 0.000 0.797 0.000 plistFromETree.py:17(parseTree)
3860 0.005 0.000 0.005 0.000 component.py:108(_get_glyph)
965 0.005 0.000 0.037 0.000 component.py:310(endSelfBaseGlyphNotificationObservation)
4210 0.005 0.000 0.005 0.000 {method 'add' of 'set' objects}
965 0.005 0.000 0.005 0.000 notifications.py:86(hasObserver)
6403 0.005 0.000 0.005 0.000 {built-in method builtins.iter}
2483 0.005 0.000 0.011 0.000 plistlib.py:370(end_dict)
965 0.005 0.000 0.012 0.000 base.py:125(hasObserver)
2324 0.005 0.000 0.005 0.000 glyph.py:363(_get_width)
4648 0.005 0.000 0.005 0.000 {method 'strip' of 'str' objects}
2324 0.005 0.000 0.005 0.000 lib.py:144(_get_glyph)
2135 0.004 0.000 0.007 0.000 plistlib.py:387(end_array)
2153 0.004 0.000 0.005 0.000 anchor.py:158(_set_color)
965 0.004 0.000 0.018 0.000 component.py:348(_endLayerObservations)
965 0.004 0.000 0.089 0.000 glyph.py:652(appendComponent)
965 0.004 0.000 0.004 0.000 component.py:113(_set_glyph)
2324 0.004 0.000 0.004 0.000 glyph.py:978(_get_note)
2032 0.004 0.000 0.004 0.000 {function BaseDictObject.update at 0x0565A420}
965 0.004 0.000 0.012 0.000 component.py:326(_endBaseGlyphObservations)
2324 0.004 0.000 0.004 0.000 glifLib.py:377(has_key)
1 0.004 0.004 0.075 0.075 __init__.py:360(readKerning)
2325 0.004 0.000 0.006 0.000 layer.py:254(__iter__)
4079 0.004 0.000 0.004 0.000 glyph.py:506(_get_pointClass)
2029 0.004 0.000 0.005 0.000 base.py:500(clear)
2325 0.003 0.000 0.003 0.000 font.py:569(_get_images)
965 0.003 0.000 0.005 0.000 layer.py:291(__contains__)
2324 0.003 0.000 0.003 0.000 glyph.py:377(_get_height)
3322 0.003 0.000 0.003 0.000 base.py:312(destroyRepresentation)
2350 0.003 0.000 0.003 0.000 {method 'values' of 'dict' objects}
3860 0.003 0.000 0.003 0.000 component.py:149(_get_baseGlyph)
965 0.003 0.000 0.004 0.000 component.py:246(_set_identifier)
2330 0.003 0.000 0.003 0.000 layerSet.py:113(_get_defaultLayer)
2010 0.003 0.000 0.003 0.000 glyph.py:380(_set_height)
2324 0.002 0.000 0.002 0.000 {method 'close' of 'xml.etree.ElementTree.XMLParser' objects}
2 0.002 0.001 0.004 0.002 validators.py:933(fontLibValidator)
4079 0.002 0.000 0.002 0.000 glyphObjectPointPen.py:61(endPath)
1930 0.002 0.000 0.002 0.000 component.py:243(_get_identifier)
21 0.002 0.000 0.174 0.008 __init__.py:90(_getPlist)
1 0.002 0.002 0.003 0.003 validators.py:897(kerningValidator)
2 0.002 0.001 0.002 0.001 {built-in method nt.mkdir}
967 0.002 0.000 0.002 0.000 layer.py:294(keys)
1 0.001 0.001 0.001 0.001 {built-in method nt.utime}
1 0.001 0.001 0.001 0.001 {method 'write' of '_io.TextIOWrapper' objects}
8 0.001 0.000 0.001 0.000 {built-in method nt._isdir}
1 0.001 0.001 0.002 0.002 {method 'read' of '_io.TextIOWrapper' objects}
195 0.001 0.000 0.002 0.000 __init__.py:1370(validateFontInfoVersion3ValueForAttribute)
1 0.001 0.001 0.001 0.001 {built-in method _codecs.charmap_decode}
37 0.001 0.000 0.003 0.000 plistlib.py:510(write_bytes)
8 0.001 0.000 0.001 0.000 {method 'close' of '_io.BufferedReader' objects}
314 0.001 0.000 0.002 0.000 plistlib.py:393(end_false)
24 0.001 0.000 0.298 0.012 plistlib.py:978(load)
65 0.001 0.000 0.003 0.000 info.py:29(setter)
1 0.001 0.001 0.002 0.002 info.py:84(__init__)
107 0.000 0.000 0.001 0.000 copy.py:66(copy)
1 0.000 0.000 0.001 0.001 layer.py:70(__init__)
4 0.000 0.000 0.139 0.035 glifLib.py:439(_readPlist)
37 0.000 0.000 0.000 0.000 plistlib.py:260(_encode_base64)
24 0.000 0.000 0.294 0.012 plistlib.py:320(parse)
1 0.000 0.000 0.001 0.001 <frozen importlib._bootstrap_external>:830(get_data)
37 0.000 0.000 0.001 0.000 plistlib.py:269(_decode_base64)
15 0.000 0.000 0.000 0.000 validators.py:43(genericIntListValidator)
1 0.000 0.000 0.023 0.023 __init__.py:849(writeInfo)
14 0.000 0.000 0.017 0.001 __init__.py:242(readMetaInfo)
24 0.000 0.000 0.000 0.000 {method 'seek' of '_io.BufferedReader' objects}
10/5 0.000 0.000 0.001 0.000 abc.py:194(__subclasscheck__)
1 0.000 0.000 0.000 0.000 {built-in method marshal.loads}
214 0.000 0.000 0.001 0.000 info.py:25(getter)
5 0.000 0.000 0.219 0.044 __init__.py:1199(writePlistAtomically)
1 0.000 0.000 0.011 0.011 __init__.py:310(readInfo)
10 0.000 0.000 0.013 0.001 font.py:1084(_stampFontDataState)
24 0.000 0.000 0.000 0.000 {built-in method pyexpat.ParserCreate}
2 0.000 0.000 0.002 0.001 __init__.py:1395(validateInfoVersion3Data)
37 0.000 0.000 0.001 0.000 plistlib.py:405(end_data)
9 0.000 0.000 0.299 0.033 plistlib.py:1009(dump)
1 0.000 0.000 0.698 0.698 font.py:68(__init__)
37 0.000 0.000 0.000 0.000 {built-in method binascii.a2b_base64}
1 0.000 0.000 0.000 0.000 {method 'read' of '_io.FileIO' objects}
37 0.000 0.000 0.000 0.000 {method 'replace' of 'bytes' objects}
8 0.000 0.000 0.008 0.001 __init__.py:189(readBytesFromPath)
14 0.000 0.000 0.021 0.002 __init__.py:123(__init__)
1 0.000 0.000 62.432 62.432 layerSet.py:268(save)
1 0.000 0.000 62.899 62.899 font.py:683(save)
132 0.000 0.000 0.000 0.000 validators.py:37(genericTypeValidator)
20 0.000 0.000 0.000 0.000 _weakrefset.py:58(__iter__)
5 0.000 0.000 0.077 0.015 __init__.py:1233(writeDataFileAtomically)
37 0.000 0.000 0.000 0.000 {method 'split' of 'bytes' objects}
37 0.000 0.000 0.000 0.000 {built-in method builtins.max}
10 0.000 0.000 0.004 0.000 __init__.py:229(getFileModificationTime)
3 0.000 0.000 0.001 0.000 validators.py:775(layerContentsValidator)
3 0.000 0.000 0.000 0.000 validators.py:144(fontInfoOpenTypeHeadCreatedValidator)
5 0.000 0.000 0.222 0.044 __init__.py:617(_writePlist)
1 0.000 0.000 0.000 0.000 {built-in method builtins.__build_class__}
1 0.000 0.000 0.080 0.080 font.py:390(_loadKerningAndGroups)
3 0.000 0.000 0.004 0.001 glifLib.py:180(readLayerInfo)
1 0.000 0.000 0.000 0.000 glifLib.py:374(keys)
3/2 0.000 0.000 0.017 0.008 font.py:363(_get_info)
24 0.000 0.000 0.000 0.000 plistlib.py:554(_is_fmt_xml)
1 0.000 0.000 0.002 0.002 __init__.py:396(readFeatures)
24 0.000 0.000 0.000 0.000 {method 'startswith' of 'bytes' objects}
1 0.000 0.000 0.091 0.091 font.py:809(saveKerning)
9 0.000 0.000 0.299 0.033 plistlib.py:465(write)
101 0.000 0.000 0.000 0.000 copy.py:111(_copy_immutable)
5/4 0.000 0.000 0.006 0.001 font.py:500(_get_features)
3 0.000 0.000 0.004 0.001 __init__.py:409(_readLayerContents)
1 0.000 0.000 0.003 0.003 imageSet.py:178(save)
1 0.000 0.000 0.003 0.003 layerSet.py:182(newLayer)
7 0.000 0.000 0.004 0.001 __init__.py:638(_makeDirectory)
10 0.000 0.000 0.000 0.000 _weakrefset.py:26(__exit__)
18 0.000 0.000 0.000 0.000 enum.py:579(__hash__)
37 0.000 0.000 0.000 0.000 {method 'join' of 'bytes' objects}
1 0.000 0.000 0.001 0.001 <frozen importlib._bootstrap_external>:1233(find_spec)
2 0.000 0.000 0.084 0.042 font.py:536(_get_lib)
1 0.000 0.000 0.000 0.000 xmlWriter.py:1(<module>)
1 0.000 0.000 0.003 0.003 dataSet.py:109(save)
2 0.000 0.000 0.000 0.000 plistlib.py:1020(dumps)
1 0.000 0.000 0.043 0.043 font.py:765(_saveInfo)
1 0.000 0.000 0.044 0.044 font.py:816(_saveFeatures)
2 0.000 0.000 0.003 0.001 layerSet.py:366(_stampLayerInfoDataState)
1 0.000 0.000 0.001 0.001 <frozen importlib._bootstrap_external>:743(get_code)
1 0.000 0.000 0.035 0.035 __init__.py:946(writeFeatures)
1 0.000 0.000 0.094 0.094 font.py:799(_saveKerning)
2 0.000 0.000 0.000 0.000 ntpath.py:199(split)
1 0.000 0.000 0.178 0.178 font.py:834(_saveLib)
5 0.000 0.000 0.000 0.000 validators.py:285(fontInfoPostscriptBluesValidator)
1 0.000 0.000 0.003 0.003 <frozen importlib._bootstrap>:958(_find_and_load)
4 0.000 0.000 0.000 0.000 glifLib.py:782(validateLayerInfoVersion3Data)
10 0.000 0.000 0.000 0.000 _weakrefset.py:81(add)
1 0.000 0.000 0.001 0.001 <frozen importlib._bootstrap>:861(_find_spec)
1 0.000 0.000 0.014 0.014 __init__.py:977(writeLayerContents)
1 0.000 0.000 0.002 0.002 __init__.py:1048(_getGlyphSetFormatVersion3)
10 0.000 0.000 0.000 0.000 _weakrefset.py:20(__enter__)
3 0.000 0.000 0.000 0.000 validators.py:251(fontInfoVersion3OpenTypeOS2PanoseValidator)
2 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap_external>:263(cache_from_source)
2 0.000 0.000 0.000 0.000 layerSet.py:497(pack)
5 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap_external>:57(_path_join)
1 0.000 0.000 0.174 0.174 font.py:844(saveLib)
2 0.000 0.000 0.002 0.001 os.py:195(makedirs)
1 0.000 0.000 0.001 0.001 __init__.py:759(setModificationTime)
2 0.000 0.000 0.688 0.344 glifLib.py:105(__init__)
3 0.000 0.000 0.000 0.000 calendar.py:113(weekday)
17 0.000 0.000 0.000 0.000 plistlib.py:390(end_true)
1 0.000 0.000 0.081 0.081 __init__.py:384(readLib)
1 0.000 0.000 0.018 0.018 __init__.py:559(__init__)
2 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap_external>:63(_path_split)
1 0.000 0.000 0.002 0.002 <frozen importlib._bootstrap>:931(_find_and_load_unlocked)
1 0.000 0.000 0.040 0.040 font.py:775(saveInfo)
12 0.000 0.000 0.000 0.000 validators.py:68(genericNonNegativeNumberValidator)
15/10 0.000 0.000 0.000 0.000 {built-in method builtins.issubclass}
1 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap_external>:430(_validate_bytecode_header)
1 0.000 0.000 0.002 0.002 <frozen importlib._bootstrap>:641(_load_unlocked)
2 0.000 0.000 0.000 0.000 validators.py:830(groupsValidator)
2 0.000 0.000 0.000 0.000 {built-in method _thread.allocate_lock}
1 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap>:493(_init_module_attrs)
1 0.000 0.000 0.001 0.001 layerSet.py:155(instantiateLayer)
3/2 0.000 0.000 0.080 0.040 font.py:468(_get_groups)
1 0.000 0.000 0.082 0.082 font.py:782(_saveGroups)
1 0.000 0.000 0.000 0.000 layerSet.py:116(_set_defaultLayer)
5 0.000 0.000 0.000 0.000 validators.py:300(fontInfoPostscriptOtherBluesValidator)
1 0.000 0.000 0.002 0.002 font.py:345(instantiateInfo)
1 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap>:57(__init__)
1 0.000 0.000 0.000 0.000 layerSet.py:53(__init__)
1 0.000 0.000 0.000 0.000 features.py:32(__init__)
1 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap_external>:485(_compile_bytecode)
1 0.000 0.000 0.689 0.689 __init__.py:442(getGlyphSet)
5 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap_external>:59(<listcomp>)
10 0.000 0.000 0.000 0.000 _weakrefset.py:16(__init__)
6 0.000 0.000 0.000 0.000 validators.py:315(fontInfoPostscriptStemsValidator)
3 0.000 0.000 0.000 0.000 calendar.py:119(monthrange)
1 0.000 0.000 0.000 0.000 groups.py:80(__init__)
1 0.000 0.000 0.007 0.007 __init__.py:304(_readInfo)
1 0.000 0.000 0.000 0.000 font.py:351(beginSelfInfoSetNotificationObservation)
3 0.000 0.000 0.000 0.000 layerSet.py:136(_get_layerOrder)
18 0.000 0.000 0.000 0.000 {built-in method builtins.hash}
10 0.000 0.000 0.000 0.000 _weakrefset.py:52(_commit_removals)
2 0.000 0.000 0.000 0.000 __init__.py:511(getImageDirectoryListing)
1 0.000 0.000 0.000 0.000 layer.py:310(_set_name)
2 0.000 0.000 0.000 0.000 layerSet.py:493(__init__)
14 0.000 0.000 0.000 0.000 {method 'rstrip' of 'str' objects}
1 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap>:77(acquire)
1 0.000 0.000 0.068 0.068 __init__.py:356(_readKerning)
1 0.000 0.000 0.000 0.000 features.py:59(_set_text)
1 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap>:159(_get_module_lock)
2 0.000 0.000 0.000 0.000 layerSet.py:216(__iter__)
2 0.000 0.000 0.000 0.000 __init__.py:481(getDataDirectoryListing)
1 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap>:146(__enter__)
1 0.000 0.000 0.001 0.001 <frozen importlib._bootstrap_external>:1117(_get_spec)
1 0.000 0.000 0.000 0.000 imageSet.py:89(_set_fileNames)
1 0.000 0.000 0.001 0.001 <frozen importlib._bootstrap_external>:672(exec_module)
1 0.000 0.000 0.000 0.000 {built-in method _locale._getdefaultlocale}
9 0.000 0.000 0.000 0.000 {method 'count' of 'str' objects}
1 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap_external>:524(spec_from_file_location)
3 0.000 0.000 0.000 0.000 validators.py:267(fontInfoOpenTypeOS2FamilyClassValidator)
1 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap>:304(__exit__)
1 0.000 0.000 0.000 0.000 font.py:307(instantiateLayerSet)
1 0.000 0.000 0.000 0.000 font.py:450(instantiateGroups)
1 0.000 0.000 0.000 0.000 __init__.py:803(writeGroups)
1 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap_external>:361(_get_cached)
2 0.000 0.000 0.000 0.000 _weakrefset.py:36(__init__)
16 0.000 0.000 0.000 0.000 font.py:250(_get_path)
1 0.000 0.000 0.003 0.003 font.py:857(saveImages)
1 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap>:102(release)
10 0.000 0.000 0.000 0.000 _collections_abc.py:392(__subclasshook__)
1 0.000 0.000 0.000 0.000 font.py:986(clearGuidelines)
1 0.000 0.000 0.090 0.090 __init__.py:931(writeLib)
1 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap_external>:1228(_get_spec)
1 0.000 0.000 0.000 0.000 __init__.py:265(readGroups)
1 0.000 0.000 0.000 0.000 xmlWriter.py:12(XMLWriter)
1 0.000 0.000 0.001 0.001 cp1252.py:22(decode)
1 0.000 0.000 0.000 0.000 font.py:482(instantiateFeatures)
1 0.000 0.000 0.080 0.080 font.py:792(saveGroups)
1 0.000 0.000 0.000 0.000 layer.py:460(instantiateLib)
1 0.000 0.000 0.000 0.000 font.py:519(instantiateLib)
2 0.000 0.000 0.000 0.000 layer.py:477(_get_lib)
2 0.000 0.000 0.000 0.000 {method 'rsplit' of 'str' objects}
6 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap>:208(_verbose_message)
1 0.000 0.000 0.000 0.000 _bootlocale.py:11(getpreferredencoding)
7 0.000 0.000 0.000 0.000 __init__.py:598(_get_path)
4 0.000 0.000 0.000 0.000 info.py:100(_get_font)
2 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap_external>:52(_r_long)
1 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap>:553(module_from_spec)
2 0.000 0.000 0.003 0.002 font.py:1107(_stampInfoDataState)
1 0.000 0.000 0.018 0.018 __init__.py:769(_writeMetaInfo)
1 0.000 0.000 0.000 0.000 imageSet.py:59(__init__)
6 0.000 0.000 0.000 0.000 {method 'rpartition' of 'str' objects}
1 0.000 0.000 0.035 0.035 font.py:827(saveFeatures)
1 0.000 0.000 0.002 0.002 __init__.py:1011(getGlyphSet)
1 0.000 0.000 0.000 0.000 kerning.py:60(__init__)
2 0.000 0.000 0.000 0.000 info.py:224(_get_guidelines)
3 0.000 0.000 0.001 0.000 <frozen importlib._bootstrap_external>:75(_path_stat)
1 0.000 0.000 0.000 0.000 font.py:323(beginSelfLayerSetNotificationObservation)
1 0.000 0.000 0.003 0.003 font.py:868(saveData)
1 0.000 0.000 0.000 0.000 font.py:901(_set_guidelines)
2 0.000 0.000 0.000 0.000 font.py:1113(_stampGroupsDataState)
2 0.000 0.000 0.003 0.001 font.py:1116(_stampFeaturesDataState)
2 0.000 0.000 0.003 0.002 font.py:1119(_stampLibDataState)
1 0.000 0.000 0.000 0.000 dataSet.py:26(__init__)
10 0.000 0.000 0.000 0.000 {method 'remove' of 'set' objects}
1 0.000 0.000 0.000 0.000 info.py:230(_set_guidelines)
3 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap>:834(__enter__)
1 0.000 0.000 0.001 0.001 __init__.py:423(getLayerNames)
1 0.000 0.000 0.000 0.000 __init__.py:633(_deleteFile)
4 0.000 0.000 0.000 0.000 font.py:436(_get_kerning)
2 0.000 0.000 0.000 0.000 font.py:896(_get_guidelines)
2 0.000 0.000 0.003 0.002 font.py:1110(_stampKerningDataState)
3 0.000 0.000 0.000 0.000 layerSet.py:220(__getitem__)
5 0.000 0.000 0.000 0.000 {method '__subclasses__' of 'type' objects}
1 0.000 0.000 0.000 0.000 font.py:554(instantiateImageSet)
6 0.000 0.000 0.000 0.000 __init__.py:603(_get_formatVersion)
2 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap>:389(cached)
1 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap_external>:85(_path_is_mode_type)
1 0.000 0.000 0.000 0.000 font.py:1034(_beginSelfLayerNotificationObservation)
1 0.000 0.000 0.000 0.000 layerSet.py:171(beginSelfLayerNotificationObservation)
3 0.000 0.000 0.000 0.000 validators.py:225(fontInfoOpenTypeOS2WidthClassValidator)
1 0.000 0.000 0.000 0.000 {built-in method builtins.exec}
1 0.000 0.000 0.000 0.000 font.py:418(instantiateKerning)
1 0.000 0.000 0.000 0.000 lib.py:134(_set_layer)
1 0.000 0.000 0.000 0.000 font.py:456(beginSelfGroupsNotificationObservation)
1 0.000 0.000 0.000 0.000 layer.py:127(_get_font)
3 0.000 0.000 0.000 0.000 validators.py:58(genericNonNegativeIntValidator)
1 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap>:35(_new_module)
1 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap_external>:393(_check_name_wrapper)
1 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap_external>:840(path_stats)
1 0.000 0.000 0.000 0.000 font.py:424(beginSelfKerningNotificationObservation)
1 0.000 0.000 0.000 0.000 font.py:488(beginSelfFeaturesNotificationObservation)
2 0.000 0.000 0.000 0.000 validators.py:515(guidelinesValidator)
1 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap>:355(__init__)
1 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap>:771(find_spec)
1 0.000 0.000 0.000 0.000 codecs.py:185(__init__)
1 0.000 0.000 0.000 0.000 font.py:576(instantiateDataSet)
1 0.000 0.000 0.001 0.001 __init__.py:431(getDefaultLayerName)
1 0.000 0.000 0.000 0.000 layer.py:466(beginSelfLibNotificationObservation)
1 0.000 0.000 0.000 0.000 lib.py:98(_set_font)
1 0.000 0.000 0.000 0.000 {built-in method builtins.any}
1 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap>:153(__exit__)
1 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap>:197(_call_with_frames_removed)
3 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap>:838(__exit__)
1 0.000 0.000 0.001 0.001 <frozen importlib._bootstrap_external>:1149(find_spec)
1 0.000 0.000 0.000 0.000 __init__.py:262(_readGroups)
2 0.000 0.000 0.000 0.000 imageSet.py:75(_get_font)
3 0.000 0.000 0.000 0.000 validators.py:215(fontInfoOpenTypeOS2WeightClassValidator)
1 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap_external>:800(__init__)
3 0.000 0.000 0.000 0.000 {method 'clear' of 'dict' objects}
2 0.000 0.000 0.000 0.000 {built-in method from_bytes}
4 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap>:307(<genexpr>)
1 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap_external>:94(_path_isfile)
1 0.000 0.000 0.000 0.000 codecs.py:259(__init__)
1 0.000 0.000 0.000 0.000 features.py:48(_get_font)
1 0.000 0.000 0.000 0.000 notifications.py:43(__init__)
1 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap>:297(__enter__)
1 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap>:402(parent)
4 0.000 0.000 0.000 0.000 font.py:338(_get_layers)
1 0.000 0.000 0.000 0.000 font.py:525(beginSelfLibNotificationObservation)
3 0.000 0.000 0.000 0.000 {method 'weekday' of 'datetime.date' objects}
4 0.000 0.000 0.000 0.000 {built-in method _imp.release_lock}
1 0.000 0.000 0.000 0.000 {built-in method _imp.is_frozen}
1 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap>:142(__init__)
1 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap_external>:1080(_path_importer_cache)
2 0.000 0.000 0.000 0.000 ntpath.py:33(_get_bothseps)
1 0.000 0.000 0.000 0.000 font.py:560(beginSelfImageSetNotificationObservation)
3 0.000 0.000 0.000 0.000 layer.py:319(_get_name)
1 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap_external>:37(_relax_case)
1 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap>:293(__init__)
1 0.000 0.000 0.000 0.000 font.py:582(beginSelfDataSetNotificationObservation)
1 0.000 0.000 0.000 0.000 __init__.py:995(<listcomp>)
1 0.000 0.000 0.000 0.000 layerSet.py:139(_set_layerOrder)
2 0.000 0.000 0.000 0.000 dataSet.py:42(_get_font)
1 0.000 0.000 0.000 0.000 dataSet.py:56(_set_fileNames)
1 0.000 0.000 0.000 0.000 {method 'endswith' of 'str' objects}
1 0.000 0.000 0.000 0.000 {built-in method _imp._fix_co_filename}
1 0.000 0.000 0.000 0.000 __init__.py:428(<listcomp>)
2 0.000 0.000 0.000 0.000 layer.py:326(_get_color)
1 0.000 0.000 0.000 0.000 groups.py:94(_get_font)
2 0.000 0.000 0.000 0.000 {built-in method _thread.get_ident}
1 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap>:173(cb)
1 0.000 0.000 0.000 0.000 kerning.py:74(_get_font)
2 0.000 0.000 0.000 0.000 features.py:67(_get_text)
3 0.000 0.000 0.000 0.000 {built-in method _imp.acquire_lock}
1 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap>:698(find_spec)
1 0.000 0.000 0.000 0.000 font.py:591(_get_data)
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
1 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap>:410(has_location)
1 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap_external>:825(get_filename)
1 0.000 0.000 0.000 0.000 __init__.py:132(_get_formatVersion)
1 0.000 0.000 0.000 0.000 <frozen importlib._bootstrap_external>:669(create_module)
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(<genexpr>)
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 <attrs generated init e74d045dd04dc02caec9efe190c97c93979a88e8>: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 <attrs generated init 9fc29dc1882fa0ec118918b95dadd77b49f666a5>: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 <attrs generated init 2dec012a80e7e36e53caab8cdb548fa4059b39a9>: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 <attrs generated init 77e4b6554a192b992e38184f1fa744b8c22a4381>: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 <attrs generated init b63c5f72583acfbf93762da6e342afc49d95dcbd>: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 <attrs generated init d355266e7ca641de60ad9bcbfad0cf9e0eb23366>: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 <attrs generated hash 7a54b20973f01c272dc9f5bc437af93d366504da>: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(<listcomp>)
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 <attrs generated init 3e6adf01652b3f3cfc4cccefc8e3863385c0737e>: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 <attrs generated init 6e7e0dbf9570c31431a75257988fc818f50d1561>: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 <attrs generated init 5e8535b224bbbf36760727358c53d66360ac1c71>: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 <attrs generated init 7b139731ca8ea88446927212bd68250500e3e435>: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 <attrs generated init 0f22a5ef181bf41acfe849126cc3b5599ebe31ea>: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 <attrs generated init ea42c32b1981394832f27665c745a0c5c328d6c2>:1(__init__)
1 0.000 0.000 0.000 0.000 <attrs generated eq 77f26fc45d3da0c051c1fe16cb758d3de393979d>: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(<genexpr>)
1 0.000 0.000 0.000 0.000 <attrs generated init 4cc9c92ac30fa5baeb607682e9d15c80b44efe73>: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(<genexpr>)
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}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment