PlotPy 2.3.3__tar.gz → 2.3.4__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.
- {plotpy-2.3.3 → plotpy-2.3.4}/CHANGELOG.md +14 -0
- {plotpy-2.3.3/PlotPy.egg-info → plotpy-2.3.4}/PKG-INFO +2 -2
- {plotpy-2.3.3 → plotpy-2.3.4/PlotPy.egg-info}/PKG-INFO +2 -2
- {plotpy-2.3.3 → plotpy-2.3.4}/PlotPy.egg-info/requires.txt +1 -1
- {plotpy-2.3.3 → plotpy-2.3.4}/conftest.py +10 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/__init__.py +1 -1
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/curve/base.py +2 -2
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/curve/errorbar.py +2 -2
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/polygonmap.py +3 -3
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_computations.py +5 -4
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_builder_annotation.py +27 -24
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_builder_curve.py +25 -17
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_builder_image.py +28 -18
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_builder_shape.py +16 -12
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_curve_tools.py +1 -1
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_manipulate_selection.py +3 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_mask_tool.py +4 -1
- plotpy-2.3.4/plotpy/tests/unit/test_plot_curve.py +94 -0
- plotpy-2.3.4/plotpy/tests/unit/test_tools_export.py +36 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tools/curve.py +7 -2
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/widgets/colormap/editor.py +3 -5
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/widgets/colormap/manager.py +10 -3
- {plotpy-2.3.3 → plotpy-2.3.4}/pyproject.toml +8 -2
- {plotpy-2.3.3 → plotpy-2.3.4}/src/contour2d.c +405 -216
- {plotpy-2.3.3 → plotpy-2.3.4}/src/histogram2d.c +400 -208
- {plotpy-2.3.3 → plotpy-2.3.4}/src/mandelbrot.c +397 -208
- plotpy-2.3.3/plotpy/tests/unit/test_plot_curve.py +0 -87
- plotpy-2.3.3/plotpy/tests/unit/test_tools_export.py +0 -33
- {plotpy-2.3.3 → plotpy-2.3.4}/LICENSE +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/MANIFEST.in +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/PlotPy.egg-info/SOURCES.txt +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/PlotPy.egg-info/dependency_links.txt +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/PlotPy.egg-info/entry_points.txt +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/PlotPy.egg-info/top_level.txt +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/README.md +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/colormaps/README.md +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/colormaps/_cm.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/colormaps/colormap.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/colormaps/matplotlib_cmaps.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/_static/favicon.ico +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/changelog.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/conf.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/dev/build.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/dev/contribute.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/dev/guiqwt_to_plotpy.csv +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/dev/guiqwt_to_plotpy.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/dev/index.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/dev/platforms.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/dev/v1_to_guidata_v3.csv +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/dev/v1_to_v2.csv +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/dev/v1_to_v2.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/colormapmanager.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/events.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/fit.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/fliprotate.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/imagefile.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/index.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/io.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/items/builder.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/items/examples.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/items/index.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/items/overview.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/items/reference.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/mathutils/colormaps.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/mathutils/geometry.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/mathutils/index.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/mathutils/scaler.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/panels/index.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/panels/overview.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/panels/reference.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/plot/examples.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/plot/index.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/plot/overview.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/plot/reference.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/pyplot.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/resizedialog.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/rotatecrop.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/selectdialog.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/signals.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/styles/index.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/styles/overview.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/styles/reference.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/tools/examples.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/tools/index.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/tools/overview.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/tools/reference.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/my_plot_manager.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/my_plot_manager.svg +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/panorama.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/panorama.svg +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/plot_widgets.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/plot_widgets.svg +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/plotpy-banner.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/plotpy-vertical.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/__init__.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/computations.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/contrast.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/cross_section.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/cross_section2.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/dotarraydemo.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/filtertest1.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/filtertest2.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/fit.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/get_point.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/hist2d.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/image_plot_tools.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/imagefilter.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/imagesuperp.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/imagexy.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/manager.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/mandelbrot.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/pcolor.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/plot.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/simple_dialog.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/simple_window.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/transform.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/index.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/intro/examples.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/intro/index.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/intro/installation.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/intro/licenses.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/intro/motivation.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/intro/overview.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/requirements.rst +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/doc/update_requirements.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/builder/__init__.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/builder/annotation.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/builder/curvemarker.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/builder/image.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/builder/label.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/builder/plot.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/builder/shape.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/config.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/constants.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/coords.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/colormaps_default.json +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/apply.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/arredit.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/arrow_down.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/arrow_up.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/autorefresh.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/autoscale.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/axes.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/busy.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/cell_edit.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/center.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/cmap_edit.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/contrast.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/copy.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/copytoclipboard.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/csapplylut.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/csautoscale.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/csection.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/csection_a.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/csection_line.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/csection_oblique.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/csperimage.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/curve_downsample.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/curvestyles/dots.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/curvestyles/lines.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/curvestyles/steps.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/curvestyles/sticks.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/curvetypes/xfy.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/curvetypes/yfx.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/delete.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/edit.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/edit_point_selection.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/editors/edit.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/editors/edit_add.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/editors/editcopy.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/editors/editdelete.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/editors/editpaste.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/editors/fileimport.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/editors/filesave.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/editors/imshow.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/editors/insert.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/editors/plot.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/editors/rename.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/eliminate_outliers.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/eraser.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/exit.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/expander_down.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/expander_right.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/export.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/file.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/fileclose.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/fileimport.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/filenew.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/fileopen.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/filesave.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/filesaveas.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/filetypes/doc.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/filetypes/gif.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/filetypes/html.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/filetypes/jpg.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/filetypes/pdf.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/filetypes/png.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/filetypes/pps.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/filetypes/ps.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/filetypes/tar.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/filetypes/tgz.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/filetypes/tif.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/filetypes/txt.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/filetypes/xls.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/filetypes/zip.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/font.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/full_range.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/funct.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/hcursor.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/hflip.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/imagestats.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/item_list.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/items/annotation.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/items/curve.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/items/errorbar.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/items/grid.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/items/histogram.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/items/histogram2d.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/items/image.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/items/label.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/items/legend.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/items/polygonmap.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/magnifier.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/markers/cross.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/markers/diamond.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/markers/ellipse.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/markers/hexagon.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/markers/point.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/markers/square.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/markers/star.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/markers/triangle_d.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/markers/triangle_l.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/markers/triangle_r.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/markers/triangle_u.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/markers/xcross.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/markerstyles/cross_marker.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/markerstyles/horiz_marker.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/markerstyles/vert_marker.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/mask/mask_circle.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/mask/mask_circle_outside.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/mask/mask_rectangle.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/mask/mask_rectangle_outside.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/mask/mask_tool.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/max.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/min.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/move.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/multipoint_selection.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/none.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/not_found.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/on_curve.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/patterns/bdiagpattern.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/patterns/crosspattern.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/patterns/dense1pattern.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/patterns/dense2pattern.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/patterns/dense3pattern.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/patterns/dense4pattern.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/patterns/dense5pattern.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/patterns/dense6pattern.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/patterns/dense7pattern.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/patterns/diagcrosspattern.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/patterns/fdiagpattern.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/patterns/horpattern.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/patterns/nobrush.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/patterns/solidpattern.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/patterns/verpattern.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/plotpy-banner.svg +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/plotpy-vertical.svg +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/plotpy.svg +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/point_selection.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/print.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/python.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/quickview.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/rectangular_select.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/refresh.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/save_all.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/scales/lin_lin.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/scales/lin_log.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/scales/log_lin.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/scales/log_log.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/selection.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/settings.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/shape.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/shapes/circle.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/shapes/contour.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/shapes/ellipse_shape.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/shapes/freeform.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/shapes/gtaxes.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/shapes/marker.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/shapes/oblique_rectangle.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/shapes/point_shape.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/shapes/polyline.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/shapes/rectangle.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/shapes/segment.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/snapshot.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/styles/dash.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/styles/dashdot.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/styles/dashdotdot.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/styles/dot.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/styles/solid.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/trash.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/trimage_lock.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/trimage_unlock.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/vcursor.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/vflip.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/xcursor.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/xmax.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/xmin.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/xrange.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/events.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/external/__init__.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/external/sliders/__init__.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/external/sliders/_generic_range_slider.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/external/sliders/_generic_slider.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/external/sliders/_labeled.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/external/sliders/_misc.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/external/sliders/_range_style.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/external/sliders/_sliders.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/interfaces/__init__.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/interfaces/items.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/interfaces/panel.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/interfaces/plotmanager.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/io.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/__init__.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/annotation.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/contour.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/curve/__init__.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/grid.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/histogram.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/image/__init__.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/image/base.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/image/filter.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/image/image_items.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/image/masked.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/image/misc.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/image/transform.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/label.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/shape/__init__.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/shape/axis.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/shape/base.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/shape/ellipse.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/shape/marker.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/shape/point.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/shape/polygon.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/shape/range.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/shape/rectangle.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/shape/segment.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/shape/svg.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/locale/fr/LC_MESSAGES/plotpy.mo +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/lutrange.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/mathutils/__init__.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/mathutils/arrayfuncs.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/mathutils/colormap.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/mathutils/geometry.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/mathutils/scaler.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/panels/__init__.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/panels/base.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/panels/contrastadjustment.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/panels/csection/__init__.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/panels/csection/csitem.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/panels/csection/csplot.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/panels/csection/cswidget.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/panels/itemlist.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/plot/__init__.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/plot/base.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/plot/interactive.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/plot/manager.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/plot/plotwidget.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/pyplot.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/styles/__init__.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/styles/axes.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/styles/base.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/styles/curve.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/styles/errorbar.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/styles/histogram.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/styles/image.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/styles/label.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/styles/polygonmap.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/styles/shape.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/__init__.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/benchmarks/__init__.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/benchmarks/test_benchmarks.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/benchmarks/test_bigimages.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/benchmarks/test_loadtest.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/data/brain.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/data/brain_cylinder.png +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/data/mr-brain.dcm +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/data/svg_target.svg +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/data/svg_tool.svg +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/data.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/__init__.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_auto_curve_image.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_autoscale_shapes.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_builder.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_colormap_editor.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_colormap_manager.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_contrast.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_cursors.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_dicom_image.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_fit.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_image_coords.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_imagefilter.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_imagesuperp.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_loadsaveitems_hdf5.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_loadsaveitems_json.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_loadsaveitems_pickle.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_manager.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_no_auto_tools.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_plot_log.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_plot_types.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_plot_yreverse.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_pyplot.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_resize.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/items/__init__.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/items/test_annotations.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/items/test_curves.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/items/test_curves_highdpi.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/items/test_hist2d.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/items/test_histogram.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/items/test_image.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/items/test_image_contour.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/items/test_image_masked.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/items/test_image_masked_xy.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/items/test_image_rgb.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/items/test_image_xy.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/items/test_mandelbrot.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/items/test_pcolor.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/items/test_polygons.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/items/test_svgshapes.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/items/test_transform.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/tools/__init__.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/tools/test_actiontool.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/tools/test_cross_section.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/tools/test_cross_section_line.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/tools/test_cross_section_oblique.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/tools/test_customize_shape_tool.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/tools/test_downsample_curve.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/tools/test_edit_point.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/tools/test_get_point.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/tools/test_get_points.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/tools/test_get_rectangle.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/tools/test_get_rectangle_with_svg.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/tools/test_get_segment.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/tools/test_image_plot_tools.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/__init__.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_annotation_tools.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_aspect_ratio_tool.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_baseplot.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_contour.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_cursor_tools.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_display_coords_tool.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_events.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_fontparam.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_geometry.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_highprecisionxy.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_io.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_line.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_line_cross_section_tool.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_multiline_tools.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_oblique_cross_section_tool.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_plot_image.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_rect_zoom.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_seg_dist.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_styles.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/utils.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/vistools.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/widgets/__init__.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/widgets/test_dotarraydemo.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/widgets/test_filtertest1.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/widgets/test_filtertest2.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/widgets/test_fliprotate.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/widgets/test_plot_timecurve.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/widgets/test_qtdesigner.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/widgets/test_qtdesigner.ui +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/widgets/test_resize_dialog.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/widgets/test_rotatecrop.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/widgets/test_simple_dialog.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/widgets/test_simple_window.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/widgets/test_syncplot.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tools/__init__.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tools/annotation.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tools/axes.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tools/base.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tools/cross_section.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tools/cursor.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tools/image.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tools/item.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tools/label.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tools/misc.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tools/plot.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tools/selection.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tools/shape.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/widgets/__init__.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/widgets/about.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/widgets/basetransform.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/widgets/colormap/__init__.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/widgets/colormap/_slider.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/widgets/colormap/widget.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/widgets/fit.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/widgets/fliprotate.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/widgets/imagefile.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/widgets/qtdesigner.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/widgets/resizedialog.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/widgets/rotatecrop.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/widgets/selectdialog.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/plotpy-tests.desktop +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/qtdesigner/plotplugin.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/requirements.txt +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/setup.cfg +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/setup.py +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/src/arrays.hpp +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/src/contour2d.pyx +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/src/debug.hpp +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/src/histogram2d.pyx +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/src/mandelbrot.pyx +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/src/pcolor.cpp +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/src/points.hpp +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/src/scaler.cpp +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/src/scaler.hpp +0 -0
- {plotpy-2.3.3 → plotpy-2.3.4}/src/traits.hpp +0 -0
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog #
|
|
2
2
|
|
|
3
|
+
## Version 2.3.4 ##
|
|
4
|
+
|
|
5
|
+
In this release, test coverage is 79%.
|
|
6
|
+
|
|
7
|
+
🛠️ Bug fixes:
|
|
8
|
+
|
|
9
|
+
* Add support for NumPy 2.0:
|
|
10
|
+
* Updated build system to use NumPy 2.0 on Python > 3.8 and NumPy 1 on Python 3.8
|
|
11
|
+
* Use `numpy.asarray` instead of `numpy.array(..., copy=False)`
|
|
12
|
+
* Use `numpy.isin` instead of `numpy.in1d`
|
|
13
|
+
* Use `scipy.integrate.trapezoid` instead of `numpy.trapz`
|
|
14
|
+
|
|
15
|
+
* `ColorMapManager`: fix segmentation fault with PySide6 on Linux
|
|
16
|
+
|
|
3
17
|
## Version 2.3.3 ##
|
|
4
18
|
|
|
5
19
|
In this release, test coverage is 79%.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: PlotPy
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.4
|
|
4
4
|
Summary: Curve and image plotting tools for Python/Qt applications
|
|
5
5
|
Author-email: Codra <p.raybaut@codra.fr>
|
|
6
6
|
License: BSD 3-Clause License
|
|
@@ -64,7 +64,7 @@ Description-Content-Type: text/markdown
|
|
|
64
64
|
License-File: LICENSE
|
|
65
65
|
Requires-Dist: guidata>=3.4
|
|
66
66
|
Requires-Dist: PythonQwt>=0.12.1
|
|
67
|
-
Requires-Dist: NumPy
|
|
67
|
+
Requires-Dist: NumPy>=1.17
|
|
68
68
|
Requires-Dist: SciPy>=1.3
|
|
69
69
|
Requires-Dist: Pillow
|
|
70
70
|
Requires-Dist: tifffile
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: PlotPy
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.4
|
|
4
4
|
Summary: Curve and image plotting tools for Python/Qt applications
|
|
5
5
|
Author-email: Codra <p.raybaut@codra.fr>
|
|
6
6
|
License: BSD 3-Clause License
|
|
@@ -64,7 +64,7 @@ Description-Content-Type: text/markdown
|
|
|
64
64
|
License-File: LICENSE
|
|
65
65
|
Requires-Dist: guidata>=3.4
|
|
66
66
|
Requires-Dist: PythonQwt>=0.12.1
|
|
67
|
-
Requires-Dist: NumPy
|
|
67
|
+
Requires-Dist: NumPy>=1.17
|
|
68
68
|
Requires-Dist: SciPy>=1.3
|
|
69
69
|
Requires-Dist: Pillow
|
|
70
70
|
Requires-Dist: tifffile
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
# content of conftest.py
|
|
2
2
|
|
|
3
3
|
import guidata
|
|
4
|
+
import h5py
|
|
5
|
+
import numpy
|
|
6
|
+
import PIL
|
|
4
7
|
import qtpy
|
|
8
|
+
import qwt
|
|
9
|
+
import scipy
|
|
10
|
+
import tifffile
|
|
5
11
|
from guidata.env import execenv
|
|
6
12
|
|
|
7
13
|
import plotpy
|
|
@@ -18,5 +24,9 @@ def pytest_report_header(config):
|
|
|
18
24
|
qtbindings_version = qtpy.PYQT_VERSION
|
|
19
25
|
return [
|
|
20
26
|
f"PlotPy {plotpy.__version__}, guidata {guidata.__version__}, "
|
|
27
|
+
f"PythonQwt {qwt.__version__}, "
|
|
21
28
|
f"{qtpy.API_NAME} {qtbindings_version} [Qt version: {qtpy.QT_VERSION}]",
|
|
29
|
+
f"NumPy {numpy.__version__}, SciPy {scipy.__version__}, "
|
|
30
|
+
f"h5py {h5py.__version__}, "
|
|
31
|
+
f"Pillow {PIL.__version__}, tifffile {tifffile.__version__}",
|
|
22
32
|
]
|
|
@@ -20,7 +20,7 @@ External resources:
|
|
|
20
20
|
.. _GitHub: https://github.com/PierreRaybaut/plotpy
|
|
21
21
|
"""
|
|
22
22
|
|
|
23
|
-
__version__ = "2.3.
|
|
23
|
+
__version__ = "2.3.4"
|
|
24
24
|
__VERSION__ = tuple([int(number) for number in __version__.split(".")])
|
|
25
25
|
|
|
26
26
|
# --- Important note: DATAPATH and LOCALEPATH are used by guidata.configtools
|
|
@@ -388,8 +388,8 @@ class CurveItem(QwtPlotCurve):
|
|
|
388
388
|
this method is called to update decimated data (i.e. only update 1/N value
|
|
389
389
|
with N set in CurveItem.param.decimation).
|
|
390
390
|
"""
|
|
391
|
-
self._x = np.
|
|
392
|
-
self._y = np.
|
|
391
|
+
self._x = np.asarray(x)
|
|
392
|
+
self._y = np.asarray(y)
|
|
393
393
|
self._setData(self._x, self._y)
|
|
394
394
|
|
|
395
395
|
def is_empty(self) -> bool:
|
|
@@ -144,11 +144,11 @@ class ErrorBarCurveItem(CurveItem):
|
|
|
144
144
|
"""
|
|
145
145
|
CurveItem.set_data(self, x, y)
|
|
146
146
|
if dx is not None:
|
|
147
|
-
dx = np.
|
|
147
|
+
dx = np.asarray(dx)
|
|
148
148
|
if dx.size == 0:
|
|
149
149
|
dx = None
|
|
150
150
|
if dy is not None:
|
|
151
|
-
dy = np.
|
|
151
|
+
dy = np.asarray(dy)
|
|
152
152
|
if dy.size == 0:
|
|
153
153
|
dy = None
|
|
154
154
|
self._dx = dx
|
|
@@ -264,9 +264,9 @@ class PolygonMapItem(QwtPlotItem):
|
|
|
264
264
|
* x: NumPy array
|
|
265
265
|
* y: NumPy array
|
|
266
266
|
"""
|
|
267
|
-
self._pts = np.
|
|
268
|
-
self._n = np.
|
|
269
|
-
self._c = np.
|
|
267
|
+
self._pts = np.asarray(pts)
|
|
268
|
+
self._n = np.asarray(n)
|
|
269
|
+
self._c = np.asarray(c)
|
|
270
270
|
xmin, ymin = self._pts.min(axis=0)
|
|
271
271
|
xmax, ymax = self._pts.max(axis=0)
|
|
272
272
|
self.bounds = QC.QRectF(xmin, ymin, xmax - xmin, ymax - ymin)
|
|
@@ -7,8 +7,9 @@
|
|
|
7
7
|
|
|
8
8
|
# guitest: show
|
|
9
9
|
|
|
10
|
+
import numpy as np
|
|
11
|
+
import scipy.integrate as spt
|
|
10
12
|
from guidata.qthelpers import qt_app_context
|
|
11
|
-
from numpy import linspace, sin, trapz
|
|
12
13
|
|
|
13
14
|
from plotpy.builder import make
|
|
14
15
|
from plotpy.tests import vistools as ptv
|
|
@@ -16,8 +17,8 @@ from plotpy.tests import vistools as ptv
|
|
|
16
17
|
|
|
17
18
|
def test_computations():
|
|
18
19
|
"""Test computations"""
|
|
19
|
-
x = linspace(-10, 10, 1000)
|
|
20
|
-
y = sin(sin(sin(x)))
|
|
20
|
+
x = np.linspace(-10, 10, 1000)
|
|
21
|
+
y = np.sin(np.sin(np.sin(x)))
|
|
21
22
|
with qt_app_context(exec_loop=True):
|
|
22
23
|
curve = make.curve(x, y, "ab", "b")
|
|
23
24
|
range = make.range(-2, 2)
|
|
@@ -26,7 +27,7 @@ def test_computations():
|
|
|
26
27
|
)
|
|
27
28
|
|
|
28
29
|
disp1 = make.computation(
|
|
29
|
-
range, "BL", "trapz=%g", curve, lambda x, y:
|
|
30
|
+
range, "BL", "trapz=%g", curve, lambda x, y: spt.trapezoid(y, x)
|
|
30
31
|
)
|
|
31
32
|
|
|
32
33
|
disp2 = make.computations(
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import numpy as np
|
|
9
9
|
import pytest
|
|
10
|
+
from guidata.qthelpers import qt_app_context
|
|
10
11
|
|
|
11
12
|
from plotpy.builder import make
|
|
12
13
|
from plotpy.tests.unit.test_builder_curve import show_items_qtbot
|
|
@@ -61,28 +62,30 @@ def _make_annotation(
|
|
|
61
62
|
],
|
|
62
63
|
)
|
|
63
64
|
def test_builder_annotation_params(method):
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
items
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
65
|
+
"""Test PlotBuilder annotation factory method parameters"""
|
|
66
|
+
with qt_app_context(exec_loop=False):
|
|
67
|
+
items = []
|
|
68
|
+
for show_label in [True, False]:
|
|
69
|
+
items.append(
|
|
70
|
+
_make_annotation(
|
|
71
|
+
method,
|
|
72
|
+
title="title",
|
|
73
|
+
subtitle="subtitle",
|
|
74
|
+
show_label=show_label,
|
|
75
|
+
)
|
|
72
76
|
)
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
items
|
|
88
|
-
show_items_qtbot(items)
|
|
77
|
+
for show_computations in [True, False]:
|
|
78
|
+
items.append(_make_annotation(method, show_computations=show_computations))
|
|
79
|
+
for show_subtitle in [True, False]:
|
|
80
|
+
items.append(_make_annotation(method, show_subtitle=show_subtitle))
|
|
81
|
+
for format in ["%f", "%e"]:
|
|
82
|
+
items.append(_make_annotation(method, format=format))
|
|
83
|
+
for uncertainty in [0.0, 1.0]:
|
|
84
|
+
items.append(_make_annotation(method, uncertainty=uncertainty))
|
|
85
|
+
for transform_matrix in [None, np.identity(3)]:
|
|
86
|
+
items.append(_make_annotation(method, transform_matrix=transform_matrix))
|
|
87
|
+
for readonly in [True, False]:
|
|
88
|
+
items.append(_make_annotation(method, readonly=readonly))
|
|
89
|
+
for private in [True, False]:
|
|
90
|
+
items.append(_make_annotation(method, private=private))
|
|
91
|
+
show_items_qtbot(items)
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import numpy as np
|
|
9
9
|
import pytest
|
|
10
|
-
from guidata.qthelpers import exec_dialog
|
|
10
|
+
from guidata.qthelpers import exec_dialog, qt_app_context
|
|
11
11
|
from qtpy.QtCore import Qt
|
|
12
12
|
from qwt import QwtPlotCurve
|
|
13
13
|
|
|
@@ -43,8 +43,9 @@ def _make_curve_style(shade, curvestyle, baseline):
|
|
|
43
43
|
@pytest.mark.parametrize("baseline", [0.0])
|
|
44
44
|
def test_builder_curve_curve_style(shade, curvestyle, baseline):
|
|
45
45
|
"""Test curve parameters of curve() method"""
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
with qt_app_context(exec_loop=False):
|
|
47
|
+
curve = _make_curve_style(shade, curvestyle, baseline)
|
|
48
|
+
show_items_qtbot([curve], "curve")
|
|
48
49
|
|
|
49
50
|
|
|
50
51
|
@pytest.mark.parametrize("shade", [0, 0.4, 1.0])
|
|
@@ -52,8 +53,9 @@ def test_builder_curve_curve_style(shade, curvestyle, baseline):
|
|
|
52
53
|
@pytest.mark.parametrize("baseline", [0.0, 1.0])
|
|
53
54
|
def test_builder_curve_curve_shade_baseline(shade, curvestyle, baseline):
|
|
54
55
|
"""Test curve parameters of curve() method"""
|
|
55
|
-
|
|
56
|
-
|
|
56
|
+
with qt_app_context(exec_loop=False):
|
|
57
|
+
curve = _make_curve_style(shade, curvestyle, baseline)
|
|
58
|
+
show_items_qtbot([curve], "curve")
|
|
57
59
|
|
|
58
60
|
|
|
59
61
|
def _make_curve_dsamp(dsamp_factor, use_dsamp):
|
|
@@ -70,16 +72,18 @@ def _make_curve_dsamp(dsamp_factor, use_dsamp):
|
|
|
70
72
|
@pytest.mark.parametrize("use_dsamp", [True])
|
|
71
73
|
def test_builder_curve_dsamp_on(dsamp_factor, use_dsamp):
|
|
72
74
|
"""Test downsampling parameters of curve() method: use_dsamp=True"""
|
|
73
|
-
|
|
74
|
-
|
|
75
|
+
with qt_app_context(exec_loop=False):
|
|
76
|
+
curve = _make_curve_dsamp(dsamp_factor, use_dsamp)
|
|
77
|
+
show_items_qtbot([curve], "curve")
|
|
75
78
|
|
|
76
79
|
|
|
77
80
|
@pytest.mark.parametrize("dsamp_factor", [1, 2])
|
|
78
81
|
@pytest.mark.parametrize("use_dsamp", [False])
|
|
79
82
|
def test_builder_curve_dsamp_off(dsamp_factor, use_dsamp):
|
|
80
83
|
"""Test downsampling parameters of curve() method: use_dsamp=False"""
|
|
81
|
-
|
|
82
|
-
|
|
84
|
+
with qt_app_context(exec_loop=False):
|
|
85
|
+
curve = _make_curve_dsamp(dsamp_factor, use_dsamp)
|
|
86
|
+
show_items_qtbot([curve], "curve")
|
|
83
87
|
|
|
84
88
|
|
|
85
89
|
def _make_curve_linestyle(color, linestyle, linewidth):
|
|
@@ -102,8 +106,9 @@ def _make_curve_linestyle(color, linestyle, linewidth):
|
|
|
102
106
|
@pytest.mark.parametrize("linewidth", [1, 2])
|
|
103
107
|
def test_builder_curve_line_style(color, linestyle, linewidth):
|
|
104
108
|
"""Test line parameters of curve() method"""
|
|
105
|
-
|
|
106
|
-
|
|
109
|
+
with qt_app_context(exec_loop=False):
|
|
110
|
+
curve = _make_curve_linestyle(color, linestyle, linewidth)
|
|
111
|
+
show_items_qtbot([curve], "curve")
|
|
107
112
|
|
|
108
113
|
|
|
109
114
|
@pytest.mark.parametrize("color", ["red", "blue"])
|
|
@@ -111,8 +116,9 @@ def test_builder_curve_line_style(color, linestyle, linewidth):
|
|
|
111
116
|
@pytest.mark.parametrize("linewidth", [1, 2])
|
|
112
117
|
def test_builder_curve_line_color(color, linestyle, linewidth):
|
|
113
118
|
"""Test line parameters of curve() method"""
|
|
114
|
-
|
|
115
|
-
|
|
119
|
+
with qt_app_context(exec_loop=False):
|
|
120
|
+
curve = _make_curve_linestyle(color, linestyle, linewidth)
|
|
121
|
+
show_items_qtbot([curve], "curve")
|
|
116
122
|
|
|
117
123
|
|
|
118
124
|
def _make_curve_marker(marker, markersize, markerfacecolor, markeredgecolor):
|
|
@@ -160,8 +166,9 @@ def test_builder_curve_marker_params_symbol(
|
|
|
160
166
|
marker, markersize, markerfacecolor, markeredgecolor
|
|
161
167
|
):
|
|
162
168
|
"""Test marker parameters of curve() methodg"""
|
|
163
|
-
|
|
164
|
-
|
|
169
|
+
with qt_app_context(exec_loop=False):
|
|
170
|
+
curve = _make_curve_marker(marker, markersize, markerfacecolor, markeredgecolor)
|
|
171
|
+
show_items_qtbot([curve], "curve")
|
|
165
172
|
|
|
166
173
|
|
|
167
174
|
@pytest.mark.parametrize("marker", ["Cross"])
|
|
@@ -172,5 +179,6 @@ def test_builder_curve_marker_size_color(
|
|
|
172
179
|
marker, markersize, markerfacecolor, markeredgecolor
|
|
173
180
|
):
|
|
174
181
|
"""Test marker parameters of curve() methodg"""
|
|
175
|
-
|
|
176
|
-
|
|
182
|
+
with qt_app_context(exec_loop=False):
|
|
183
|
+
curve = _make_curve_marker(marker, markersize, markerfacecolor, markeredgecolor)
|
|
184
|
+
show_items_qtbot([curve], "curve")
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import numpy as np
|
|
9
9
|
import pytest
|
|
10
|
+
from guidata.qthelpers import qt_app_context
|
|
10
11
|
|
|
11
12
|
from plotpy.builder import make
|
|
12
13
|
from plotpy.constants import LUTAlpha
|
|
@@ -61,55 +62,64 @@ def _make_image(
|
|
|
61
62
|
],
|
|
62
63
|
)
|
|
63
64
|
def test_builder_image_alpha_function(alpha_function):
|
|
64
|
-
|
|
65
|
-
|
|
65
|
+
with qt_app_context(exec_loop=False):
|
|
66
|
+
item = _make_image(alpha_function=alpha_function)
|
|
67
|
+
show_items_qtbot([item])
|
|
66
68
|
|
|
67
69
|
|
|
68
70
|
@pytest.mark.parametrize(
|
|
69
71
|
"xdata,ydata", [[[None, None], [None, None]], [[-10, 10], [-10, 10]]]
|
|
70
72
|
)
|
|
71
73
|
def test_builder_image_xdata_ydata(xdata, ydata):
|
|
72
|
-
|
|
73
|
-
|
|
74
|
+
with qt_app_context(exec_loop=False):
|
|
75
|
+
item = _make_image(xdata=xdata, ydata=ydata)
|
|
76
|
+
show_items_qtbot([item])
|
|
74
77
|
|
|
75
78
|
|
|
76
79
|
@pytest.mark.parametrize("pixel_size", [None, 1.0, (1.0, 2.0)])
|
|
77
80
|
def test_builder_image_pixel_size(pixel_size):
|
|
78
|
-
|
|
79
|
-
|
|
81
|
+
with qt_app_context(exec_loop=False):
|
|
82
|
+
item = _make_image(pixel_size=pixel_size)
|
|
83
|
+
show_items_qtbot([item])
|
|
80
84
|
|
|
81
85
|
|
|
82
86
|
@pytest.mark.parametrize("center_on", [None, [1.0, 3.0]])
|
|
83
87
|
def test_builder_image_center_on(center_on):
|
|
84
|
-
|
|
85
|
-
|
|
88
|
+
with qt_app_context(exec_loop=False):
|
|
89
|
+
item = _make_image(center_on=center_on, pixel_size=(1.0, 1.0))
|
|
90
|
+
show_items_qtbot([item])
|
|
86
91
|
|
|
87
92
|
|
|
88
93
|
@pytest.mark.parametrize("interpolation", ["nearest", "linear", "antialiasing"])
|
|
89
94
|
def test_builder_image_interpolation(interpolation):
|
|
90
|
-
|
|
91
|
-
|
|
95
|
+
with qt_app_context(exec_loop=False):
|
|
96
|
+
item = _make_image(interpolation=interpolation)
|
|
97
|
+
show_items_qtbot([item])
|
|
92
98
|
|
|
93
99
|
|
|
94
100
|
@pytest.mark.parametrize("background_color", [None, "red"])
|
|
95
101
|
def test_builder_image_background_color(background_color):
|
|
96
|
-
|
|
97
|
-
|
|
102
|
+
with qt_app_context(exec_loop=False):
|
|
103
|
+
item = _make_image(background_color=background_color)
|
|
104
|
+
show_items_qtbot([item])
|
|
98
105
|
|
|
99
106
|
|
|
100
107
|
@pytest.mark.parametrize("eliminate_outliers", [None, 3.0])
|
|
101
108
|
def test_builder_image_eliminate_outliers(eliminate_outliers):
|
|
102
|
-
|
|
103
|
-
|
|
109
|
+
with qt_app_context(exec_loop=False):
|
|
110
|
+
item = _make_image(eliminate_outliers=eliminate_outliers)
|
|
111
|
+
show_items_qtbot([item])
|
|
104
112
|
|
|
105
113
|
|
|
106
114
|
@pytest.mark.parametrize("lut_range", [None, [0.0, 100.0]])
|
|
107
115
|
def test_builder_image_lut_range(lut_range):
|
|
108
|
-
|
|
109
|
-
|
|
116
|
+
with qt_app_context(exec_loop=False):
|
|
117
|
+
item = _make_image(lut_range=lut_range)
|
|
118
|
+
show_items_qtbot([item])
|
|
110
119
|
|
|
111
120
|
|
|
112
121
|
@pytest.mark.parametrize("lock_position", [None, True, False])
|
|
113
122
|
def test_builder_image_lock_position(lock_position):
|
|
114
|
-
|
|
115
|
-
|
|
123
|
+
with qt_app_context(exec_loop=False):
|
|
124
|
+
item = _make_image(lock_position=lock_position)
|
|
125
|
+
show_items_qtbot([item])
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import numpy as np
|
|
9
9
|
import pytest
|
|
10
|
+
from guidata.qthelpers import qt_app_context
|
|
10
11
|
|
|
11
12
|
from plotpy.builder import make
|
|
12
13
|
from plotpy.tests import get_path
|
|
@@ -37,18 +38,20 @@ def _make_standard_shape(
|
|
|
37
38
|
[make.segment, make.rectangle, make.circle, make.ellipse],
|
|
38
39
|
)
|
|
39
40
|
def test_builder_standard_shape(method):
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
with qt_app_context(exec_loop=False):
|
|
42
|
+
items = []
|
|
43
|
+
items.append(_make_standard_shape(method, title="title"))
|
|
44
|
+
show_items_qtbot(items)
|
|
43
45
|
|
|
44
46
|
|
|
45
47
|
def test_builder_polygon():
|
|
46
48
|
items = []
|
|
47
49
|
x = np.linspace(0, 1, 10)
|
|
48
50
|
y = x**2
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
51
|
+
with qt_app_context(exec_loop=False):
|
|
52
|
+
for closed in [True, False]:
|
|
53
|
+
items.append(make.polygon(x, y, closed=closed, title="title"))
|
|
54
|
+
show_items_qtbot(items)
|
|
52
55
|
|
|
53
56
|
|
|
54
57
|
def test_builder_svgshape():
|
|
@@ -56,9 +59,10 @@ def test_builder_svgshape():
|
|
|
56
59
|
svg_path = get_path("svg_target.svg")
|
|
57
60
|
with open(svg_path, "rb") as f:
|
|
58
61
|
svg_data = f.read()
|
|
59
|
-
|
|
60
|
-
for
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
62
|
+
with qt_app_context(exec_loop=False):
|
|
63
|
+
for shape_str in ("circle", "rectangle", "square"):
|
|
64
|
+
for data_or_path in (svg_data, svg_path):
|
|
65
|
+
items.append(
|
|
66
|
+
make.svg(shape_str, data_or_path, 0.0, 0.0, 1.0, 1.0, title="title")
|
|
67
|
+
)
|
|
68
|
+
show_items_qtbot(items)
|
|
@@ -216,7 +216,7 @@ def test_edit_point_tool():
|
|
|
216
216
|
tool.reset_arrays()
|
|
217
217
|
assert tool.get_changes() == {}
|
|
218
218
|
x_arr, y_arr = curve_item.get_data()
|
|
219
|
-
assert np.
|
|
219
|
+
assert np.isin(x_arr, orig_x).all() and np.isin(y_arr, orig_y).all()
|
|
220
220
|
|
|
221
221
|
exec_dialog(win)
|
|
222
222
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import os
|
|
3
4
|
from typing import TYPE_CHECKING, Callable, TypeVar
|
|
4
5
|
|
|
5
6
|
import numpy as np
|
|
@@ -270,6 +271,7 @@ def test_select_all_items():
|
|
|
270
271
|
exec_dialog(win)
|
|
271
272
|
|
|
272
273
|
|
|
274
|
+
@pytest.mark.skipif(os.name != "nt", reason="Only tested on Windows.")
|
|
273
275
|
def test_rotate_with_mouse():
|
|
274
276
|
"""Test rotating an image item with the mouse."""
|
|
275
277
|
with qt_app_context(exec_loop=False) as qapp:
|
|
@@ -325,6 +327,7 @@ def test_rectangular_selection():
|
|
|
325
327
|
exec_dialog(win)
|
|
326
328
|
|
|
327
329
|
|
|
330
|
+
@pytest.mark.skipif(os.name != "nt", reason="Only tested on Windows.")
|
|
328
331
|
@pytest.mark.parametrize(
|
|
329
332
|
"mouse_path, rotation",
|
|
330
333
|
[
|
|
@@ -49,7 +49,10 @@ def test_image_mask_tool(shape_tool_cls: type[RectangularShapeTool], inside: boo
|
|
|
49
49
|
with execenv.context(accept_dialogs=True):
|
|
50
50
|
shape_tool.add_shape_to_plot(plot, pos0, pos1)
|
|
51
51
|
mask_tool.apply_mask()
|
|
52
|
-
|
|
52
|
+
|
|
53
|
+
# Clear mask
|
|
54
|
+
item.unmask_all()
|
|
55
|
+
plot.replot()
|
|
53
56
|
|
|
54
57
|
shape_tool.add_shape_to_plot(plot, pos0, pos1)
|
|
55
58
|
mask_tool.remove_shapes()
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the terms of the BSD 3-Clause
|
|
4
|
+
# (see plotpy/LICENSE for details)
|
|
5
|
+
|
|
6
|
+
"""Test plotting of a curve with PlotDialog"""
|
|
7
|
+
|
|
8
|
+
import numpy as np
|
|
9
|
+
from guidata.qthelpers import exec_dialog, qt_app_context
|
|
10
|
+
from qwt import QwtPlotItem
|
|
11
|
+
|
|
12
|
+
from plotpy.builder import make
|
|
13
|
+
from plotpy.plot import PlotWidget
|
|
14
|
+
from plotpy.tools import (
|
|
15
|
+
AntiAliasingTool,
|
|
16
|
+
AxisScaleTool,
|
|
17
|
+
CurveStatsTool,
|
|
18
|
+
DownSamplingTool,
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def test_plot_curve():
|
|
23
|
+
"""Test plotting of a curve with PlotDialog"""
|
|
24
|
+
x = np.linspace(-10, 10, 200)
|
|
25
|
+
y = np.sin(x)
|
|
26
|
+
|
|
27
|
+
with qt_app_context(exec_loop=False):
|
|
28
|
+
curve = make.curve(x, y, color="g", curvestyle="Sticks")
|
|
29
|
+
curve.setTitle("Curve")
|
|
30
|
+
|
|
31
|
+
win = make.dialog(toolbar=True, type="curve")
|
|
32
|
+
plot = win.manager.get_plot()
|
|
33
|
+
plot.add_item(curve)
|
|
34
|
+
|
|
35
|
+
win.show()
|
|
36
|
+
|
|
37
|
+
assert isinstance(win.plot_widget, PlotWidget)
|
|
38
|
+
assert win.plot_widget.plot == plot
|
|
39
|
+
|
|
40
|
+
# Check that specific curve tools are added
|
|
41
|
+
for curve_tool_class in (
|
|
42
|
+
CurveStatsTool,
|
|
43
|
+
AntiAliasingTool,
|
|
44
|
+
AxisScaleTool,
|
|
45
|
+
DownSamplingTool,
|
|
46
|
+
):
|
|
47
|
+
tool = win.manager.get_tool(curve_tool_class)
|
|
48
|
+
assert tool is not None, f"Tool of type {curve_tool_class} not found"
|
|
49
|
+
|
|
50
|
+
exec_dialog(win)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def test_plot_curve_anti_aliasing():
|
|
54
|
+
"""Test Anti-aliasing tool"""
|
|
55
|
+
x = np.linspace(-10, 10, 200)
|
|
56
|
+
y = np.sin(x)
|
|
57
|
+
|
|
58
|
+
with qt_app_context(exec_loop=False):
|
|
59
|
+
curve = make.curve(x, y, color="g")
|
|
60
|
+
|
|
61
|
+
win = make.dialog(toolbar=True, type="curve")
|
|
62
|
+
plot = win.manager.get_plot()
|
|
63
|
+
plot.add_item(curve)
|
|
64
|
+
|
|
65
|
+
win.show()
|
|
66
|
+
|
|
67
|
+
assert isinstance(win.plot_widget, PlotWidget)
|
|
68
|
+
assert win.plot_widget.plot == plot
|
|
69
|
+
|
|
70
|
+
anti_aliasing_tool = win.manager.get_tool(AntiAliasingTool)
|
|
71
|
+
assert anti_aliasing_tool is not None, "AntiAliasingTool not found"
|
|
72
|
+
|
|
73
|
+
original_img = plot.grab().toImage()
|
|
74
|
+
|
|
75
|
+
# Activate anti aliasing
|
|
76
|
+
anti_aliasing_tool.activate(True)
|
|
77
|
+
assert plot.antialiased
|
|
78
|
+
assert curve.testRenderHint(QwtPlotItem.RenderAntialiased)
|
|
79
|
+
antialiased_img = plot.grab().toImage()
|
|
80
|
+
assert antialiased_img != original_img
|
|
81
|
+
|
|
82
|
+
# Deactivate anti aliasing
|
|
83
|
+
anti_aliasing_tool.activate(False)
|
|
84
|
+
assert not plot.antialiased
|
|
85
|
+
assert not curve.testRenderHint(QwtPlotItem.RenderAntialiased)
|
|
86
|
+
aliased_img = plot.grab().toImage()
|
|
87
|
+
assert original_img == aliased_img
|
|
88
|
+
|
|
89
|
+
exec_dialog(win)
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
if __name__ == "__main__":
|
|
93
|
+
test_plot_curve()
|
|
94
|
+
test_plot_curve_anti_aliasing()
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the terms of the BSD 3-Clause
|
|
4
|
+
# (see plotpy/LICENSE for details)
|
|
5
|
+
|
|
6
|
+
"""Export tools unit tests"""
|
|
7
|
+
|
|
8
|
+
from unittest.mock import patch
|
|
9
|
+
|
|
10
|
+
import numpy as np
|
|
11
|
+
from guidata.qthelpers import qt_app_context
|
|
12
|
+
from qtpy import QtWidgets as QW
|
|
13
|
+
|
|
14
|
+
from plotpy.builder import make
|
|
15
|
+
from plotpy.tools.curve import export_curve_data
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def test_export_curve(tmpdir):
|
|
19
|
+
"""Test export of a curve"""
|
|
20
|
+
x = np.linspace(-10, 10, 200)
|
|
21
|
+
y = x + 1
|
|
22
|
+
|
|
23
|
+
with qt_app_context(exec_loop=False):
|
|
24
|
+
curve = make.curve(x, y, color="g")
|
|
25
|
+
|
|
26
|
+
dest = tmpdir / "output.txt"
|
|
27
|
+
with patch.object(QW.QFileDialog, "getSaveFileName") as gsf_mock:
|
|
28
|
+
gsf_mock.return_value = (str(dest), "")
|
|
29
|
+
export_curve_data(curve)
|
|
30
|
+
|
|
31
|
+
assert dest.exists()
|
|
32
|
+
data = dest.readlines()
|
|
33
|
+
assert len(data) == 200
|
|
34
|
+
for line in data:
|
|
35
|
+
x, y = line.split(",")
|
|
36
|
+
assert float(y) == float(x) + 1
|