Autodetected filename timings. ============================= test session starts ============================== platform linux -- Python 3.13.7, pytest-8.4.2, pluggy-1.6.0 rootdir: /home/circleci/ytree configfile: pytest.ini plugins: cov-7.0.0 collecting ... collecting 0 items collected 27 items tests/frontends/test_lhalotree_hdf5.py ............. [ 48%] tests/test_plot_examples.py .... [ 62%] tests/test_examples.py .. [ 70%] tests/test_plots.py ........ [100%] ---- generated xml file: /home/circleci/ytree/test-results/junit_serial.xml ---- ================================ tests coverage ================================ _______________ coverage: platform linux, python 3.13.7-final-0 ________________ Name Stmts Miss Cover ----------------------------------------------------------------------- ytree/__init__.py 6 0 100% ytree/analysis/__init__.py 1 0 100% ytree/analysis/analysis_operators.py 8 5 38% ytree/analysis/analysis_pipeline.py 57 46 19% ytree/config.py 7 1 86% ytree/data_structures/__init__.py 2 0 100% ytree/data_structures/arbor.py 559 98 82% ytree/data_structures/detection.py 46 18 61% ytree/data_structures/fields.py 179 30 83% ytree/data_structures/io.py 198 62 69% ytree/data_structures/load.py 28 8 71% ytree/data_structures/node_container.py 31 18 42% ytree/data_structures/node_link.py 9 0 100% ytree/data_structures/save_arbor.py 236 73 69% ytree/data_structures/tree_node.py 229 48 79% ytree/data_structures/tree_node_selector.py 24 2 92% ytree/frontends/__init__.py 0 0 100% ytree/frontends/ahf/__init__.py 1 0 100% ytree/frontends/ahf/arbor.py 202 82 59% ytree/frontends/ahf/fields.py 12 0 100% ytree/frontends/ahf/io.py 196 19 90% ytree/frontends/ahf/misc.py 22 3 86% ytree/frontends/api.py 9 0 100% ytree/frontends/consistent_trees/__init__.py 1 0 100% ytree/frontends/consistent_trees/arbor.py 165 68 59% ytree/frontends/consistent_trees/fields.py 10 0 100% ytree/frontends/consistent_trees/io.py 46 6 87% ytree/frontends/consistent_trees/utilities.py 72 5 93% ytree/frontends/consistent_trees_hdf5/__init__.py 1 0 100% ytree/frontends/consistent_trees_hdf5/arbor.py 125 85 32% ytree/frontends/consistent_trees_hdf5/fields.py 7 0 100% ytree/frontends/consistent_trees_hdf5/io.py 92 75 18% ytree/frontends/csv/__init__.py 1 0 100% ytree/frontends/csv/arbor.py 139 109 22% ytree/frontends/csv/io.py 26 21 19% ytree/frontends/gadget4/__init__.py 1 0 100% ytree/frontends/gadget4/arbor.py 97 69 29% ytree/frontends/gadget4/fields.py 28 16 43% ytree/frontends/gadget4/io.py 87 74 15% ytree/frontends/lhalotree/__init__.py 1 0 100% ytree/frontends/lhalotree/arbor.py 87 62 29% ytree/frontends/lhalotree/fields.py 11 0 100% ytree/frontends/lhalotree/io.py 35 29 17% ytree/frontends/lhalotree/utils.py 346 284 18% ytree/frontends/lhalotree_hdf5/__init__.py 1 0 100% ytree/frontends/lhalotree_hdf5/arbor.py 89 5 94% ytree/frontends/lhalotree_hdf5/fields.py 29 0 100% ytree/frontends/lhalotree_hdf5/io.py 63 0 100% ytree/frontends/moria/__init__.py 1 0 100% ytree/frontends/moria/arbor.py 111 80 28% ytree/frontends/moria/fields.py 34 20 41% ytree/frontends/moria/io.py 118 99 16% ytree/frontends/rockstar/__init__.py 1 0 100% ytree/frontends/rockstar/arbor.py 76 57 25% ytree/frontends/rockstar/fields.py 24 12 50% ytree/frontends/rockstar/io.py 64 55 14% ytree/frontends/rockstar/misc.py 20 16 20% ytree/frontends/treefarm/__init__.py 1 0 100% ytree/frontends/treefarm/arbor.py 50 24 52% ytree/frontends/treefarm/fields.py 7 0 100% ytree/frontends/treefarm/io.py 54 45 17% ytree/frontends/treefrog/__init__.py 1 0 100% ytree/frontends/treefrog/arbor.py 88 60 32% ytree/frontends/treefrog/fields.py 27 14 48% ytree/frontends/treefrog/io.py 147 125 15% ytree/frontends/ytree/__init__.py 1 0 100% ytree/frontends/ytree/arbor.py 164 97 41% ytree/frontends/ytree/io.py 77 9 88% ytree/frontends/ytree/utilities.py 24 21 12% ytree/testing/__init__.py 0 0 100% ytree/testing/arbor_test.py 114 9 92% ytree/testing/example_script_test.py 35 10 71% ytree/testing/parallel_test.py 38 38 0% ytree/testing/utilities.py 160 60 62% ytree/utilities/__init__.py 0 0 100% ytree/utilities/exceptions.py 37 13 65% ytree/utilities/io.py 85 23 73% ytree/utilities/loading.py 17 3 82% ytree/utilities/logger.py 35 13 63% ytree/utilities/misc.py 4 0 100% ytree/utilities/parallel.py 124 116 6% ytree/visualization/__init__.py 1 0 100% ytree/visualization/tree_plot.py 133 5 96% ytree/yt_frontend/__init__.py 2 0 100% ytree/yt_frontend/data_structures.py 140 100 29% ytree/yt_frontend/fields.py 18 9 50% ytree/yt_frontend/io.py 52 38 27% ----------------------------------------------------------------------- TOTAL 5707 2592 55% ======================== 27 passed in 659.15s (0:10:59) ======================== Reading test-results/junit_serial.xml. Changing ytree/testing/arbor_test.py to tests/frontends/test_lhalotree_hdf5.py. Changing ytree/testing/arbor_test.py to tests/frontends/test_lhalotree_hdf5.py. Changing ytree/testing/arbor_test.py to tests/frontends/test_lhalotree_hdf5.py. Changing ytree/testing/arbor_test.py to tests/frontends/test_lhalotree_hdf5.py. Changing ytree/testing/arbor_test.py to tests/frontends/test_lhalotree_hdf5.py. Changing ytree/testing/arbor_test.py to tests/frontends/test_lhalotree_hdf5.py. Changing ytree/testing/arbor_test.py to tests/frontends/test_lhalotree_hdf5.py. Changing ytree/testing/arbor_test.py to tests/frontends/test_lhalotree_hdf5.py. Changing ytree/testing/arbor_test.py to tests/frontends/test_lhalotree_hdf5.py. Changing ytree/testing/arbor_test.py to tests/frontends/test_lhalotree_hdf5.py. Changing ytree/testing/arbor_test.py to tests/frontends/test_lhalotree_hdf5.py. Changing ytree/testing/arbor_test.py to tests/frontends/test_lhalotree_hdf5.py. Changing ytree/testing/example_script_test.py to tests/test_examples.py. Changing ytree/testing/example_script_test.py to tests/test_examples.py. Writing test-results/junit_serial.xml. Autodetected filename timings. ============================= test session starts ============================== platform linux -- Python 3.13.7, pytest-8.4.2, pluggy-1.6.0 rootdir: /home/circleci/ytree configfile: pytest.ini plugins: cov-7.0.0 collecting ... collecting 0 items collected 7 items tests/parallel/test_halo_age.py yt : [INFO ] 2025-09-24 00:24:07,135 Global parallel computation enabled: 0 / 2 yt : [INFO ] 2025-09-24 00:24:07,135 Global parallel computation enabled: 1 / 2 Additional features and improved performance (usually) by saving this arbor with "save_arbor" and reloading: >>> a = ytree.load("/home/circleci/ytree_test/tiny_ctrees/locations.dat") >>> fn = a.save_arbor() >>> a = ytree.load(fn) Additional features and improved performance (usually) by saving this arbor with "save_arbor" and reloading: >>> a = ytree.load("/home/circleci/ytree_test/tiny_ctrees/locations.dat") >>> fn = a.save_arbor() >>> a = ytree.load(fn) Reading locations: 0%| | 0/1112 [00:00>> a = ytree.load("/home/circleci/ytree_test/tiny_ctrees/locations.dat") >>> fn = a.save_arbor() >>> a = ytree.load(fn) Additional features and improved performance (usually) by saving this arbor with "save_arbor" and reloading: >>> a = ytree.load("/home/circleci/ytree_test/tiny_ctrees/locations.dat") >>> fn = a.save_arbor() >>> a = ytree.load(fn) Additional features and improved performance (usually) by saving this arbor with "save_arbor" and reloading: >>> a = ytree.load("/home/circleci/ytree_test/tiny_ctrees/locations.dat") >>> fn = a.save_arbor() >>> a = ytree.load(fn) Additional features and improved performance (usually) by saving this arbor with "save_arbor" and reloading: >>> a = ytree.load("/home/circleci/ytree_test/tiny_ctrees/locations.dat") >>> fn = a.save_arbor() >>> a = ytree.load(fn) Reading locations: 0%| | 0/1112 [00:00>> a = ytree.load("/home/circleci/ytree_test/tiny_ctrees/locations.dat") >>> fn = a.save_arbor() >>> a = ytree.load(fn) Additional features and improved performance (usually) by saving this arbor with "save_arbor" and reloading: >>> a = ytree.load("/home/circleci/ytree_test/tiny_ctrees/locations.dat") >>> fn = a.save_arbor() >>> a = ytree.load(fn) Reading locations: 0%| | 0/1112 [00:00>> a = ytree.load("/home/circleci/ytree_test/tiny_ctrees/locations.dat") >>> fn = a.save_arbor() >>> a = ytree.load(fn) Additional features and improved performance (usually) by saving this arbor with "save_arbor" and reloading: >>> a = ytree.load("/home/circleci/ytree_test/tiny_ctrees/locations.dat") >>> fn = a.save_arbor() >>> a = ytree.load(fn) Additional features and improved performance (usually) by saving this arbor with "save_arbor" and reloading: >>> a = ytree.load("/home/circleci/ytree_test/tiny_ctrees/locations.dat") >>> fn = a.save_arbor() >>> a = ytree.load(fn) Additional features and improved performance (usually) by saving this arbor with "save_arbor" and reloading: >>> a = ytree.load("/home/circleci/ytree_test/tiny_ctrees/locations.dat") >>> fn = a.save_arbor() >>> a = ytree.load(fn) Reading locations: 0%| | 0/1112 [00:00>> a = ytree.load("/home/circleci/ytree_test/tiny_ctrees/locations.dat") >>> fn = a.save_arbor() >>> a = ytree.load(fn) Additional features and improved performance (usually) by saving this arbor with "save_arbor" and reloading: >>> a = ytree.load("/home/circleci/ytree_test/tiny_ctrees/locations.dat") >>> fn = a.save_arbor() >>> a = ytree.load(fn) Additional features and improved performance (usually) by saving this arbor with "save_arbor" and reloading: >>> a = ytree.load("/home/circleci/ytree_test/tiny_ctrees/locations.dat") >>> fn = a.save_arbor() >>> a = ytree.load(fn) Additional features and improved performance (usually) by saving this arbor with "save_arbor" and reloading: >>> a = ytree.load("/home/circleci/ytree_test/tiny_ctrees/locations.dat") >>> fn = a.save_arbor() >>> a = ytree.load(fn) Reading locations: 0%| | 0/1112 [00:00>> a = ytree.load("/home/circleci/ytree_test/tiny_ctrees/locations.dat") >>> fn = a.save_arbor() >>> a = ytree.load(fn) Additional features and improved performance (usually) by saving this arbor with "save_arbor" and reloading: >>> a = ytree.load("/home/circleci/ytree_test/tiny_ctrees/locations.dat") >>> fn = a.save_arbor() >>> a = ytree.load(fn) Reading locations: 0%| | 0/1112 [00:00>> a = ytree.load("/home/circleci/ytree_test/tiny_ctrees/locations.dat") >>> fn = a.save_arbor() >>> a = ytree.load(fn) Additional features and improved performance (usually) by saving this arbor with "save_arbor" and reloading: >>> a = ytree.load("/home/circleci/ytree_test/tiny_ctrees/locations.dat") >>> fn = a.save_arbor() >>> a = ytree.load(fn) Reading locations: 0%| | 0/1112 [00:00