From 96ffc1981161c9c1242108df03eb45401693ca07 Mon Sep 17 00:00:00 2001 From: Technoduck Date: Tue, 15 Oct 2024 22:47:20 -0400 Subject: [PATCH] initial commit --- .gitignore | 8 + app.py | 73 +++ astropy_test.py | 21 + calls.txt | 1502 ++++++++++++++++++++++++++++++++++++++++++++++ requirements.txt | 2 + setup.py | 14 + skydome.py | 443 ++++++++++++++ 7 files changed, 2063 insertions(+) create mode 100644 .gitignore create mode 100644 app.py create mode 100644 astropy_test.py create mode 100644 calls.txt create mode 100644 requirements.txt create mode 100644 setup.py create mode 100644 skydome.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c3fd3b8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +.venv/ +build/ +*.png +*.so +*.c +skydome.c +*.html +__pycache__/ diff --git a/app.py b/app.py new file mode 100644 index 0000000..6535314 --- /dev/null +++ b/app.py @@ -0,0 +1,73 @@ +import tkinter +import tkintermapview +import requests +import skydome +from PIL import Image, ImageTk + + +#api altitude endpoint +URL="https://api.open-elevation.com/api/v1/lookup" + +def get_api_params(coords): + return {"locations":"{},{}".format(coords[0],coords[1])} + +# create tkinter window +root_tk = tkinter.Tk() +root_tk.geometry(f"{1000}x{700}") +root_tk.title("map_view_simple_example.py") + +# create map widget +map_widget = tkintermapview.TkinterMapView(root_tk, width=1000, height=700, corner_radius=0) +map_widget.pack(fill="both", expand=True) + +# set other tile server (standard is OpenStreetMap) +# map_widget.set_tile_server("https://mt0.google.com/vt/lyrs=m&hl=en&x={x}&y={y}&z={z}&s=Ga", max_zoom=22) # google normal +# map_widget.set_tile_server("https://mt0.google.com/vt/lyrs=s&hl=en&x={x}&y={y}&z={z}&s=Ga", max_zoom=22) # google satellite + + + + +def show_image(coords): + image_window = tkinter.Toplevel() + image_window.title("Simulated Sunset") + image_window.config(width=256,height=256) + #image = skydome.renderFromCamera(coords) + #canvas = tkinter.Canvas(image_window,width=256,height=256) + #canvas.pack() + #img = ImageTk.PhotoImage(width=256,height=256,image=Image.fromarray(image,mode="RGB")) + img = ImageTk.PhotoImage(Image.open("highpress_camera.png")) + + panel = tkinter.Label(image_window,image=img) + panel.pack(side="bottom", fill = "both", expand = "yes") + image_window.mainloop() + #canvas.create_image(20,20, anchor="nw", image=img) + +def marker_click(marker): + print(f"marker clicked - text: {marker.text} position: {marker.position}") + + +def add_marker_event(coords): + print("marker added to {}".format(coords)) + map_widget.delete_all_marker() + new_marker = map_widget.set_marker(coords[0], coords[1], text="sunset observer") + + +def get_altitude(coords): + print("getting altitude for {}\n".format(coords)) + params = get_api_params(coords) + r = requests.get(URL,params) + data = r.json() + print(data['results'][0]['elevation']) + +map_widget.add_right_click_menu_command(label="Set as observer location", + command=add_marker_event, + pass_coords=True) + +map_widget.add_right_click_menu_command(label="get altitude", + command=get_altitude, + pass_coords=True) + +map_widget.add_right_click_menu_command(label="open_window", + command=show_image, + pass_coords=True) +root_tk.mainloop() diff --git a/astropy_test.py b/astropy_test.py new file mode 100644 index 0000000..60e56ba --- /dev/null +++ b/astropy_test.py @@ -0,0 +1,21 @@ +from astropy.time import Time +from astropy.coordinates import solar_system_ephemeris, EarthLocation , AltAz +from astropy.coordinates import get_body_barycentric, get_body + +def get_location(long,lat): + return EarthLocation.from_geodetic(long,lat) + +loc = get_location(45.508,-73.561) + +t = Time("2024-10-07 18:16",location=loc) + +with solar_system_ephemeris.set('builtin'): + sun = get_body('sun', t, loc) + moon = get_body('moon', t, loc) + saturn = get_body('saturn', t, loc) + +new_sun = sun.transform_to(AltAz(obstime=t,location=loc)) +new_moon = moon.transform_to(AltAz(obstime=t,location=loc)) +new_saturn = saturn.transform_to(AltAz(obstime=t,location=loc)) + +print(saturn) diff --git a/calls.txt b/calls.txt new file mode 100644 index 0000000..ce2bb39 --- /dev/null +++ b/calls.txt @@ -0,0 +1,1502 @@ + Ordered by: internal time + + ncalls tottime percall cumtime percall filename:lineno(function) + 10000 2.816 0.000 9.525 0.001 skydome.py:238(computeIncidentLight) + 2130000 2.222 0.000 3.286 0.000 skydome.py:91(__mul__) + 1930000 1.306 0.000 1.612 0.000 skydome.py:85(__add__) + 4270007 0.712 0.000 0.712 0.000 skydome.py:82(__init__) + 1450000 0.708 0.000 0.905 0.000 skydome.py:101(length) + 4260018 0.696 0.000 0.697 0.000 {built-in method builtins.isinstance} + 3360001 0.505 0.000 0.505 0.000 {built-in method math.exp} + 170000 0.255 0.000 0.373 0.000 skydome.py:311(raySphereIntersect) + 1620001 0.218 0.000 0.218 0.000 {built-in method math.sqrt} + 170000 0.097 0.000 0.118 0.000 skydome.py:326(solveQuadratic) + 1 0.063 0.063 9.803 9.803 skydome.py:393(renderFromCamera) + 10001 0.041 0.000 0.041 0.000 _methods.py:100(_clip) + 10000 0.026 0.000 0.084 0.000 fromnumeric.py:41(_wrapit) + 209 0.018 0.000 0.018 0.000 {built-in method marshal.loads} + 10001 0.015 0.000 0.101 0.000 fromnumeric.py:51(_wrapfunc) + 10001 0.015 0.000 0.116 0.000 fromnumeric.py:2250(clip) + 24/21 0.011 0.000 0.014 0.001 {built-in method _imp.create_dynamic} + 659/653 0.008 0.000 0.044 0.000 {built-in method builtins.__build_class__} + 10000 0.008 0.000 0.010 0.000 skydome.py:98(__truediv__) + 10000 0.007 0.000 0.026 0.000 skydome.py:104(normalize) + 10001 0.007 0.000 0.047 0.000 {method 'clip' of 'numpy.ndarray' objects} + 26778 0.006 0.000 0.006 0.000 {built-in method builtins.getattr} + 635 0.005 0.000 0.009 0.000 enum.py:254(__set_name__) + 10000 0.004 0.000 0.004 0.000 {method 'as_arrays' of 'numpy._core._multiarray_umath._array_converter' objects} + 995 0.004 0.000 0.004 0.000 {built-in method posix.stat} + 10000 0.004 0.000 0.004 0.000 skydome.py:115(dot) + 10000 0.004 0.000 0.004 0.000 {method 'wrap' of 'numpy._core._multiarray_umath._array_converter' objects} + 189/58 0.003 0.000 0.010 0.000 _parser.py:512(_parse) + 460 0.003 0.000 0.013 0.000 :1593(find_spec) + 209 0.003 0.000 0.003 0.000 {method 'read' of '_io.BufferedReader' objects} + 209 0.003 0.000 0.022 0.000 :751(_compile_bytecode) + 209 0.003 0.000 0.003 0.000 {built-in method _io.open_code} + 10000 0.003 0.000 0.003 0.000 skydome.py:109(to_tuple) + 2432 0.003 0.000 0.005 0.000 :126(_path_join) + 738 0.002 0.000 0.005 0.000 enum.py:390(__setitem__) +1900/1265 0.002 0.000 0.011 0.000 {built-in method __new__ of type object at 0x7f0926afb900} + 530 0.002 0.000 0.006 0.000 :304(acquire) + 10514 0.002 0.000 0.002 0.000 {method 'append' of 'list' objects} + 254 0.002 0.000 0.019 0.000 :1240(_find_spec) + 417/53 0.002 0.000 0.006 0.000 _compiler.py:37(_compile) +12111/11681 0.002 0.000 0.002 0.000 {built-in method builtins.len} + 5208 0.002 0.000 0.003 0.000 {built-in method builtins.hasattr} + 10001 0.002 0.000 0.002 0.000 fromnumeric.py:2245(_clip_dispatcher) + 548 0.002 0.000 0.003 0.000 typing.py:1636(__hash__) + 1408 0.001 0.000 0.003 0.000 typing.py:1215(__setattr__) + 5285 0.001 0.000 0.001 0.000 {method 'rstrip' of 'str' objects} + 209 0.001 0.000 0.034 0.000 :1062(get_code) + 22 0.001 0.000 0.001 0.000 {built-in method builtins.eval} + 256/48 0.001 0.000 0.182 0.004 :1349(_find_and_load) + 3315 0.001 0.000 0.001 0.000 {method 'startswith' of 'str' objects} + 5023 0.001 0.000 0.001 0.000 typing.py:1626() + 418 0.001 0.000 0.004 0.000 :482(cache_from_source) + 200 0.001 0.000 0.002 0.000 _compiler.py:243(_optimize_charset) + 530 0.001 0.000 0.002 0.000 :372(release) + 1931 0.001 0.000 0.002 0.000 typing.py:1161(_is_dunder) + 214/1 0.001 0.000 9.918 9.918 {built-in method builtins.exec} + 4027 0.001 0.000 0.001 0.000 {method 'get' of 'mappingproxy' objects} + 34 0.001 0.000 0.012 0.000 enum.py:528(__new__) + 256/48 0.001 0.000 0.181 0.004 :1304(_find_and_load_unlocked) + 208 0.001 0.000 0.003 0.000 typing.py:262(_collect_parameters) + 530 0.001 0.000 0.002 0.000 :124(setdefault) + 265 0.001 0.000 0.006 0.000 overrides.py:142(decorator) + 327 0.001 0.000 0.002 0.000 typing.py:175(_type_check) + 22 0.001 0.000 0.003 0.000 __init__.py:355(namedtuple) + 1 0.001 0.001 0.001 0.001 {method 'encode' of 'ImagingEncoder' objects} + 530 0.001 0.000 0.002 0.000 :426(_get_module_lock) + 854 0.001 0.000 0.001 0.000 enum.py:850(__setattr__) + 2953 0.001 0.000 0.001 0.000 {method 'join' of 'str' objects} + 19 0.001 0.000 0.312 0.016 __init__.py:1() + 286 0.001 0.000 0.002 0.000 functools.py:35(update_wrapper) + 2772 0.001 0.000 0.002 0.000 {built-in method builtins.setattr} + 460 0.001 0.000 0.001 0.000 _inspect.py:65(getargs) + 203 0.001 0.000 0.008 0.000 typing.py:1269(__init__) + 2683 0.001 0.000 0.001 0.000 _parser.py:168(__getitem__) + 4089 0.001 0.000 0.001 0.000 _parser.py:240(__next) + 2856 0.001 0.000 0.001 0.000 _parser.py:261(get) + 230 0.001 0.000 0.003 0.000 overrides.py:83(verify_matching_signatures) + 236 0.001 0.000 0.004 0.000 :733(_init_module_attrs) + 45/12 0.001 0.000 0.003 0.000 typing.py:1326(_determine_new_args) + 770 0.001 0.000 0.001 0.000 enum.py:785(__delattr__) + 530 0.001 0.000 0.003 0.000 :162(__enter__) + 1798 0.001 0.000 0.001 0.000 {method 'endswith' of 'str' objects} + 251 0.001 0.000 0.015 0.000 :1491(_get_spec) + 1820 0.001 0.000 0.001 0.000 {method 'rpartition' of 'str' objects} + 210 0.001 0.000 0.001 0.000 {method '__exit__' of '_io._IOBase' objects} + 1 0.001 0.001 0.001 0.001 extensions.py:1() + 236/46 0.001 0.000 0.177 0.004 :911(_load_unlocked) + 2619 0.001 0.000 0.001 0.000 :491(_verbose_message) + 1 0.001 0.001 0.001 0.001 random.py:222(__init_subclass__) + 311 0.001 0.000 0.003 0.000 function_base.py:505(add_newdoc) + 418 0.001 0.000 0.001 0.000 :132(_path_split) + 490/140 0.001 0.000 0.001 0.000 _parser.py:178(getwidth) + 233 0.001 0.000 0.001 0.000 :802(spec_from_file_location) + 523 0.001 0.000 0.001 0.000 typing.py:1205(__getattr__) + 249 0.001 0.000 0.019 0.000 __init__.py:280(_compile) + 370 0.001 0.000 0.001 0.000 _parser.py:312(_class_escape) + 460 0.001 0.000 0.002 0.000 _inspect.py:96(getargspec) + 13 0.001 0.000 0.003 0.000 typing.py:2809(__new__) + 530 0.001 0.000 0.001 0.000 :79(__init__) + 209/46 0.000 0.000 0.176 0.004 :989(exec_module) + 530 0.000 0.000 0.001 0.000 :74(__new__) + 17 0.000 0.000 0.000 0.000 {built-in method posix.listdir} + 296/100 0.000 0.000 0.123 0.001 :1390(_handle_fromlist) + 209 0.000 0.000 0.007 0.000 :1183(get_data) + 779 0.000 0.000 0.001 0.000 enum.py:79(_is_private) + 1802 0.000 0.000 0.000 0.000 {method 'get' of 'dict' objects} + 465 0.000 0.000 0.001 0.000 {built-in method builtins.max} + 432/62 0.000 0.000 0.149 0.002 {built-in method builtins.__import__} + 18 0.000 0.000 0.000 0.000 arrayprint.py:1668(_guarded_repr_or_str) + 1541 0.000 0.000 0.000 0.000 {built-in method builtins.issubclass} + 162/53 0.000 0.000 0.010 0.000 _parser.py:452(_parse_sub) + 627 0.000 0.000 0.001 0.000 :84(_unpack_uint32) + 300 0.000 0.000 0.002 0.000 {built-in method fromkeys} + 1795 0.000 0.000 0.000 0.000 {built-in method _imp.acquire_lock} + 78 0.000 0.000 0.000 0.000 _compiler.py:386(_mk_bitmap) + 247/184 0.000 0.000 0.018 0.000 typing.py:392(inner) + 93 0.000 0.000 0.009 0.000 typing.py:694(Union) + 24 0.000 0.000 0.000 0.000 {built-in method _imp.exec_dynamic} + 21 0.000 0.000 0.000 0.000 {built-in method builtins.compile} + 753 0.000 0.000 0.000 0.000 enum.py:48(_is_dunder) + 589/90 0.000 0.000 0.172 0.002 :480(_call_with_frames_removed) + 236/227 0.000 0.000 0.019 0.000 :806(module_from_spec) + 336 0.000 0.000 0.000 0.000 _parser.py:265(getwhile) + 438 0.000 0.000 0.000 0.000 {method 'update' of 'dict' objects} + 993 0.000 0.000 0.005 0.000 :140(_path_stat) + 530 0.000 0.000 0.000 0.000 :82(remove) + 39 0.000 0.000 0.003 0.000 typing.py:753(Literal) + 233 0.000 0.000 0.001 0.000 :1588(_get_spec) + 3 0.000 0.000 0.001 0.000 enum.py:1708(convert_class) + 849 0.000 0.000 0.000 0.000 {built-in method builtins.min} + 1 0.000 0.000 0.001 0.001 XVThumbImagePlugin.py:1() + 678 0.000 0.000 0.001 0.000 enum.py:38(_is_descriptor) + 53 0.000 0.000 0.010 0.000 _parser.py:969(parse) + 1795 0.000 0.000 0.000 0.000 {built-in method _imp.release_lock} + 274 0.000 0.000 0.005 0.000 :463(_lock_unlock_module) + 209 0.000 0.000 0.001 0.000 :666(_classify_pyc) + 639 0.000 0.000 0.000 0.000 :645(parent) + 1061 0.000 0.000 0.000 0.000 {method '__exit__' of '_thread.RLock' objects} + 779 0.000 0.000 0.000 0.000 enum.py:59(_is_sunder) + 233 0.000 0.000 0.003 0.000 :611(_get_cached) + 769 0.000 0.000 0.000 0.000 {method 'find' of 'bytearray' objects} + 254 0.000 0.000 0.000 0.000 :232(__init__) + 203 0.000 0.000 0.002 0.000 typing.py:1174(__init__) + 209 0.000 0.000 0.001 0.000 :699(_validate_timestamp_pyc) + 1074/988 0.000 0.000 0.000 0.000 {built-in method builtins.hash} + 254 0.000 0.000 0.000 0.000 :445(cb) + 770 0.000 0.000 0.001 0.000 {built-in method builtins.delattr} + 100 0.000 0.000 0.000 0.000 {built-in method builtins.print} + 1011 0.000 0.000 0.000 0.000 :1226(__exit__) + 25 0.000 0.000 0.001 0.000 dtypes.py:30(_add_dtype_helper) + 662 0.000 0.000 0.000 0.000 _parser.py:293(tell) + 1733 0.000 0.000 0.000 0.000 _parser.py:256(match) + 1011 0.000 0.000 0.000 0.000 :1222(__enter__) + 93 0.000 0.000 0.002 0.000 typing.py:345(_remove_dups_flatten) + 836 0.000 0.000 0.000 0.000 :134() + 768 0.000 0.000 0.000 0.000 _binary.py:25(o8) + 337 0.000 0.000 0.000 0.000 {method 'strip' of 'str' objects} + 460 0.000 0.000 0.000 0.000 :1() + 45/12 0.000 0.000 0.002 0.000 typing.py:1355(_make_substitution) + 254 0.000 0.000 0.001 0.000 __init__.py:102(find_spec) + 587 0.000 0.000 0.000 0.000 typing.py:1625(_value_and_type_iter) + 530 0.000 0.000 0.000 0.000 :173(__exit__) + 106 0.000 0.000 0.001 0.000 enum.py:1562(__and__) + 209 0.000 0.000 0.000 0.000 :643(_check_name_wrapper) + 39 0.000 0.000 0.000 0.000 {built-in method _abc._abc_init} + 447/364 0.000 0.000 0.000 0.000 typing.py:1285(__hash__) + 256 0.000 0.000 0.005 0.000 :416(__enter__) + 1 0.000 0.000 0.000 0.000 _type_aliases.py:1() + 713 0.000 0.000 0.000 0.000 {method 'pop' of 'list' objects} + 1079 0.000 0.000 0.000 0.000 {built-in method _thread.get_ident} + 39 0.000 0.000 0.000 0.000 typing.py:361(_flatten_literal_params) + 53 0.000 0.000 0.017 0.000 _compiler.py:740(compile) + 168 0.000 0.000 0.000 0.000 _parser.py:449(_uniq) + 697 0.000 0.000 0.000 0.000 _parser.py:176(append) + 53 0.000 0.000 0.001 0.000 _compiler.py:511(_compile_info) + 1476 0.000 0.000 0.000 0.000 typing.py:1273() + 910 0.000 0.000 0.000 0.000 _parser.py:164(__len__) + 1 0.000 0.000 0.003 0.003 Shadow.py:1() + 200 0.000 0.000 0.000 0.000 _compiler.py:216(_compile_charset) + 198 0.000 0.000 0.000 0.000 {method 'format' of 'str' objects} + 679 0.000 0.000 0.000 0.000 {method 'setdefault' of 'dict' objects} + 1 0.000 0.000 0.009 0.009 numeric.py:1() + 533 0.000 0.000 0.001 0.000 :1469(_path_importer_cache) + 1 0.000 0.000 0.024 0.024 _linalg.py:1() + 649 0.000 0.000 0.000 0.000 {built-in method from_bytes} + 758 0.000 0.000 0.000 0.000 enum.py:202(__get__) + 307 0.000 0.000 0.002 0.000 :150(_path_is_mode_type) + 347/1 0.000 0.000 0.000 0.000 __config__.py:19(_cleanup) + 77 0.000 0.000 0.001 0.000 typing.py:1600(__hash__) + 210 0.000 0.000 0.000 0.000 :48(_new_module) + 1 0.000 0.000 0.003 0.003 plugins.py:1() + 433 0.000 0.000 0.000 0.000 {method 'rfind' of 'str' objects} + 1 0.000 0.000 0.000 0.000 PalmImagePlugin.py:87(build_prototype_image) + 28 0.000 0.000 0.001 0.000 typing.py:1074(_generic_class_getitem) + 367 0.000 0.000 0.000 0.000 extensions.py:52(__init__) + 74 0.000 0.000 0.000 0.000 {built-in method posix.getcwd} + 571 0.000 0.000 0.000 0.000 {method 'add' of 'set' objects} + 3 0.000 0.000 0.001 0.000 enum.py:919(_convert_) + 311 0.000 0.000 0.001 0.000 function_base.py:491(_add_docstring) + 363 0.000 0.000 0.000 0.000 enum.py:1544(_get_value) + 290 0.000 0.000 0.002 0.000 :159(_path_isfile) + 311 0.000 0.000 0.000 0.000 function_base.py:473(_needs_add_docstring) + 251 0.000 0.000 0.015 0.000 :1520(find_spec) + 45/12 0.000 0.000 0.004 0.000 typing.py:1294(__getitem__) + 534 0.000 0.000 0.000 0.000 {method 'remove' of 'list' objects} + 442 0.000 0.000 0.003 0.000 :632(cached) + 1 0.000 0.000 0.008 0.008 ExifTags.py:1() + 192 0.000 0.000 0.002 0.000 Shadow.py:362(pointer) + 738 0.000 0.000 0.000 0.000 enum.py:70(_is_internal_class) + 271 0.000 0.000 0.000 0.000 functools.py:65(wraps) + 62 0.000 0.000 0.000 0.000 enum.py:1008(_find_data_type_) + 480 0.000 0.000 0.000 0.000 typing.py:1592(__eq__) + 6 0.000 0.000 0.001 0.000 getlimits.py:34(__init__) + 412 0.000 0.000 0.001 0.000 typing.py:166(_type_convert) + 530 0.000 0.000 0.000 0.000 {built-in method _weakref._remove_dead_weakref} + 252 0.000 0.000 0.000 0.000 :1128(find_spec) + 209 0.000 0.000 0.001 0.000 :1202(path_stats) + 356 0.000 0.000 0.000 0.000 {method 'pop' of 'dict' objects} + 1 0.000 0.000 0.001 0.001 getlimits.py:166(_register_known_types) + 1 0.000 0.000 0.000 0.000 TiffTags.py:431(_populate) + 1 0.000 0.000 0.001 0.001 _function_base_impl.py:1() + 122 0.000 0.000 0.000 0.000 {built-in method builtins.locals} + 538 0.000 0.000 0.000 0.000 typing.py:1279(__eq__) + 254 0.000 0.000 0.000 0.000 :599(__init__) + 460 0.000 0.000 0.000 0.000 _inspect.py:13(ismethod) + 1 0.000 0.000 0.010 0.010 _dtype_like.py:1() + 1 0.000 0.000 0.005 0.005 fromnumeric.py:1() + 310 0.000 0.000 0.002 0.000 typing.py:730() + 256 0.000 0.000 0.001 0.000 :420(__exit__) + 252 0.000 0.000 0.000 0.000 {built-in method _imp.find_frozen} + 1 0.000 0.000 0.002 0.002 _add_newdocs.py:1() + 11 0.000 0.000 0.000 0.000 {method 'sort' of 'list' objects} + 231 0.000 0.000 0.000 0.000 {method 'extend' of 'list' objects} + 460 0.000 0.000 0.000 0.000 _inspect.py:41(iscode) + 31 0.000 0.000 0.000 0.000 enum.py:1035(_find_new_) + 460 0.000 0.000 0.000 0.000 _inspect.py:26(isfunction) + 254 0.000 0.000 0.000 0.000 {built-in method _imp.is_builtin} + 1 0.000 0.000 0.006 0.006 _array_like.py:1() + 35 0.000 0.000 0.000 0.000 ipaddress.py:1651(_ip_int_from_string) + 676 0.000 0.000 0.000 0.000 {built-in method posix.fspath} + 2 0.000 0.000 0.000 0.000 {built-in method _io.open} + 31 0.000 0.000 0.001 0.000 enum.py:513(__prepare__) + 1 0.000 0.000 0.011 0.011 multiarray.py:1() + 209 0.000 0.000 0.000 0.000 {built-in method _imp._fix_co_filename} + 1 0.000 0.000 0.006 0.006 Image.py:1() + 77 0.000 0.000 0.000 0.000 signal.py:9() + 192 0.000 0.000 0.001 0.000 __init__.py:164(match) + 195 0.000 0.000 0.000 0.000 {method 'match' of 're.Pattern' objects} + 1 0.000 0.000 0.003 0.003 shutil.py:1() + 218 0.000 0.000 0.000 0.000 _compiler.py:398(_simple) + 704 0.000 0.000 0.000 0.000 {built-in method builtins.ord} + 2 0.000 0.000 0.000 0.000 typing.py:2883(__new__) + 250 0.000 0.000 0.000 0.000 :180(_path_isabs) + 336 0.000 0.000 0.000 0.000 {built-in method numpy._core._multiarray_umath.add_docstring} + 265 0.000 0.000 0.000 0.000 overrides.py:105(array_function_dispatch) + 128 0.000 0.000 0.000 0.000 enum.py:726(__call__) + 1 0.000 0.000 0.004 0.004 TiffImagePlugin.py:1() + 250 0.000 0.000 0.000 0.000 :185(_path_abspath) + 1 0.000 0.000 0.001 0.001 _scimath_impl.py:1() + 36 0.000 0.000 0.001 0.000 getlimits.py:111(_float_to_str) + 254 0.000 0.000 0.000 0.000 :982(find_spec) + 53 0.000 0.000 0.006 0.000 _compiler.py:573(_code) + 2 0.000 0.000 0.039 0.019 Image.py:393(init) + 96 0.000 0.000 0.002 0.000 Shadow.py:247(_pointer) + 88 0.000 0.000 0.000 0.000 ipaddress.py:1213(_parse_octet) + 1 0.000 0.000 0.000 0.000 _iotools.py:451(StringConverter) + 1 0.000 0.000 0.002 0.002 numerictypes.py:1() + 35 0.000 0.000 0.001 0.000 ipaddress.py:2256(__init__) + 561 0.000 0.000 0.000 0.000 typing.py:781() + 368 0.000 0.000 0.000 0.000 {method 'copy' of 'list' objects} + 530 0.000 0.000 0.000 0.000 :158(__init__) + 6 0.000 0.000 0.000 0.000 numeric.py:2706(extend_all) + 328 0.000 0.000 0.000 0.000 typing.py:1630(__eq__) + 1 0.000 0.000 0.000 0.000 _compat_pickle.py:1() + 257 0.000 0.000 0.000 0.000 {built-in method _thread.allocate_lock} + 132 0.000 0.000 0.002 0.000 typing.py:317(_deduplicate) + 87 0.000 0.000 0.000 0.000 _parser.py:86(opengroup) + 25 0.000 0.000 0.000 0.000 _add_newdocs_scalars.py:71(add_newdoc_for_scalar_type) + 128 0.000 0.000 0.000 0.000 enum.py:1129(__new__) + 42 0.000 0.000 0.000 0.000 Image.py:3607(register_open) + 147 0.000 0.000 0.000 0.000 TiffTags.py:35(__new__) + 13 0.000 0.000 0.002 0.000 typing.py:2790(_make_nmtuple) + 1 0.000 0.000 0.002 0.002 pickle.py:1() + 17 0.000 0.000 0.000 0.000 :1567(__init__) + 1 0.000 0.000 0.001 0.001 _add_docstring.py:27(_parse_docstrings) + 62 0.000 0.000 0.000 0.000 enum.py:967(_get_mixins_) + 17 0.000 0.000 0.001 0.000 :1456(_path_hooks) + 85 0.000 0.000 0.000 0.000 _parser.py:372(_escape) + 257 0.000 0.000 0.000 0.000 {method 'upper' of 'str' objects} + 25/11 0.000 0.000 0.000 0.000 {built-in method _abc._abc_subclasscheck} + 425 0.000 0.000 0.000 0.000 _parser.py:113(__init__) + 13 0.000 0.000 0.000 0.000 enum.py:1414(_missing_) + 417 0.000 0.000 0.000 0.000 {built-in method builtins.globals} + 1 0.000 0.000 0.006 0.006 DdsImagePlugin.py:1() + 17 0.000 0.000 0.001 0.000 :1644(_fill_cache) + 96/93 0.000 0.000 0.009 0.000 typing.py:515(__getitem__) + 1 0.000 0.000 0.000 0.000 SpiderImagePlugin.py:1() + 8 0.000 0.000 0.000 0.000 :709(__getitem__) + 52 0.000 0.000 0.000 0.000 ipaddress.py:1920(__init__) + 52/47 0.000 0.000 0.000 0.000 _compiler.py:436(_get_literal_prefix) + 1 0.000 0.000 0.000 0.000 pathlib.py:292(PurePath) + 1 0.000 0.000 0.000 0.000 arrayprint.py:1() + 78 0.000 0.000 0.000 0.000 {built-in method numpy.array} + 8 0.000 0.000 0.000 0.000 typing.py:1749(_get_protocol_attrs) + 280 0.000 0.000 0.000 0.000 _parser.py:83(groups) + 1 0.000 0.000 0.002 0.002 ExifTags.py:21(Base) + 28 0.000 0.000 0.000 0.000 _parser.py:274(getuntil) + 21 0.000 0.000 0.000 0.000 ipaddress.py:1502(__init__) + 1 0.000 0.000 0.000 0.000 _exceptions.py:38(_UFuncNoLoopError) + 72 0.000 0.000 0.000 0.000 {method 'copy' of 'numpy.ndarray' objects} + 1 0.000 0.000 0.000 0.000 ipaddress.py:1611(_BaseV6) + 33 0.000 0.000 0.000 0.000 {method '__typing_subst__' of 'typing.TypeVar' objects} + 53 0.000 0.000 0.000 0.000 {built-in method _sre.compile} + 99 0.000 0.000 0.000 0.000 plugins.py:53(__init__) + 1 0.000 0.000 0.001 0.001 _add_newdocs_scalars.py:1() + 1 0.000 0.000 0.001 0.001 signal.py:1() + 673 0.000 0.000 0.000 0.000 enum.py:1185(__init__) + 17 0.000 0.000 0.000 0.000 :64(__init__) + 31 0.000 0.000 0.000 0.000 enum.py:957(_check_for_existing_members_) + 1 0.000 0.000 0.003 0.003 _npyio_impl.py:1() + 16 0.000 0.000 0.000 0.000 {method 'sub' of 're.Pattern' objects} + 1 0.000 0.000 0.000 0.000 {method 'readlines' of '_io._IOBase' objects} + 129 0.000 0.000 0.000 0.000 {method 'split' of 'str' objects} + 56 0.000 0.000 0.000 0.000 ipaddress.py:533(_split_addr_prefix) + 394 0.000 0.000 0.000 0.000 enum.py:820() + 39 0.000 0.000 0.001 0.000 :105(__new__) + 1 0.000 0.000 0.000 0.000 _twodim_base_impl.py:1() + 31 0.000 0.000 0.000 0.000 enum.py:383(__init__) + 102 0.000 0.000 0.000 0.000 {built-in method time.time} + 53 0.000 0.000 0.000 0.000 _parser.py:231(__init__) + 1 0.000 0.000 0.001 0.001 TiffTags.py:1() + 55 0.000 0.000 0.000 0.000 {method 'replace' of 'str' objects} + 68 0.000 0.000 0.000 0.000 Image.py:3669(register_extension) + 168 0.000 0.000 0.000 0.000 {method 'items' of 'dict' objects} + 33 0.000 0.000 0.001 0.000 typing.py:1417(copy_with) + 39 0.000 0.000 0.003 0.000 typing.py:521(__getitem__) + 4 0.000 0.000 0.000 0.000 {built-in method builtins.dir} + 370 0.000 0.000 0.000 0.000 enum.py:1292(value) + 1 0.000 0.000 0.003 0.003 parse.py:1() + 1 0.000 0.000 0.001 0.001 dataclasses.py:921(_process_class) + 1 0.000 0.000 0.001 0.001 _nanfunctions_impl.py:1() + 2 0.000 0.000 0.000 0.000 {built-in method PIL._imaging.fill} + 460 0.000 0.000 0.000 0.000 :71(_relax_case) + 388 0.000 0.000 0.000 0.000 enum.py:1287(name) + 1 0.000 0.000 0.000 0.000 {method 'astype' of 'numpy.ndarray' objects} + 8 0.000 0.000 0.000 0.000 typing.py:1994(__init_subclass__) + 45 0.000 0.000 0.000 0.000 typing.py:1004(_typevar_subst) + 1 0.000 0.000 0.008 0.008 PdfParser.py:360(PdfParser) + 635 0.000 0.000 0.000 0.000 enum.py:251(__init__) + 192 0.000 0.000 0.000 0.000 Shadow.py:363(PointerInstance) + 1 0.000 0.000 0.000 0.000 umath.py:1() + 1 0.000 0.000 0.005 0.005 pathlib.py:1() + 256 0.000 0.000 0.000 0.000 :412(__init__) + 45 0.000 0.000 0.000 0.000 typing.py:307(_unpack_args) + 124 0.000 0.000 0.000 0.000 {method 'isidentifier' of 'str' objects} + 1 0.000 0.000 0.000 0.000 _shape_base_impl.py:1() + 1 0.000 0.000 0.000 0.000 {method 'close' of '_io.BufferedWriter' objects} + 1 0.000 0.000 0.029 0.029 _index_tricks_impl.py:1() + 220 0.000 0.000 0.000 0.000 _parser.py:172(__setitem__) + 9 0.000 0.000 0.000 0.000 typing.py:1123(_generic_init_subclass) + 1 0.000 0.000 0.000 0.000 TiffImagePlugin.py:490(ImageFileDirectory_v2) + 1 0.000 0.000 0.001 0.001 _polynomial_impl.py:1() + 2 0.000 0.000 0.000 0.000 {built-in method _ctypes.POINTER} + 1 0.000 0.000 0.001 0.001 _type_check_impl.py:1() + 78 0.000 0.000 0.000 0.000 {method 'translate' of 'bytearray' objects} + 56 0.000 0.000 0.000 0.000 ipaddress.py:156(_split_optional_netmask) + 1 0.000 0.000 0.000 0.000 ImImagePlugin.py:1() + 1 0.000 0.000 9.918 9.918 skydome.py:1() + 81 0.000 0.000 0.000 0.000 typing.py:988(_is_unpacked_typevartuple) + 87 0.000 0.000 0.000 0.000 _parser.py:98(closegroup) + 1 0.000 0.000 0.001 0.001 _arraysetops_impl.py:1() + 77 0.000 0.000 0.000 0.000 {method 'isupper' of 'str' objects} + 24/21 0.000 0.000 0.014 0.001 :1287(create_module) + 1 0.000 0.000 0.006 0.006 shape_base.py:1() + 17 0.000 0.000 0.000 0.000 :1685(path_hook_for_FileFinder) + 49 0.000 0.000 0.018 0.000 __init__.py:226(compile) + 1 0.000 0.000 0.003 0.003 _methods.py:1() + 18 0.000 0.000 0.001 0.000 arrayprint.py:540(wrapper) + 47 0.000 0.000 0.000 0.000 ipaddress.py:1755(_parse_hextet) + 106 0.000 0.000 0.000 0.000 _compiler.py:570(isstring) + 58 0.000 0.000 0.008 0.000 typing.py:1288(__or__) + 1 0.000 0.000 0.000 0.000 {built-in method numpy.zeros} + 1 0.000 0.000 0.015 0.015 GifImagePlugin.py:1() + 1 0.000 0.000 0.004 0.004 subprocess.py:1() + 1 0.000 0.000 0.000 0.000 JpegImagePlugin.py:1() + 102 0.000 0.000 0.000 0.000 {built-in method sys.intern} + 209 0.000 0.000 0.000 0.000 :1153(__init__) + 168 0.000 0.000 0.000 0.000 typing.py:962(__eq__) + 209 0.000 0.000 0.000 0.000 :1178(get_filename) + 35 0.000 0.000 0.000 0.000 ipaddress.py:1631(_make_netmask) + 36 0.000 0.000 0.000 0.000 getlimits.py:24(_fr1) + 1 0.000 0.000 0.001 0.001 PngImagePlugin.py:1() + 31 0.000 0.000 0.000 0.000 ipaddress.py:1286(__init__) + 1 0.000 0.000 0.000 0.000 v2.py:1() + 1 0.000 0.000 0.000 0.000 threading.py:1() + 8 0.000 0.000 0.000 0.000 textwrap.py:419(dedent) + 8 0.000 0.000 0.000 0.000 typing.py:1850(__new__) + 1 0.000 0.000 0.003 0.003 _internal.py:1() + 1 0.000 0.000 0.004 0.004 cython.py:1() + 15 0.000 0.000 0.000 0.000 enum.py:1551(__or__) + 2 0.000 0.000 0.007 0.003 format.py:1() + 83 0.000 0.000 0.000 0.000 __init__.py:16(set_module) + 102 0.000 0.000 0.000 0.000 typing.py:1320() + 100 0.000 0.000 0.000 0.000 {method 'lower' of 'str' objects} + 8 0.000 0.000 0.000 0.000 {method 'findall' of 're.Pattern' objects} + 1 0.000 0.000 0.002 0.002 random.py:1() + 1 0.000 0.000 0.000 0.000 pickle.py:1179(_Unpickler) + 18 0.000 0.000 0.001 0.000 arrayprint.py:1675(_array_str_implementation) + 1 0.000 0.000 0.001 0.001 Image.py:2481(save) + 22 0.000 0.000 0.000 0.000 ipaddress.py:1187(_ip_int_from_string) + 1 0.000 0.000 0.070 0.070 v2.py:365(imwrite) + 43 0.000 0.000 0.000 0.000 _compiler.py:467(_get_charset_prefix) + 1 0.000 0.000 0.001 0.001 :1() + 1 0.000 0.000 0.001 0.001 DdsImagePlugin.py:195(D3DFMT) + 31 0.000 0.000 0.000 0.000 enum.py:986(_find_data_repr_) + 48 0.000 0.000 0.000 0.000 __init__.py:1517(debug) + 8 0.000 0.000 0.000 0.000 typing.py:1476(__getitem__) + 1 0.000 0.000 0.001 0.001 DdsImagePlugin.py:71(DXGI_FORMAT) + 83 0.000 0.000 0.000 0.000 __init__.py:27(decorator) + 1 0.000 0.000 0.000 0.000 defmatrix.py:72(matrix) + 236 0.000 0.000 0.000 0.000 :653(has_location) + 1 0.000 0.000 0.000 0.000 Image.py:527(Image) + 36 0.000 0.000 0.000 0.000 getlimits.py:16(_fr0) + 53 0.000 0.000 0.000 0.000 _parser.py:953(fix_flags) + 32 0.000 0.000 0.000 0.000 {built-in method _struct.calcsize} + 136 0.000 0.000 0.000 0.000 :1573() + 23 0.000 0.000 0.000 0.000 overrides.py:177(decorator) + 1 0.000 0.000 0.001 0.001 calendar.py:1() + 24 0.000 0.000 0.000 0.000 :1295(exec_module) + 36 0.000 0.000 0.000 0.000 getlimits.py:91(_float_to_float) + 1 0.000 0.000 0.000 0.000 _typing.py:1() + 26 0.000 0.000 0.000 0.000 ipaddress.py:474(_prefix_from_prefix_string) + 1 0.000 0.000 0.000 0.000 records.py:1() + 7 0.000 0.000 0.000 0.000 {built-in method builtins.sorted} + 21 0.000 0.000 0.000 0.000 ipaddress.py:1161(_make_netmask) + 1 0.000 0.000 0.011 0.011 PdfParser.py:1() + 24 0.000 0.000 0.000 0.000 numerictypes.py:590(_scalar_type_key) + 96 0.000 0.000 0.000 0.000 __init__.py:429() + 1 0.000 0.000 0.036 0.036 __config__.py:1() + 1 0.000 0.000 0.001 0.001 ipaddress.py:2332(_IPv6Constants) + 1 0.000 0.000 0.000 0.000 pillow.py:354(write) + 5 0.000 0.000 0.000 0.000 __init__.py:1377(getLogger) + 119 0.000 0.000 0.000 0.000 {method 'isascii' of 'str' objects} + 1 0.000 0.000 0.000 0.000 getlimits.py:1() + 97 0.000 0.000 0.000 0.000 _compiler.py:31(_combine_flags) + 209 0.000 0.000 0.000 0.000 :986(create_module) + 96 0.000 0.000 0.000 0.000 {method '__contains__' of 'frozenset' objects} + 1 0.000 0.000 0.010 0.010 request.py:1() + 21 0.000 0.000 0.000 0.000 typing.py:892(__init__) + 1 0.000 0.000 0.000 0.000 platform.py:1() + 42 0.000 0.000 0.000 0.000 _add_newdocs_scalars.py:83() + 1 0.000 0.000 0.000 0.000 TgaImagePlugin.py:1() + 367 0.000 0.000 0.000 0.000 extensions.py:1869() + 1 0.000 0.000 0.001 0.001 EpsImagePlugin.py:1() + 50 0.000 0.000 0.000 0.000 _add_newdocs.py:6752(refer_to_array_attribute) + 114 0.000 0.000 0.000 0.000 {method 'isdigit' of 'str' objects} + 42 0.000 0.000 0.000 0.000 enum.py:1394(_iter_member_by_value_) + 1 0.000 0.000 0.000 0.000 _string_helpers.py:1() + 14 0.000 0.000 0.000 0.000 __init__.py:145(_check_size) + 1 0.000 0.000 0.000 0.000 request.py:216(__init__) + 1 0.000 0.000 0.000 0.000 _endian.py:1() + 1 0.000 0.000 0.000 0.000 BmpImagePlugin.py:1() + 8 0.000 0.000 0.000 0.000 {method '__init_subclass__' of 'object' objects} + 1 0.000 0.000 0.000 0.000 ImageColor.py:1() + 1 0.000 0.000 0.001 0.001 BlpImagePlugin.py:1() + 41 0.000 0.000 0.000 0.000 types.py:192(__init__) + 1 0.000 0.000 0.000 0.000 _ufunc_config.py:1() + 1 0.000 0.000 0.025 0.025 pillow.py:1() + 1 0.000 0.000 0.000 0.000 mixins.py:61(NDArrayOperatorsMixin) + 119 0.000 0.000 0.000 0.000 TiffImagePlugin.py:270() + 1 0.000 0.000 0.000 0.000 fractions.py:162(Fraction) + 1 0.000 0.000 0.011 0.011 overrides.py:1() + 1 0.000 0.000 0.000 0.000 traceback.py:1() + 5 0.000 0.000 0.000 0.000 dataclasses.py:760(_get_field) + 125 0.000 0.000 0.000 0.000 {built-in method _sre.unicode_iscased} + 1 0.000 0.000 0.000 0.000 request.py:280(_parse_uri) + 1 0.000 0.000 0.000 0.000 function_base.py:1() + 6 0.000 0.000 0.000 0.000 {built-in method posix.lstat} + 56 0.000 0.000 0.000 0.000 typing.py:1088() + 1 0.000 0.000 0.001 0.001 PngImagePlugin.py:1250(_save) + 1 0.000 0.000 0.000 0.000 selectors.py:1() + 1 0.000 0.000 0.000 0.000 _linalg.py:43(EigResult) + 1 0.000 0.000 0.042 0.042 pillow.py:71(__init__) + 1 0.000 0.000 0.000 0.000 _histograms_impl.py:1() + 15 0.000 0.000 0.000 0.000 functools.py:477(lru_cache) + 14 0.000 0.000 0.000 0.000 Image.py:3680(register_extensions) + 42 0.000 0.000 0.000 0.000 getlimits.py:101(_float_conv) + 1 0.000 0.000 0.000 0.000 :432(_joinrealpath) + 1 0.000 0.000 0.000 0.000 subprocess.py:749(Popen) + 9 0.000 0.000 0.000 0.000 TiffImagePlugin.py:467(_register_basic) + 10 0.000 0.000 0.000 0.000 typing.py:1485(copy_with) + 8 0.000 0.000 0.000 0.000 typing.py:1869(__init__) + 11 0.000 0.000 0.000 0.000 functools.py:516(decorating_function) + 26 0.000 0.000 0.000 0.000 ipaddress.py:431(_ip_int_from_prefix) + 1 0.000 0.000 0.003 0.003 _char_codes.py:1() + 1 0.000 0.000 0.000 0.000 _scalars.py:1() + 1 0.000 0.000 0.000 0.000 ImageFile.py:1() + 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} + 1 0.000 0.000 0.000 0.000 ipaddress.py:1569(_IPv4Constants) + 1 0.000 0.000 0.000 0.000 _stride_tricks_impl.py:1() + 1 0.000 0.000 0.004 0.004 fractions.py:1() + 5 0.000 0.000 0.000 0.000 __init__.py:1428(_fixupParents) + 48 0.000 0.000 0.000 0.000 __init__.py:1790(isEnabledFor) + 1 0.000 0.000 0.068 0.068 imopen.py:15(imopen) + 6 0.000 0.000 0.000 0.000 __init__.py:1497(__init__) + 1 0.000 0.000 0.000 0.000 tokenize.py:445(open) + 35 0.000 0.000 0.000 0.000 ipaddress.py:1885(_split_scope_id) + 1 0.000 0.000 0.000 0.000 IcoImagePlugin.py:1() + 95 0.000 0.000 0.000 0.000 _compiler.py:428(_get_iscased) + 53 0.000 0.000 0.000 0.000 _parser.py:77(__init__) + 1 0.000 0.000 0.000 0.000 threading.py:1441(__init__) + 1 0.000 0.000 0.002 0.002 tempfile.py:1() + 1 0.000 0.000 0.000 0.000 _nested_sequence.py:1() + 1 0.000 0.000 0.000 0.000 printoptions.py:1() + 47 0.000 0.000 0.000 0.000 {method 'issuperset' of 'frozenset' objects} + 1 0.000 0.000 0.000 0.000 ipaddress.py:671(_BaseNetwork) + 1 0.000 0.000 0.000 0.000 {method 'flush' of '_io.BufferedWriter' objects} + 58 0.000 0.000 0.000 0.000 {method 'pop' of 'set' objects} + 1 0.000 0.000 0.000 0.000 PpmImagePlugin.py:1() + 3 0.000 0.000 0.000 0.000 dataclasses.py:449(_create_fn) + 1 0.000 0.000 0.001 0.001 _utils_impl.py:1() + 2 0.000 0.000 0.000 0.000 functools.py:188(total_ordering) + 1 0.000 0.000 0.025 0.025 defmatrix.py:1() + 1 0.000 0.000 0.000 0.000 pickle.py:404(_Pickler) + 1 0.000 0.000 0.001 0.001 ipaddress.py:1() + 28 0.000 0.000 0.000 0.000 Image.py:3642(register_save) + 1 0.000 0.000 0.000 0.000 {method 'write' of '_io.TextIOWrapper' objects} + 1 0.000 0.000 0.000 0.000 pathlib.py:569(_tail) + 110 0.000 0.000 0.000 0.000 {built-in method _sre.unicode_tolower} + 1 0.000 0.000 0.000 0.000 SgiImagePlugin.py:1() + 1 0.000 0.000 0.000 0.000 {function Random.seed at 0x7f09236fe8e0} + 28 0.000 0.000 0.000 0.000 _parser.py:304(checkgroupname) + 1 0.000 0.000 0.002 0.002 ImageOps.py:1() + 1 0.000 0.000 0.000 0.000 _linalg.py:59(SVDResult) + 5 0.000 0.000 0.000 0.000 __init__.py:2149(getLogger) + 1 0.000 0.000 0.005 0.005 util.py:1() + 1 0.000 0.000 0.000 0.000 lzma.py:1() + 13 0.000 0.000 0.000 0.000 mixins.py:46(_numeric_methods) + 1 0.000 0.000 0.000 0.000 einsumfunc.py:1() + 2 0.000 0.000 0.001 0.001 pillow.py:475(_flush_writer) + 1 0.000 0.000 0.000 0.000 TiffImagePlugin.py:323(IFDRational) + 1 0.000 0.000 0.000 0.000 __init__.py:432(_sanity_check) + 14 0.000 0.000 0.000 0.000 :791(encode) + 1 0.000 0.000 0.000 0.000 WmfImagePlugin.py:1() + 7 0.000 0.000 0.000 0.000 :71(join) + 4 0.000 0.000 0.000 0.000 typing.py:2140(runtime_checkable) + 1 0.000 0.000 0.000 0.000 _polynomial_impl.py:1080(poly1d) + 1 0.000 0.000 0.000 0.000 IptcImagePlugin.py:1() + 32 0.000 0.000 0.000 0.000 typing.py:295(_check_generic) + 1 0.000 0.000 0.000 0.000 PsdImagePlugin.py:1() + 3 0.000 0.000 0.000 0.000 PngImagePlugin.py:1082(putchunk) + 42 0.000 0.000 0.000 0.000 enum.py:117(_iter_bits_lsb) + 1 0.000 0.000 0.000 0.000 skydome.py:132(refraction_calculator) + 5 0.000 0.000 0.000 0.000 TiffImagePlugin.py:448(decorator) + 41 0.000 0.000 0.000 0.000 enum.py:942() + 1 0.000 0.000 0.000 0.000 ipaddress.py:1914(IPv6Address) + 1 0.000 0.000 0.001 0.001 IcnsImagePlugin.py:1() + 20 0.000 0.000 0.000 0.000 mixins.py:18(_binary_method) + 22 0.000 0.000 0.000 0.000 _type_aliases.py:118() + 1 0.000 0.000 0.000 0.000 PcxImagePlugin.py:1() + 1 0.000 0.000 0.011 0.011 PdfImagePlugin.py:1() + 85 0.000 0.000 0.000 0.000 _compat_pickle.py:167() + 1 0.000 0.000 0.000 0.000 calendar.py:94(_localized_month) + 6 0.000 0.000 0.000 0.000 request.py:138(io_mode) + 1 0.000 0.000 0.000 0.000 tempfile.py:685(SpooledTemporaryFile) + 1 0.000 0.000 0.001 0.001 decimal.py:1() + 1 0.000 0.000 0.000 0.000 Image.py:3219(fromarray) + 17 0.000 0.000 0.000 0.000 {method 'setter' of 'property' objects} + 17 0.000 0.000 0.000 0.000 _binary.py:60(i32le) + 2 0.000 0.000 0.000 0.000 :723(__delitem__) + 1 0.000 0.000 0.000 0.000 dataclasses.py:568(_init_fn) + 1 0.000 0.000 0.002 0.002 v3_plugin_api.py:1() + 8 0.000 0.000 0.000 0.000 __init__.py:56(__init_subclass__) + 1 0.000 0.000 0.000 0.000 pathlib.py:387(_parse_path) + 1 0.000 0.000 0.000 0.000 QoiImagePlugin.py:38(QoiDecoder) + 112 0.000 0.000 0.000 0.000 ipaddress.py:574(__int__) + 1 0.000 0.000 0.000 0.000 _globals.py:32(_NoValueType) + 1 0.000 0.000 0.000 0.000 pillow.py:70(PillowPlugin) + 1 0.000 0.000 0.001 0.001 WebPImagePlugin.py:1() + 1 0.000 0.000 0.000 0.000 _datasource.py:73(_FileOpeners) + 1 0.000 0.000 0.000 0.000 _datasource.py:1() + 2 0.000 0.000 0.000 0.000 Image.py:3053(new) + 1 0.000 0.000 0.000 0.000 linecache.py:80(updatecache) + 50 0.000 0.000 0.000 0.000 :7(abstractmethod) + 1 0.000 0.000 0.000 0.000 v3_plugin_api.py:45(PluginV3) + 1 0.000 0.000 0.001 0.001 _globals.py:1() + 17 0.000 0.000 0.000 0.000 :164(_path_isdir) + 1 0.000 0.000 0.000 0.000 {method 'dot' of 'numpy.ndarray' objects} + 1 0.000 0.000 0.005 0.005 MpoImagePlugin.py:1() + 1 0.000 0.000 0.000 0.000 pathlib.py:824(Path) + 1 0.000 0.000 0.000 0.000 _linalg.py:47(EighResult) + 1 0.000 0.000 0.000 0.000 gzip.py:1() + 1 0.000 0.000 0.000 0.000 __future__.py:1() + 1 0.000 0.000 0.003 0.003 fetching.py:1() + 7 0.000 0.000 0.000 0.000 fractions.py:533(_operator_fallbacks) + 41 0.000 0.000 0.000 0.000 {method 'partition' of 'str' objects} + 1 0.000 0.000 0.000 0.000 _exceptions.py:1() + 1 0.000 0.000 0.000 0.000 ipaddress.py:383(_IPAddressBase) + 1 0.000 0.000 0.000 0.000 Image.py:2041(putpalette) + 1 0.000 0.000 0.000 0.000 MspImagePlugin.py:1() + 16 0.000 0.000 0.000 0.000 enum.py:816(__iter__) + 1 0.000 0.000 0.000 0.000 PalmImagePlugin.py:1() + 18 0.000 0.000 0.000 0.000 _add_newdocs_scalars.py:19(type_aliases_gen) + 1 0.000 0.000 0.001 0.001 _add_docstring.py:1() + 22 0.000 0.000 0.000 0.000 Image.py:3627(register_mime) + 1 0.000 0.000 0.000 0.000 request.py:188(Request) + 2 0.000 0.000 0.000 0.000 typing.py:1575(__getitem__) + 1 0.000 0.000 0.000 0.000 _linalg.py:51(QRResult) + 1 0.000 0.000 0.000 0.000 _linalg.py:55(SlogdetResult) + 10 0.000 0.000 0.000 0.000 {built-in method _abc._abc_register} + 3 0.000 0.000 0.000 0.000 getlimits.py:692(__init__) + 1 0.000 0.000 0.000 0.000 features.py:1() + 3 0.000 0.000 0.000 0.000 warnings.py:133(filterwarnings) + 1 0.000 0.000 0.000 0.000 numbers.py:319(Integral) + 1 0.000 0.000 0.000 0.000 random.py:110(Random) + 1 0.000 0.000 0.000 0.000 XpmImagePlugin.py:1() + 1 0.000 0.000 0.000 0.000 _iotools.py:1() + 4 0.000 0.000 0.000 0.000 Image.py:885(load) + 1 0.000 0.000 0.000 0.000 Jpeg2KImagePlugin.py:1() + 1 0.000 0.000 0.001 0.001 typing.py:1() + 1 0.000 0.000 0.000 0.000 subprocess.py:695(_use_posix_spawn) + 1 0.000 0.000 0.000 0.000 numbers.py:57(Complex) + 1 0.000 0.000 0.001 0.001 bz2.py:1() + 1 0.000 0.000 0.000 0.000 Hdf5StubImagePlugin.py:1() + 1 0.000 0.000 0.000 0.000 memmap.py:1() + 1 0.000 0.000 0.001 0.001 ImageFile.py:556(_encode_tile) + 2 0.000 0.000 0.000 0.000 {built-in method _imp.create_builtin} + 1 0.000 0.000 0.000 0.000 request.py:76(Mode) + 1 0.000 0.000 0.000 0.000 warnings.py:35(_formatwarnmsg_impl) + 1 0.000 0.000 0.000 0.000 GimpGradientFile.py:1() + 1 0.000 0.000 0.000 0.000 threading.py:884(__init__) + 1 0.000 0.000 0.000 0.000 tokenize.py:352(detect_encoding) + 50 0.000 0.000 0.000 0.000 enum.py:93(_is_single_bit) + 1 0.000 0.000 0.001 0.001 ImageFile.py:528(_save) + 1 0.000 0.000 0.000 0.000 skydome.py:76(Vec3) + 4 0.000 0.000 0.000 0.000 warnings.py:184(_add_filter) + 1 0.000 0.000 0.000 0.000 ImageMath.py:1() + 1 0.000 0.000 0.000 0.000 PdfParser.py:204(PdfName) + 1 0.000 0.000 0.000 0.000 __init__.py:1266(ZipFile) + 1 0.000 0.000 0.001 0.001 FitsImagePlugin.py:1() + 1 0.000 0.000 0.000 0.000 ImageMath.py:27(_Operand) + 14 0.000 0.000 0.001 0.000 typing.py:1291(__ror__) + 1 0.000 0.000 0.000 0.000 Image.py:851(frombytes) + 1 0.000 0.000 0.000 0.000 numbers.py:1() + 1 0.000 0.000 0.000 0.000 MpegImagePlugin.py:1() + 2 0.000 0.000 0.003 0.001 Image.py:348(preinit) + 1 0.000 0.000 0.000 0.000 PixarImagePlugin.py:1() + 1 0.000 0.000 0.003 0.003 legacy_plugin_wrapper.py:1() + 1 0.000 0.000 0.000 0.000 numbers.py:172(Real) + 1 0.000 0.000 0.000 0.000 ExifTags.py:305(GPS) + 78 0.000 0.000 0.000 0.000 signal.py:16() + 1 0.000 0.000 0.000 0.000 JpegPresets.py:1() + 79 0.000 0.000 0.000 0.000 signal.py:21() + 1 0.000 0.000 0.000 0.000 {built-in method builtins.repr} + 1 0.000 0.000 0.000 0.000 threading.py:873(Thread) + 1 0.000 0.000 0.000 0.000 parse.py:152(_NetlocResultMixinBase) + 9 0.000 0.000 0.000 0.000 overrides.py:23(set_array_function_like_doc) + 1 0.000 0.000 0.000 0.000 _asarray.py:1() + 14 0.000 0.000 0.000 0.000 {built-in method builtins.any} + 1 0.000 0.000 0.000 0.000 ipaddress.py:1139(_BaseV4) + 1 0.000 0.000 0.000 0.000 __init__.py:1878(LoggerAdapter) + 1 0.000 0.000 0.000 0.000 FliImagePlugin.py:1() + 1 0.000 0.000 0.000 0.000 __init__.py:189(Path) + 1 0.000 0.000 0.001 0.001 string.py:1() + 1 0.000 0.000 0.000 0.000 QoiImagePlugin.py:1() + 1 0.000 0.000 0.000 0.000 IcnsImagePlugin.py:139(IcnsFile) + 76 0.000 0.000 0.000 0.000 __init__.py:109() + 3 0.000 0.000 0.000 0.000 contextlib.py:272(contextmanager) + 1 0.000 0.000 0.000 0.000 _index_tricks_impl.py:328(AxisConcatenator) + 1 0.000 0.000 0.000 0.000 ipaddress.py:1420(IPv4Interface) + 1 0.000 0.000 0.000 0.000 _ufunclike_impl.py:1() + 25/11 0.000 0.000 0.000 0.000 :121(__subclasscheck__) + 1 0.000 0.000 0.001 0.001 ImagePalette.py:1() + 4 0.000 0.000 0.000 0.000 :408(abspath) + 1 0.000 0.000 0.000 0.000 ImageChops.py:1() + 1 0.000 0.000 0.001 0.001 XbmImagePlugin.py:1() + 1 0.000 0.000 0.000 0.000 subprocess.py:470(CompletedProcess) + 1 0.000 0.000 0.000 0.000 __init__.py:493(hugepage_setup) + 1 0.000 0.000 0.000 0.000 format.py:84(Format) + 1 0.000 0.000 0.001 0.001 __init__.py:469(StrFormatStyle) + 17 0.000 0.000 0.000 0.000 {built-in method _struct.unpack_from} + 1 0.000 0.000 0.000 0.000 {method 'decode' of 'ImagingDecoder' objects} + 1 0.000 0.000 0.000 0.000 {method 'putpalette' of 'ImagingCore' objects} + 14 0.000 0.000 0.000 0.000 mixins.py:28(_reflected_binary_method) + 1 0.000 0.000 0.000 0.000 _dtype.py:1() + 1 0.000 0.000 0.000 0.000 FtexImagePlugin.py:1() + 1 0.000 0.000 0.000 0.000 {method 'putdata' of 'ImagingCore' objects} + 2 0.000 0.000 0.000 0.000 Image.py:571(_new) + 43 0.000 0.000 0.000 0.000 _compat_pickle.py:165() + 1 0.000 0.000 0.000 0.000 DcxImagePlugin.py:1() + 1 0.000 0.000 0.000 0.000 datetime.py:1() + 1 0.000 0.000 0.001 0.001 dataclasses.py:1264(wrap) + 2 0.000 0.000 0.000 0.000 _compiler.py:391(_bytes_to_codes) + 18 0.000 0.000 0.000 0.000 typing.py:1481() + 2 0.000 0.000 0.000 0.000 __init__.py:73(CFUNCTYPE) + 12 0.000 0.000 0.001 0.000 typing.py:1589(copy_with) + 2 0.000 0.000 0.000 0.000 tokenize.py:382(find_cookie) + 1 0.000 0.000 0.000 0.000 enum.py:1612(unique) + 1 0.000 0.000 0.000 0.000 _arraypad_impl.py:1() + 1 0.000 0.000 0.000 0.000 McIdasImagePlugin.py:1() + 1 0.000 0.000 0.000 0.000 numeric.py:144(ones) + 13 0.000 0.000 0.000 0.000 mixins.py:38(_inplace_binary_method) + 1 0.000 0.000 0.000 0.000 TiffImagePlugin.py:1911(AppendingTiffWriter) + 4 0.000 0.000 0.000 0.000 _parser.py:893(_parse_flags) + 3 0.000 0.000 0.000 0.000 :179(dirname) + 2 0.000 0.000 0.001 0.001 pillow.py:143(close) + 1 0.000 0.000 0.000 0.000 BufrStubImagePlugin.py:1() + 1 0.000 0.000 0.000 0.000 CurImagePlugin.py:1() + 3 0.000 0.000 0.000 0.000 typing.py:747(Optional) + 3 0.000 0.000 0.000 0.000 :662(spec_from_loader) + 1 0.000 0.000 0.000 0.000 ipaddress.py:2165(IPv6Interface) + 116 0.000 0.000 0.000 0.000 extensions.py:2002() + 27 0.000 0.000 0.000 0.000 TiffImagePlugin.py:316(_delegate) + 1 0.000 0.000 0.000 0.000 skydome.py:153(beta) + 1 0.000 0.000 0.000 0.000 inspect.py:176(get_annotations) + 2 0.000 0.000 0.000 0.000 request.py:540(finish) + 1 0.000 0.000 0.000 0.000 threading.py:1045(_set_tstate_lock) + 1 0.000 0.000 0.000 0.000 ImageMode.py:1() + 1 0.000 0.000 0.000 0.000 Image.py:2018(putdata) + 1 0.000 0.000 0.000 0.000 findlib.py:1() + 1 0.000 0.000 0.000 0.000 imopen.py:1() + 16 0.000 0.000 0.000 0.000 typing.py:1999() + 1 0.000 0.000 0.000 0.000 _internal.py:261(_ctypes) + 1 0.000 0.000 0.000 0.000 random.py:135(seed) + 1 0.000 0.000 0.000 0.000 {built-in method PIL._imaging.zip_encoder} + 2 0.000 0.000 0.000 0.000 _ufunc_config.py:441(__enter__) + 8 0.000 0.000 0.000 0.000 __init__.py:234(_acquireLock) + 2 0.000 0.000 0.000 0.000 selectors.py:588(_can_use) + 1 0.000 0.000 0.000 0.000 GribStubImagePlugin.py:1() + 1 0.000 0.000 0.000 0.000 _machar.py:1() + 1 0.000 0.000 0.000 0.000 _arrayterator_impl.py:1() + 1 0.000 0.000 0.001 0.001 string.py:69(__init_subclass__) + 1 0.000 0.000 0.000 0.000 Image.py:3105(frombytes) + 2 0.000 0.000 0.000 0.000 {built-in method posix.uname} + 1 0.000 0.000 0.000 0.000 SunImagePlugin.py:1() + 1 0.000 0.000 0.000 0.000 _shape.py:1() + 24 0.000 0.000 0.000 0.000 {method 'discard' of 'set' objects} + 1 0.000 0.000 0.000 0.000 ipaddress.py:1280(IPv4Address) + 26 0.000 0.000 0.000 0.000 ipaddress.py:415(_check_int_address) + 23 0.000 0.000 0.000 0.000 overrides.py:173(array_function_from_dispatcher) + 6 0.000 0.000 0.000 0.000 typing.py:2339(get_origin) + 38 0.000 0.000 0.000 0.000 {built-in method _ctypes.sizeof} + 6 0.000 0.000 0.000 0.000 _exceptions.py:17(_display_as_base) + 1 0.000 0.000 0.000 0.000 lzma.py:38(LZMAFile) + 1 0.000 0.000 0.000 0.000 platform.py:795(_Processor) + 1 0.000 0.000 0.000 0.000 ImImagePlugin.py:118(ImImageFile) + 1 0.000 0.000 0.000 0.000 bz2.py:26(BZ2File) + 1 0.000 0.000 0.000 0.000 _distributor_init.py:1() + 1 0.000 0.000 0.000 0.000 _binary.py:1() + 1 0.000 0.000 0.000 0.000 GbrImagePlugin.py:1() + 4 0.000 0.000 0.000 0.000 _compiler.py:407(_generate_overlap_table) + 1 0.000 0.000 0.000 0.000 {built-in method PIL._imaging.raw_decoder} + 1 0.000 0.000 0.000 0.000 platform.py:843(uname_result) + 1 0.000 0.000 0.000 0.000 v2.py:109(LegacyReader) + 5 0.000 0.000 0.000 0.000 :811(__contains__) + 1 0.000 0.000 0.000 0.000 __init__.py:442(LibraryLoader) + 1 0.000 0.000 0.000 0.000 request.py:461(get_file) + 1 0.000 0.000 0.000 0.000 linecache.py:36(getlines) + 1 0.000 0.000 0.000 0.000 struct.py:1() + 1 0.000 0.000 0.000 0.000 fnmatch.py:1() + 1 0.000 0.000 0.000 0.000 _array_utils_impl.py:1() + 25 0.000 0.000 0.000 0.000 {method 'bit_length' of 'int' objects} + 41 0.000 0.000 0.000 0.000 enum.py:241(__set_name__) + 1 0.000 0.000 0.000 0.000 tempfile.py:860(TemporaryDirectory) + 1 0.000 0.000 0.000 0.000 ExifTags.py:360(LightSource) + 1 0.000 0.000 0.000 0.000 selectors.py:80(BaseSelector) + 2 0.000 0.000 0.000 0.000 enum.py:1677(global_enum) + 1 0.000 0.000 0.000 0.000 __init__.py:1482(Logger) + 2 0.000 0.000 0.000 0.000 {method 'readline' of '_io.BufferedReader' objects} + 1 0.000 0.000 0.000 0.000 __init__.py:265(_reset_cache) + 1 0.000 0.000 0.000 0.000 getlimits.py:32(MachArLike) + 14 0.000 0.000 0.000 0.000 {method 'encode' of 'str' objects} + 1 0.000 0.000 0.000 0.000 exceptions.py:1() + 1 0.000 0.000 0.000 0.000 TiffImagePlugin.py:1100(TiffImageFile) + 1 0.000 0.000 0.000 0.000 ImtImagePlugin.py:1() + 5 0.000 0.000 0.000 0.000 typing.py:1442(__mro_entries__) + 1 0.000 0.000 0.000 0.000 BmpImagePlugin.py:63(BmpImageFile) + 1 0.000 0.000 0.000 0.000 weakref.py:104(__init__) + 8 0.000 0.000 0.000 0.000 typing.py:485(__getattr__) + 8 0.000 0.000 0.000 0.000 __init__.py:179(sub) + 5 0.000 0.000 0.000 0.000 dataclasses.py:489(_field_init) + 1 0.000 0.000 0.000 0.000 pathlib.py:407(_load_parts) + 1 0.000 0.000 0.000 0.000 bisect.py:1() + 5 0.000 0.000 0.000 0.000 dataclasses.py:404(field) + 1 0.000 0.000 0.000 0.000 GifImagePlugin.py:78(GifImageFile) + 1 0.000 0.000 0.000 0.000 gzip.py:139(GzipFile) + 1 0.000 0.000 0.000 0.000 __init__.py:839(ZipExtFile) + 1 0.000 0.000 0.000 0.000 _dtype_like.py:82(_SupportsDType) + 1 0.000 0.000 0.000 0.000 _add_newdocs_scalars.py:18(numeric_type_aliases) + 26 0.000 0.000 0.000 0.000 typing.py:2815() + 2 0.000 0.000 0.000 0.000 _version.py:1() + 15 0.000 0.000 0.000 0.000 :41(_get_sep) + 1 0.000 0.000 0.000 0.000 __init__.py:343(__init__) + 1 0.000 0.000 0.000 0.000 threading.py:670(Barrier) + 1 0.000 0.000 0.000 0.000 _expired_attrs_2_0.py:1() + 1 0.000 0.000 0.000 0.000 PngImagePlugin.py:369(PngStream) + 1 0.000 0.000 0.000 0.000 __init__.py:1117(StreamHandler) + 7 0.000 0.000 0.000 0.000 functools.py:963(__init__) + 2 0.000 0.000 0.000 0.000 {method 'tolist' of 'memoryview' objects} + 1 0.000 0.000 0.000 0.000 Image.py:424(_getdecoder) + 1 0.000 0.000 0.000 0.000 traceback.py:248(FrameSummary) + 1 0.000 0.000 0.000 0.000 string.py:57(Template) + 1 0.000 0.000 0.000 0.000 calendar.py:189(Calendar) + 1 0.000 0.000 0.000 0.000 v2.py:235(is_batch) + 1 0.000 0.000 0.001 0.001 scimath.py:1() + 6 0.000 0.000 0.000 0.000 {built-in method zlib.crc32} + 4 0.000 0.000 0.000 0.000 dataclasses.py:864(_set_new_attribute) + 1 0.000 0.000 0.000 0.000 PcdImagePlugin.py:1() + 1 0.000 0.000 0.000 0.000 linecache.py:26(getline) + 8 0.000 0.000 0.000 0.000 {built-in method _struct.pack} + 10 0.000 0.000 0.000 0.000 :110(register) + 1 0.000 0.000 0.000 0.000 tempfile.py:132(_RandomNameSequence) + 1 0.000 0.000 0.000 0.000 calendar.py:58(Month) + 1 0.000 0.000 0.000 0.000 _add_newdocs_scalars.py:54(_get_platform_and_machine) + 13 0.000 0.000 0.000 0.000 typing.py:2875(_namedtuple_mro_entries) + 1 0.000 0.000 0.000 0.000 PsdImagePlugin.py:56(PsdImageFile) + 1 0.000 0.000 0.000 0.000 weakref.py:289(update) + 1 0.000 0.000 0.000 0.000 traceback.py:374(StackSummary) + 1 0.000 0.000 0.000 0.000 warnings.py:421(__init__) + 1 0.000 0.000 0.000 0.000 PngImagePlugin.py:725(PngImageFile) + 5 0.000 0.000 0.000 0.000 :60(isabs) + 1 0.000 0.000 0.000 0.000 Image.py:3789(_apply_env_variables) + 2 0.000 0.000 0.000 0.000 arrayprint.py:537(decorating_function) + 3 0.000 0.000 0.000 0.000 {method 'copy' of 'dict' objects} + 1 0.000 0.000 0.000 0.000 _util.py:1() + 1 0.000 0.000 0.000 0.000 memmap.py:21(memmap) + 1 0.000 0.000 0.000 0.000 {built-in method math.sin} + 8 0.000 0.000 0.000 0.000 {method 'acquire' of '_thread.RLock' objects} + 1 0.000 0.000 0.000 0.000 typing.py:1193(__mro_entries__) + 6 0.000 0.000 0.000 0.000 PngImagePlugin.py:147(_crc32) + 1 0.000 0.000 0.000 0.000 ImagePalette.py:29(ImagePalette) + 1 0.000 0.000 0.000 0.000 TiffImagePlugin.py:1001(ImageFileDirectory_v1) + 2 0.000 0.000 0.000 0.000 :717(__setitem__) + 1 0.000 0.000 0.000 0.000 fnmatch.py:74(translate) + 8 0.000 0.000 0.000 0.000 _binary.py:111(o32be) + 8 0.000 0.000 0.000 0.000 __init__.py:243(_releaseLock) + 1 0.000 0.000 0.000 0.000 __init__.py:928(__init__) + 2 0.000 0.000 0.000 0.000 _weakrefset.py:37(__init__) + 1 0.000 0.000 0.000 0.000 :423(realpath) + 2 0.000 0.000 0.000 0.000 :104(_check_methods) + 1 0.000 0.000 0.000 0.000 v3.py:1() + 8 0.000 0.000 0.000 0.000 __init__.py:208(_checkLevel) + 1 0.000 0.000 0.000 0.000 Image.py:3151(frombuffer) + 4 0.000 0.000 0.000 0.000 :319(decode) + 1 0.000 0.000 0.000 0.000 _exceptions.py:116(_ArrayMemoryError) + 6 0.000 0.000 0.000 0.000 signal.py:51(decorator) + 1 0.000 0.000 0.000 0.000 pathlib.py:1157(__init__) + 1 0.000 0.000 0.000 0.000 _inspect.py:1() + 2 0.000 0.000 0.000 0.000 Image.py:637(_ensure_mutable) + 37 0.000 0.000 0.000 0.000 Shadow.py:389(__init__) + 1 0.000 0.000 0.000 0.000 calendar.py:113(_localized_day) + 1 0.000 0.000 0.000 0.000 threading.py:265(Condition) + 1 0.000 0.000 0.000 0.000 _array_api_info.py:1() + 1 0.000 0.000 0.000 0.000 numerictypes.py:471(issubdtype) + 2 0.000 0.000 0.000 0.000 copyreg.py:12(pickle) + 1 0.000 0.000 0.000 0.000 ImageFile.py:391(Parser) + 12 0.000 0.000 0.000 0.000 {method 'islower' of 'str' objects} + 1 0.000 0.000 0.000 0.000 records.py:56(format_parser) + 4 0.000 0.000 0.000 0.000 {built-in method _codecs.utf_8_decode} + 10 0.000 0.000 0.000 0.000 {method 'write' of '_io.BufferedWriter' objects} + 24 0.000 0.000 0.000 0.000 :1276(__init__) + 1 0.000 0.000 0.000 0.000 JpegImagePlugin.py:327(JpegImageFile) + 1 0.000 0.000 0.000 0.000 format.py:393(Reader) + 1 0.000 0.000 0.000 0.000 array_utils.py:1() + 4 0.000 0.000 0.000 0.000 Image.py:3034(_check_size) + 1 0.000 0.000 0.000 0.000 Image.py:3830(Exif) + 1 0.000 0.000 0.000 0.000 v3_plugin_api.py:8(ImageProperties) + 3 0.000 0.000 0.000 0.000 :804(get) + 1 0.000 0.000 0.000 0.000 __init__.py:655(LZMACompressor) + 1 0.000 0.000 0.000 0.000 ImageSequence.py:1() + 1 0.000 0.000 0.026 0.026 plugins.py:89(plugin_class) + 1 0.000 0.000 0.000 0.000 Image.py:449(_getencoder) + 1 0.000 0.000 0.000 0.000 selectors.py:341(_PollLikeSelector) + 1 0.000 0.000 0.000 0.000 __init__.py:592(__init__) + 1 0.000 0.000 0.000 0.000 ImageFile.py:754(PyEncoder) + 1 0.000 0.000 0.000 0.000 dataclasses.py:627(_repr_fn) + 1 0.000 0.000 0.000 0.000 traceback.py:679(TracebackException) + 1 0.000 0.000 0.000 0.000 warnings.py:20(_showwarnmsg_impl) + 5 0.000 0.000 0.000 0.000 dataclasses.py:477(_field_assign) + 1 0.000 0.000 0.000 0.000 Shadow.py:39(index_type) + 1 0.000 0.000 0.000 0.000 __init__.py:100(CompleteDirs) + 2 0.000 0.000 0.000 0.000 parse.py:829(__getattr__) + 1 0.000 0.000 0.000 0.000 mixins.py:1() + 1 0.000 0.000 0.000 0.000 GimpPaletteFile.py:1() + 2 0.000 0.000 0.000 0.000 __init__.py:158(__getattr__) + 2 0.000 0.000 0.000 0.000 {built-in method numpy._core._multiarray_umath._make_extobj} + 1 0.000 0.000 0.000 0.000 dataclasses.py:428(_fields_in_init_order) + 1 0.000 0.000 0.000 0.000 numerictypes.py:622(_register_types) + 1 0.000 0.000 0.000 0.000 stride_tricks.py:1() + 4 0.000 0.000 0.000 0.000 {built-in method builtins.all} + 6 0.000 0.000 0.000 0.000 enum.py:828(__members__) + 1 0.000 0.000 0.000 0.000 {built-in method math.tan} + 1 0.000 0.000 0.004 0.004 npyio.py:1() + 1 0.000 0.000 0.000 0.000 {method 'search' of 're.Pattern' objects} + 1 0.000 0.000 0.000 0.000 DdsImagePlugin.py:31(DDSD) + 4 0.000 0.000 0.000 0.000 Image.py:543(__init__) + 1 0.000 0.000 0.000 0.000 _iotools.py:228(NameValidator) + 1 0.000 0.000 0.000 0.000 Image.py:155(Transpose) + 1 0.000 0.000 0.000 0.000 __init__.py:360(ZipInfo) + 1 0.000 0.000 0.000 0.000 MpoImagePlugin.py:94(MpoImageFile) + 18 0.000 0.000 0.000 0.000 {built-in method builtins.callable} + 1 0.000 0.000 0.000 0.000 PaletteFile.py:1() + 1 0.000 0.000 0.000 0.000 warnings.py:120(_formatwarnmsg) + 9 0.000 0.000 0.000 0.000 {built-in method sys._getframemodulename} + 6 0.000 0.000 0.000 0.000 Image.py:3655(register_save_all) + 2/1 0.000 0.000 0.000 0.000 Shadow.py:179(cast) + 4 0.000 0.000 0.000 0.000 dataclasses.py:857(_set_qualname) + 1 0.000 0.000 0.000 0.000 _index_tricks_impl.py:643(ndindex) + 1 0.000 0.000 0.000 0.000 _deprecate.py:1() + 1 0.000 0.000 0.000 0.000 {built-in method numpy.empty} + 1 0.000 0.000 0.000 0.000 _compression.py:1() + 1 0.000 0.000 0.000 0.000 MicImagePlugin.py:1() + 2 0.000 0.000 0.039 0.019 Image.py:3692(registered_extensions) + 1 0.000 0.000 0.000 0.000 _npyio_impl.py:106(NpzFile) + 1 0.000 0.000 0.000 0.000 DdsImagePlugin.py:49(DDSCAPS2) + 1 0.000 0.000 0.000 0.000 gzip.py:124(_WriteBufferStream) + 2 0.000 0.000 0.000 0.000 :1116(__subclasshook__) + 1 0.000 0.000 0.000 0.000 contextvars.py:1() + 1 0.000 0.000 0.000 0.000 __init__.py:919(Handler) + 1 0.000 0.000 0.000 0.000 FpxImagePlugin.py:1() + 8 0.000 0.000 0.000 0.000 typing.py:1097() + 1 0.000 0.000 0.000 0.000 parse.py:331(SplitResult) + 1 0.000 0.000 0.000 0.000 _globals.py:65(_CopyMode) + 4 0.000 0.000 0.000 0.000 {built-in method posix._path_normpath} + 1 0.000 0.000 0.000 0.000 threading.py:616(set) + 1 0.000 0.000 0.000 0.000 tempfile.py:475(_TemporaryFileWrapper) + 2/1 0.000 0.000 0.000 0.000 Shadow.py:393(__call__) + 1 0.000 0.000 0.000 0.000 calendar.py:603(LocaleTextCalendar) + 1 0.000 0.000 0.000 0.000 BufrStubImagePlugin.py:38(BufrStubImageFile) + 1 0.000 0.000 0.000 0.000 Shadow.py:215(_nogil) + 1 0.000 0.000 0.000 0.000 request.py:48(ImageMode) + 1 0.000 0.000 0.000 0.000 :117(splitext) + 7 0.000 0.000 0.000 0.000 __init__.py:811(__init__) + 1 0.000 0.000 0.000 0.000 dataclasses.py:250(_recursive_repr) + 2 0.000 0.000 0.000 0.000 {built-in method posix.putenv} + 1 0.000 0.000 0.000 0.000 calendar.py:75(Day) + 1 0.000 0.000 0.000 0.000 _datasource.py:195(DataSource) + 1 0.000 0.000 0.000 0.000 _arrayterator_impl.py:16(Arrayterator) + 2 0.000 0.000 0.000 0.000 __init__.py:255(escape) + 2 0.000 0.000 0.000 0.000 _util.py:9(is_path) + 1 0.000 0.000 0.000 0.000 format.py:300(_BaseReaderWriter) + 18 0.000 0.000 0.000 0.000 {method 'get' of '_contextvars.ContextVar' objects} + 1 0.000 0.000 0.000 0.000 pathlib.py:358(__init__) + 1 0.000 0.000 0.000 0.000 arrayprint.py:1398(SubArrayFormat) + 18 0.000 0.000 0.000 0.000 {built-in method builtins.id} + 1 0.000 0.000 0.000 0.000 SpiderImagePlugin.py:96(SpiderImageFile) + 1 0.000 0.000 0.000 0.000 pathlib.py:591(suffix) + 1 0.000 0.000 0.000 0.000 arrayprint.py:1424(StructuredVoidFormat) + 1 0.000 0.000 0.000 0.000 tokenize.py:341(_get_normal_name) + 1 0.000 0.000 0.000 0.000 subprocess.py:126(CalledProcessError) + 1 0.000 0.000 0.000 0.000 __init__.py:892(_addHandlerRef) + 8 0.000 0.000 0.000 0.000 {method 'removeprefix' of 'str' objects} + 1 0.000 0.000 0.000 0.000 Jpeg2KImagePlugin.py:217(Jpeg2KImageFile) + 2 0.000 0.000 0.000 0.000 :501(_requires_builtin_wrapper) + 1 0.000 0.000 0.000 0.000 DdsImagePlugin.py:61(DDPF) + 7 0.000 0.000 0.000 0.000 getlimits.py:159(_register_type) + 1 0.000 0.000 0.000 0.000 __config__.py:14(DisplayModes) + 1 0.000 0.000 0.000 0.000 util.py:188(Dict) + 10 0.000 0.000 0.000 0.000 Image.py:3701(register_decoder) + 10 0.000 0.000 0.000 0.000 __future__.py:83(__init__) + 1 0.000 0.000 0.000 0.000 ExifTags.py:344(Interop) + 1 0.000 0.000 0.000 0.000 threading.py:302(__exit__) + 2 0.000 0.000 0.000 0.000 _ufunc_config.py:457(__exit__) + 1 0.000 0.000 0.026 0.026 __init__.py:73(import_module) + 1 0.000 0.000 0.000 0.000 __init__.py:1353(Manager) + 1 0.000 0.000 0.000 0.000 Image.py:175(Resampling) + 1 0.000 0.000 0.000 0.000 getlimits.py:383(finfo) + 2 0.000 0.000 0.000 0.000 dataclasses.py:437(_tuple_str) + 1 0.000 0.000 0.000 0.000 pathlib.py:223(_RecursiveWildcardSelector) + 1 0.000 0.000 0.000 0.000 Image.py:166(Transform) + 1 0.000 0.000 0.000 0.000 ExifTags.py:352(IFD) + 1 0.000 0.000 0.000 0.000 _util.py:18(DeferredError) + 1 0.000 0.000 0.000 0.000 features.py:76(check_codec) + 1 0.000 0.000 0.000 0.000 warnings.py:168(simplefilter) + 5 0.000 0.000 0.000 0.000 {method 'items' of 'mappingproxy' objects} + 1 0.000 0.000 0.000 0.000 GifImagePlugin.py:54(LoadingStrategy) + 2 0.000 0.000 0.000 0.000 _weakrefset.py:85(add) + 1 0.000 0.000 0.000 0.000 request.py:32(IOMode) + 1 0.000 0.000 0.000 0.000 ImagePalette.py:41(__init__) + 6 0.000 0.000 0.000 0.000 {method 'group' of 're.Match' objects} + 1 0.000 0.000 0.000 0.000 threading.py:277(__init__) + 1 0.000 0.000 0.000 0.000 version.py:1() + 1 0.000 0.000 0.000 0.000 BlpImagePlugin.py:279(_BLPBaseDecoder) + 1 0.000 0.000 0.000 0.000 PngImagePlugin.py:248(iTXt) + 1 0.000 0.000 0.000 0.000 {method 'close' of 'select.epoll' objects} + 1 0.000 0.000 0.000 0.000 legacy_plugin_wrapper.py:21(LegacyPlugin) + 1 0.000 0.000 0.000 0.000 {built-in method _abc._abc_instancecheck} + 1 0.000 0.000 0.001 0.001 __init__.py:436(PercentStyle) + 2 0.000 0.000 0.000 0.000 {built-in method posix.unsetenv} + 2 0.000 0.000 0.000 0.000 _ufunc_config.py:431(__init__) + 1 0.000 0.000 0.000 0.000 numbers.py:292(Rational) + 1 0.000 0.000 0.000 0.000 _pytesttester.py:1() + 1 0.000 0.000 0.000 0.000 PpmImagePlugin.py:161(PpmPlainDecoder) + 2 0.000 0.000 0.000 0.000 numerictypes.py:289(issubclass_) + 1 0.000 0.000 0.000 0.000 Shadow.py:207(declare) + 1 0.000 0.000 0.000 0.000 _dtype_ctypes.py:1() + 1 0.000 0.000 0.000 0.000 Image.py:207(Quantize) + 1 0.000 0.000 0.000 0.000 _version.py:14(NumpyVersion) + 1 0.000 0.000 0.000 0.000 _dtype_like.py:66(_DTypeDictBase) + 1 0.000 0.000 0.000 0.000 v2.py:176(LegacyWriter) + 1 0.000 0.000 0.000 0.000 format.py:622(FormatManager) + 1 0.000 0.000 0.000 0.000 ImagePalette.py:210(raw) + 1 0.000 0.000 0.000 0.000 IcoImagePlugin.py:283(IcoImageFile) + 3 0.000 0.000 0.000 0.000 threading.py:124(RLock) + 1 0.000 0.000 0.000 0.000 random.py:126(__init__) + 1 0.000 0.000 0.000 0.000 BlpImagePlugin.py:48(Encoding) + 1 0.000 0.000 0.000 0.000 getlimits.py:636(iinfo) + 3 0.000 0.000 0.000 0.000 enum.py:1404(_iter_member_by_def_) + 4 0.000 0.000 0.000 0.000 mixins.py:53(_unary_method) + 1 0.000 0.000 0.000 0.000 DdsImagePlugin.py:43(DDSCAPS) + 3 0.000 0.000 0.000 0.000 __init__.py:509(PYFUNCTYPE) + 1 0.000 0.000 0.000 0.000 parse.py:361(_fix_result_transcoding) + 1 0.000 0.000 0.000 0.000 __init__.py:546(Formatter) + 1 0.000 0.000 0.000 0.000 _dtype_like.py:72(_DTypeDict) + 5 0.000 0.000 0.000 0.000 dataclasses.py:549(_init_param) + 1 0.000 0.000 0.000 0.000 _compression.py:33(DecompressReader) + 7 0.000 0.000 0.000 0.000 functools.py:968(__set_name__) + 3 0.000 0.000 0.000 0.000 {built-in method posix.register_at_fork} + 1 0.000 0.000 0.000 0.000 ipaddress.py:1487(IPv4Network) + 6 0.000 0.000 0.000 0.000 _pytesttester.py:75(__init__) + 1 0.000 0.000 0.000 0.000 :117(__instancecheck__) + 1 0.000 0.000 0.000 0.000 FtexImagePlugin.py:65(Format) + 1 0.000 0.000 0.000 0.000 PngImagePlugin.py:103(Disposal) + 1 0.000 0.000 0.000 0.000 WebPImagePlugin.py:41(WebPImageFile) + 1 0.000 0.000 0.001 0.001 v3_plugin_api.py:366(__exit__) + 2 0.000 0.000 0.000 0.000 _index_tricks_impl.py:340(__init__) + 1 0.000 0.000 0.000 0.000 _nbit.py:1() + 12 0.000 0.000 0.000 0.000 dataclasses.py:461() + 1 0.000 0.000 0.000 0.000 __init__.py:450(validate) + 1 0.000 0.000 0.000 0.000 Image.py:194(Dither) + 3 0.000 0.000 0.000 0.000 __init__.py:1323(append) + 3 0.000 0.000 0.000 0.000 __init__.py:510() + 7 0.000 0.000 0.000 0.000 {method 'keys' of 'dict' objects} + 1 0.000 0.000 0.000 0.000 _function_base_impl.py:2213(vectorize) + 4 0.000 0.000 0.000 0.000 typing.py:993(_is_typevar_like) + 1 0.000 0.000 0.000 0.000 __init__.py:322(CDLL) + 2 0.000 0.000 0.000 0.000 {method 'set' of '_contextvars.ContextVar' objects} + 1 0.000 0.000 0.000 0.000 BlpImagePlugin.py:54(AlphaEncoding) + 8 0.000 0.000 0.000 0.000 {method 'release' of '_thread.RLock' objects} + 1 0.000 0.000 0.000 0.000 ipaddress.py:563(_BaseAddress) + 1 0.000 0.000 0.000 0.000 threading.py:424(notify_all) + 1 0.000 0.000 0.000 0.000 {built-in method _ctypes.dlopen} + 1 0.000 0.000 0.000 0.000 :309(__init__) + 5 0.000 0.000 0.000 0.000 dataclasses.py:683(_is_classvar) + 2 0.000 0.000 0.000 0.000 {method 'translate' of 'str' objects} + 1 0.000 0.000 0.000 0.000 util.py:111(Array) + 2 0.000 0.000 0.000 0.000 :989(create_module) + 1 0.000 0.000 0.000 0.000 util.py:232(BaseProgressIndicator) + 1 0.000 0.000 0.000 0.000 records.py:196(record) + 4 0.000 0.000 0.000 0.000 {method 'pixel_access' of 'ImagingCore' objects} + 1 0.000 0.000 0.000 0.000 threading.py:588(__init__) + 7 0.000 0.000 0.000 0.000 {method 'insert' of 'list' objects} + 1 0.000 0.000 0.000 0.000 IcnsImagePlugin.py:242(IcnsImageFile) + 1 0.000 0.000 0.000 0.000 plugins.py:6(PluginConfig) + 1 0.000 0.000 0.000 0.000 _datasource.py:532(Repository) + 1 0.000 0.000 0.000 0.000 ImageFile.py:106(ImageFile) + 1 0.000 0.000 0.000 0.000 threading.py:137(_RLock) + 1 0.000 0.000 0.000 0.000 _ufunc_config.py:364(errstate) + 2 0.000 0.000 0.000 0.000 {method 'reset' of '_contextvars.ContextVar' objects} + 1 0.000 0.000 0.026 0.026 :1375(_gcd_import) + 1 0.000 0.000 0.000 0.000 PngImagePlugin.py:155(ChunkStream) + 1 0.000 0.000 0.000 0.000 warnings.py:99(_showwarnmsg) + 1 0.000 0.000 0.000 0.000 :133(_splitext) + 1 0.000 0.000 0.000 0.000 PngImagePlugin.py:124(Blend) + 1 0.000 0.000 0.000 0.000 Jpeg2KImagePlugin.py:26(BoxReader) + 3 0.000 0.000 0.000 0.000 _parser.py:295(seek) + 1 0.000 0.000 0.000 0.000 _array_api_info.py:29(__array_namespace_info__) + 1 0.000 0.000 0.000 0.000 :1103(_resolve_filename) + 1 0.000 0.000 0.000 0.000 _internal.py:630(_Stream) + 1 0.000 0.000 0.000 0.000 string.py:188(Formatter) + 2 0.000 0.000 0.000 0.000 tokenize.py:376(read_or_stop) + 3 0.000 0.000 0.000 0.000 enum.py:1692(_simple_enum) + 1 0.000 0.000 0.000 0.000 pathlib.py:1164(__new__) + 1 0.000 0.000 0.000 0.000 BlpImagePlugin.py:44(Format) + 1 0.000 0.000 0.000 0.000 _nested_sequence.py:18(_NestedSequence) + 1 0.000 0.000 0.000 0.000 records.py:282(recarray) + 1 0.000 0.000 0.000 0.000 selectors.py:290(SelectSelector) + 6 0.000 0.000 0.000 0.000 {method 'values' of 'dict' objects} + 1 0.000 0.000 0.000 0.000 threading.py:857(_maintain_shutdown_locks) + 1 0.000 0.000 0.000 0.000 calendar.py:442(HTMLCalendar) + 1 0.000 0.000 0.000 0.000 __init__.py:1776(getEffectiveLevel) + 1 0.000 0.000 0.000 0.000 Image.py:478(_E) + 1 0.000 0.000 0.000 0.000 EpsImagePlugin.py:208(EpsImageFile) + 1 0.000 0.000 0.000 0.000 ImageFile.py:703(PyDecoder) + 1 0.000 0.000 0.000 0.000 _index_tricks_impl.py:269(__init__) + 1 0.000 0.000 0.000 0.000 _arraysetops_impl.py:392(UniqueAllResult) + 1 0.000 0.000 0.000 0.000 _machar.py:17(MachAr) + 3 0.000 0.000 0.000 0.000 _add_docstring.py:11(add_newdoc) + 1 0.000 0.000 0.000 0.000 EpsImagePlugin.py:162(PSFile) + 1 0.000 0.000 0.000 0.000 Image.py:202(Palette) + 3 0.000 0.000 0.000 0.000 {built-in method numpy.asarray} + 1 0.000 0.000 0.000 0.000 pickle.py:194(_Framer) + 3 0.000 0.000 0.000 0.000 __init__.py:443(__init__) + 1 0.000 0.000 0.000 0.000 __init__.py:958(createLock) + 1 0.000 0.000 0.000 0.000 pathlib.py:583(name) + 1 0.000 0.000 0.000 0.000 Shadow.py:254(__init__) + 1 0.000 0.000 0.000 0.000 __init__.py:1182(_ZipWriteFile) + 1 0.000 0.000 0.000 0.000 subprocess.py:163(TimeoutExpired) + 1 0.000 0.000 0.000 0.000 request.py:654(SeekableFileObject) + 1 0.000 0.000 0.000 0.000 MpegImagePlugin.py:25(BitStream) + 1 0.000 0.000 0.000 0.000 dataclasses.py:661(_cmp_fn) + 1 0.000 0.000 0.000 0.000 calendar.py:325(TextCalendar) + 3 0.000 0.000 0.000 0.000 __init__.py:510(CFunctionType) + 1 0.000 0.000 0.000 0.000 tempfile.py:432(_TemporaryFileCloser) + 1 0.000 0.000 0.000 0.000 {method 'getpalette' of 'ImagingCore' objects} + 1 0.000 0.000 0.000 0.000 __init__.py:1358(__init__) + 1 0.000 0.000 0.000 0.000 _globals.py:52(__new__) + 1 0.000 0.000 0.000 0.000 IptcImagePlugin.py:69(IptcImageFile) + 1 0.000 0.000 0.000 0.000 _iotools.py:132(LineSplitter) + 2 0.000 0.000 0.000 0.000 Image.py:555(width) + 6 0.000 0.000 0.000 0.000 signal.py:50(_wraps) + 1 0.000 0.000 0.000 0.000 IcoImagePlugin.py:122(IcoFile) + 1 0.000 0.000 0.000 0.000 selectors.py:206(_BaseSelectorImpl) + 1 0.000 0.000 0.000 0.000 gzip.py:78(_PaddedFile) + 1 0.000 0.000 0.000 0.000 introspect.py:1() + 1 0.000 0.000 0.000 0.000 __init__.py:503(StringTemplateStyle) + 1 0.000 0.000 0.000 0.000 ImageMode.py:24(ModeDescriptor) + 7 0.000 0.000 0.000 0.000 {built-in method builtins.vars} + 1 0.000 0.000 0.000 0.000 :138(splitroot) + 1 0.000 0.000 0.000 0.000 TiffTags.py:32(TagInfo) + 1 0.000 0.000 0.000 0.000 _index_tricks_impl.py:552(__init__) + 2 0.000 0.000 0.000 0.000 typing.py:971(__hash__) + 3 0.000 0.000 0.000 0.000 {method 'join' of 'bytes' objects} + 1 0.000 0.000 0.000 0.000 ipaddress.py:2240(IPv6Network) + 2 0.000 0.000 0.000 0.000 typing.py:1581() + 1 0.000 0.000 0.000 0.000 Image.py:2994(ImagePointHandler) + 6 0.000 0.000 0.000 0.000 {built-in method _stat.S_ISLNK} + 1 0.000 0.000 0.000 0.000 gzip.py:483(_GzipReader) + 1 0.000 0.000 0.000 0.000 arrayprint.py:951(FloatingFormat) + 1 0.000 0.000 0.000 0.000 threading.py:577(Event) + 4 0.000 0.000 0.000 0.000 typing.py:2896() + 3 0.000 0.000 0.000 0.000 ImagePalette.py:55(palette) + 1 0.000 0.000 0.000 0.000 _internal.py:210(dummy_ctype) + 1 0.000 0.000 0.000 0.000 FliImagePlugin.py:43(FliImageFile) + 1 0.000 0.000 0.000 0.000 __future__.py:81(_Feature) + 1 0.000 0.000 0.000 0.000 PdfParser.py:89(IndirectReference) + 1 0.000 0.000 0.000 0.000 selectors.py:442(EpollSelector) + 1 0.000 0.000 0.000 0.000 {built-in method _codecs.lookup} + 2 0.000 0.000 0.000 0.000 {method 'acquire' of '_thread.lock' objects} + 1 0.000 0.000 0.000 0.000 __init__.py:1867(__init__) + 1 0.000 0.000 0.000 0.000 _index_tricks_impl.py:593(ndenumerate) + 1 0.000 0.000 0.000 0.000 _index_tricks_impl.py:110(nd_grid) + 3 0.000 0.000 0.000 0.000 typing.py:494(__repr__) + 1 0.000 0.000 0.000 0.000 glob.py:1() + 1 0.000 0.000 0.001 0.001 dataclasses.py:1247(dataclass) + 3 0.000 0.000 0.000 0.000 {method 'clear' of 'dict' objects} + 2 0.000 0.000 0.000 0.000 {method 'cast' of 'memoryview' objects} + 1 0.000 0.000 0.001 0.001 :1171(exec_module) + 1 0.000 0.000 0.000 0.000 PngImagePlugin.py:1100(write) + 1 0.000 0.000 0.000 0.000 functools.py:649(cache) + 1 0.000 0.000 0.000 0.000 pickle.py:257(_Unframer) + 6 0.000 0.000 0.000 0.000 request.py:444(mode) + 1 0.000 0.000 0.000 0.000 Shadow.py:15(_ArrayType) + 5 0.000 0.000 0.000 0.000 dataclasses.py:691(_is_initvar) + 1 0.000 0.000 0.000 0.000 ImageFile.py:352(StubHandler) + 5 0.000 0.000 0.000 0.000 TiffImagePlugin.py:459(_register_writer) + 1 0.000 0.000 0.000 0.000 extensions.py:9(FileExtension) + 1 0.000 0.000 0.000 0.000 Shadow.py:532(CythonDotParallel) + 1 0.000 0.000 0.000 0.000 parse.py:190(_NetlocResultMixinStr) + 2 0.000 0.000 0.000 0.000 :997(exec_module) + 1 0.000 0.000 0.000 0.000 __init__.py:1293(__init__) + 1 0.000 0.000 0.000 0.000 _internal.py:252(_missing_ctypes) + 4 0.000 0.000 0.000 0.000 {method 'remove' of 'set' objects} + 1 0.000 0.000 0.000 0.000 PngImagePlugin.py:273(PngInfo) + 1 0.000 0.000 0.000 0.000 __init__.py:82(InitializedState) + 1 0.000 0.000 0.000 0.000 WmfImagePlugin.py:80(WmfStubImageFile) + 1 0.000 0.000 0.000 0.000 PdfParser.py:114(XrefTable) + 1 0.000 0.000 0.000 0.000 {built-in method posix.confstr} + 1 0.000 0.000 0.000 0.000 :1158(create_module) + 1 0.000 0.000 0.000 0.000 arrayprint.py:1361(DatetimeFormat) + 1 0.000 0.000 0.000 0.000 threading.py:299(__enter__) + 1 0.000 0.000 0.000 0.000 {method 'setimage' of 'ImagingEncoder' objects} + 1 0.000 0.000 0.000 0.000 ImageFile.py:629(PyCodec) + 2 0.000 0.000 0.000 0.000 {built-in method atexit.register} + 7 0.000 0.000 0.000 0.000 Image.py:567(mode) + 1 0.000 0.000 0.000 0.000 __init__.py:10(NBitBase) + 2 0.000 0.000 0.000 0.000 {method 'decode' of 'bytes' objects} + 1 0.000 0.000 0.000 0.000 threading.py:1042(_set_native_id) + 2 0.000 0.000 0.000 0.000 Shadow.py:582(__init__) + 1 0.000 0.000 0.000 0.000 __init__.py:1287(_StderrHandler) + 1 0.000 0.000 0.000 0.000 _npyio_impl.py:41(BagObj) + 5 0.000 0.000 0.000 0.000 dataclasses.py:309(__init__) + 1 0.000 0.000 0.000 0.000 Shadow.py:201(_is_value_type) + 1 0.000 0.000 0.000 0.000 FtexImagePlugin.py:70(FtexImageFile) + 1 0.000 0.000 0.000 0.000 ImageSequence.py:24(Iterator) + 1 0.000 0.000 0.000 0.000 __init__.py:262(_register_at_fork_reinit_lock) + 2 0.000 0.000 0.000 0.000 __init__.py:102(CFunctionType) + 1 0.000 0.000 0.000 0.000 exceptions.py:109(AxisError) + 1 0.000 0.000 0.000 0.000 {built-in method _thread.get_native_id} + 1 0.000 0.000 0.000 0.000 {method 'setimage' of 'ImagingDecoder' objects} + 1 0.000 0.000 0.000 0.000 FitsImagePlugin.py:23(FitsImageFile) + 1 0.000 0.000 0.000 0.000 selectors.py:60(_SelectorMapping) + 1 0.000 0.000 0.000 0.000 random.py:876(SystemRandom) + 1 0.000 0.000 0.000 0.000 {built-in method math.radians} + 1 0.000 0.000 0.000 0.000 _arraysetops_impl.py:399(UniqueCountsResult) + 1 0.000 0.000 0.000 0.000 GbrImagePlugin.py:40(GbrImageFile) + 1 0.000 0.000 0.000 0.000 parse.py:220(_NetlocResultMixinBytes) + 1 0.000 0.000 0.000 0.000 threading.py:445(Semaphore) + 1 0.000 0.000 0.000 0.000 _compression.py:9(BaseStream) + 1 0.000 0.000 0.000 0.000 _index_tricks_impl.py:214(MGridClass) + 6 0.000 0.000 0.000 0.000 dataclasses.py:1142() + 5 0.000 0.000 0.000 0.000 TiffImagePlugin.py:447(_register_loader) + 1 0.000 0.000 0.000 0.000 __init__.py:779(_SharedFile) + 1 0.000 0.000 0.000 0.000 PpmImagePlugin.py:57(PpmImageFile) + 5 0.000 0.000 0.000 0.000 TiffImagePlugin.py:460(decorator) + 1 0.000 0.000 0.000 0.000 Hdf5StubImagePlugin.py:38(HDF5StubImageFile) + 1 0.000 0.000 0.000 0.000 __init__.py:2065(PyZipFile) + 1 0.000 0.000 0.000 0.000 Shadow.py:287(__init__) + 1 0.000 0.000 0.000 0.000 :808(getenv) + 1 0.000 0.000 0.000 0.000 DdsImagePlugin.py:331(DdsImageFile) + 2 0.000 0.000 0.000 0.000 typing.py:1584() + 1 0.000 0.000 0.000 0.000 _pytesttester.py:45(PytestTester) + 1 0.000 0.000 0.000 0.000 threading.py:532(BoundedSemaphore) + 2 0.000 0.000 0.000 0.000 {method 'isdisjoint' of 'set' objects} + 1 0.000 0.000 0.000 0.000 __init__.py:2285(NullHandler) + 1 0.000 0.000 0.000 0.000 XpmImagePlugin.py:35(XpmImageFile) + 1 0.000 0.000 0.000 0.000 parse.py:838(_Quoter) + 1 0.000 0.000 0.000 0.000 threading.py:1356(_make_invoke_excepthook) + 1 0.000 0.000 0.000 0.000 pathlib.py:263(_PathParents) + 1 0.000 0.000 0.000 0.000 _datasource.py:98(__init__) + 1 0.000 0.000 0.000 0.000 _index_tricks_impl.py:321(__init__) + 1 0.000 0.000 0.000 0.000 Image.py:3209(SupportsArrayInterface) + 1 0.000 0.000 0.000 0.000 selectors.py:433(PollSelector) + 1 0.000 0.000 0.000 0.000 __init__.py:1202(FileHandler) + 1 0.000 0.000 0.000 0.000 threading.py:394(notify) + 1 0.000 0.000 0.000 0.000 :16(exists) + 1 0.000 0.000 0.000 0.000 ImageFile.py:94(_Tile) + 1 0.000 0.000 0.000 0.000 Shadow.py:252(PointerType) + 2 0.000 0.000 0.000 0.000 _index_tricks_impl.py:146(__init__) + 1 0.000 0.000 0.000 0.000 __init__.py:157(py_object) + 1 0.000 0.000 0.000 0.000 DcxImagePlugin.py:40(DcxImageFile) + 1 0.000 0.000 0.000 0.000 _utils_impl.py:119(_Deprecate) + 1 0.000 0.000 0.000 0.000 {built-in method math.cos} + 1 0.000 0.000 0.000 0.000 _arraysetops_impl.py:404(UniqueInverseResult) + 1 0.000 0.000 0.000 0.000 typing.py:738(_make_union) + 1 0.000 0.000 0.000 0.000 GribStubImagePlugin.py:38(GribStubImageFile) + 1 0.000 0.000 0.000 0.000 PaletteFile.py:22(PaletteFile) + 5 0.000 0.000 0.000 0.000 dataclasses.py:697(_is_kw_only) + 2 0.000 0.000 0.000 0.000 {method 'find' of 'str' objects} + 1 0.000 0.000 0.000 0.000 PixarImagePlugin.py:38(PixarImageFile) + 1 0.000 0.000 0.000 0.000 __init__.py:727(BufferingFormatter) + 1 0.000 0.000 0.000 0.000 GimpGradientFile.py:67(GradientFile) + 7 0.000 0.000 0.000 0.000 Image.py:563(size) + 1 0.000 0.000 0.000 0.000 ImagePalette.py:87(getdata) + 1 0.000 0.000 0.000 0.000 SgiImagePlugin.py:52(SgiImageFile) + 1 0.000 0.000 0.000 0.000 __init__.py:165(FastLookup) + 1 0.000 0.000 0.000 0.000 PcdImagePlugin.py:26(PcdImageFile) + 1 0.000 0.000 0.000 0.000 __init__.py:373(_FuncPtr) + 1 0.000 0.000 0.000 0.000 Shadow.py:137(warn) + 1 0.000 0.000 0.000 0.000 McIdasImagePlugin.py:33(McIdasImageFile) + 1 0.000 0.000 0.000 0.000 TiffTags.py:24(_TagInfo) + 1 0.000 0.000 0.000 0.000 traceback.py:656(_ExceptionPrintContext) + 1 0.000 0.000 0.000 0.000 __init__.py:286(LogRecord) + 1 0.000 0.000 0.000 0.000 numbers.py:37(Number) + 1 0.000 0.000 0.000 0.000 calendar.py:624(LocaleHTMLCalendar) + 1 0.000 0.000 0.000 0.000 BlpImagePlugin.py:252(BlpImageFile) + 1 0.000 0.000 0.000 0.000 Shadow.py:387(typedef) + 1 0.000 0.000 0.000 0.000 XbmImagePlugin.py:48(XbmImageFile) + 1 0.000 0.000 0.000 0.000 TgaImagePlugin.py:49(TgaImageFile) + 1 0.000 0.000 0.000 0.000 _exceptions.py:56(_UFuncBinaryResolutionError) + 1 0.000 0.000 0.000 0.000 Image.py:3005(ImageTransformHandler) + 1 0.000 0.000 0.000 0.000 format.py:550(Writer) + 1 0.000 0.000 0.000 0.000 __init__.py:806(Filterer) + 1 0.000 0.000 0.000 0.000 _stride_tricks_impl.py:20(DummyArray) + 1 0.000 0.000 0.000 0.000 util.py:366(StdoutProgressIndicator) + 4 0.000 0.000 0.000 0.000 {built-in method _warnings._filters_mutated} + 1 0.000 0.000 0.000 0.000 _index_tricks_impl.py:744(IndexExpression) + 1 0.000 0.000 0.000 0.000 _exceptions.py:80(_UFuncInputCastingError) + 1 0.000 0.000 0.000 0.000 calendar.py:195(__init__) + 1 0.000 0.000 0.000 0.000 GimpPaletteFile.py:24(GimpPaletteFile) + 1 0.000 0.000 0.000 0.000 threading.py:1409(Timer) + 2 0.000 0.000 0.000 0.000 {built-in method maketrans} + 1 0.000 0.000 0.000 0.000 PcxImagePlugin.py:49(PcxImageFile) + 1 0.000 0.000 0.000 0.000 typing.py:2563(final) + 1 0.000 0.000 0.000 0.000 _convertions.py:1() + 1 0.000 0.000 0.000 0.000 __init__.py:819(_Tellable) + 6 0.000 0.000 0.000 0.000 dataclasses.py:432() + 2 0.000 0.000 0.000 0.000 :341(__subclasshook__) + 1 0.000 0.000 0.000 0.000 Shadow.py:367(array) + 1 0.000 0.000 0.000 0.000 _endian.py:23(_swapped_meta) + 1 0.000 0.000 0.000 0.000 threading.py:1460(_DummyThread) + 1 0.000 0.000 0.000 0.000 _index_tricks_impl.py:276(OGridClass) + 1 0.000 0.000 0.000 0.000 XVThumbImagePlugin.py:44(XVThumbImageFile) + 1 0.000 0.000 0.000 0.000 _index_tricks_impl.py:586(__init__) + 2 0.000 0.000 0.000 0.000 enum.py:1411() + 4 0.000 0.000 0.000 0.000 request.py:426(extension) + 1 0.000 0.000 0.000 0.000 calendar.py:31(IllegalMonthError) + 1 0.000 0.000 0.000 0.000 arrayprint.py:1302(ComplexFloatingFormat) + 1 0.000 0.000 0.000 0.000 ImageFile.py:361(StubImageFile) + 9 0.000 0.000 0.000 0.000 Shadow.py:99(__call__) + 1 0.000 0.000 0.000 0.000 arrayprint.py:1273(IntegerFormat) + 2 0.000 0.000 0.000 0.000 {built-in method math.log} + 2 0.000 0.000 0.000 0.000 {built-in method _imp.exec_builtin} + 2 0.000 0.000 0.000 0.000 arrayprint.py:527(_recursive_guard) + 1 0.000 0.000 0.000 0.000 GifImagePlugin.py:610(_Frame) + 4 0.000 0.000 0.000 0.000 {built-in method _sre.ascii_tolower} + 1 0.000 0.000 0.000 0.000 ImtImagePlugin.py:32(ImtImageFile) + 1 0.000 0.000 0.000 0.000 _exceptions.py:98(_UFuncOutputCastingError) + 1 0.000 0.000 0.000 0.000 v3_plugin_api.py:369(__del__) + 1 0.000 0.000 0.000 0.000 {method 'startswith' of 'bytes' objects} + 1 0.000 0.000 0.000 0.000 QoiImagePlugin.py:20(QoiImageFile) + 1 0.000 0.000 0.000 0.000 pathlib.py:801(PurePosixPath) + 1 0.000 0.000 0.000 0.000 SunImagePlugin.py:32(SunImageFile) + 1 0.000 0.000 0.000 0.000 v2.py:80(decypher_format_arg) + 1 0.000 0.000 0.000 0.000 traceback.py:90(_Sentinel) + 1 0.000 0.000 0.000 0.000 threading.py:1038(_set_ident) + 1 0.000 0.000 0.000 0.000 _array_like.py:44(_SupportsArrayFunc) + 1 0.000 0.000 0.000 0.000 _exceptions.py:32(UFuncTypeError) + 1 0.000 0.000 0.000 0.000 {method 'seek' of '_io.BufferedReader' objects} + 1 0.000 0.000 0.000 0.000 arrayprint.py:1335(_TimelikeFormat) + 1 0.000 0.000 0.000 0.000 SgiImagePlugin.py:205(SGI16Decoder) + 1 0.000 0.000 0.000 0.000 __init__.py:402(PyDLL) + 1 0.000 0.000 0.000 0.000 Shadow.py:554(CythonDotImportedFromElsewhere) + 1 0.000 0.000 0.000 0.000 pathlib.py:151(_Selector) + 1 0.000 0.000 0.000 0.000 pathlib.py:1425(WindowsPath) + 1 0.000 0.000 0.000 0.000 Shadow.py:98(_EmptyDecoratorAndManager) + 1 0.000 0.000 0.000 0.000 _index_tricks_impl.py:455(RClass) + 1 0.000 0.000 0.000 0.000 PdfParser.py:254(PdfDict) + 2 0.000 0.000 0.000 0.000 {method '__exit__' of '_thread.lock' objects} + 1 0.000 0.000 0.000 0.000 __init__.py:1373(disable) + 2 0.000 0.000 0.000 0.000 calendar.py:118(__init__) + 4 0.000 0.000 0.000 0.000 {built-in method _sre.ascii_iscased} + 1 0.000 0.000 0.000 0.000 parse.py:136(_ResultMixinStr) + 1 0.000 0.000 0.000 0.000 pathlib.py:241(_DoubleRecursiveWildcardSelector) + 2 0.000 0.000 0.000 0.000 Image.py:559(height) + 1 0.000 0.000 0.000 0.000 pathlib.py:1413(PosixPath) + 1 0.000 0.000 0.000 0.000 __init__.py:1317(__init__) + 1 0.000 0.000 0.000 0.000 _array_like.py:39(_SupportsArray) + 1 0.000 0.000 0.000 0.000 _typing.py:32(SupportsRead) + 1 0.000 0.000 0.000 0.000 __init__.py:77(UnidentifiedImageError) + 1 0.000 0.000 0.000 0.000 PngImagePlugin.py:1104(_fdat) + 1 0.000 0.000 0.000 0.000 CurImagePlugin.py:36(CurImageFile) + 1 0.000 0.000 0.000 0.000 parse.py:323(DefragResult) + 2 0.000 0.000 0.000 0.000 v3_plugin_api.py:359(request) + 1 0.000 0.000 0.000 0.000 dtypes.py:1() + 1 0.000 0.000 0.000 0.000 FitsImagePlugin.py:126(FitsGzipDecoder) + 1 0.000 0.000 0.000 0.000 calendar.py:578(different_locale) + 1 0.000 0.000 0.000 0.000 __init__.py:769(Filter) + 1 0.000 0.000 0.000 0.000 MpegImagePlugin.py:65(MpegImageFile) + 1 0.000 0.000 0.000 0.000 MspImagePlugin.py:48(MspImageFile) + 2 0.000 0.000 0.000 0.000 _index_tricks_impl.py:791(__init__) + 1 0.000 0.000 0.000 0.000 PdfParser.py:84(IndirectReferenceTuple) + 1 0.000 0.000 0.000 0.000 BmpImagePlugin.py:301(BmpRleDecoder) + 1 0.000 0.000 0.000 0.000 Shadow.py:285(ArrayType) + 1 0.000 0.000 0.000 0.000 Image.py:521(SupportsGetData) + 1 0.000 0.000 0.000 0.000 pathlib.py:174(_TerminatingSelector) + 1 0.000 0.000 0.000 0.000 _endian.py:48(BigEndianStructure) + 1 0.000 0.000 0.000 0.000 _exceptions.py:71(_UFuncCastingError) + 1 0.000 0.000 0.000 0.000 {method 'difference_update' of 'set' objects} + 1 0.000 0.000 0.000 0.000 __init__.py:241(c_char_p) + 1 0.000 0.000 0.000 0.000 DdsImagePlugin.py:481(DdsRgbDecoder) + 1 0.000 0.000 0.000 0.000 PdfParser.py:243(PdfArray) + 1 0.000 0.000 0.000 0.000 Shadow.py:558(__init__) + 1 0.000 0.000 0.000 0.000 arrayprint.py:1292(BoolFormat) + 1 0.000 0.000 0.000 0.000 Shadow.py:334(UnionType) + 1 0.000 0.000 0.000 0.000 __init__.py:1311(PlaceHolder) + 1 0.000 0.000 0.000 0.000 _index_tricks_impl.py:559(CClass) + 1 0.000 0.000 0.000 0.000 pickle.py:97(_Stop) + 1 0.000 0.000 0.000 0.000 GimpGradientFile.py:115(GimpGradientFile) + 1 0.000 0.000 0.000 0.000 Shadow.py:578(CythonCImports) + 1 0.000 0.000 0.000 0.000 __init__.py:1861(RootLogger) + 1 0.000 0.000 0.000 0.000 __init__.py:257(c_wchar_p) + 1 0.000 0.000 0.000 0.000 {built-in method numpy._core._multiarray_umath.set_typeDict} + 1 0.000 0.000 0.000 0.000 {method 'toordinal' of 'datetime.date' objects} + 1 0.000 0.000 0.000 0.000 BlpImagePlugin.py:344(BLP1Decoder) + 1 0.000 0.000 0.000 0.000 BlpImagePlugin.py:428(BLPEncoder) + 1 0.000 0.000 0.000 0.000 pathlib.py:180(_ParentSelector) + 1 0.000 0.000 0.000 0.000 threading.py:314(_is_owned) + 1 0.000 0.000 0.000 0.000 {built-in method numpy._core._multiarray_umath._reload_guard} + 1 0.000 0.000 0.000 0.000 {built-in method _imp.get_frozen_object} + 1 0.000 0.000 0.000 0.000 PngImagePlugin.py:1096(__init__) + 1 0.000 0.000 0.000 0.000 PngImagePlugin.py:1093(_idat) + 1 0.000 0.000 0.000 0.000 calendar.py:38(IllegalWeekdayError) + 1 0.000 0.000 0.000 0.000 {method 'cleanup' of 'ImagingEncoder' objects} + 1 0.000 0.000 0.000 0.000 BmpImagePlugin.py:377(DibImageFile) + 1 0.000 0.000 0.000 0.000 _internal.py:256(c_void_p) + 1 0.000 0.000 0.000 0.000 :1285(_sanity_check) + 1 0.000 0.000 0.000 0.000 ImageFile.py:618(PyCodecState) + 1 0.000 0.000 0.000 0.000 ImageOps.py:414(SupportsGetMesh) + 1 0.000 0.000 0.000 0.000 linalg.py:1() + 1 0.000 0.000 0.000 0.000 PdfParser.py:302(PdfBinary) + 1 0.000 0.000 0.000 0.000 PpmImagePlugin.py:298(PpmDecoder) + 1 0.000 0.000 0.000 0.000 request.py:438(format_hint) + 1 0.000 0.000 0.000 0.000 PdfParser.py:310(PdfStream) + 1 0.000 0.000 0.000 0.000 __init__.py:678(LZMADecompressor) + 1 0.000 0.000 0.000 0.000 __init__.py:1369(disable) + 1 0.000 0.000 0.000 0.000 _linalg.py:73(LinAlgError) + 1 0.000 0.000 0.000 0.000 pickle.py:73(PickleError) + 1 0.000 0.000 0.000 0.000 numerictypes.py:364(_PreprocessDTypeError) + 1 0.000 0.000 0.000 0.000 exceptions.py:48(ComplexWarning) + 1 0.000 0.000 0.000 0.000 MspImagePlugin.py:78(MspDecoder) + 1 0.000 0.000 0.000 0.000 __init__.py:70(_128Bit) + 1 0.000 0.000 0.000 0.000 {built-in method _thread._set_sentinel} + 1 0.000 0.000 0.000 0.000 request.py:414(filename) + 1 0.000 0.000 0.000 0.000 pathlib.py:191(_WildcardSelector) + 1 0.000 0.000 0.000 0.000 parse.py:144(_ResultMixinBytes) + 1 0.000 0.000 0.000 0.000 threading.py:1439(_MainThread) + 1 0.000 0.000 0.000 0.000 arrayprint.py:1393(TimedeltaFormat) + 1 0.000 0.000 0.000 0.000 Shadow.py:294(StructType) + 1 0.000 0.000 0.000 0.000 PdfParser.py:109(IndirectObjectDef) + 1 0.000 0.000 0.000 0.000 v3_plugin_api.py:96(__init__) + 1 0.000 0.000 0.000 0.000 Shadow.py:368(ArrayInstance) + 1 0.000 0.000 0.000 0.000 Shadow.py:245(CythonType) + 1 0.000 0.000 0.000 0.000 parse.py:336(ParseResult) + 1 0.000 0.000 0.000 0.000 threading.py:833(BrokenBarrierError) + 1 0.000 0.000 0.000 0.000 shutil.py:73(SpecialFileError) + 1 0.000 0.000 0.000 0.000 __init__.py:166(c_short) + 1 0.000 0.000 0.000 0.000 __init__.py:199(c_double) + 1 0.000 0.000 0.000 0.000 :1() + 1 0.000 0.000 0.000 0.000 pathlib.py:811(PureWindowsPath) + 1 0.000 0.000 0.000 0.000 pickle.py:77(PicklingError) + 2 0.000 0.000 0.000 0.000 calendar.py:99(__init__) + 1 0.000 0.000 0.000 0.000 ipaddress.py:20(AddressValueError) + 1 0.000 0.000 0.000 0.000 ipaddress.py:1131(_BaseConstants) + 1 0.000 0.000 0.000 0.000 _endian.py:55(BigEndianUnion) + 1 0.000 0.000 0.000 0.000 typing.py:3042() + 1 0.000 0.000 0.000 0.000 parse.py:350(SplitResultBytes) + 1 0.000 0.000 0.000 0.000 _ufunc_config.py:357(_unspecified) + 1 0.000 0.000 0.000 0.000 exceptions.py:59(ModuleDeprecationWarning) + 1 0.000 0.000 0.000 0.000 {method 'clear' of 'list' objects} + 1 0.000 0.000 0.000 0.000 :52(normcase) + 1 0.000 0.000 0.000 0.000 :146(update_abstractmethods) + 1 0.000 0.000 0.000 0.000 fetching.py:19(InternetNotAllowedError) + 1 0.000 0.000 0.000 0.000 copyreg.py:22(constructor) + 1 0.000 0.000 0.000 0.000 Shadow.py:238(CythonMetaType) + 1 0.000 0.000 0.000 0.000 {built-in method numpy._set_promotion_state} + 1 0.000 0.000 0.000 0.000 _endian.py:35(_swapped_union_meta) + 1 0.000 0.000 0.000 0.000 parse.py:342(DefragResultBytes) + 1 0.000 0.000 0.000 0.000 _iotools.py:422(ConverterError) + 1 0.000 0.000 0.000 0.000 calendar.py:201(setfirstweekday) + 1 0.000 0.000 0.000 0.000 Shadow.py:402(_FusedType) + 1 0.000 0.000 0.000 0.000 __init__.py:224(c_ubyte) + 1 0.000 0.000 0.000 0.000 PdfParser.py:72(PdfFormatError) + 1 0.000 0.000 0.000 0.000 parse.py:355(ParseResultBytes) + 1 0.000 0.000 0.000 0.000 __init__.py:262(c_wchar) + 1 0.000 0.000 0.000 0.000 {method '__enter__' of '_thread.lock' objects} + 1 0.000 0.000 0.000 0.000 BlpImagePlugin.py:244(BLPFormatError) + 1 0.000 0.000 0.000 0.000 BlpImagePlugin.py:380(BLP2Decoder) + 1 0.000 0.000 0.000 0.000 Image.py:3714(register_encoder) + 1 0.000 0.000 0.000 0.000 __init__.py:39(BadZipFile) + 1 0.000 0.000 0.000 0.000 __init__.py:67(_256Bit) + 1 0.000 0.000 0.000 0.000 gzip.py:120(BadGzipFile) + 1 0.000 0.000 0.000 0.000 __init__.py:236(c_char) + 1 0.000 0.000 0.000 0.000 threading.py:1236(daemon) + 1 0.000 0.000 0.000 0.000 __init__.py:252(c_bool) + 1 0.000 0.000 0.000 0.000 exceptions.py:76(VisibleDeprecationWarning) + 1 0.000 0.000 0.000 0.000 __init__.py:73(_96Bit) + 1 0.000 0.000 0.000 0.000 __init__.py:187(c_int) + 1 0.000 0.000 0.000 0.000 multiarray.py:1101(copyto) + 1 0.000 0.000 0.000 0.000 exceptions.py:97(TooHardError) + 1 0.000 0.000 0.000 0.000 {method 'index' of 'tuple' objects} + 1 0.000 0.000 0.000 0.000 ipaddress.py:24(NetmaskValueError) + 1 0.000 0.000 0.000 0.000 __init__.py:174(c_long) + 1 0.000 0.000 0.000 0.000 pickle.py:84(UnpicklingError) + 1 0.000 0.000 0.000 0.000 _iotools.py:430(ConverterLockError) + 1 0.000 0.000 0.000 0.000 {built-in method numpy._core._multiarray_umath._set_madvise_hugepage} + 1 0.000 0.000 0.000 0.000 exceptions.py:87(RankWarning) + 1 0.000 0.000 0.000 0.000 request.py:745(InitializationError) + 1 0.000 0.000 0.000 0.000 __init__.py:43(LargeZipFile) + 1 0.000 0.000 0.000 0.000 __init__.py:170(c_ushort) + 1 0.000 0.000 0.000 0.000 shutil.py:70(SameFileError) + 1 0.000 0.000 0.000 0.000 __init__.py:195(c_float) + 1 0.000 0.000 0.000 0.000 _endian.py:34(_swapped_struct_meta) + 1 0.000 0.000 0.000 0.000 Image.py:80(DecompressionBombWarning) + 1 0.000 0.000 0.000 0.000 __init__.py:231(c_byte) + 1 0.000 0.000 0.000 0.000 __init__.py:247(c_void_p) + 1 0.000 0.000 0.000 0.000 _iotools.py:438(ConversionWarning) + 1 0.000 0.000 0.000 0.000 Shadow.py:45(InvalidTypeSpecification) + 1 0.000 0.000 0.000 0.000 fetching.py:27(NeedDownloadError) + 1 0.000 0.000 0.000 0.000 __init__.py:203(c_longdouble) + 1 0.000 0.000 0.000 0.000 shutil.py:67(Error) + 1 0.000 0.000 0.000 0.000 __init__.py:191(c_uint) + 1 0.000 0.000 0.000 0.000 exceptions.py:202(DTypePromotionError) + 1 0.000 0.000 0.000 0.000 __init__.py:178(c_ulong) + 1 0.000 0.000 0.000 0.000 ImagePalette.py:51(palette) + 1 0.000 0.000 0.000 0.000 :1(__create_fn__) + 1 0.000 0.000 0.000 0.000 __init__.py:79(_64Bit) + 1 0.000 0.000 0.000 0.000 shutil.py:83(RegistryError) + 1 0.000 0.000 0.000 0.000 Shadow.py:106(_Optimization) + 1 0.000 0.000 0.000 0.000 subprocess.py:123(SubprocessError) + 1 0.000 0.000 0.000 0.000 shutil.py:80(ReadError) + 1 0.000 0.000 0.000 0.000 shutil.py:87(_GiveupOnFastCopy) + 1 0.000 0.000 0.000 0.000 __init__.py:82(_32Bit) + 1 0.000 0.000 0.000 0.000 shutil.py:77(ExecError) + 1 0.000 0.000 0.000 0.000 __init__.py:76(_80Bit) + 1 0.000 0.000 0.000 0.000 __init__.py:88(_8Bit) + 1 0.000 0.000 0.000 0.000 __init__.py:85(_16Bit) + 1 0.000 0.000 0.000 0.000 ImageFile.py:89(_tilesort) + 1 0.000 0.000 0.000 0.000 Image.py:84(DecompressionBombError) + 1 0.000 0.000 0.000 0.000 dataclasses.py:433() + 1 0.000 0.000 0.000 0.000 dataclasses.py:372(__init__) + 2 0.000 0.000 0.000 0.000 :1014(is_package) + 1 0.000 0.000 0.000 0.000 request.py:434(format_hint) + 1 0.000 0.000 0.000 0.000 :260(__init__) + 1 0.000 0.000 0.000 0.000 v3_plugin_api.py:363(__enter__) + 1 0.000 0.000 0.000 0.000 typing.py:2182(cast) + 1 0.000 0.000 0.000 0.000 dataclasses.py:879(_hash_set_none) + + diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..10a70aa --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +tkintermapview~=1.29 +astropy~=6.1.4 diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..9b00f1d --- /dev/null +++ b/setup.py @@ -0,0 +1,14 @@ +from setuptools import setup +from Cython.Build import cythonize + + +setup( + ext_modules = cythonize("skydome.py", compiler_directives={"language_level": "3"}) +) + +#run following +#python setup.py build_ext --inplace + +#and then +#python +#import skydome diff --git a/skydome.py b/skydome.py new file mode 100644 index 0000000..1f8b617 --- /dev/null +++ b/skydome.py @@ -0,0 +1,443 @@ +#!/usr/bin/env python +# coding: utf-8 + +# https://journals.ametsoc.org/view/journals/bams/79/5/1520-0477_1998_079_0831_opoaac_2_0_co_2.xml?tab_body=pdf - for aerosols and clouds +# +# https://iopscience.iop.org/article/10.1088/1757-899X/1269/1/012011/pdf - for Rayleigh extinction +# +# https://sci-hub.se/10.1364/josa.48.1018_1 - temperature dependance Rayleigh scattering +# +# https://sci-hub.se/https://doi.org/10.1364/JOSA.47.000176 - Rayleigh coefficients (index of refraction) - Penndorf +# +# We are going to use the real rayleigh scattering coefficient: +# +# $\beta_R(h, \lambda) = \frac{8\pi(n^2 - 1)^2}{2N\lambda^4} e^{-\frac{h}{H_R}}$ +# +# n = index of refraction, these are calculated in the 4th paper, temperature dependance +# +# N = molecular density, dependent on humidity +# +# $\lambda$ = wavelength, but we only care for RGB (440, 550, 680 nm) +# +# From Penndorf, the dispersion equation is: +# +# $(n_s - 1) \times 10^{-8} = 6432.8 + \frac{2949810}{146 - v^2} + \frac{25540}{41 - v^2}$ +# +# It is important to note that $v=1/f$ which is measured in um +# +# Once we have calculated our dispersion index of refraction, we can see what our new value for n will be (it is dependant on temperature and pressure) +# +# $$ +# (n - 1) = (n_s - 1) \left( \frac{(1 + \alpha t_s)}{(1 + \alpha t)} \right) \frac{p}{p_s} +# $$ +# +# Here, we are using $n_s$ from the dispersion equation, $t_s$ is 15 degrees Celsius, and $p_s$ is 760 mmHg. $t$ represents the actual temperature, and $p$ represents the actual pressure. $\alpha$ is the coefficient of linear expansion of air = 0.00367 in units of inverse celcius. We see that the influence of air pressure really is critical +# +# +# We also need to find N, the molecular density (depends on temperature, humidity, pressure): We are going to use the value at the altitude where our person is standing and then we scale it using the scale factor. Penndorf uses N_s = 2.54743e19, but i am not sure if it is applicable to our scenario. +# +# +# +# + +# Ok, so things work... but they are not super realistic. I think we should be updating the dispersion equation because Penndorf's paper is super old. We want the value of the index of refraction at the location of the observer - this is going to depend on the users inputs. +# +# https://refractiveindex.info/?shelf=other&book=air&page=Ciddor (1996) +# +# New calculation for refractive index (where lambda is in microns) +# +# This applies for : Standard air: dry air at 15 °C, 101.325 kPa and with 450 ppm CO2 content. +# +# $n - 1 = \frac{0.05792105}{238.0185 - \lambda^{-2}} + \frac{0.00167917}{57.362 - \lambda^{-2}}$ +# +# +# + +# Something really cool here is that we can use the color of the sunset to predict the weather: "Red at night, sailors delight. Red in morning, sailors take warning" +# When there is a bright red sunset at night, it means there is likely a high pressure cell off to the west. With west to east weather patterns, this means a high pressure cell is about to move in, high pressure = pleasant weather, "sailors delight". When there is a red sunrise in the east, it means the high pressure cell has already passed and a low pressure cell is likely to replace it. Low pressure = poor weather, "sailors take warning". +# +# Low pressure: 720mmHg +# High pressure: 780 mmHg + +import numpy as np +import math +import imageio +import time +import random +import cython + + +""" +This class allows us to manipulate vectors +Not all of the functions are used yet - but they might be later when we start adding things +""" + + +@cython.cclass +class Vec3: + v = cython.declare(cython.float[3],visibility="public") + def __cinit__(self, x:cython.float =0, y:cython.float=0, z:cython.float=0): + self.v:cython.float[3] = [x, y, z] + + def __init__(self, x:cython.float =0, y:cython.float=0, z:cython.float=0): + self.v:cython.float[3] = [x, y, z] + + def __add__(self, other ): + return Vec3(self.v[0] + other.v[0],self.v[1] + other.v[1],self.v[2] + other.v[2]) + + def __sub__(self, other): + return Vec3(self.v[0] - other.v[0],self.v[1] - other.v[1],self.v[2] - other.v[2]) + + def __mul__(self, other): + if isinstance(other, Vec3): + return Vec3(self.v[0] * other.v[0],self.v[1] * other.v[1],self.v[2] * other.v[2]) + #elif isinstance(other, (int, float)): + return Vec3(self.v[0] * other,self.v[1] * other,self.v[2] * other) + #raise TypeError("Can only multiply by a Vec3 or scalar (int or float).") + + def __truediv__(self, scalar): + return Vec3(self.v[0] / scalar,self.v[1] / scalar,self.v[2] / scalar) + + def length(self)->cython.float: + return math.sqrt(self.v[0]**2 + self.v[1]**2 + self.v[2]**2) + + def normalize(self): + length = self.length() + return self / length if length > 0 else Vec3() + + def to_tuple(self): + return (self.v[0],self.v[1],self.v[2]) + + def __repr__(self): + return f"Vec3({self.v[0]}, {self.v[1]}, {self.v[2]})" + + @cython.cfunc + def dot(self, other): + return self.v[0]* other.v[0]+self.v[1]* other.v[1]+self.v[2]* other.v[2] + + +""" +Here we will be calculating what the value for n is based on T, P, but we will +also be taking dispersion into account - remember, we are considering 440 nm, 550 nm, 680 nm + +These equations match the tabulated results made by Penndorf +""" + +wavelengths = Vec3(0.68, 0.55, 0.44) # These are the wavelengths in um + +# The n_s values gives us the different refractive indices for the different wavelenghts +# The n values give us the new refractive indices depending on the temperature and pressure + +@cython.cfunc +def refraction_calculator(T:cython.int, P:cython.int) -> tuple[Vec3, Vec3]: + alpha:cython.float = 0.00367 # in inverse Celsius + t_s:cython.int = 15 # degrees Celsius + p_s:cython.int = 760 # mmHg + + n_s_values = [] # for debugging / comparing to the internet values + n_values = [] + n_s:cython.double + n:cython.double + i:cython.int + for i in [wavelengths.v[0], wavelengths.v[1], wavelengths.v[2]]: + n_s = 1 + (0.05792105 / (238.0185 - i**-2) + 0.00167917 / (57.362 - i**-2)) + + n = ((n_s - 1) * ((1 + alpha * t_s) / (1 + alpha * T)) * (P / p_s)) + 1 + + n_s_values.append(n_s) + n_values.append(n) + + return Vec3(*n_s_values), Vec3(*n_values) + +@cython.cfunc +def beta(n_values:Vec3): + + N_s:cython.double = 2.54743e7 # um^-3 + + beta_values = [] + + for i, n in enumerate(n_values.v): + wavelength = wavelengths.v[i] # Corresponding wavelength value + beta_1 = ((8 * math.pi * (n**2 - 1)**2) / ((2 * N_s) * (wavelength)**4))*1e6 # The whole thing should be in m^-1 to match with the rest of the code + + beta = (beta_1*10) + beta_values.append(beta) + + return Vec3(beta_values[0],beta_values[1],beta_values[2]) + + +# Example usage, normal is 25, 750 +T:cython.int = 5 # Temperature in degrees Celsius +P:cython.int = 760 # Pressure in mmHg +n_s_values:Vec3 +n_values:cython.double +n_s_values, n_values = refraction_calculator(T, P) +beta_values = beta(n_values) + +#print("n_s values:", refraction_calculator_result.v) +#print("n values:", n_values.v) +#print("Beta values:", beta_values.v) + + +# We will have a scattering enhancement factor for our scattering values + +kInfinity = float('inf') +angle_degrees:cython.int = 90 # Sun direction in degrees (0 to 90, noon to sunset) +angle_radians:cython.double = math.radians(angle_degrees) # Convert to radians +sunDir:Vec3 = Vec3(0, math.cos(angle_radians), -math.sin(angle_radians)) + +""" +The values for betaR depend on many things +For one, they scale proportionally to barometric pressure +It also varies according to temperature + +""" + +betaR = Vec3(*beta_values.v) # Keeps it as a Vec3 +#betaR = Vec3(3.8e-6, 13.5e-6, 33.1e-6) + +# R, G, B (the smaller the value, the less it will scatter during the day) in m-1 +# 3.8 e-6, 13.5 e-6, 33.1 e-6 - default +# The order should be 680 nm, 550 nm, 440 nm + + +""" +There are many "categories" of aerosols and each has their own extinction coefficient (I removed the factor of 1.1) + +Continental Clean - 26e-6 +Continental Average - 75e-6 +Continental Polluted - 175e-6 + +Urban - 353e-6 + +Desert - 145e-6 + +Maritime Clean - 90e-6 +Maritime Polluted - 115e-6 +Maritime Tropic - 43e-6 + +Arctic - 23e-6 + +Antarctic - 11e-6 + + +""" +betaM = Vec3(21e-6, 21e-6, 21e-6) # We need to have the Mie scattering be the same in all the directions +# The greater the value of beta, the smaller the Mie scattering point (responsable for the halo around the sun) +# If there is more pollution, we get a larger halo and the colors of the sunset become desaturated (more hazy) +# Default is 21e-6 + + +earthRadius:cython.int = 6360e3 #m +atmosphereRadius:cython.int = 6420e3 #m (60 km higher than earth) +Hr:cython.int = 7994 +Hm:cython.int = 1200 + +# The direction will change for each pixel +@cython.cfunc +def computeIncidentLight(direction:Vec3) -> tuple[float,float,float]: + tmin:cython.float=0 + tmax:cython.float=kInfinity + + # We can change the origin position if we want, but for now it is 1 meter above the surface + orig:Vec3 = Vec3(0, earthRadius + 1, 0) + t0:cython.float + t1:cython.float + t0, t1 = raySphereIntersect(orig, direction, atmosphereRadius) + if t1 < 0: + return Vec3(0, 0, 0) + if t0 > tmin and t0 > 0: + tmin = t0 + if t1 < tmax: + tmax = t1 + + numSamples:int = 16 + numSamplesLight:int = 8 + segmentLength = (tmax - tmin) / numSamples + tCurrent = tmin + sumR = Vec3() + sumM = Vec3() + opticalDepthR = 0 + opticalDepthM = 0 + mu:cython.float = direction.dot(sunDir) # This is the cosine of the angle between the direction vector (V) and the sun Direction + + phaseR = (3 * (1 + (mu * mu))) / (16 * math.pi) + g = 0.76 + phaseM = 3 / (8 * math.pi) * ((1 - g * g) * (1 + mu * mu)) / ((2 + g * g) * ((1 + g * g - 2 * g * mu) ** 1.5)) + + i:cython.int + for i in range(numSamples): + samplePosition = orig + direction * (tCurrent + segmentLength * 0.5) + height = samplePosition.length() - earthRadius + hr = math.exp(-height / Hr) * segmentLength + hm = math.exp(-height / Hm) * segmentLength + opticalDepthR += hr + opticalDepthM += hm + + # Sample position is the start, but it should be in the direction of the sun + t0Light, t1Light = raySphereIntersect(samplePosition, sunDir, atmosphereRadius) + + if t1Light < 0: + continue + + segmentLengthLight = (t1Light - t0Light) / numSamplesLight + tCurrentLight = 0 + opticalDepthLightR = 0 + opticalDepthLightM = 0 + + j:cython.int + for j in range(numSamplesLight): + samplePositionLight = samplePosition + (sunDir * (tCurrentLight + segmentLengthLight * 0.5)) + heightLight = samplePositionLight.length() - earthRadius + if heightLight < 0: + break + opticalDepthLightR += (math.exp(-heightLight / Hr) * segmentLengthLight) + opticalDepthLightM += (math.exp(-heightLight / Hm) * segmentLengthLight) + tCurrentLight += segmentLengthLight + + if j == numSamplesLight - 1: + tau = (betaR * (opticalDepthR + opticalDepthLightR)) + (betaM * (opticalDepthM + opticalDepthLightM)) + attenuation = Vec3(math.exp(-tau.v[0]), math.exp(-tau.v[1]), math.exp(-tau.v[2])) + sumR += (attenuation * hr) + sumM += (attenuation * hm) + tCurrent += (segmentLength) + + # Changing the * 20 number just changes the intensity os the light, it does not much change the colors themselves + # Well the colors kinda change, but more they just get super pale or super not pale. 20 should be fine I guess + final_color = (sumR * betaR * phaseR + sumM * betaM * phaseM) * 20 + return final_color.to_tuple() + +@cython.cfunc +def raySphereIntersect(orig:Vec3, direction:Vec3, radius:cython.double) -> tuple[cython.float,cython.float]: + A:cython.float = direction.v[0]**2 + direction.v[1]**2 +direction.v[2]**2 + B:cython.float = 2 * (direction.v[0]*orig.v[0] +direction.v[1]*orig.v[1] +direction.v[2]*orig.v[2] ) + C:cython.float = orig.v[0]**2 + orig.v[1]**2 +orig.v[2]**2 - radius ** 2 + + t0: cython.float + t1: cython.float + t0, t1 = solveQuadratic(A, B, C) + if t1 < 0: + return (kInfinity, kInfinity) + #if t0 > t1: + # t0, t1 = t1, t0 + return (t0, t1) + +@cython.cfunc +def solveQuadratic(a:cython.float, b:cython.float, c:cython.float) -> tuple[cython.float,cython.float]: + if b == 0: + if a == 0: + return (0, 0) + x1 = 0 + x2 = math.sqrt(-c / a) + return (x1, x2) + discr = b ** 2 - 4 * a * c + if discr < 0: + return (kInfinity, kInfinity) + + discr:cython.float + q:cython.float + discrs = math.sqrt(discr) + q = (-0.5 * (b - discrs)) if b < 0 else (-0.5 * (b + discrs)) + return (q/a, c/q) + + + +@cython.cfunc +def renderSkydome(filename): + width:cython.int + height:cython.int + width, height = 256,256 + image = np.zeros((height, width, 3), dtype=float) + + start_time = time.time() # Start timing + + j:cython.int + i:cython.int + x:cython.float + y:cython.float + z2:cython.float + phi:float + theta:float + direction:Vec3 + for j in range(height): + for i in range(width): + x = 2 * (i + 0.5) / (width - 1) - 1 + y = 2 * (j + 0.5) / (height - 1) - 1 + z2 = x * x + y * y + if z2 <= 1: + phi = math.atan2(y, x) + theta = math.acos(1 - z2) + # This changes for each pixel + direction = Vec3(math.sin(theta) * math.cos(phi), math.cos(theta), math.sin(theta) * math.sin(phi)) + color = computeIncidentLight(direction) + #color = computeIncidentLight(direction) + + + # Assign the clipped color directly to the image array + image[j][i][0] = np.clip(color, 0, 1)[0] + image[j][i][1] = np.clip(color, 0, 1)[1] + image[j][i][2] = np.clip(color, 0, 1)[2] + + # Print elapsed time after each row + elapsed_time = time.time() - start_time + print(f"Rendering row {j + 1}/{height}, elapsed time: {elapsed_time:.2f} seconds") + #print(f"Rendering row {j + 1}/{height}") + + # Save result to a PNG image + image = np.clip(image, 0, 1) * 255 # change 255 + imageio.imwrite(filename, image.astype(np.uint8)) + + + +def renderFromCamera(filename): + + width:cython.int + height:cython.int + width, height = 100, 100 + + x:cython.int + y:cython.int + rayx:cython.float + rayy:cython.float + image = np.zeros((height, width, 3), dtype=np.float32) + + aspectRatio = width / float(height) + fov = 65 # field of view + angle = math.tan(fov * np.pi / 180 * 0.5) # How much the camera can see + + start_time = time.time() # Start timing + + numPixelSamples:cython.int = 4 + for y in range(height): + for x in range(width): +# for m in range(numPixelSamples): +# for n in range(numPixelSamples): +# rayx = (2 * (x + (m + random.uniform(0, 1)) / numPixelSamples) / float(width) - 1) * aspectRatio * angle +# rayy = (1 - (y + (n + random.uniform(0, 1)) / numPixelSamples) / float(height) * 2) * angle + + rayx = (2 * x / float(width) - 1) * aspectRatio * angle + rayy = (1 - y / float(height) * 2) * angle + + #This changes for each pixel, it is the direction we are looking in + direction = Vec3(rayx, rayy, -1).normalize() + color = computeIncidentLight(direction) + #image[y, x] = np.array(color) + image[y][x] = np.clip(color, 0, 1) + + #image[y, x] /= numPixelSamples * numPixelSamples # Average color + + elapsed_time = time.time() - start_time + print("what") + print(f"Renderinggg row {y + 1}/{height}, elapsed time: {elapsed_time:.2f} seconds") + + image = np.clip(image, 0, 1) * 255 + return image + #imageio.imwrite(filename, image.astype(np.uint8)) + + #renderFromCamera("camera_render.png") + + +#renderSkydome("highpress_15C.png") +#renderFromCamera("highpress_camera.png") + +