densitty 0.9.0__tar.gz → 1.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- densitty-1.0.0/Makefile +84 -0
- densitty-1.0.0/PKG-INFO +41 -0
- densitty-1.0.0/README.md +16 -0
- densitty-1.0.0/densitty/__init__.py +9 -0
- densitty-1.0.0/densitty/ansi.py +108 -0
- densitty-1.0.0/densitty/axis.py +428 -0
- densitty-1.0.0/densitty/binning.py +325 -0
- densitty-1.0.0/densitty/colorbar.py +84 -0
- densitty-1.0.0/densitty/detect.py +583 -0
- densitty-1.0.0/densitty/plotting.py +259 -0
- densitty-1.0.0/densitty/smoothing.py +315 -0
- densitty-1.0.0/densitty/util.py +259 -0
- densitty-1.0.0/densitty/util.pyi +38 -0
- densitty-1.0.0/densitty.egg-info/PKG-INFO +41 -0
- densitty-1.0.0/densitty.egg-info/SOURCES.txt +692 -0
- densitty-1.0.0/docs/api.md +271 -0
- densitty-1.0.0/docs/examples/example_1_densityplot2d.png +0 -0
- densitty-1.0.0/docs/examples/example_2_histplot2d.png +0 -0
- densitty-1.0.0/docs/examples/example_3_histplot2d_finer.png +0 -0
- densitty-1.0.0/docs/examples/example_4_histplot2d_fixedsizebins.png +0 -0
- densitty-1.0.0/docs/examples/example_5_grid_heatmap.png +0 -0
- densitty-1.0.0/docs/examples/example_6_eye_diagram.png +0 -0
- densitty-1.0.0/docs/examples.md +84 -0
- densitty-1.0.0/docs/inline-histplot2d.png +0 -0
- densitty-1.0.0/docs/terminal_support.md +50 -0
- densitty-1.0.0/docs/usage.md +70 -0
- densitty-1.0.0/examples/colormaps.py +66 -0
- densitty-1.0.0/examples/example_1_densityplot2d.py +14 -0
- densitty-1.0.0/examples/example_2_histplot2d.py +13 -0
- densitty-1.0.0/examples/example_3_histplot2d_finer.py +12 -0
- densitty-1.0.0/examples/example_4_histplot2d_fixedsizebins.py +14 -0
- densitty-1.0.0/examples/example_5_grid_heatmap.py +18 -0
- densitty-1.0.0/examples/example_6_eye_diagram.py +16 -0
- densitty-1.0.0/examples/examples.md.header +6 -0
- densitty-1.0.0/examples/eye_plot.py +46 -0
- densitty-1.0.0/examples/generate_example_markdown.py +36 -0
- densitty-1.0.0/examples/generate_screenshots.py +36 -0
- densitty-1.0.0/examples/iterm2_run_and_screenshot.py +35 -0
- densitty-1.0.0/examples/run_examples.py +21 -0
- densitty-1.0.0/examples/screenshot_example.sh +36 -0
- densitty-1.0.0/examples/setup_examples.py +10 -0
- densitty-1.0.0/pyproject.toml +62 -0
- densitty-1.0.0/tests/axis_tests.py +243 -0
- densitty-1.0.0/tests/binning_tests.py +211 -0
- densitty-1.0.0/tests/color_tests.py +132 -0
- densitty-1.0.0/tests/colorbar_tests.py +146 -0
- densitty-1.0.0/tests/conftest.py +26 -0
- densitty-1.0.0/tests/golden.py +55 -0
- densitty-1.0.0/tests/goldens/simple_glyph_ascii +1 -0
- densitty-1.0.0/tests/goldens/simple_glyph_basic +1 -0
- densitty-1.0.0/tests/goldens/simple_glyph_extended +1 -0
- densitty-1.0.0/tests/goldens/test_added_colorbar +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-0)-ext-False-False-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-0)-ext-False-False-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-0)-ext-False-False-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-0)-ext-False-False-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-0)-ext-False-True-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-0)-ext-False-True-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-0)-ext-False-True-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-0)-ext-False-True-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-0)-ext-True-False-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-0)-ext-True-False-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-0)-ext-True-False-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-0)-ext-True-False-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-0)-ext-True-True-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-0)-ext-True-True-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-0)-ext-True-True-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-0)-ext-True-True-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-0.100000000)-ext-False-False-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-0.100000000)-ext-False-False-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-0.100000000)-ext-False-False-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-0.100000000)-ext-False-False-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-0.100000000)-ext-False-True-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-0.100000000)-ext-False-True-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-0.100000000)-ext-False-True-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-0.100000000)-ext-False-True-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-0.100000000)-ext-True-False-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-0.100000000)-ext-True-False-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-0.100000000)-ext-True-False-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-0.100000000)-ext-True-False-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-0.100000000)-ext-True-True-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-0.100000000)-ext-True-True-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-0.100000000)-ext-True-True-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-0.100000000)-ext-True-True-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-1)-ext-False-False-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-1)-ext-False-False-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-1)-ext-False-False-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-1)-ext-False-False-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-1)-ext-False-True-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-1)-ext-False-True-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-1)-ext-False-True-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-1)-ext-False-True-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-1)-ext-True-False-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-1)-ext-True-False-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-1)-ext-True-False-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-1)-ext-True-False-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-1)-ext-True-True-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-1)-ext-True-True-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-1)-ext-True-True-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-1)-ext-True-True-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-1.5)-ext-False-False-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-1.5)-ext-False-False-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-1.5)-ext-False-False-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-1.5)-ext-False-False-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-1.5)-ext-False-True-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-1.5)-ext-False-True-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-1.5)-ext-False-True-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-1.5)-ext-False-True-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-1.5)-ext-True-False-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-1.5)-ext-True-False-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-1.5)-ext-True-False-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-1.5)-ext-True-False-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-1.5)-ext-True-True-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-1.5)-ext-True-True-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-1.5)-ext-True-True-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-1.5)-ext-True-True-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-10)-ext-False-False-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-10)-ext-False-False-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-10)-ext-False-False-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-10)-ext-False-False-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-10)-ext-False-True-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-10)-ext-False-True-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-10)-ext-False-True-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-10)-ext-False-True-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-10)-ext-True-False-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-10)-ext-True-False-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-10)-ext-True-False-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-10)-ext-True-False-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-10)-ext-True-True-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-10)-ext-True-True-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-10)-ext-True-True-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-10)-ext-True-True-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-2)-ext-False-False-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-2)-ext-False-False-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-2)-ext-False-False-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-2)-ext-False-False-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-2)-ext-False-True-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-2)-ext-False-True-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-2)-ext-False-True-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-2)-ext-False-True-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-2)-ext-True-False-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-2)-ext-True-False-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-2)-ext-True-False-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-2)-ext-True-False-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-2)-ext-True-True-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-2)-ext-True-True-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-2)-ext-True-True-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-False-(-1-2)-ext-True-True-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-0)-ext-False-False-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-0)-ext-False-False-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-0)-ext-False-False-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-0)-ext-False-False-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-0)-ext-False-True-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-0)-ext-False-True-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-0)-ext-False-True-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-0)-ext-False-True-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-0)-ext-True-False-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-0)-ext-True-False-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-0)-ext-True-False-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-0)-ext-True-False-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-0)-ext-True-True-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-0)-ext-True-True-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-0)-ext-True-True-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-0)-ext-True-True-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-0.100000000)-ext-False-False-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-0.100000000)-ext-False-False-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-0.100000000)-ext-False-False-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-0.100000000)-ext-False-False-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-0.100000000)-ext-False-True-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-0.100000000)-ext-False-True-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-0.100000000)-ext-False-True-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-0.100000000)-ext-False-True-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-0.100000000)-ext-True-False-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-0.100000000)-ext-True-False-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-0.100000000)-ext-True-False-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-0.100000000)-ext-True-False-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-0.100000000)-ext-True-True-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-0.100000000)-ext-True-True-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-0.100000000)-ext-True-True-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-0.100000000)-ext-True-True-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-1)-ext-False-False-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-1)-ext-False-False-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-1)-ext-False-False-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-1)-ext-False-False-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-1)-ext-False-True-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-1)-ext-False-True-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-1)-ext-False-True-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-1)-ext-False-True-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-1)-ext-True-False-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-1)-ext-True-False-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-1)-ext-True-False-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-1)-ext-True-False-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-1)-ext-True-True-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-1)-ext-True-True-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-1)-ext-True-True-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-1)-ext-True-True-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-1.5)-ext-False-False-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-1.5)-ext-False-False-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-1.5)-ext-False-False-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-1.5)-ext-False-False-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-1.5)-ext-False-True-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-1.5)-ext-False-True-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-1.5)-ext-False-True-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-1.5)-ext-False-True-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-1.5)-ext-True-False-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-1.5)-ext-True-False-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-1.5)-ext-True-False-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-1.5)-ext-True-False-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-1.5)-ext-True-True-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-1.5)-ext-True-True-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-1.5)-ext-True-True-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-1.5)-ext-True-True-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-2)-ext-False-False-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-2)-ext-False-False-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-2)-ext-False-False-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-2)-ext-False-False-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-2)-ext-False-True-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-2)-ext-False-True-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-2)-ext-False-True-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-2)-ext-False-True-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-2)-ext-True-False-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-2)-ext-True-False-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-2)-ext-True-False-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-2)-ext-True-False-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-2)-ext-True-True-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-2)-ext-True-True-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-2)-ext-True-True-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes-True-(-1-2)-ext-True-True-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes_1 +1 -0
- densitty-1.0.0/tests/goldens/test_axes_2 +1 -0
- densitty-1.0.0/tests/goldens/test_axes_3 +1 -0
- densitty-1.0.0/tests/goldens/test_axes_ascii-False-False-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes_ascii-False-False-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes_ascii-False-False-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes_ascii-False-False-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes_ascii-False-True-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes_ascii-False-True-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes_ascii-False-True-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes_ascii-False-True-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes_ascii-True-False-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes_ascii-True-False-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes_ascii-True-False-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes_ascii-True-False-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes_ascii-True-True-False-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes_ascii-True-True-False-True +1 -0
- densitty-1.0.0/tests/goldens/test_axes_ascii-True-True-True-False +1 -0
- densitty-1.0.0/tests/goldens/test_axes_ascii-True-True-True-True +1 -0
- densitty-1.0.0/tests/goldens/test_bin_data_3 +1 -0
- densitty-1.0.0/tests/goldens/test_bin_data_unaligned +1 -0
- densitty-1.0.0/tests/goldens/test_binning_simple_1 +1 -0
- densitty-1.0.0/tests/goldens/test_bins_and_bin_size_aligned +1 -0
- densitty-1.0.0/tests/goldens/test_bins_and_bin_size_fractional +1 -0
- densitty-1.0.0/tests/goldens/test_bins_and_bin_size_tuples +1 -0
- densitty-1.0.0/tests/goldens/test_bins_and_bin_size_unaligned +1 -0
- densitty-1.0.0/tests/goldens/test_border_nonhist_toscreen +1 -0
- densitty-1.0.0/tests/goldens/test_colorbar_basic +1 -0
- densitty-1.0.0/tests/goldens/test_colorbar_infer_limits +1 -0
- densitty-1.0.0/tests/goldens/test_colorbar_label_format +1 -0
- densitty-1.0.0/tests/goldens/test_colorbar_narrow +1 -0
- densitty-1.0.0/tests/goldens/test_colorbar_vertical_basic +1 -0
- densitty-1.0.0/tests/goldens/test_colorbar_vertical_label_format +1 -0
- densitty-1.0.0/tests/goldens/test_colorbar_vertical_short +1 -0
- densitty-1.0.0/tests/goldens/test_densityplot2d_1 +1 -0
- densitty-1.0.0/tests/goldens/test_densityplot2d_2 +1 -0
- densitty-1.0.0/tests/goldens/test_densityplot2d_3 +1 -0
- densitty-1.0.0/tests/goldens/test_densityplot2d_4 +1 -0
- densitty-1.0.0/tests/goldens/test_detect_plot +1 -0
- densitty-1.0.0/tests/goldens/test_detect_plot_with_bar +1 -0
- densitty-1.0.0/tests/goldens/test_grid_heatmap +1 -0
- densitty-1.0.0/tests/goldens/test_grid_heatmap_custom_cell_size +1 -0
- densitty-1.0.0/tests/goldens/test_histplot2d_1 +1 -0
- densitty-1.0.0/tests/goldens/test_left_margin_halfheight +1 -0
- densitty-1.0.0/tests/goldens/test_left_margin_non_halfheight +1 -0
- densitty-1.0.0/tests/goldens/test_left_margin_with_border +1 -0
- densitty-1.0.0/tests/goldens/test_maxsize_fitscreen +1 -0
- densitty-1.0.0/tests/goldens/test_maxsize_keepaspect +1 -0
- densitty-1.0.0/tests/goldens/test_maxsize_reservemargin +1 -0
- densitty-1.0.0/tests/goldens/test_maxsize_set_default_size +1 -0
- densitty-1.0.0/tests/goldens/test_simple_hist_toscreen +1 -0
- densitty-1.0.0/tests/goldens/test_upscale_with_glued_on_plot +1 -0
- densitty-1.0.0/tests/goldens/test_upscale_with_glued_on_plot_fixed_size +1 -0
- densitty-1.0.0/tests/goldens/x_axis_105_1.68750941E-8_0.796975597_0 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_105_1.68750941E-8_0.796975597_1 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_105_5.09236527E-8_9.66938005_0 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_105_5.09236527E-8_9.66938005_1 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_109_-6.81808565E-9_5.14837567E-8_0 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_109_-6.81808565E-9_5.14837567E-8_1 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_111_-4.93860860E-9_1.38921000E-7_0 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_111_-4.93860860E-9_1.38921000E-7_1 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_113_-504327.128_-504326.751_0 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_113_-504327.128_-504326.751_1 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_116_-1.50971589E-7_0.0105108249_0 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_116_-1.50971589E-7_0.0105108249_1 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_118_2.20802474E-10_6.52519242E-10_0 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_118_2.20802474E-10_6.52519242E-10_1 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_119_0.00198534542_0.00198534573_0 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_119_0.00198534542_0.00198534573_1 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_135_1.22598302E-8_8.04329142E-8_0 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_135_1.22598302E-8_8.04329142E-8_1 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_141_3.41218635E-9_0.000593451723_0 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_141_3.41218635E-9_0.000593451723_1 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_164_33859.0360_33859.0944_0 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_164_33859.0360_33859.0944_1 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_169_25.1180938_31.9108379_0 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_169_25.1180938_31.9108379_1 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_180_-1358.72046_-1358.71997_0 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_180_-1358.72046_-1358.71997_1 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_188_0.000735951891_0.000743931104_0 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_188_0.000735951891_0.000743931104_1 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_189_3.52864510_3.52875891_0 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_189_3.52864510_3.52875891_1 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_190_2.22673610E-7_0.00903559932_0 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_190_2.22673610E-7_0.00903559932_1 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_191_0.000194623302_3.75022510_0 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_36_-0.143016182_-0.121454748_0 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_36_-0.143016182_-0.121454748_1 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_37_-2.02514159E-9_0.0449531366_0 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_37_-2.02514159E-9_0.0449531366_1 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_48_-5.73379077E-7_0.0000146411803_0 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_48_-5.73379077E-7_0.0000146411803_1 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_5_100000_200000_0 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_68_-64.8155821_-64.8153334_0 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_68_-64.8155821_-64.8153334_1 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_78_-0.0000147372573_-0.0000147370017_0 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_78_-0.0000147372573_-0.0000147370017_1 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_80_-0.000259728201_6.72258436_0 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_80_-0.000259728201_6.72258436_1 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_88_-4.62043384E-9_0.00645016333_0 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_88_-4.62043384E-9_0.00645016333_1 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_89_0.00230228979_0.00230229174_0 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_89_0.00230228979_0.00230229174_1 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_89_8.49639722E-8_8.81452078E-8_0 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_89_8.49639722E-8_8.81452078E-8_1 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_91_-5.88268935_-5.88264807_0 +1 -0
- densitty-1.0.0/tests/goldens/x_axis_91_-5.88268935_-5.88264807_1 +1 -0
- densitty-1.0.0/tests/goldens/y_axis_105_1.68750941E-8_0.796975597 +1 -0
- densitty-1.0.0/tests/goldens/y_axis_105_5.09236527E-8_9.66938005 +1 -0
- densitty-1.0.0/tests/goldens/y_axis_109_-6.81808565E-9_5.14837567E-8 +1 -0
- densitty-1.0.0/tests/goldens/y_axis_111_-4.93860860E-9_1.38921000E-7 +1 -0
- densitty-1.0.0/tests/goldens/y_axis_116_-1.50971589E-7_0.0105108249 +1 -0
- densitty-1.0.0/tests/goldens/y_axis_11_1.96692248E-8_0.00820748193 +1 -0
- densitty-1.0.0/tests/goldens/y_axis_135_1.22598302E-8_8.04329142E-8 +1 -0
- densitty-1.0.0/tests/goldens/y_axis_143_2.69365458E-7_1.93715817 +1 -0
- densitty-1.0.0/tests/goldens/y_axis_153_-0.114808950_-0.114672276 +1 -0
- densitty-1.0.0/tests/goldens/y_axis_154_-187.732088_-187.730832 +1 -0
- densitty-1.0.0/tests/goldens/y_axis_158_-1234211.79_-1234211.70 +1 -0
- densitty-1.0.0/tests/goldens/y_axis_176_98529298.9_98529299.0 +1 -0
- densitty-1.0.0/tests/goldens/y_axis_189_3.52864510_3.52875891 +1 -0
- densitty-1.0.0/tests/goldens/y_axis_191_0.000194623302_3.75022510 +1 -0
- densitty-1.0.0/tests/goldens/y_axis_36_-0.143016182_-0.121454748 +1 -0
- densitty-1.0.0/tests/goldens/y_axis_37_-2.02514159E-9_0.0449531366 +1 -0
- densitty-1.0.0/tests/goldens/y_axis_39_-0.000161165673_-0.000160874037 +1 -0
- densitty-1.0.0/tests/goldens/y_axis_46_-0.00000321721634_-0.00000321459619 +1 -0
- densitty-1.0.0/tests/goldens/y_axis_46_0.00000291015154_0.733200207 +1 -0
- densitty-1.0.0/tests/goldens/y_axis_48_-5.73379077E-7_0.0000146411803 +1 -0
- densitty-1.0.0/tests/goldens/y_axis_48_7.83507705_7.83514258 +1 -0
- densitty-1.0.0/tests/goldens/y_axis_53_0.499461762_0.499470226 +1 -0
- densitty-1.0.0/tests/goldens/y_axis_76_100.966337_100.966349 +1 -0
- densitty-1.0.0/tests/goldens/y_axis_80_-0.000259728201_6.72258436 +1 -0
- densitty-1.0.0/tests/goldens/y_axis_86_9.56108668E-9_0.0000741047291 +1 -0
- densitty-1.0.0/tests/goldens/y_axis_88_-4.62043384E-9_0.00645016333 +1 -0
- densitty-1.0.0/tests/goldens/y_axis_89_0.00230228979_0.00230229174 +1 -0
- densitty-1.0.0/tests/goldens/y_axis_8_-16602642.5_-16601902.4 +1 -0
- densitty-1.0.0/tests/goldens/y_axis_8_0.850889413_38.8443390 +1 -0
- densitty-1.0.0/tests/goldens/y_axis_9_-0.0000214145534_6521844.58 +1 -0
- densitty-1.0.0/tests/goldens/y_axis_9_0.124174552_7.78910615 +1 -0
- densitty-1.0.0/tests/helper_tests.py +117 -0
- densitty-1.0.0/tests/label_tests.py +138 -0
- densitty-1.0.0/tests/lineart_tests.py +127 -0
- densitty-1.0.0/tests/numpy_tests.py +33 -0
- densitty-1.0.0/tests/scale_tests.py +190 -0
- densitty-1.0.0/tests/smoothing_tests.py +94 -0
- densitty-1.0.0/tests/util_tests.py +38 -0
- densitty-0.9.0/Makefile +0 -70
- densitty-0.9.0/PKG-INFO +0 -39
- densitty-0.9.0/README.md +0 -14
- densitty-0.9.0/densitty/__init__.py +0 -0
- densitty-0.9.0/densitty/ansi.py +0 -109
- densitty-0.9.0/densitty/axis.py +0 -402
- densitty-0.9.0/densitty/binning.py +0 -311
- densitty-0.9.0/densitty/detect.py +0 -525
- densitty-0.9.0/densitty/plot.py +0 -209
- densitty-0.9.0/densitty/smoothing.py +0 -317
- densitty-0.9.0/densitty/util.py +0 -236
- densitty-0.9.0/densitty/util.pyi +0 -37
- densitty-0.9.0/densitty.egg-info/PKG-INFO +0 -39
- densitty-0.9.0/densitty.egg-info/SOURCES.txt +0 -651
- densitty-0.9.0/docs/api.md +0 -213
- densitty-0.9.0/docs/examples.md +0 -68
- densitty-0.9.0/docs/eyeplot.png +0 -0
- densitty-0.9.0/docs/hist2d-axes.png +0 -0
- densitty-0.9.0/docs/hist2d-basic.png +0 -0
- densitty-0.9.0/docs/hist2d-finer-color-borderline.png +0 -0
- densitty-0.9.0/docs/hist2d-helper.png +0 -0
- densitty-0.9.0/docs/hist2d-scaled.png +0 -0
- densitty-0.9.0/docs/inline-histplot2d.png +0 -0
- densitty-0.9.0/docs/terminal_support.md +0 -50
- densitty-0.9.0/docs/usage.md +0 -38
- densitty-0.9.0/examples/colormaps.py +0 -66
- densitty-0.9.0/examples/eye_plot.py +0 -46
- densitty-0.9.0/examples/run_examples.py +0 -70
- densitty-0.9.0/pyproject.toml +0 -62
- densitty-0.9.0/tests/axis_tests.py +0 -243
- densitty-0.9.0/tests/binning_tests.py +0 -169
- densitty-0.9.0/tests/color_tests.py +0 -132
- densitty-0.9.0/tests/golden.py +0 -45
- densitty-0.9.0/tests/goldens/simple_glyph_ascii +0 -1
- densitty-0.9.0/tests/goldens/simple_glyph_basic +0 -1
- densitty-0.9.0/tests/goldens/simple_glyph_extended +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-0)-ext-False-False-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-0)-ext-False-False-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-0)-ext-False-False-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-0)-ext-False-False-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-0)-ext-False-True-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-0)-ext-False-True-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-0)-ext-False-True-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-0)-ext-False-True-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-0)-ext-True-False-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-0)-ext-True-False-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-0)-ext-True-False-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-0)-ext-True-False-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-0)-ext-True-True-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-0)-ext-True-True-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-0)-ext-True-True-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-0)-ext-True-True-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-0.100000000)-ext-False-False-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-0.100000000)-ext-False-False-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-0.100000000)-ext-False-False-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-0.100000000)-ext-False-False-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-0.100000000)-ext-False-True-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-0.100000000)-ext-False-True-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-0.100000000)-ext-False-True-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-0.100000000)-ext-False-True-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-0.100000000)-ext-True-False-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-0.100000000)-ext-True-False-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-0.100000000)-ext-True-False-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-0.100000000)-ext-True-False-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-0.100000000)-ext-True-True-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-0.100000000)-ext-True-True-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-0.100000000)-ext-True-True-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-0.100000000)-ext-True-True-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-1)-ext-False-False-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-1)-ext-False-False-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-1)-ext-False-False-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-1)-ext-False-False-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-1)-ext-False-True-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-1)-ext-False-True-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-1)-ext-False-True-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-1)-ext-False-True-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-1)-ext-True-False-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-1)-ext-True-False-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-1)-ext-True-False-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-1)-ext-True-False-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-1)-ext-True-True-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-1)-ext-True-True-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-1)-ext-True-True-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-1)-ext-True-True-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-1.5)-ext-False-False-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-1.5)-ext-False-False-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-1.5)-ext-False-False-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-1.5)-ext-False-False-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-1.5)-ext-False-True-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-1.5)-ext-False-True-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-1.5)-ext-False-True-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-1.5)-ext-False-True-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-1.5)-ext-True-False-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-1.5)-ext-True-False-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-1.5)-ext-True-False-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-1.5)-ext-True-False-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-1.5)-ext-True-True-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-1.5)-ext-True-True-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-1.5)-ext-True-True-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-1.5)-ext-True-True-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-10)-ext-False-False-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-10)-ext-False-False-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-10)-ext-False-False-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-10)-ext-False-False-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-10)-ext-False-True-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-10)-ext-False-True-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-10)-ext-False-True-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-10)-ext-False-True-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-10)-ext-True-False-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-10)-ext-True-False-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-10)-ext-True-False-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-10)-ext-True-False-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-10)-ext-True-True-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-10)-ext-True-True-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-10)-ext-True-True-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-10)-ext-True-True-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-2)-ext-False-False-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-2)-ext-False-False-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-2)-ext-False-False-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-2)-ext-False-False-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-2)-ext-False-True-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-2)-ext-False-True-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-2)-ext-False-True-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-2)-ext-False-True-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-2)-ext-True-False-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-2)-ext-True-False-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-2)-ext-True-False-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-2)-ext-True-False-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-2)-ext-True-True-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-2)-ext-True-True-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-2)-ext-True-True-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-False-(-1-2)-ext-True-True-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-0)-ext-False-False-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-0)-ext-False-False-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-0)-ext-False-False-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-0)-ext-False-False-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-0)-ext-False-True-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-0)-ext-False-True-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-0)-ext-False-True-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-0)-ext-False-True-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-0)-ext-True-False-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-0)-ext-True-False-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-0)-ext-True-False-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-0)-ext-True-False-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-0)-ext-True-True-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-0)-ext-True-True-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-0)-ext-True-True-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-0)-ext-True-True-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-0.100000000)-ext-False-False-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-0.100000000)-ext-False-False-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-0.100000000)-ext-False-False-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-0.100000000)-ext-False-False-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-0.100000000)-ext-False-True-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-0.100000000)-ext-False-True-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-0.100000000)-ext-False-True-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-0.100000000)-ext-False-True-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-0.100000000)-ext-True-False-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-0.100000000)-ext-True-False-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-0.100000000)-ext-True-False-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-0.100000000)-ext-True-False-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-0.100000000)-ext-True-True-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-0.100000000)-ext-True-True-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-0.100000000)-ext-True-True-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-0.100000000)-ext-True-True-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-1)-ext-False-False-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-1)-ext-False-False-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-1)-ext-False-False-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-1)-ext-False-False-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-1)-ext-False-True-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-1)-ext-False-True-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-1)-ext-False-True-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-1)-ext-False-True-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-1)-ext-True-False-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-1)-ext-True-False-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-1)-ext-True-False-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-1)-ext-True-False-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-1)-ext-True-True-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-1)-ext-True-True-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-1)-ext-True-True-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-1)-ext-True-True-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-1.5)-ext-False-False-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-1.5)-ext-False-False-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-1.5)-ext-False-False-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-1.5)-ext-False-False-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-1.5)-ext-False-True-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-1.5)-ext-False-True-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-1.5)-ext-False-True-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-1.5)-ext-False-True-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-1.5)-ext-True-False-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-1.5)-ext-True-False-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-1.5)-ext-True-False-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-1.5)-ext-True-False-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-1.5)-ext-True-True-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-1.5)-ext-True-True-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-1.5)-ext-True-True-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-1.5)-ext-True-True-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-2)-ext-False-False-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-2)-ext-False-False-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-2)-ext-False-False-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-2)-ext-False-False-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-2)-ext-False-True-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-2)-ext-False-True-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-2)-ext-False-True-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-2)-ext-False-True-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-2)-ext-True-False-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-2)-ext-True-False-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-2)-ext-True-False-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-2)-ext-True-False-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-2)-ext-True-True-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-2)-ext-True-True-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-2)-ext-True-True-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes-True-(-1-2)-ext-True-True-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes_1 +0 -1
- densitty-0.9.0/tests/goldens/test_axes_2 +0 -1
- densitty-0.9.0/tests/goldens/test_axes_3 +0 -1
- densitty-0.9.0/tests/goldens/test_axes_ascii-False-False-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes_ascii-False-False-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes_ascii-False-False-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes_ascii-False-False-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes_ascii-False-True-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes_ascii-False-True-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes_ascii-False-True-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes_ascii-False-True-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes_ascii-True-False-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes_ascii-True-False-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes_ascii-True-False-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes_ascii-True-False-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes_ascii-True-True-False-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes_ascii-True-True-False-True +0 -1
- densitty-0.9.0/tests/goldens/test_axes_ascii-True-True-True-False +0 -1
- densitty-0.9.0/tests/goldens/test_axes_ascii-True-True-True-True +0 -1
- densitty-0.9.0/tests/goldens/test_bin_data_2 +0 -1
- densitty-0.9.0/tests/goldens/test_bin_data_3 +0 -1
- densitty-0.9.0/tests/goldens/test_bin_data_unaligned +0 -1
- densitty-0.9.0/tests/goldens/test_border_nonhist_toscreen +0 -1
- densitty-0.9.0/tests/goldens/test_histplot2d_1 +0 -1
- densitty-0.9.0/tests/goldens/test_maxsize_fitscreen +0 -1
- densitty-0.9.0/tests/goldens/test_maxsize_keepaspect +0 -1
- densitty-0.9.0/tests/goldens/test_maxsize_reservemargin +0 -1
- densitty-0.9.0/tests/goldens/test_maxsize_set_default_size +0 -1
- densitty-0.9.0/tests/goldens/test_simple_hist_toscreen +0 -1
- densitty-0.9.0/tests/goldens/x_axis_105_1.68750941E-8_0.796975597_0 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_105_1.68750941E-8_0.796975597_1 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_105_5.09236527E-8_9.66938005_0 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_105_5.09236527E-8_9.66938005_1 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_109_-6.81808565E-9_5.14837567E-8_0 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_109_-6.81808565E-9_5.14837567E-8_1 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_111_-4.93860860E-9_1.38921000E-7_0 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_111_-4.93860860E-9_1.38921000E-7_1 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_113_-504327.128_-504326.751_0 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_113_-504327.128_-504326.751_1 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_116_-1.50971589E-7_0.0105108249_0 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_116_-1.50971589E-7_0.0105108249_1 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_118_2.20802474E-10_6.52519242E-10_0 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_118_2.20802474E-10_6.52519242E-10_1 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_119_0.00198534542_0.00198534573_0 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_119_0.00198534542_0.00198534573_1 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_135_1.22598302E-8_8.04329142E-8_0 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_135_1.22598302E-8_8.04329142E-8_1 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_141_3.41218635E-9_0.000593451723_0 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_141_3.41218635E-9_0.000593451723_1 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_164_33859.0360_33859.0944_0 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_164_33859.0360_33859.0944_1 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_169_25.1180938_31.9108379_0 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_169_25.1180938_31.9108379_1 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_180_-1358.72046_-1358.71997_0 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_180_-1358.72046_-1358.71997_1 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_188_0.000735951891_0.000743931104_0 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_188_0.000735951891_0.000743931104_1 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_189_3.52864510_3.52875891_0 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_189_3.52864510_3.52875891_1 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_190_2.22673610E-7_0.00903559932_0 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_190_2.22673610E-7_0.00903559932_1 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_191_0.000194623302_3.75022510_0 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_36_-0.143016182_-0.121454748_0 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_36_-0.143016182_-0.121454748_1 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_37_-2.02514159E-9_0.0449531366_0 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_37_-2.02514159E-9_0.0449531366_1 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_48_-5.73379077E-7_0.0000146411803_0 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_48_-5.73379077E-7_0.0000146411803_1 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_68_-64.8155821_-64.8153334_0 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_68_-64.8155821_-64.8153334_1 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_78_-0.0000147372573_-0.0000147370017_0 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_78_-0.0000147372573_-0.0000147370017_1 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_80_-0.000259728201_6.72258436_0 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_80_-0.000259728201_6.72258436_1 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_88_-4.62043384E-9_0.00645016333_0 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_88_-4.62043384E-9_0.00645016333_1 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_89_0.00230228979_0.00230229174_0 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_89_0.00230228979_0.00230229174_1 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_89_8.49639722E-8_8.81452078E-8_0 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_89_8.49639722E-8_8.81452078E-8_1 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_91_-5.88268935_-5.88264807_0 +0 -1
- densitty-0.9.0/tests/goldens/x_axis_91_-5.88268935_-5.88264807_1 +0 -1
- densitty-0.9.0/tests/goldens/y_axis_105_1.68750941E-8_0.796975597 +0 -1
- densitty-0.9.0/tests/goldens/y_axis_105_5.09236527E-8_9.66938005 +0 -1
- densitty-0.9.0/tests/goldens/y_axis_109_-6.81808565E-9_5.14837567E-8 +0 -1
- densitty-0.9.0/tests/goldens/y_axis_111_-4.93860860E-9_1.38921000E-7 +0 -1
- densitty-0.9.0/tests/goldens/y_axis_116_-1.50971589E-7_0.0105108249 +0 -1
- densitty-0.9.0/tests/goldens/y_axis_11_1.96692248E-8_0.00820748193 +0 -1
- densitty-0.9.0/tests/goldens/y_axis_135_1.22598302E-8_8.04329142E-8 +0 -1
- densitty-0.9.0/tests/goldens/y_axis_143_2.69365458E-7_1.93715817 +0 -1
- densitty-0.9.0/tests/goldens/y_axis_153_-0.114808950_-0.114672276 +0 -1
- densitty-0.9.0/tests/goldens/y_axis_154_-187.732088_-187.730832 +0 -1
- densitty-0.9.0/tests/goldens/y_axis_158_-1234211.79_-1234211.70 +0 -1
- densitty-0.9.0/tests/goldens/y_axis_176_98529298.9_98529299.0 +0 -1
- densitty-0.9.0/tests/goldens/y_axis_189_3.52864510_3.52875891 +0 -1
- densitty-0.9.0/tests/goldens/y_axis_191_0.000194623302_3.75022510 +0 -1
- densitty-0.9.0/tests/goldens/y_axis_36_-0.143016182_-0.121454748 +0 -1
- densitty-0.9.0/tests/goldens/y_axis_37_-2.02514159E-9_0.0449531366 +0 -1
- densitty-0.9.0/tests/goldens/y_axis_39_-0.000161165673_-0.000160874037 +0 -1
- densitty-0.9.0/tests/goldens/y_axis_46_-0.00000321721634_-0.00000321459619 +0 -1
- densitty-0.9.0/tests/goldens/y_axis_46_0.00000291015154_0.733200207 +0 -1
- densitty-0.9.0/tests/goldens/y_axis_48_-5.73379077E-7_0.0000146411803 +0 -1
- densitty-0.9.0/tests/goldens/y_axis_48_7.83507705_7.83514258 +0 -1
- densitty-0.9.0/tests/goldens/y_axis_53_0.499461762_0.499470226 +0 -1
- densitty-0.9.0/tests/goldens/y_axis_76_100.966337_100.966349 +0 -1
- densitty-0.9.0/tests/goldens/y_axis_80_-0.000259728201_6.72258436 +0 -1
- densitty-0.9.0/tests/goldens/y_axis_86_9.56108668E-9_0.0000741047291 +0 -1
- densitty-0.9.0/tests/goldens/y_axis_88_-4.62043384E-9_0.00645016333 +0 -1
- densitty-0.9.0/tests/goldens/y_axis_89_0.00230228979_0.00230229174 +0 -1
- densitty-0.9.0/tests/goldens/y_axis_8_-16602642.5_-16601902.4 +0 -1
- densitty-0.9.0/tests/goldens/y_axis_8_0.850889413_38.8443390 +0 -1
- densitty-0.9.0/tests/goldens/y_axis_9_-0.0000214145534_6521844.58 +0 -1
- densitty-0.9.0/tests/goldens/y_axis_9_0.124174552_7.78910615 +0 -1
- densitty-0.9.0/tests/helper_tests.py +0 -59
- densitty-0.9.0/tests/label_tests.py +0 -137
- densitty-0.9.0/tests/lineart_tests.py +0 -133
- densitty-0.9.0/tests/numpy_tests.py +0 -33
- densitty-0.9.0/tests/scale_tests.py +0 -140
- densitty-0.9.0/tests/smoothing_tests.py +0 -103
- densitty-0.9.0/tests/util_tests.py +0 -22
- {densitty-0.9.0 → densitty-1.0.0}/.github/workflows/checks.yml +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/.github/workflows/periodic.yml +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/.github/workflows/tests.yml +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/.gitignore +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/LICENSE +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/densitty/ascii_art.py +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/densitty/lineart.py +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/densitty/truecolor.py +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/densitty.egg-info/dependency_links.txt +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/densitty.egg-info/top_level.txt +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/docs/16-colors.png +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/docs/256-colors.png +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/docs/FAQ.md +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/docs/ascii-art.png +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/docs/rgb-colors.png +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/setup.cfg +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/#lineart_tests.py# +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/convert_tests.py +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/detect_tests.py +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/gen_norm_data.py +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/golden_diff.py +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/ansi.BLUE_RED +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/ansi.BLUE_RED_halfheight +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/ansi.COOL +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/ansi.COOL_halfheight +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/ansi.FADE_IN +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/ansi.FADE_IN_16 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/ansi.FADE_IN_16_halfheight +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/ansi.FADE_IN_halfheight +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/ansi.GRAYSCALE +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/ansi.GRAYSCALE_halfheight +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/ansi.HOT +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/ansi.HOT_halfheight +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/ansi.RAINBOW +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/ansi.RAINBOW_16 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/ansi.RAINBOW_16_halfheight +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/ansi.RAINBOW_halfheight +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/ascii-map +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/auto_allzero +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/auto_color_limits +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/halfheight +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/halfheight_single_row +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/merge_chars +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/merge_lines +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_axes-True-(-1-10)-ext-False-False-False-False +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_axes-True-(-1-10)-ext-False-False-False-True +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_axes-True-(-1-10)-ext-False-False-True-False +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_axes-True-(-1-10)-ext-False-False-True-True +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_axes-True-(-1-10)-ext-False-True-False-False +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_axes-True-(-1-10)-ext-False-True-False-True +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_axes-True-(-1-10)-ext-False-True-True-False +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_axes-True-(-1-10)-ext-False-True-True-True +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_axes-True-(-1-10)-ext-True-False-False-False +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_axes-True-(-1-10)-ext-True-False-False-True +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_axes-True-(-1-10)-ext-True-False-True-False +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_axes-True-(-1-10)-ext-True-False-True-True +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_axes-True-(-1-10)-ext-True-True-False-False +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_axes-True-(-1-10)-ext-True-True-False-True +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_axes-True-(-1-10)-ext-True-True-True-False +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_axes-True-(-1-10)-ext-True-True-True-True +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_axes_invalid_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_axes_labelsgiven +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_axes_single_pixel +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_axes_small +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_bin_data_1 +0 -0
- /densitty-0.9.0/tests/goldens/test_binning_simple_1 → /densitty-1.0.0/tests/goldens/test_bin_data_2 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_binning_auto_spec_range_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_binning_drop_data +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_binning_edge_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_binning_edge_2 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_binning_fixed_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_binning_fixed_2 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_binning_no_drop_data +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_binning_provide_edges +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_binning_simple_2 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_empty_data +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_histplot2d_2 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_histplot2d_3 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_histplot2d_4 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_maxsize_fitscreen_noaxes +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_single_data +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_single_valued_data +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_smooth_data_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_smooth_data_1_x_axis +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_smooth_data_1_y_axis +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_smooth_data_2 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_smooth_data_2_x_axis +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_smooth_data_2_y_axis +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_smooth_data_3 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_smooth_data_3_x_axis +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/test_smooth_data_3_y_axis +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/truecolor.BLUE_RED +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/truecolor.BLUE_RED_halfheight +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/truecolor.COOL +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/truecolor.COOL_halfheight +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/truecolor.FADE_IN +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/truecolor.FADE_IN_halfheight +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/truecolor.GRAYSCALE +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/truecolor.GRAYSCALE_LINEAR +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/truecolor.GRAYSCALE_LINEAR_halfheight +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/truecolor.GRAYSCALE_halfheight +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/truecolor.HOT +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/truecolor.HOT_halfheight +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/truecolor.RAINBOW +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/truecolor.RAINBOW_halfheight +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_100_-0.0819162998_510.002284_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_100_-0.0819162998_510.002284_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_100_0.0194307864_0.0194307906_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_100_0.0194307864_0.0194307906_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_101_1.42762354E-8_25.8269209_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_101_1.42762354E-8_25.8269209_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_102_1670249.07_2864582.59_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_102_1670249.07_2864582.59_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_103_1.89783411E-8_1.85232704E+9_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_103_1.89783411E-8_1.85232704E+9_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_104_1.73938891E-7_3790422.49_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_104_1.73938891E-7_3790422.49_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_109_-2.96955623E-10_83.0330135_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_109_-2.96955623E-10_83.0330135_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_110_10.0967520_10.0967520_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_110_10.0967520_10.0967520_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_112_-32410436.8_-32410436.8_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_112_-32410436.8_-32410436.8_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_119_-0.000605219562_139019378_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_119_-0.000605219562_139019378_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_11_1.96692248E-8_0.00820748193_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_11_1.96692248E-8_0.00820748193_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_129_2.59739235E-9_965070365_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_129_2.59739235E-9_965070365_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_131_0.145524462_4.65087154E+9_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_131_0.145524462_4.65087154E+9_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_135_-0.0000229191696_2267.64355_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_135_-0.0000229191696_2267.64355_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_141_-2.14314230E-7_19791.9707_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_141_-2.14314230E-7_19791.9707_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_143_2.69365458E-7_1.93715817_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_143_2.69365458E-7_1.93715817_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_145_-0.000773494593_8763857.68_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_145_-0.000773494593_8763857.68_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_145_-1.75397138E+9_-1.75397138E+9_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_145_-1.75397138E+9_-1.75397138E+9_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_148_0.00935627980_42504.9078_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_148_0.00935627980_42504.9078_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_153_-0.114808950_-0.114672276_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_153_-0.114808950_-0.114672276_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_153_-661104672_-661104672_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_153_-661104672_-661104672_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_154_-187.732088_-187.730832_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_154_-187.732088_-187.730832_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_156_-22304704.4_-20842350.2_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_156_-22304704.4_-20842350.2_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_157_-3.50954588E-10_947.964004_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_157_-3.50954588E-10_947.964004_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_158_-1234211.79_-1234211.70_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_158_-1234211.79_-1234211.70_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_160_194487990_194494183_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_160_194487990_194494183_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_162_-185285035_-185285035_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_162_-185285035_-185285035_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_166_67.3265318_75019876.3_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_166_67.3265318_75019876.3_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_167_4.45843689E-10_652665182_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_167_4.45843689E-10_652665182_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_168_3.26337097E-8_793724.663_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_168_3.26337097E-8_793724.663_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_169_-1.37817983E-7_115283107_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_169_-1.37817983E-7_115283107_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_172_-3329659.06_-3329659.06_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_172_-3329659.06_-3329659.06_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_172_19.8982303_4.98789640E+9_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_172_19.8982303_4.98789640E+9_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_176_98529298.9_98529299.0_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_176_98529298.9_98529299.0_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_177_0.0992866123_5373.66561_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_177_0.0992866123_5373.66561_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_187_-0.00362557327_243858998_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_187_-0.00362557327_243858998_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_191_0.000194623302_3.75022510_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_196_-20.8607706_-20.8607561_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_196_-20.8607706_-20.8607561_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_196_-3592221.71_-3592221.71_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_196_-3592221.71_-3592221.71_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_198_75308.2184_409641.537_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_198_75308.2184_409641.537_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_21_-10.3544087_1086.65585_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_21_-10.3544087_1086.65585_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_26_-1.47776457E-10_2697757.41_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_26_-1.47776457E-10_2697757.41_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_29_-0.418828618_-0.418813422_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_29_-0.418828618_-0.418813422_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_39_-0.000161165673_-0.000160874037_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_39_-0.000161165673_-0.000160874037_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_3_0.00000979906217_0.000360412287_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_3_0.00000979906217_0.000360412287_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_45_99167646.7_99167646.7_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_45_99167646.7_99167646.7_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_46_-0.00000321721634_-0.00000321459619_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_46_-0.00000321721634_-0.00000321459619_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_46_0.00000291015154_0.733200207_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_46_0.00000291015154_0.733200207_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_48_-2.23566201E-7_74131862.3_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_48_-2.23566201E-7_74131862.3_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_48_-3.46356324E+9_-3.46286549E+9_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_48_-3.46356324E+9_-3.46286549E+9_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_48_7.83507705_7.83514258_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_48_7.83507705_7.83514258_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_4_-1099.01594_-1097.97364_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_4_-1099.01594_-1097.97364_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_50_-5675725.76_-5591838.17_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_50_-5675725.76_-5591838.17_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_53_0.499461762_0.499470226_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_53_0.499461762_0.499470226_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_56_1348178.28_1348178.28_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_56_1348178.28_1348178.28_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_60_1572.09156_1572.09156_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_60_1572.09156_1572.09156_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_62_0.0000834552114_162044199_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_62_0.0000834552114_162044199_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_76_100.966337_100.966349_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_76_100.966337_100.966349_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_7_1.49865727E-9_1.06805033_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_7_1.49865727E-9_1.06805033_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_80_19.4507640_868.195082_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_80_19.4507640_868.195082_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_84_228572.332_228572.332_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_84_228572.332_228572.332_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_86_-2.04771899E+9_-2.04771899E+9_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_86_-2.04771899E+9_-2.04771899E+9_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_86_1724.60078_1724.60078_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_86_1724.60078_1724.60078_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_86_9.56108668E-9_0.0000741047291_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_86_9.56108668E-9_0.0000741047291_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_8_-16602642.5_-16601902.4_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_8_-16602642.5_-16601902.4_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_8_-3716374.14_-3716374.02_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_8_-3716374.14_-3716374.02_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_8_0.850889413_38.8443390_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_8_0.850889413_38.8443390_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_8_2191761.87_2191772.44_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_8_2191761.87_2191772.44_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_90_-882580.430_-882580.430_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_90_-882580.430_-882580.430_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_93_-0.00790606166_17905215.6_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_93_-0.00790606166_17905215.6_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_93_-0.0503566340_177.327115_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_93_-0.0503566340_177.327115_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_99_2.90983509E-9_10613370.5_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_99_2.90983509E-9_10613370.5_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_9_-0.0000214145534_6521844.58_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_9_-0.0000214145534_6521844.58_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_9_0.124174552_7.78910615_0 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/x_axis_9_0.124174552_7.78910615_1 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_100_-0.0819162998_510.002284 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_100_0.0194307864_0.0194307906 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_101_1.42762354E-8_25.8269209 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_102_1670249.07_2864582.59 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_103_1.89783411E-8_1.85232704E+9 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_104_1.73938891E-7_3790422.49 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_109_-2.96955623E-10_83.0330135 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_110_10.0967520_10.0967520 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_112_-32410436.8_-32410436.8 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_113_-504327.128_-504326.751 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_118_2.20802474E-10_6.52519242E-10 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_119_-0.000605219562_139019378 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_119_0.00198534542_0.00198534573 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_129_2.59739235E-9_965070365 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_131_0.145524462_4.65087154E+9 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_135_-0.0000229191696_2267.64355 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_141_-2.14314230E-7_19791.9707 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_141_3.41218635E-9_0.000593451723 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_145_-0.000773494593_8763857.68 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_145_-1.75397138E+9_-1.75397138E+9 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_148_0.00935627980_42504.9078 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_153_-661104672_-661104672 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_156_-22304704.4_-20842350.2 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_157_-3.50954588E-10_947.964004 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_160_194487990_194494183 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_162_-185285035_-185285035 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_164_33859.0360_33859.0944 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_166_67.3265318_75019876.3 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_167_4.45843689E-10_652665182 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_168_3.26337097E-8_793724.663 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_169_-1.37817983E-7_115283107 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_169_25.1180938_31.9108379 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_172_-3329659.06_-3329659.06 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_172_19.8982303_4.98789640E+9 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_177_0.0992866123_5373.66561 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_180_-1358.72046_-1358.71997 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_187_-0.00362557327_243858998 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_188_0.000735951891_0.000743931104 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_190_2.22673610E-7_0.00903559932 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_196_-20.8607706_-20.8607561 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_196_-3592221.71_-3592221.71 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_198_75308.2184_409641.537 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_21_-10.3544087_1086.65585 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_26_-1.47776457E-10_2697757.41 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_29_-0.418828618_-0.418813422 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_3_0.00000979906217_0.000360412287 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_45_99167646.7_99167646.7 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_48_-2.23566201E-7_74131862.3 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_48_-3.46356324E+9_-3.46286549E+9 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_4_-1099.01594_-1097.97364 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_50_-5675725.76_-5591838.17 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_56_1348178.28_1348178.28 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_60_1572.09156_1572.09156 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_62_0.0000834552114_162044199 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_68_-64.8155821_-64.8153334 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_78_-0.0000147372573_-0.0000147370017 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_7_1.49865727E-9_1.06805033 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_80_19.4507640_868.195082 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_84_228572.332_228572.332 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_86_-2.04771899E+9_-2.04771899E+9 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_86_1724.60078_1724.60078 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_89_8.49639722E-8_8.81452078E-8 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_8_-3716374.14_-3716374.02 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_8_2191761.87_2191772.44 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_90_-882580.430_-882580.430 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_91_-5.88268935_-5.88264807 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_93_-0.00790606166_17905215.6 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_93_-0.0503566340_177.327115 +0 -0
- {densitty-0.9.0 → densitty-1.0.0}/tests/goldens/y_axis_99_2.90983509E-9_10613370.5 +0 -0
densitty-1.0.0/Makefile
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
#TEST_PACKAGES := numpy,pytest,readchar,rich
|
|
2
|
+
|
|
3
|
+
.PHONY: test-ci
|
|
4
|
+
test-ci:
|
|
5
|
+
rm -rf tests/new_goldens
|
|
6
|
+
mkdir -p tests/new_goldens
|
|
7
|
+
PYTHONPATH=. uv run python -m pytest tests/*.py
|
|
8
|
+
|
|
9
|
+
.PHONY: test
|
|
10
|
+
test: test-ci ## Add output to show current test coverage, but no report
|
|
11
|
+
PYTHONPATH=. uv run python -m pytest --cov=densitty tests/*.py
|
|
12
|
+
|
|
13
|
+
.PHONY: testcov
|
|
14
|
+
testcov: ## Output test coverage report
|
|
15
|
+
PYTHONPATH=. uv run python -m pytest --cov=densitty --cov-report=html tests/*.py
|
|
16
|
+
|
|
17
|
+
.PHONY: golden-accept
|
|
18
|
+
golden-accept:
|
|
19
|
+
PYTHONPATH=. uv run python tests/golden_diff.py
|
|
20
|
+
|
|
21
|
+
.PHONY: lint
|
|
22
|
+
lint:
|
|
23
|
+
## Ignore stub file, as it seems to confuse pylint
|
|
24
|
+
PYTHONPATH=. uv run python -m pylint --ignore util.pyi densitty
|
|
25
|
+
|
|
26
|
+
.PHONY: format
|
|
27
|
+
format:
|
|
28
|
+
uv run python -m black -l 99 densitty/*.py
|
|
29
|
+
uv run python -m black -l 99 tests/*.py
|
|
30
|
+
|
|
31
|
+
.PHONY: check-format
|
|
32
|
+
check-format:
|
|
33
|
+
uv run python -m black -l 99 --check densitty/*.py tests/*.py
|
|
34
|
+
|
|
35
|
+
.PHONY: typecheck
|
|
36
|
+
typecheck:
|
|
37
|
+
PYTHONPATH=. uv run python -m mypy densitty
|
|
38
|
+
PYTHONPATH=. uv run python -m mypy tests/numpy_tests.py
|
|
39
|
+
PYTHONPATH=. uv run python -m mypy tests/axis_tests.py
|
|
40
|
+
|
|
41
|
+
.PHONY: check ## essentially the same as the presubmit checks
|
|
42
|
+
check: lint check-format typecheck test
|
|
43
|
+
|
|
44
|
+
.PHONY: colors
|
|
45
|
+
colors:
|
|
46
|
+
PYTHONPATH=. uv run python tests/color_tests.py
|
|
47
|
+
|
|
48
|
+
.PHONY: examples
|
|
49
|
+
examples:
|
|
50
|
+
PYTHONPATH=. uv run python examples/run_examples.py
|
|
51
|
+
|
|
52
|
+
.PHONY: screenshots
|
|
53
|
+
screenshots:
|
|
54
|
+
uv run --with iterm2,pyobjc examples/generate_screenshots.py
|
|
55
|
+
|
|
56
|
+
.PHONY: gallery
|
|
57
|
+
gallery: screenshots
|
|
58
|
+
uv run examples/generate_example_markdown.py
|
|
59
|
+
|
|
60
|
+
.PHONY: build
|
|
61
|
+
build: ## Build wheel file
|
|
62
|
+
rm -rf ./dist
|
|
63
|
+
uvx --from build pyproject-build --installer uv
|
|
64
|
+
|
|
65
|
+
.PHONY: tag
|
|
66
|
+
tag: ## Add a Git tag and push it to origin with syntax: make tag TAG=tag_name
|
|
67
|
+
ifeq ($(origin TAG),undefined)
|
|
68
|
+
$(error "ERROR: use like 'make tag TAG=tag_name'")
|
|
69
|
+
else
|
|
70
|
+
@echo "Creating git tag: ${TAG}"
|
|
71
|
+
git tag -a ${TAG} -m ""
|
|
72
|
+
@echo "Pushing tag to origin: ${TAG}"
|
|
73
|
+
git push origin ${TAG}
|
|
74
|
+
endif
|
|
75
|
+
|
|
76
|
+
.PHONY: publish-test
|
|
77
|
+
publish-test: build
|
|
78
|
+
@echo "Publishing to testpypi"
|
|
79
|
+
uvx twine upload --repository testpypi dist/*
|
|
80
|
+
|
|
81
|
+
.PHONY: publish
|
|
82
|
+
publish: build
|
|
83
|
+
@echo "Publishing to REAL pypi"
|
|
84
|
+
uvx twine upload dist/*
|
densitty-1.0.0/PKG-INFO
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: densitty
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: densitty - create textual 2-D density plots, heatmaps, and 2-D histograms in Python
|
|
5
|
+
Author: Bill Tompkins
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/BillTompkins/densitty
|
|
8
|
+
Keywords: densitty,ascii,ascii-art,plotting,terminal,Python
|
|
9
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
10
|
+
Classifier: Environment :: Console
|
|
11
|
+
Classifier: Operating System :: OS Independent
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
19
|
+
Classifier: Programming Language :: Python :: Free Threading :: 3 - Stable
|
|
20
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
21
|
+
Requires-Python: >=3.10
|
|
22
|
+
Description-Content-Type: text/markdown
|
|
23
|
+
License-File: LICENSE
|
|
24
|
+
Dynamic: license-file
|
|
25
|
+
|
|
26
|
+
<h1 align="center">densitty</h1>
|
|
27
|
+
<h2 align="center">Terminal-based 2-D Histogram, Density Plots, and Heatmaps in Python</h2>
|
|
28
|
+
|
|
29
|
+
Generate 2-D histograms (density plots, heat maps, eye diagrams) similar to [matplotlib's hist2d](https://matplotlib.org/stable/gallery/statistics/hist.html "hist2d"), but with output in the terminal, and no external dependencies.
|
|
30
|
+
|
|
31
|
+

|
|
32
|
+
|
|
33
|
+
## [Examples/Gallery](https://billtompkins.github.io/densitty/docs/examples.html)
|
|
34
|
+
|
|
35
|
+
## [Usage Notes](https://billtompkins.github.io/densitty/docs/usage.html)
|
|
36
|
+
|
|
37
|
+
## [Color, Size, and Glyph Support](https://billtompkins.github.io/densitty/docs/terminal_support.html)
|
|
38
|
+
|
|
39
|
+
## [API](https://billtompkins.github.io/densitty/docs/api.html)
|
|
40
|
+
|
|
41
|
+
## [GitHub](https://github.com/BillTompkins/densitty/tree/main)
|
densitty-1.0.0/README.md
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<h1 align="center">densitty</h1>
|
|
2
|
+
<h2 align="center">Terminal-based 2-D Histogram, Density Plots, and Heatmaps in Python</h2>
|
|
3
|
+
|
|
4
|
+
Generate 2-D histograms (density plots, heat maps, eye diagrams) similar to [matplotlib's hist2d](https://matplotlib.org/stable/gallery/statistics/hist.html "hist2d"), but with output in the terminal, and no external dependencies.
|
|
5
|
+
|
|
6
|
+

|
|
7
|
+
|
|
8
|
+
## [Examples/Gallery](https://billtompkins.github.io/densitty/docs/examples.html)
|
|
9
|
+
|
|
10
|
+
## [Usage Notes](https://billtompkins.github.io/densitty/docs/usage.html)
|
|
11
|
+
|
|
12
|
+
## [Color, Size, and Glyph Support](https://billtompkins.github.io/densitty/docs/terminal_support.html)
|
|
13
|
+
|
|
14
|
+
## [API](https://billtompkins.github.io/densitty/docs/api.html)
|
|
15
|
+
|
|
16
|
+
## [GitHub](https://github.com/BillTompkins/densitty/tree/main)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"""In-terminal 2-D histogram/density/heatmap plotting"""
|
|
2
|
+
|
|
3
|
+
from .detect import densityplot2d, grid_heatmap, histplot2d, plot
|
|
4
|
+
from .detect import GRAYSCALE, FADE_IN, RAINBOW, REV_RAINBOW
|
|
5
|
+
from .axis import Axis
|
|
6
|
+
from .plotting import Plot
|
|
7
|
+
from .colorbar import make_colorbar
|
|
8
|
+
from .binning import histogram2d
|
|
9
|
+
from .smoothing import smooth2d
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"""ANSI code/color support"""
|
|
2
|
+
|
|
3
|
+
# <pedantic> that the 256-color support here is not actually ANSI X3.64, though it uses ANSI-ish
|
|
4
|
+
# escape sequences. I believe it was originally done in Xterm. And 4b colors (16-color)
|
|
5
|
+
# are really an aixterm extension to the ANSI-specified 8-color standard. </pedantic>
|
|
6
|
+
|
|
7
|
+
from typing import Optional, Sequence
|
|
8
|
+
|
|
9
|
+
from .util import nearest
|
|
10
|
+
|
|
11
|
+
RESET = "\033[0m"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def compose(codes: Sequence[str]) -> str:
|
|
15
|
+
"""Given a list of individual color codes, produce the full escape sequence."""
|
|
16
|
+
return f"\033[{';'.join(codes)}m"
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def colormap_16(colors):
|
|
20
|
+
"""Produce a function that returns closest 4b/16color ANSI color codes from colormap.
|
|
21
|
+
Parameters
|
|
22
|
+
----------
|
|
23
|
+
colors: Sequence[int]
|
|
24
|
+
Ordered 16-color ANSI colors corresponding to the 0.0..1.0 range
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
def as_colorcodes(bg_frac: Optional[float], fg_frac: Optional[float]) -> str:
|
|
28
|
+
"""Return ANSI color code for 16-color value(s)
|
|
29
|
+
Parameters
|
|
30
|
+
----------
|
|
31
|
+
fg_frac: Optional[float]
|
|
32
|
+
Value 0.0..1.0 for foreground, or None if background-only
|
|
33
|
+
fg_frac: Optional[float]
|
|
34
|
+
Value 0.0..1.0 for background, or None for foreground-only
|
|
35
|
+
"""
|
|
36
|
+
codes = []
|
|
37
|
+
if fg_frac is not None:
|
|
38
|
+
codes += [f"{30 + nearest(colors, fg_frac)}"]
|
|
39
|
+
if bg_frac is not None:
|
|
40
|
+
codes += [f"{40 + nearest(colors, bg_frac)}"]
|
|
41
|
+
return compose(codes)
|
|
42
|
+
|
|
43
|
+
return as_colorcodes
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def colormap_256(colors):
|
|
47
|
+
"""Produce a function that returns closest 8b/256color ANSI color codes from colormap.
|
|
48
|
+
Parameters
|
|
49
|
+
----------
|
|
50
|
+
colors: Sequence[int]
|
|
51
|
+
Ordered 256-color ANSI colors corresponding to the 0.0..1.0 range
|
|
52
|
+
"""
|
|
53
|
+
|
|
54
|
+
def as_colorcodes(bg_frac: Optional[float], fg_frac: Optional[float]):
|
|
55
|
+
"""Return ANSI color code for 256-color value(s)
|
|
56
|
+
Parameters
|
|
57
|
+
----------
|
|
58
|
+
fg_frac: Optional[float]
|
|
59
|
+
Value 0.0..1.0 for foreground, or None if background-only
|
|
60
|
+
fg_frac: Optional[float]
|
|
61
|
+
Value 0.0..1.0 for background, or None for foreground-only
|
|
62
|
+
"""
|
|
63
|
+
codes = []
|
|
64
|
+
if fg_frac is not None:
|
|
65
|
+
fg = nearest(colors, fg_frac)
|
|
66
|
+
codes += [f"38;5;{fg}"]
|
|
67
|
+
if bg_frac is not None:
|
|
68
|
+
bg = nearest(colors, bg_frac)
|
|
69
|
+
codes += [f"48;5;{bg}"]
|
|
70
|
+
return compose(codes)
|
|
71
|
+
|
|
72
|
+
return as_colorcodes
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
########################################################
|
|
76
|
+
# Colormaps. Assumed 256-color unless suffixed with _16
|
|
77
|
+
# pylint: disable=invalid-name
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
# ANSI 16-color map colors in ROYGBIV order: Red, Yellow, Green, Cyan, Blue
|
|
81
|
+
RAINBOW_16 = colormap_16((5, 1, 3, 2, 6))
|
|
82
|
+
|
|
83
|
+
# ANSI 16-color 'rainbow', Reversed:
|
|
84
|
+
REV_RAINBOW_16 = colormap_16((6, 2, 3, 1, 5))
|
|
85
|
+
|
|
86
|
+
# ANSI 16-color map colors: Black, Blue, Cyan, Green, Yellow, Red, Magenta, White
|
|
87
|
+
FADE_IN_16 = colormap_16((0, 4, 6, 2, 3, 1, 5, 7))
|
|
88
|
+
|
|
89
|
+
# ANSI 256-color map colors in a grayscale black->white
|
|
90
|
+
GRAYSCALE = colormap_256([0] + list(range(232, 256)) + [15])
|
|
91
|
+
|
|
92
|
+
rainbow_256_colors = (
|
|
93
|
+
# fmt: off
|
|
94
|
+
(196, 202, 208, 214, 220, 190, 154, 118, 82, 46, 47, 48, 43, 80, 81, 39, 27, 21, 56, 91)
|
|
95
|
+
# fmt: on
|
|
96
|
+
)
|
|
97
|
+
RAINBOW = colormap_256(rainbow_256_colors)
|
|
98
|
+
REV_RAINBOW = colormap_256(tuple(reversed(rainbow_256_colors)))
|
|
99
|
+
|
|
100
|
+
BLUE_RED = colormap_256((21, 56, 91, 126, 161, 196))
|
|
101
|
+
FADE_IN = colormap_256(
|
|
102
|
+
# fmt: off
|
|
103
|
+
(16, 53, 54, 55, 56, 57, 21, 21, 27, 39, 81, 80, 43, 48, 47,
|
|
104
|
+
46, 82, 118, 154, 190, 220, 214, 208, 202, 196)
|
|
105
|
+
# fmt: on
|
|
106
|
+
)
|
|
107
|
+
HOT = colormap_256((16, 52, 88, 124, 160, 196, 202, 208, 214, 220, 226, 227, 228, 229, 230, 231))
|
|
108
|
+
COOL = colormap_256((50, 81, 111, 141, 171, 201))
|
|
@@ -0,0 +1,428 @@
|
|
|
1
|
+
"""Axis-generation support."""
|
|
2
|
+
|
|
3
|
+
import dataclasses
|
|
4
|
+
from decimal import Decimal
|
|
5
|
+
import itertools
|
|
6
|
+
import math
|
|
7
|
+
from typing import Optional, Sequence
|
|
8
|
+
|
|
9
|
+
from . import lineart, util
|
|
10
|
+
from .util import FloatLike, ValueRange
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@dataclasses.dataclass
|
|
14
|
+
class BorderChars:
|
|
15
|
+
"""Characters to use for X/Y border"""
|
|
16
|
+
|
|
17
|
+
first: str
|
|
18
|
+
middle: str
|
|
19
|
+
last: str
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
y_border = {False: BorderChars(" ", " ", " "), True: BorderChars("╷", "│", "╵")}
|
|
23
|
+
x_border = {False: BorderChars(" ", " ", " "), True: BorderChars("╶", "─", "╴")}
|
|
24
|
+
|
|
25
|
+
###############################################
|
|
26
|
+
# Helper functions used by the Axis class below
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def pick_step_size(lower_bound) -> Decimal:
|
|
30
|
+
"""Try to pick a step size that gives nice round values for step positions."""
|
|
31
|
+
if lower_bound <= 0:
|
|
32
|
+
raise ValueError("pick_step_size called with 0 or negative value")
|
|
33
|
+
|
|
34
|
+
_, frac, exp = util.sfrexp10(lower_bound) # 0.1 <= frac < 1.0
|
|
35
|
+
|
|
36
|
+
# round up to an appropriate "round" value that starts with 1/2/5
|
|
37
|
+
if frac <= Decimal("0.2"):
|
|
38
|
+
out = Decimal((0, (2,), exp - 1))
|
|
39
|
+
elif frac <= Decimal("0.5"):
|
|
40
|
+
out = Decimal((0, (5,), exp - 1))
|
|
41
|
+
else:
|
|
42
|
+
out = Decimal((0, (1,), exp))
|
|
43
|
+
|
|
44
|
+
if out >= 10:
|
|
45
|
+
# this will be printed as 1E1 or such. Give it more significant figures so
|
|
46
|
+
# it is printed as an integer:
|
|
47
|
+
return out.quantize(1)
|
|
48
|
+
return out
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def add_x_label(line: list[str], label: str, ctr_pos: FloatLike):
|
|
52
|
+
"""Adds the label string to the output line, centered at specified position
|
|
53
|
+
The output line is a list of single-character strings, to make this kind of thing
|
|
54
|
+
straightforward"""
|
|
55
|
+
width = len(label)
|
|
56
|
+
start_col = int(max(float(ctr_pos) + 0.49 - width / 2, 0))
|
|
57
|
+
end_col = start_col + width
|
|
58
|
+
line[start_col:end_col] = list(label)
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def add_x_tick(line: list[str], start_pos: float, left_margin: int, num_cols: int):
|
|
62
|
+
"""Adds a (possibly fractional) tick to the output line, centered at specified position"""
|
|
63
|
+
base_idx = int(start_pos)
|
|
64
|
+
fractional_pos = start_pos - base_idx
|
|
65
|
+
margined_idx = base_idx + left_margin
|
|
66
|
+
if 0.25 <= fractional_pos <= 0.75:
|
|
67
|
+
# add a tick in the center of the appropriate bin
|
|
68
|
+
line[margined_idx] = lineart.merge_chars("│", line[margined_idx])
|
|
69
|
+
return
|
|
70
|
+
if fractional_pos < 0.25:
|
|
71
|
+
left_idx = max(margined_idx - 1, 0)
|
|
72
|
+
else:
|
|
73
|
+
left_idx = margined_idx
|
|
74
|
+
|
|
75
|
+
if base_idx == 0:
|
|
76
|
+
line[left_idx] = lineart.merge_chars("│", line[left_idx])
|
|
77
|
+
else:
|
|
78
|
+
line[left_idx] = "╱"
|
|
79
|
+
|
|
80
|
+
if base_idx >= num_cols - 1:
|
|
81
|
+
line[left_idx + 1] = lineart.merge_chars("│", line[left_idx + 1])
|
|
82
|
+
else:
|
|
83
|
+
line[left_idx + 1] = "╲"
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def gen_tick_values(value_range, tick_step):
|
|
87
|
+
"""Produce tick values in the specified range. Basically numpy.arange"""
|
|
88
|
+
|
|
89
|
+
tick = math.ceil(value_range.min / tick_step) * tick_step
|
|
90
|
+
while tick <= value_range.max:
|
|
91
|
+
yield tick
|
|
92
|
+
tick += tick_step
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
def positions_to_labels(
|
|
96
|
+
printed_positions: Sequence[Decimal], ticked_positions: Sequence[FloatLike], fmt: str
|
|
97
|
+
) -> dict[FloatLike, str]:
|
|
98
|
+
"""Given positions, construct a label dict mapping position to string to be printed there.
|
|
99
|
+
The first positions get a printed value, the second set get a blank, for a bare 'tick'"""
|
|
100
|
+
|
|
101
|
+
tick_dict = {p: "" for p in ticked_positions}
|
|
102
|
+
printed_dict = {p: fmt.format(p) for p in util.sanitize_decimals(printed_positions)}
|
|
103
|
+
return tick_dict | printed_dict
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
def calc_min_step(
|
|
107
|
+
value_range: ValueRange,
|
|
108
|
+
bin_width: FloatLike,
|
|
109
|
+
accomodate_values: bool,
|
|
110
|
+
tick_space: int,
|
|
111
|
+
fmt: str,
|
|
112
|
+
):
|
|
113
|
+
"""Calculate minimum step size for tick placement.
|
|
114
|
+
|
|
115
|
+
When accomodate_values is True, considers the width of printed labels.
|
|
116
|
+
Otherwise, only considers tick spacing requirements.
|
|
117
|
+
"""
|
|
118
|
+
if accomodate_values:
|
|
119
|
+
# find a representative printed label width to use for basic calculations
|
|
120
|
+
test_tick_step = pick_step_size((value_range.max - value_range.min) / 5)
|
|
121
|
+
test_values_printed = tuple(
|
|
122
|
+
fmt.format(value) for value in gen_tick_values(value_range, test_tick_step)
|
|
123
|
+
)
|
|
124
|
+
widths_in_bins = tuple(len(p) for p in test_values_printed)
|
|
125
|
+
# get the 3'd lowest width, or highest if there are less than 3 due to tick-step roundup:
|
|
126
|
+
example_width = sorted(widths_in_bins)[:3][-1]
|
|
127
|
+
min_printed_step = (example_width + 1) * bin_width
|
|
128
|
+
# If the printed labels are small (single-digit), the ticks themselves might be the
|
|
129
|
+
# limiting factor, especially if they are X-axis fractional ticks like "/\"
|
|
130
|
+
return max(min_printed_step, bin_width * (2 + tick_space * 2))
|
|
131
|
+
return bin_width * (2 + tick_space)
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
def gen_position_subsets(positions: tuple, tick_step: Decimal) -> list[Sequence[Decimal]]:
|
|
135
|
+
"""Generate candidate label position subsets based on tick step digit.
|
|
136
|
+
|
|
137
|
+
For tick steps starting with 1 or 2: generates every-5th subsets (5 variants).
|
|
138
|
+
For tick steps starting with 5: generates every-2nd subsets (2 variants).
|
|
139
|
+
"""
|
|
140
|
+
step_digit = tick_step.as_tuple().digits[0] # leading digit of tick step: 1, 2, or 5
|
|
141
|
+
# we want to pick different position subsets depending on whether we're advancing by
|
|
142
|
+
# 1eX, 2eX, or 5eX:
|
|
143
|
+
position_subsets = []
|
|
144
|
+
if step_digit in (1, 2):
|
|
145
|
+
# print on every fifth one, starting at 0..4
|
|
146
|
+
position_subsets += list(util.sanitize_decimals(positions[start::5]) for start in range(5))
|
|
147
|
+
elif step_digit == 5:
|
|
148
|
+
# print on every second one, starting at 0 or 1
|
|
149
|
+
position_subsets += list(util.sanitize_decimals(positions[start::2]) for start in range(2))
|
|
150
|
+
return position_subsets
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
def label_ends_only(positions, tick_step, bin_width, accomodate_values, fmt):
|
|
154
|
+
"""See if printing just the labels for the first and last ticks will fit"""
|
|
155
|
+
|
|
156
|
+
if not accomodate_values:
|
|
157
|
+
# For Y axis / we don't care about printed widths
|
|
158
|
+
return positions_to_labels((positions[0], positions[-1]), positions, fmt)
|
|
159
|
+
|
|
160
|
+
end_positions = (positions[0], positions[-1])
|
|
161
|
+
ends_printed = tuple(positions_to_labels(end_positions, [], fmt).values())
|
|
162
|
+
|
|
163
|
+
half_len_first = len(ends_printed[0]) // 2
|
|
164
|
+
half_len_last = (len(ends_printed[1]) + 1) // 2
|
|
165
|
+
space_available = math.floor(tick_step / bin_width)
|
|
166
|
+
|
|
167
|
+
if half_len_first + half_len_last <= space_available:
|
|
168
|
+
# We can fit values on the first and last ticks
|
|
169
|
+
return positions_to_labels(end_positions, positions, fmt)
|
|
170
|
+
|
|
171
|
+
# Not enough space to print two values, so just print the first
|
|
172
|
+
return positions_to_labels(end_positions[:1], positions, fmt)
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
def find_fitting_subset(position_subsets, ticks_per_bin, accomodate_values, fmt):
|
|
176
|
+
"""Find roundest label subset that fits within space constraints"""
|
|
177
|
+
for position_subset in util.roundness_ordered(position_subsets):
|
|
178
|
+
if not accomodate_values: # it doesn't matter what the printed widths are, it will fit
|
|
179
|
+
return position_subset
|
|
180
|
+
# We're printing at most one value for every 2 ticks, so just make sure
|
|
181
|
+
# that the printed values will not run over the adjacent ticks' area
|
|
182
|
+
# Given the initial min_step logic, this will likely always be true
|
|
183
|
+
printed_widths = (
|
|
184
|
+
len(label) for label in positions_to_labels(position_subset, [], fmt).values()
|
|
185
|
+
)
|
|
186
|
+
allowed_width = ticks_per_bin * 2 - 2
|
|
187
|
+
if max(printed_widths) <= allowed_width:
|
|
188
|
+
return position_subset
|
|
189
|
+
return tuple()
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
def gen_full_labels(value_range: ValueRange, num_bins, accomodate_values, tick_space, fmt):
|
|
193
|
+
"""Generate positions for labels (plain ticks & ticks with value)"""
|
|
194
|
+
bin_width = (value_range.max - value_range.min) / num_bins
|
|
195
|
+
|
|
196
|
+
if bin_width <= 0:
|
|
197
|
+
# we don't have a sensible range for the axis values, so just have empty ticks
|
|
198
|
+
return {}
|
|
199
|
+
|
|
200
|
+
min_step = calc_min_step(value_range, bin_width, accomodate_values, tick_space, fmt)
|
|
201
|
+
cur_tick_step = pick_step_size(min_step)
|
|
202
|
+
|
|
203
|
+
while True:
|
|
204
|
+
positions = tuple(gen_tick_values(value_range, cur_tick_step))
|
|
205
|
+
|
|
206
|
+
if len(positions) == 0:
|
|
207
|
+
# No suitable ticks/labels.
|
|
208
|
+
if accomodate_values:
|
|
209
|
+
# Printed value labels won't fit, try without them
|
|
210
|
+
return gen_full_labels(value_range, num_bins, False, tick_space, "")
|
|
211
|
+
# Nothing fits
|
|
212
|
+
return {}
|
|
213
|
+
if len(positions) == 1:
|
|
214
|
+
return positions_to_labels(positions, [], fmt)
|
|
215
|
+
|
|
216
|
+
position_subsets = gen_position_subsets(positions, cur_tick_step)
|
|
217
|
+
|
|
218
|
+
# Check to see if all generated label subsets only have a single entry
|
|
219
|
+
if max(len(subset) for subset in position_subsets) == 1:
|
|
220
|
+
# Try to just label the ends:
|
|
221
|
+
return label_ends_only(positions, cur_tick_step, bin_width, accomodate_values, fmt)
|
|
222
|
+
|
|
223
|
+
best_subset = find_fitting_subset(
|
|
224
|
+
position_subsets, cur_tick_step / bin_width, accomodate_values, fmt
|
|
225
|
+
)
|
|
226
|
+
|
|
227
|
+
if best_subset:
|
|
228
|
+
return positions_to_labels(best_subset, positions, fmt)
|
|
229
|
+
|
|
230
|
+
cur_tick_step = pick_step_size(float(cur_tick_step) * 1.01)
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
def calc_edges(value_range, num_bins, values_are_edges):
|
|
234
|
+
"""Calculate the top/bottom or left/right values for each of 'num_bins' bins
|
|
235
|
+
|
|
236
|
+
Parameters
|
|
237
|
+
----------
|
|
238
|
+
value_range: util.ValueRange
|
|
239
|
+
Coordinate values for first/last bin
|
|
240
|
+
Can be center of bin, or outside edge (see values_are_edges)
|
|
241
|
+
num_bins: int
|
|
242
|
+
Number of bins/intervals to produce edges for
|
|
243
|
+
values_are_edges: bool
|
|
244
|
+
Indicates that value_range specifies outside edges rather than bin centers
|
|
245
|
+
"""
|
|
246
|
+
if values_are_edges or num_bins == 1:
|
|
247
|
+
bin_delta = (value_range.max - value_range.min) / num_bins
|
|
248
|
+
first_bin_min = value_range.min
|
|
249
|
+
else:
|
|
250
|
+
bin_delta = (value_range.max - value_range.min) / (num_bins - 1)
|
|
251
|
+
first_bin_min = value_range.min - (bin_delta / 2)
|
|
252
|
+
bin_edges = tuple(first_bin_min + i * bin_delta for i in range(num_bins + 1))
|
|
253
|
+
return itertools.pairwise(bin_edges)
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
###############################################
|
|
257
|
+
# The User-facing interface: the Axis class
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
@dataclasses.dataclass
|
|
261
|
+
class Axis:
|
|
262
|
+
"""Options for axis generation."""
|
|
263
|
+
|
|
264
|
+
value_range: ValueRange # can also specify as a tuple of (min, max)
|
|
265
|
+
labels: Optional[dict[FloatLike, str]] = (
|
|
266
|
+
None # map axis value to label (plus tick) at that value
|
|
267
|
+
)
|
|
268
|
+
label_fmt: str = "{}" # format for generated labels
|
|
269
|
+
border_line: bool = False # embed ticks in a horizontal X-axis or vertical Y-axis line
|
|
270
|
+
values_are_edges: bool = False # N+1 values, indicating boundaries between pixels, not centers
|
|
271
|
+
fractional_tick_pos: bool = False # Use "▔", "▁", or "╱╲" for non-centered ticks
|
|
272
|
+
|
|
273
|
+
def __init__(
|
|
274
|
+
self,
|
|
275
|
+
value_range: ValueRange | tuple[FloatLike, FloatLike],
|
|
276
|
+
labels: Optional[dict[FloatLike, str]] = None,
|
|
277
|
+
label_fmt: str = "{}",
|
|
278
|
+
border_line: bool = False,
|
|
279
|
+
values_are_edges: bool = False,
|
|
280
|
+
fractional_tick_pos: bool = False,
|
|
281
|
+
# pylint: disable=too-many-arguments,too-many-positional-arguments
|
|
282
|
+
):
|
|
283
|
+
# Sanitize value_range: allow user to provide it as a tuple of FloatLike (without
|
|
284
|
+
# needing to import ValueRange), and convert to ValueRange(Decimal, Decimal)
|
|
285
|
+
self.value_range = ValueRange(
|
|
286
|
+
Decimal(float(value_range[0])), Decimal(float(value_range[1]))
|
|
287
|
+
)
|
|
288
|
+
self.labels = labels
|
|
289
|
+
self.label_fmt = label_fmt
|
|
290
|
+
self.border_line = border_line
|
|
291
|
+
self.values_are_edges = values_are_edges
|
|
292
|
+
self.fractional_tick_pos = fractional_tick_pos
|
|
293
|
+
|
|
294
|
+
def _unjustified_y_axis(self, num_rows: int):
|
|
295
|
+
"""Returns the Y axis string for each line of the plot"""
|
|
296
|
+
if self.labels is None:
|
|
297
|
+
labels = gen_full_labels(
|
|
298
|
+
self.value_range,
|
|
299
|
+
num_rows,
|
|
300
|
+
False,
|
|
301
|
+
0,
|
|
302
|
+
self.label_fmt,
|
|
303
|
+
)
|
|
304
|
+
else:
|
|
305
|
+
labels = self.labels
|
|
306
|
+
|
|
307
|
+
label_values = sorted(labels.keys())
|
|
308
|
+
bins = calc_edges(self.value_range, num_rows, self.values_are_edges)
|
|
309
|
+
|
|
310
|
+
use_combining = self.border_line and self.fractional_tick_pos
|
|
311
|
+
for row_min, row_max in bins:
|
|
312
|
+
if label_values and row_min <= label_values[0] <= row_max:
|
|
313
|
+
label_str = labels[label_values[0]]
|
|
314
|
+
|
|
315
|
+
offset_frac = (float(label_values[0]) - float(row_min)) / float(row_max - row_min)
|
|
316
|
+
# Try to avoid our cutoffs being exactly where roundoff errors can pop up and
|
|
317
|
+
# cause inconsistent behavior. So 0.249 rather than 0.25, 0.751 rather than 0.75:
|
|
318
|
+
if offset_frac < 0.249 and self.fractional_tick_pos:
|
|
319
|
+
tick_char = "▔"
|
|
320
|
+
elif offset_frac > 0.751 and self.fractional_tick_pos:
|
|
321
|
+
tick_char = "▁"
|
|
322
|
+
else:
|
|
323
|
+
tick_char = "─"
|
|
324
|
+
label_str += lineart.merge_chars(
|
|
325
|
+
tick_char,
|
|
326
|
+
y_border[self.border_line].middle,
|
|
327
|
+
use_combining_unicode=use_combining,
|
|
328
|
+
)
|
|
329
|
+
yield label_str
|
|
330
|
+
label_values = label_values[1:]
|
|
331
|
+
else:
|
|
332
|
+
yield y_border[self.border_line].middle
|
|
333
|
+
|
|
334
|
+
def render_as_y(self, num_rows: int, pad_top: bool, pad_bot: bool, flip: bool):
|
|
335
|
+
"""Create a Y axis as a list of strings for the left margin of a plot
|
|
336
|
+
|
|
337
|
+
Parameters
|
|
338
|
+
----------
|
|
339
|
+
num_rows: int
|
|
340
|
+
Number of data rows
|
|
341
|
+
pad_top: bool
|
|
342
|
+
Emit a line for an X axis line/row at the top
|
|
343
|
+
pad_bot: bool
|
|
344
|
+
Emit a line for an X axis line/row at the bottom
|
|
345
|
+
flip: bool
|
|
346
|
+
Put the minimum Y on the last line rather than the first
|
|
347
|
+
"""
|
|
348
|
+
unpadded_labels = list(self._unjustified_y_axis(num_rows))
|
|
349
|
+
if flip:
|
|
350
|
+
unpadded_labels = [
|
|
351
|
+
s.translate(lineart.flip_vertical) for s in reversed(unpadded_labels)
|
|
352
|
+
]
|
|
353
|
+
|
|
354
|
+
if pad_top:
|
|
355
|
+
unpadded_labels = [y_border[self.border_line].first] + unpadded_labels
|
|
356
|
+
if pad_bot:
|
|
357
|
+
unpadded_labels = unpadded_labels + [y_border[self.border_line].last]
|
|
358
|
+
|
|
359
|
+
lengths = [lineart.display_len(label_str) for label_str in unpadded_labels]
|
|
360
|
+
max_width = max(lengths)
|
|
361
|
+
pad_lengths = [max_width - length for length in lengths]
|
|
362
|
+
padded_labels = [
|
|
363
|
+
" " * pad_length + label_str
|
|
364
|
+
for (label_str, pad_length) in zip(unpadded_labels, pad_lengths)
|
|
365
|
+
]
|
|
366
|
+
return padded_labels
|
|
367
|
+
|
|
368
|
+
def render_as_x(self, num_cols: int, left_margin: int):
|
|
369
|
+
"""Generate X tick line and X label line.
|
|
370
|
+
|
|
371
|
+
Parameters
|
|
372
|
+
----------
|
|
373
|
+
num_cols: int
|
|
374
|
+
Number of data columns
|
|
375
|
+
left_margin: int
|
|
376
|
+
chars to the left of leftmost data col. May have Labels/border-line.
|
|
377
|
+
"""
|
|
378
|
+
if self.labels is None:
|
|
379
|
+
tick_space = 1 if self.fractional_tick_pos else 0
|
|
380
|
+
labels = gen_full_labels(self.value_range, num_cols, True, tick_space, self.label_fmt)
|
|
381
|
+
else:
|
|
382
|
+
labels = self.labels
|
|
383
|
+
|
|
384
|
+
label_values = sorted(labels.keys())
|
|
385
|
+
|
|
386
|
+
bins = calc_edges(self.value_range, num_cols, self.values_are_edges)
|
|
387
|
+
|
|
388
|
+
tick_line = list(
|
|
389
|
+
" " * (left_margin - 1)
|
|
390
|
+
+ x_border[self.border_line].first
|
|
391
|
+
+ x_border[self.border_line].middle * num_cols
|
|
392
|
+
+ x_border[self.border_line].last
|
|
393
|
+
)
|
|
394
|
+
|
|
395
|
+
label_line = [" "] * len(tick_line) # labels under the ticks
|
|
396
|
+
|
|
397
|
+
for col_idx, (col_min, col_max) in enumerate(bins):
|
|
398
|
+
# use Decimal.next_plus to accomodate rounding error/truncation
|
|
399
|
+
if label_values and col_min <= label_values[0] <= col_max.next_plus():
|
|
400
|
+
if self.fractional_tick_pos:
|
|
401
|
+
offset_frac = (label_values[0] - col_min) / (col_max - col_min)
|
|
402
|
+
else:
|
|
403
|
+
offset_frac = 0.5 # not doing fractional tick positioning == center the tick
|
|
404
|
+
|
|
405
|
+
add_x_tick(tick_line, col_idx + offset_frac, left_margin, num_cols)
|
|
406
|
+
add_x_label(
|
|
407
|
+
label_line, labels[label_values[0]], col_idx + left_margin + offset_frac
|
|
408
|
+
)
|
|
409
|
+
|
|
410
|
+
label_values = label_values[1:] # pop that first label since we added it
|
|
411
|
+
|
|
412
|
+
return "".join(tick_line), "".join(label_line)
|
|
413
|
+
|
|
414
|
+
def upscale(self, new_num_bins, multiplier):
|
|
415
|
+
"""Adjust axis for an upscaled plot"""
|
|
416
|
+
if self.values_are_edges:
|
|
417
|
+
# upscaling doesn't move the axis edges. First edge of first bin is the same.
|
|
418
|
+
return
|
|
419
|
+
old_num_bins = new_num_bins // multiplier
|
|
420
|
+
old_bin_width = (self.value_range.max - self.value_range.min) / (old_num_bins - 1)
|
|
421
|
+
new_bin_width = old_bin_width / multiplier
|
|
422
|
+
# we used to have a value for the center of the first bin, but now that bin is
|
|
423
|
+
# 'multiplier' bins, and the value corresponds to the center of that _group_ of bins
|
|
424
|
+
# Find the offset between that group center, and the center of the new edge bin:
|
|
425
|
+
offset = new_bin_width * (multiplier - 1) / 2
|
|
426
|
+
self.value_range = util.make_value_range(
|
|
427
|
+
(self.value_range.min - offset, self.value_range.max + offset)
|
|
428
|
+
)
|