diff --git a/poetry.lock b/poetry.lock index 6734441..a83343d 100644 --- a/poetry.lock +++ b/poetry.lock @@ -89,6 +89,14 @@ category = "dev" optional = false python-versions = "*" +[[package]] +name = "gprof2dot" +version = "2021.2.21" +description = "Generate a dot graph from the output of several profilers." +category = "dev" +optional = false +python-versions = "*" + [[package]] name = "greenlet" version = "1.1.2" @@ -171,6 +179,22 @@ parso = ">=0.8.0,<0.9.0" qa = ["flake8 (==3.8.3)", "mypy (==0.782)"] testing = ["Django (<3.1)", "colorama", "docopt", "pytest (<7.0.0)"] +[[package]] +name = "line-profiler" +version = "3.4.0" +description = "Line-by-line profiler." +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +IPython = {version = ">=0.13", markers = "python_version >= \"3.7\""} + +[package.extras] +all = ["cython", "scikit-build", "cmake", "ninja", "pytest (>=4.6.11)", "pytest-cov (>=2.10.1)", "coverage[toml] (>=5.3)", "ubelt (>=0.8.7)", "IPython (>=0.13,<7.17.0)", "IPython (>=0.13)"] +build = ["cython", "scikit-build", "cmake", "ninja"] +tests = ["pytest (>=4.6.11)", "pytest-cov (>=2.10.1)", "coverage[toml] (>=5.3)", "ubelt (>=0.8.7)"] + [[package]] name = "mako" version = "1.1.6" @@ -457,6 +481,34 @@ tomli = ">=1.0.0" [package.extras] testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"] +[[package]] +name = "pytest-line-profiler" +version = "0.1.0" +description = "Profile code executed by pytest" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +line-profiler = "*" +pytest = ">=3.5.0" + +[[package]] +name = "pytest-profiling" +version = "1.7.0" +description = "Profiling plugin for py.test" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +gprof2dot = "*" +pytest = "*" +six = "*" + +[package.extras] +tests = ["pytest-virtualenv"] + [[package]] name = "pytest-qt" version = "4.0.2" @@ -605,7 +657,7 @@ python-versions = "*" [metadata] lock-version = "1.1" python-versions = "^3.9" -content-hash = "c9f7a8c9a15812c1f3affeaa301fe6e6310388cca41a229bdb97fdd58c765e6f" +content-hash = "edc1d6c0a7e90c928000bdd53f541b88bea17a8c44eb86bcb29936c6520a694a" [metadata.files] alembic = [ @@ -644,6 +696,9 @@ executing = [ {file = "executing-0.8.3-py2.py3-none-any.whl", hash = "sha256:d1eef132db1b83649a3905ca6dd8897f71ac6f8cac79a7e58a1a09cf137546c9"}, {file = "executing-0.8.3.tar.gz", hash = "sha256:c6554e21c6b060590a6d3be4b82fb78f8f0194d809de5ea7df1c093763311501"}, ] +gprof2dot = [ + {file = "gprof2dot-2021.2.21.tar.gz", hash = "sha256:1223189383b53dcc8ecfd45787ac48c0ed7b4dbc16ee8b88695d053eea1acabf"}, +] greenlet = [ {file = "greenlet-1.1.2-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:58df5c2a0e293bf665a51f8a100d3e9956febfbf1d9aaf8c0677cf70218910c6"}, {file = "greenlet-1.1.2-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:aec52725173bd3a7b56fe91bc56eccb26fbdff1386ef123abb63c84c5b43b63a"}, @@ -716,6 +771,54 @@ jedi = [ {file = "jedi-0.18.1-py2.py3-none-any.whl", hash = "sha256:637c9635fcf47945ceb91cd7f320234a7be540ded6f3e99a50cb6febdfd1ba8d"}, {file = "jedi-0.18.1.tar.gz", hash = "sha256:74137626a64a99c8eb6ae5832d99b3bdd7d29a3850fe2aa80a4126b2a7d949ab"}, ] +line-profiler = [ + {file = "line_profiler-3.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6795393d5365ae039296275fbdf224d32353fa9b5fbc9924c020119896a1b5f1"}, + {file = "line_profiler-3.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c73994cc599870df7efde004f445d81826cbcedffb14d3d82642c6ea13495f6e"}, + {file = "line_profiler-3.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0bc64d2affea5c11d6143024c8c1a7b9da9c9b7769669efb80effc1dd4feb3fb"}, + {file = "line_profiler-3.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b4c3e6d899f372c514b0321416241fe79e6ae4301f5e78a18cf2a3680c874e9"}, + {file = "line_profiler-3.4.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8e94ff5c6be71e65c201dd51b3fc6b22ff0a8331dca7ee5ff7e2776a772b86d9"}, + {file = "line_profiler-3.4.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5e6306903d3750e7740620fa92151d129bb3c081ab1f8776b2e4263f9f715864"}, + {file = "line_profiler-3.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ff0f2a42920545358b04ea466b8725dc0dec6ed6d0b5c1054219666416937b81"}, + {file = "line_profiler-3.4.0-cp310-cp310-win32.whl", hash = "sha256:fa67fb3c5e0e914dfb310106562e2162840bef2970f44271fa67aae94ef46bfd"}, + {file = "line_profiler-3.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:c882542947dd271c663aa16ccc800808f6f071e4fd478731ddea4424f6a5cc00"}, + {file = "line_profiler-3.4.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b8d66cc1f3e70dad49ecf98915139d505c2d9f4f1cb2775b7fb83d6603763d1a"}, + {file = "line_profiler-3.4.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a0424d6606176e6272469cc1ee0b08cabc0f5286d0231d381762a1167125c7e"}, + {file = "line_profiler-3.4.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:29a708bb392b83a1f8782a5b6c3bc8985fd5241e34e30853ecf9234d0404ad95"}, + {file = "line_profiler-3.4.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9941d224ec9c9787528240999b666a7f454d7383100515c8508a86bbf2147b18"}, + {file = "line_profiler-3.4.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:1e09fa5d19d1f46815422f1c0fbfe4a2ed7cbdcbef6123d84de342e3606a3266"}, + {file = "line_profiler-3.4.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:78f5310f32c1311ddcf4007f473cd0366b19fca988174ff28ef713447665ccc5"}, + {file = "line_profiler-3.4.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:31356727045d9f38ffde7c29e521bb85fb9c0e14ee0090bfd24dc952a0a23981"}, + {file = "line_profiler-3.4.0-cp36-cp36m-win32.whl", hash = "sha256:9c87a9f07e00ee4a71cf0ae69f63eaf55416a0f756cab9c7a621fa8c4eb850f7"}, + {file = "line_profiler-3.4.0-cp36-cp36m-win_amd64.whl", hash = "sha256:fb04fbd0038869054869dd9a3eb00f23377908228477530227a3b706a4a98b68"}, + {file = "line_profiler-3.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:135e5c2014b1ca6c60d444bf9867d11feb09525b90920f9fc0e451fbc2559b8b"}, + {file = "line_profiler-3.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08b14602b493907ed3586b5e93b69aeb96c7fe78caabb7eb6e9ff1ff7b22aae7"}, + {file = "line_profiler-3.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3c9e7bb3ee8914adbd4da8ceb6260aed2b91a15d285205d10dd2f6c313452e7"}, + {file = "line_profiler-3.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fbc2a321efa77d512a47de1a8b2ee41960b4a035ba5f2cfab206f82bd6f0317"}, + {file = "line_profiler-3.4.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c893718b0b7678d593f1ccab31c2bcfa638a5368d7e9e2ebafb060d70a10f695"}, + {file = "line_profiler-3.4.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:207d9992eb0afece6cdf58af9fabc8936e7738a55537866990a7bf680a7de6fb"}, + {file = "line_profiler-3.4.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2ec3d25a02d9b4be09c36f23934ff054a0df1a45eb6503e3945a487eb316ee70"}, + {file = "line_profiler-3.4.0-cp37-cp37m-win32.whl", hash = "sha256:d70994abc5de3ec500a56b9c652c51510a5cbb7f6c78bf7990ce7b94cc0ba916"}, + {file = "line_profiler-3.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:6cdc9f0bff33221b8145a13d421e8e70a898d86cc45bdd39c83e38ac7f5658cb"}, + {file = "line_profiler-3.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3f5223a271025e598e1d3857ec3c6a34f6160c9e7496e7a635bcb336c646f79f"}, + {file = "line_profiler-3.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9767eca7e7bf2e18fd41135a7e801fe3a9396b9d58480de18449cf9a9005269"}, + {file = "line_profiler-3.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8660d2d75a454eeb876dd94caad7c9e8db11970a4678386cab8bc64d8ef65f1"}, + {file = "line_profiler-3.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3496bbcaeb1223fc3b77b9facfb1229f2018367a1993d8fdb486d1c41418b22a"}, + {file = "line_profiler-3.4.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:703c85e8237b6336d0f762fd895c919b5a0db0fd89be2e450d4d8875b3881b27"}, + {file = "line_profiler-3.4.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6aabd9e4c1859083219005f941e6bbadd71cdb48645d3dd548719092ec192705"}, + {file = "line_profiler-3.4.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:db63d5e959320dd0ad7f03146b32ec7c6d07fead0335c9dd82033231cf67b6a1"}, + {file = "line_profiler-3.4.0-cp38-cp38-win32.whl", hash = "sha256:a5e56481cdf9f3a65bf39ec9ddc22b39ac19cd167964944d3aacbd037882b4b6"}, + {file = "line_profiler-3.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:c526f7002993b3e70e6d164862250099b764a36f5e8eedd59b3eb38504edb8b0"}, + {file = "line_profiler-3.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e767c41c0447a31e58976e8721346897aa61bc9b102a80a221619e2b3f6c8a47"}, + {file = "line_profiler-3.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02eea377d5483eb85bc2271118f2d9c8744d210798be92e38c10ce3484373fdc"}, + {file = "line_profiler-3.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6db3e7c306027f6baeda72ad91b7f85947bc3e41c4e6406138a4ca81d994a510"}, + {file = "line_profiler-3.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a695403a08365eecffe3abdb9f140f2f73c77a6801208c8ebdc0d0357d306415"}, + {file = "line_profiler-3.4.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a539f4aff8338fb36ed21f8bb0910d9c1c2a42f68bf1bf41f23c9dc68db90e87"}, + {file = "line_profiler-3.4.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:62e07f3cd5ec6690eb6ec339861317f3063e6927679ff3c7478e153f2438e410"}, + {file = "line_profiler-3.4.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:483673e337505ab6abdd68fa575439c7f29154d36d2a535a482a3c020055399e"}, + {file = "line_profiler-3.4.0-cp39-cp39-win32.whl", hash = "sha256:364689e6eb106905a24559d1372d093dbc7b62e3bb8e9ffbcbd65fb34da3f064"}, + {file = "line_profiler-3.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:6a946a3a246bb86504965863a211aef34108fe4e11955fa78128ceaacb83ff22"}, + {file = "line_profiler-3.4.0.tar.gz", hash = "sha256:b6b0a8100a2829358e31ef7c6f427b1dcf2b1d8e5d38b55b219719ecf758aee5"}, +] mako = [ {file = "Mako-1.1.6-py2.py3-none-any.whl", hash = "sha256:afaf8e515d075b22fad7d7b8b30e4a1c90624ff2f3733a06ec125f5a5f043a57"}, {file = "Mako-1.1.6.tar.gz", hash = "sha256:4e9e345a41924a954251b95b4b28e14a301145b544901332e658907a7464b6b2"}, @@ -942,6 +1045,15 @@ pytest = [ {file = "pytest-7.0.1-py3-none-any.whl", hash = "sha256:9ce3ff477af913ecf6321fe337b93a2c0dcf2a0a1439c43f5452112c1e4280db"}, {file = "pytest-7.0.1.tar.gz", hash = "sha256:e30905a0c131d3d94b89624a1cc5afec3e0ba2fbdb151867d8e0ebd49850f171"}, ] +pytest-line-profiler = [ + {file = "pytest_line_profiler-0.1.0-py3-none-any.whl", hash = "sha256:7f8600713c3e2d895022f274c4c8ad3851c6b10ba25363c73fccb195334a05ef"}, +] +pytest-profiling = [ + {file = "pytest-profiling-1.7.0.tar.gz", hash = "sha256:93938f147662225d2b8bd5af89587b979652426a8a6ffd7e73ec4a23e24b7f29"}, + {file = "pytest_profiling-1.7.0-py2.7.egg", hash = "sha256:3b255f9db36cb2dd7536a8e7e294c612c0be7f7850a7d30754878e4315d56600"}, + {file = "pytest_profiling-1.7.0-py2.py3-none-any.whl", hash = "sha256:999cc9ac94f2e528e3f5d43465da277429984a1c237ae9818f8cfd0b06acb019"}, + {file = "pytest_profiling-1.7.0-py3.6.egg", hash = "sha256:6bce4e2edc04409d2f3158c16750fab8074f62d404cc38eeb075dff7fcbb996c"}, +] pytest-qt = [ {file = "pytest-qt-4.0.2.tar.gz", hash = "sha256:dfc5240dec7eb43b76bcb5f9a87eecae6ef83592af49f3af5f1d5d093acaa93e"}, {file = "pytest_qt-4.0.2-py2.py3-none-any.whl", hash = "sha256:e03847ac02a890ccaac0fde1748855b9dce425aceba62005c6cfced6cf7d5456"}, diff --git a/prof/combined.prof b/prof/combined.prof new file mode 100644 index 0000000..4ab294c Binary files /dev/null and b/prof/combined.prof differ diff --git a/prof/combined.svg b/prof/combined.svg new file mode 100644 index 0000000..c51b51b --- /dev/null +++ b/prof/combined.svg @@ -0,0 +1,3833 @@ + + + + + + +%3 + + + +1 + + +_callers:9:_multicall +99.99% +(0.00%) +35× + + + + + +522 + + +python:185:pytest_pyfunc_call +94.81% +(0.00%) + + + + + + +1->522 + + +94.81% + + + + +2285 + + +runner:159:pytest_runtest_call +94.81% +(0.00%) + + + + + + +1->2285 + + +94.81% + + + + +2302 + + +fixtures:1107:pytest_fixture_setup +4.73% +(0.00%) + + + + + + +1->2302 + + +4.73% + + + + +2323 + + +runner:154:pytest_runtest_setup +4.74% +(0.00%) + + + + + + +1->2323 + + +4.74% + + + + +973 + + +test_playlists:168:test_get_selected_row +94.81% +(0.00%) + + + + + + +522->973 + + +94.81% + + + + +2192 + + +python:1716:runtest +94.81% +(0.00%) + + + + + + +2285->2192 + + +94.81% + + + + +700 + + +fixtures:908:call_fixture_func +4.73% +(0.00%) + + + + + + +2302->700 + + +4.73% + + + + +311 + + +runner:482:setup +4.74% +(0.00%) + + + + + + +2323->311 + + +4.74% + + + + +15 + + +cursors:171:execute +18.56% +(0.16%) +2009× + + + + + +987 + + +cursors:316:_query +18.13% +(0.07%) +2009× + + + + + +15->987 + + +18.13% +2009× + + + +553 + + +connections:250:query +9.90% +(0.04%) +2009× + + + + + +987->553 + + +9.90% +2009× + + + +993 + + +cursors:144:_do_get_result +2.19% +(0.08%) +2009× + + + + + +987->993 + + +2.19% +2009× + + + +998 + + +cursors:354:_post_get_result +5.96% +(0.03%) +2009× + + + + + +987->998 + + +5.96% +2009× + + + +129 + + +state:614:_expire +4.06% +(2.05%) +79773× + + + + + +1388 + + +state:418:_cleanup +0.94% +(0.48%) +77282× + + + + + +129->1388 + + +0.90% +75102× + + + +130 + + +loading:648:_instance_processor +1.91% +(0.35%) +3029× + + + + + +1216 + + +interfaces:650:create_row_processor +1.72% +(0.11%) +4930× + + + + + +130->1216 + + +1.72% +1953× + + + +1215 + + +strategies:2495:create_row_processor +1.60% +(0.20%) +2958× + + + + + +1216->1215 + + +1.60% +1953× + + + +132 + + +loading:1363:load_scalar_attributes +31.05% +(0.06%) +450× + + + + + +2257 + + +loading:388:load_on_ident +30.76% +(0.09%) +450× + + + + + +132->2257 + + +30.76% +450× + + + +1244 + + +loading:422:load_on_pk_identity +31.82% +(0.13%) +512× + + + + + +2257->1244 + + +30.67% +450× + + + +133 + + +~:0:<method 'issuperset' of 'frozenset' objects> +0.60% +(0.60%) +153342× + + + + + +134 + + +strategies:819:_load_for_state +1.25% +(0.02%) +444× + + + + + +1213 + + +strategies:935:_emit_lazyload +1.18% +(0.01%) +62× + + + + + +134->1213 + + +1.18% +62× + + + +1213->1244 + + +1.16% +62× + + + +135 + + +loading:883:_instance +36.21% +(11.29%) +511777× + + + + + +135->133 + + +0.59% +151998× + + + +174 + + +state:735:unloaded +5.18% +(2.83%) +264773× + + + + + +135->174 + + +5.18% +264773× + + + +179 + + +state:834:_commit +1.24% +(0.81%) +52959× + + + + + +135->179 + + +1.23% +52515× + + + +731 + + +instrumentation:412:new_instance +3.18% +(0.99%) +76837× + + + + + +135->731 + + +3.18% +76837× + + + +1223 + + +loading:1108:_populate_full +19.10% +(2.73%) +171843× + + + + + +135->1223 + + +19.10% +88641× + + + +1224 + + +loading:1166:_populate_partial +12.07% +(1.74%) +264773× + + + + + +135->1224 + + +12.07% +93032× + + + +1384 + + +identity:168:get +1.98% +(1.98%) +433710× + + + + + +135->1384 + + +1.98% +433266× + + + +164 + + +~:0:<method 'difference' of 'set' objects> +1.53% +(1.52%) +537245× + + + + + +174->164 + + +1.46% +529546× + + + +2247 + + +state:451:dict +1.31% +(1.23%) +349776× + + + + + +174->2247 + + +0.89% +264773× + + + +2242 + + +state:96:__init__ +1.72% +(1.73%) +77287× + + + + + +731->2242 + + +1.71% +76837× + + + +1222 + + +strategies:2554:load_collection_from_joined_new_row +0.54% +(0.05%) +1170× + + + + + +1223->1222 + + +0.49% +1050× + + + +1225 + + +strategies:2567:load_collection_from_joined_existing_row +17.07% +(1.91%) +165834× + + + + + +1223->1225 + + +16.83% +162584× + + + +2274 + + +path_registry:77:__ne__ +0.61% +(0.46%) +94556× + + + + + +1223->2274 + + +0.61% +94556× + + + +1224->1225 + + +0.24% +3250× + + + +1226 + + +strategies:2586:load_collection_from_joined_exec +10.73% +(0.89%) +174567× + + + + + +1224->1226 + + +10.73% +174567× + + + +137 + + +session:3382:_flush +3.34% +(0.09%) +450× + + + + + +716 + + +unitofwork:431:execute +2.76% +(0.03%) +450× + + + + + +137->716 + + +2.76% +450× + + + +1276 + + +unitofwork:628:execute +2.02% +(0.01%) +450× + + + + + +716->1276 + + +2.02% +450× + + + +159 + + +state:693:_load_expired +31.12% +(0.03%) +450× + + + + + +159->132 + + +31.05% +450× + + + +218 + + +persistence:1048:_emit_insert_statements +1.68% +(0.09%) +450× + + + + + +1874 + + +base:1600:_execute_20 +20.99% +(0.05%) +1967× + + + + + +218->1874 + + +1.45% +450× + + + +1873 + + +elements:321:_execute_on_connection +20.97% +(0.03%) +1981× + + + + + +1874->1873 + + +20.90% +1967× + + + +245 + + +_hooks:244:__call__ +99.99% +(0.00%) +35× + + + + + +2356 + + +_manager:77:_hookexec +99.99% +(0.00%) +35× + + + + + +245->2356 + + +99.99% +11× + + + +2356->1 + + +99.99% +11× + + + +275 + + +base:682:_finalize_fairy +0.53% +(0.03%) +461× + + + + + +293 + + +playlists:496:save_playlist +45.70% +(0.03%) + + + + + + +950 + + +models:282:add_track +44.68% +(0.03%) +447× + + + + + +293->950 + + +44.53% +444× + + + +951 + + +models:310:get_by_id +0.67% +(0.00%) +14× + + + + + +293->951 + + +0.28% + + + + +1553 + + +attributes:466:__get__ +32.53% +(0.90%) +86168× + + + + + +950->1553 + + +30.81% +447× + + + +1327 + + +query:2838:one +29.84% +(0.15%) +525× + + + + + +951->1327 + + +0.64% +14× + + + +299 + + +persistence:191:save_obj +2.01% +(0.06%) +450× + + + + + +299->218 + + +1.68% +450× + + + +310 + + +loading:135:chunks +37.66% +(0.06%) +3018× + + + + + +1617 + + +result:389:_raw_all_rows +0.65% +(0.03%) +1509× + + + + + +310->1617 + + +0.65% +1509× + + + +2254 + + +loading:151:<listcomp> +36.94% +(0.73%) +1057× + + + + + +310->2254 + + +36.94% +1057× + + + +2254->135 + + +36.21% +169393× + + + +2286 + + +python:1720:setup +4.74% +(0.00%) + + + + + + +311->2286 + + +4.74% + + + + +497 + + +fixtures:573:_fillfixtures +4.74% +(0.00%) + + + + + + +2286->497 + + +4.74% + + + + +316 + + +session:826:commit +12.45% +(0.05%) +913× + + + + + +317 + + +session:908:close +0.61% +(0.04%) +920× + + + + + +316->317 + + +0.60% +913× + + + +1267 + + +session:794:_prepare_impl +3.42% +(0.04%) +913× + + + + + +316->1267 + + +3.42% +463× + + + +1343 + + +session:698:_remove_snapshot +5.38% +(0.82%) +463× + + + + + +316->1343 + + +5.38% +463× + + + +2109 + + +base:2344:commit +3.01% +(0.00%) +454× + + + + + +316->2109 + + +3.01% +454× + + + +1674 + + +base:1109:close +0.56% +(0.01%) +461× + + + + + +317->1674 + + +0.56% +461× + + + +1266 + + +session:3329:flush +3.41% +(0.04%) +1950× + + + + + +1267->1266 + + +3.37% +450× + + + +1343->129 + + +4.06% +79773× + + + +1343->2247 + + +0.37% +79773× + + + +2113 + + +base:2546:_do_commit +3.00% +(0.02%) +454× + + + + + +2109->2113 + + +3.00% +454× + + + +1672 + + +base:1113:close +0.55% +(0.01%) +461× + + + + + +1674->1672 + + +0.55% +461× + + + +325 + + +ddl:819:visit_metadata +1.49% +(0.00%) + + + + + + +484 + + +visitors:520:traverse_single +1.75% +(0.00%) +32× + + + + + +325->484 + + +1.45% + + + + +484->325 + + +1.49% + + + + +509 + + +ddl:867:visit_table +1.45% +(0.00%) + + + + + + +484->509 + + +1.45% + + + + +349 + + +playlists:453:populate +89.45% +(0.02%) + + + + + + +349->293 + + +45.70% + + + + +349->951 + + +0.29% + + + + +902 + + +playlists:315:insert_track +11.28% +(0.28%) +444× + + + + + +349->902 + + +11.28% +444× + + + +906 + + +playlists:652:update_display +30.73% +(0.10%) + + + + + + +349->906 + + +30.73% + + + + +1192 + + +associationproxy:1318:<genexpr> +1.30% +(0.01%) +450× + + + + + +349->1192 + + +1.30% +449× + + + +780 + + +playlists:1007:_file_is_readable +1.29% +(0.01%) +444× + + + + + +902->780 + + +1.29% +444× + + + +948 + + +models:225:last_played +4.07% +(0.05%) +446× + + + + + +902->948 + + +4.04% +444× + + + +1056 + + +log:62:DEBUG +2.21% +(0.03%) +1374× + + + + + +902->1056 + + +0.69% +444× + + + +1158 + + +~:0:<built-in method scrollToItem> +4.52% +(4.53%) +471× + + + + + +902->1158 + + +4.45% +444× + + + +909 + + +playlists:1133:_get_row_track_object +29.85% +(0.01%) +440× + + + + + +906->909 + + +29.85% +440× + + + +1183 + + +associationproxy:1226:_get +1.28% +(0.00%) +444× + + + + + +1192->1183 + + +1.28% +444× + + + +364 + + +default:939:_init_compiled +0.71% +(0.32%) +1981× + + + + + +381 + + +runner:118:runtestprotocol +100.00% +(0.00%) + + + + + + +2193 + + +runner:218:call_and_report +99.99% +(0.00%) + + + + + + +381->2193 + + +99.99% + + + + +2194 + + +runner:246:call_runtest_hook +99.99% +(0.00%) + + + + + + +2193->2194 + + +99.99% + + + + +435 + + +coercions:112:expect +1.26% +(0.43%) +6771× + + + + + +1495 + + +langhelpers:1177:__get__ +0.55% +(0.09%) +3317× + + + + + +435->1495 + + +0.16% + + + + +509->484 + + +0.42% +12× + + + +607 + + +base:1190:execute +1.71% +(0.00%) +36× + + + + + +509->607 + + +1.02% + + + + +490 + + +qtbot:738:__exit__ +0.65% +(0.00%) + + + + + + +926 + + +~:0:<qWaitForWindowExposed> +0.65% +(0.65%) + + + + + + +490->926 + + +0.65% + + + + +2333 + + +fixtures:580:getfixturevalue +4.74% +(0.00%) + + + + + + +497->2333 + + +4.74% + + + + +2315 + + +fixtures:595:_get_active_fixturedef +4.74% +(0.00%) +24× + + + + + +2333->2315 + + +4.74% + + + + +498 + + +fixtures:623:_compute_fixture_value +4.74% +(0.00%) + + + + + + +620 + + +fixtures:1040:execute +4.74% +(0.00%) + + + + + + +498->620 + + +4.74% + + + + +620->245 + + +4.74% + + + + +1816 + + +ddl:77:_execute_on_connection +1.65% +(0.00%) +22× + + + + + +607->1816 + + +1.65% +22× + + + +973->490 + + +0.65% + + + + +898 + + +musicmuster:41:__init__ +90.99% +(0.00%) + + + + + + +973->898 + + +90.99% + + + + +928 + + +~:0:<built-in method show> +0.85% +(0.85%) + + + + + + +973->928 + + +0.85% + + + + +969 + + +playlists:68:__init__ +1.40% +(0.83%) + + + + + + +973->969 + + +1.40% + + + + +529 + + +annotation:219:__eq__ +0.83% +(0.03%) +1121× + + + + + +1490 + + +operators:353:__eq__ +0.92% +(0.05%) +4310× + + + + + +529->1490 + + +0.80% +1114× + + + +836 + + +properties:430:operate +0.91% +(0.02%) +1452× + + + + + +1490->836 + + +0.81% +985× + + + +837 + + +attributes:316:operate +0.96% +(0.02%) +1452× + + + + + +1490->837 + + +0.85% +985× + + + +838 + + +elements:860:operate +0.88% +(0.01%) +1637× + + + + + +1490->838 + + +0.80% +1170× + + + +1700 + + +type_api:72:operate +0.84% +(0.06%) +1637× + + + + + +1490->1700 + + +0.77% +1170× + + + +537 + + +result:550:_only_one_row +40.15% +(0.71%) +1506× + + + + + +537->1495 + + +0.34% +2505× + + + +698 + + +result:1670:_fetchone_impl +38.38% +(0.46%) +169908× + + + + + +537->698 + + +0.11% +452× + + + +1646 + + +result:1270:_fetchone_impl +38.80% +(0.53%) +169456× + + + + + +537->1646 + + +38.80% +169456× + + + +697 + + +~:0:<built-in method builtins.next> +39.51% +(0.30%) +171460× + + + + + +698->697 + + +37.73% +169908× + + + +1646->698 + + +38.27% +169456× + + + +543 + + +traversals:159:_gen_cache_key +1.40% +(0.73%) +9051× + + + + + +543->543 + + +0.31% +3499× + + + +1824 + + +traversals:264:<listcomp> +0.73% +(0.06%) +3498× + + + + + +543->1824 + + +0.73% +3492× + + + +1824->543 + + +0.64% +2435× + + + +545 + + +_collections:812:append +4.27% +(0.85%) +92232× + + + + + +1574 + + +collections:651:append_without_event +3.26% +(0.67%) +77399× + + + + + +545->1574 + + +3.26% +77399× + + + +1569 + + +collections:1673:set +2.58% +(0.65%) +75403× + + + + + +1574->1569 + + +2.58% +75403× + + + +1093 + + +~:0:<function Connection.query at 0x7f04e2aeae50> +9.86% +(9.89%) +2009× + + + + + +553->1093 + + +9.86% +2009× + + + +563 + + +session:720:_connection_for_bind +0.73% +(0.08%) +3317× + + + + + +2094 + + +base:3189:connect +0.62% +(0.01%) +462× + + + + + +563->2094 + + +0.60% +461× + + + +1706 + + +base:67:__init__ +0.61% +(0.04%) +463× + + + + + +2094->1706 + + +0.61% +462× + + + +575 + + +default_comparator:30:_boolean_compare +0.72% +(0.06%) +1190× + + + + + +575->435 + + +0.47% +1190× + + + +1877 + + +base:1354:_execute_ddl +1.65% +(0.00%) +22× + + + + + +1816->1877 + + +1.65% +22× + + + +662 + + +times:66:DateTime_or_None +4.41% +(4.11%) +246463× + + + + + +677 + + +base:1432:_execute_clauseelement +20.93% +(0.20%) +1981× + + + + + +1586 + + +base:1677:_execute_context +19.99% +(0.20%) +2006× + + + + + +677->1586 + + +18.40% +1981× + + + +1878 + + +elements:496:_compile_w_cache +2.18% +(0.08%) +1981× + + + + + +677->1878 + + +2.18% +1981× + + + +1586->364 + + +0.71% +1981× + + + +996 + + +default:731:do_execute +18.59% +(0.03%) +2006× + + + + + +1586->996 + + +18.59% +2006× + + + +1508 + + +langhelpers:1188:oneshot +1.57% +(0.06%) +1542× + + + + + +1878->1508 + + +1.56% +1534× + + + +680 + + +loading:40:instances +2.46% +(0.24%) +1509× + + + + + +1354 + + +loading:69:<listcomp> +2.00% +(0.02%) +1509× + + + + + +680->1354 + + +2.00% +1509× + + + +1353 + + +context:2528:row_processor +1.97% +(0.05%) +1057× + + + + + +1354->1353 + + +1.97% +1057× + + + +697->310 + + +37.44% +2547× + + + +1798 + + +conftest:39:setup_database +1.75% +(0.00%) + + + + + + +697->1798 + + +1.75% + + + + +1799 + + +schema:4760:create_all +1.49% +(0.00%) + + + + + + +1798->1799 + + +1.49% + + + + +700->697 + + +1.50% + + + + +1069 + + +plugin:29:qapp +3.20% +(3.21%) + + + + + + +700->1069 + + +3.20% + + + + +1276->299 + + +2.01% +450× + + + +779 + + +~:0:<built-in method posix.access> +1.28% +(1.28%) +446× + + + + + +780->779 + + +1.28% +444× + + + +797 + + +runner:317:from_call +99.99% +(0.00%) + + + + + + +2326 + + +runner:261:<lambda> +99.99% +(0.00%) + + + + + + +797->2326 + + +99.99% + + + + +2326->245 + + +99.99% + + + + +804 + + +__init__:1067:emit +0.68% +(0.09%) +4122× + + + + + +2197 + + +__init__:912:format +0.51% +(0.05%) +5496× + + + + + +804->2197 + + +0.37% +4122× + + + +834 + + +~:0:<built-in method _operator.eq> +0.89% +(0.03%) +3913× + + + + + +834->529 + + +0.78% +985× + + + +834->1490 + + +0.88% +1170× + + + +836->834 + + +0.79% +985× + + + +837->834 + + +0.83% +985× + + + +838->834 + + +0.79% +1170× + + + +945 + + +musicmuster:360:load_last_playlists +90.18% +(0.00%) + + + + + + +898->945 + + +90.18% + + + + +919 + + +musicmuster:368:create_playlist_tab +89.84% +(0.00%) + + + + + + +945->919 + + +89.84% + + + + +948->1490 + + +0.37% +446× + + + +1251 + + +session:2133:query +0.52% +(0.02%) +1005× + + + + + +948->1251 + + +0.15% +444× + + + +1326 + + +query:2786:first +3.25% +(0.04%) +452× + + + + + +948->1326 + + +3.18% +446× + + + +2207 + + +__init__:1420:debug +2.18% +(0.04%) +1459× + + + + + +1056->2207 + + +2.18% +1374× + + + +904 + + +playlists:68:__init__ +89.82% +(0.03%) + + + + + + +904->349 + + +89.45% + + + + +961 + + +models:567:get_by_id +29.81% +(0.04%) +440× + + + + + +909->961 + + +29.81% +440× + + + +961->1490 + + +0.40% +440× + + + +961->1056 + + +0.65% +440× + + + +961->1251 + + +0.17% +440× + + + +961->1327 + + +28.46% +440× + + + +919->904 + + +89.82% + + + + +1389 + + +query:151:__init__ +0.50% +(0.02%) +1005× + + + + + +1251->1389 + + +0.50% +1005× + + + +1242 + + +query:2889:_iter +14.20% +(0.05%) +997× + + + + + +1326->1242 + + +2.56% +452× + + + +1557 + + +attributes:923:get +32.48% +(0.06%) +5823× + + + + + +1553->1557 + + +32.42% +894× + + + +1327->1242 + + +11.41% +525× + + + +1641 + + +result:1399:one +39.72% +(0.01%) +1037× + + + + + +1327->1641 + + +18.28% +525× + + + +954 + + +models:381:__init__ +13.47% +(0.04%) +447× + + + + + +954->1056 + + +0.79% +447× + + + +1346 + + +session:1397:commit +12.47% +(0.03%) +463× + + + + + +954->1346 + + +12.25% +444× + + + +1346->316 + + +12.45% +463× + + + +955 + + +state:470:_initialize_instance +13.77% +(0.02%) +450× + + + + + +955->954 + + +13.47% +447× + + + +957 + + +models:457:get_int_settings +0.57% +(0.00%) +52× + + + + + +957->1251 + + +0.18% +52× + + + +957->1327 + + +0.33% +52× + + + +995 + + +cursors:351:_get_result +2.05% +(0.03%) +2009× + + + + + +993->995 + + +2.05% +2009× + + + +997 + + +cursors:325:_fetch_row +5.93% +(0.02%) +2009× + + + + + +998->997 + + +5.93% +2009× + + + +1094 + + +~:0:<method 'store_result' of '_mysql.connection' objects> +2.01% +(2.01%) +2009× + + + + + +995->1094 + + +2.01% +2009× + + + +996->15 + + +18.56% +2006× + + + +1006 + + +~:0:<method 'fetch_row' of '_mysql.result' objects> +5.91% +(1.50%) +1528× + + + + + +997->1006 + + +5.91% +1528× + + + +1006->662 + + +4.41% +246463× + + + +2210 + + +__init__:1561:_log +2.13% +(0.05%) +1374× + + + + + +2207->2210 + + +2.13% +1374× + + + +1057 + + +__init__:935:handle +1.43% +(0.11%) +5496× + + + + + +1083 + + +~:0:<method 'commit' of '_mysql.connection' objects> +2.95% +(2.96%) +476× + + + + + +1084 + + +default:684:do_commit +2.98% +(0.02%) +476× + + + + + +1084->1083 + + +2.95% +476× + + + +1182 + + +associationproxy:287:getter +1.28% +(0.00%) +444× + + + + + +1182->1553 + + +1.28% +444× + + + +1183->1182 + + +1.28% +444× + + + +1210 + + +attributes:966:_fire_loader_callables +32.40% +(0.03%) +2238× + + + + + +1210->134 + + +1.25% +444× + + + +1210->159 + + +31.12% +450× + + + +1241 + + +session:1543:execute +23.67% +(0.18%) +1517× + + + + + +1244->1241 + + +9.70% +512× + + + +1244->1641 + + +21.44% +512× + + + +1215->130 + + +0.88% +1953× + + + +1222->135 + + +0.17% +1170× + + + +1225->135 + + +10.96% +165834× + + + +1225->545 + + +4.20% +91512× + + + +1226->135 + + +9.85% +174567× + + + +1240 + + +session:1528:_connection_for_bind +0.83% +(0.04%) +1517× + + + + + +1240->563 + + +0.70% +1517× + + + +1241->1874 + + +19.54% +1517× + + + +1241->1240 + + +0.83% +1517× + + + +1465 + + +context:322:orm_setup_cursor_result +2.65% +(0.07%) +1509× + + + + + +1241->1465 + + +2.65% +1509× + + + +1465->680 + + +2.46% +1509× + + + +1242->1241 + + +13.82% +997× + + + +1641->537 + + +39.71% +1037× + + + +1266->137 + + +3.34% +450× + + + +1318 + + +base:105:_generative +0.53% +(0.06%) +2463× + + + + + +1353->130 + + +1.91% +1057× + + + +1700->575 + + +0.72% +1190× + + + +2026 + + +traversals:330:_generate_cache_key +1.50% +(0.03%) +1534× + + + + + +1508->2026 + + +1.50% +1534× + + + +2025 + + +traversals:276:_generate_cache_key +1.48% +(0.05%) +1534× + + + + + +2026->2025 + + +1.48% +1534× + + + +1557->1210 + + +32.40% +2238× + + + +1554 + + +collections:259:__call__ +1.24% +(0.45%) +75403× + + + + + +1554->1553 + + +0.80% +75403× + + + +1569->1554 + + +1.24% +75403× + + + +2262 + + +collections:1334:__setitem__ +0.69% +(0.56%) +75403× + + + + + +1569->2262 + + +0.69% +75403× + + + +1585 + + +base:970:_commit_impl +3.00% +(0.02%) +476× + + + + + +1585->1084 + + +2.98% +476× + + + +1670 + + +base:965:_checkin +0.54% +(0.01%) +461× + + + + + +1670->275 + + +0.53% +461× + + + +1672->1670 + + +0.54% +461× + + + +2116 + + +base:3261:raw_connection +0.50% +(0.01%) +462× + + + + + +1706->2116 + + +0.50% +462× + + + +1774 + + +base:2106:_run_ddl_visitor +1.75% +(0.00%) + + + + + + +1774->484 + + +1.75% + + + + +1799->1774 + + +1.49% + + + + +1877->1586 + + +1.58% +22× + + + +1873->677 + + +20.93% +1981× + + + +2025->543 + + +1.40% +1534× + + + +2106 + + +base:2521:_connection_commit_impl +2.98% +(0.01%) +454× + + + + + +2106->1585 + + +2.97% +454× + + + +2113->2106 + + +2.98% +454× + + + +2192->245 + + +94.81% + + + + +2194->797 + + +99.99% + + + + +2195 + + +runner:110:pytest_runtest_protocol +100.00% +(0.00%) + + + + + + +2195->381 + + +100.00% + + + + +2196 + + +__init__:1587:handle +1.56% +(0.02%) +1374× + + + + + +2198 + + +__init__:1641:callHandlers +1.53% +(0.10%) +1374× + + + + + +2196->2198 + + +1.53% +1374× + + + +2198->1057 + + +1.43% +5496× + + + +2210->2196 + + +1.56% +1374× + + + +2315->498 + + +4.74% + + + + diff --git a/prof/test_get_selected_row.prof b/prof/test_get_selected_row.prof new file mode 100644 index 0000000..fb11ff4 Binary files /dev/null and b/prof/test_get_selected_row.prof differ diff --git a/pyproject.toml b/pyproject.toml index aaae534..3e36185 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,6 +25,8 @@ pytest-qt = "^4.0.2" sqlalchemy-stubs = "^0.4" PyQt5-stubs = "^5.15.2" mypy = "^0.931" +pytest-profiling = "^1.7.0" +pytest-line-profiler = "^0.1.0" [build-system] requires = ["poetry-core>=1.0.0"]