PlotPy 2.7.4__tar.gz → 2.7.5__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.7.4 → plotpy-2.7.5}/CHANGELOG.md +15 -0
- {plotpy-2.7.4/PlotPy.egg-info → plotpy-2.7.5}/PKG-INFO +6 -4
- {plotpy-2.7.4 → plotpy-2.7.5/PlotPy.egg-info}/PKG-INFO +6 -4
- {plotpy-2.7.4 → plotpy-2.7.5}/PlotPy.egg-info/SOURCES.txt +0 -1
- {plotpy-2.7.4 → plotpy-2.7.5}/PlotPy.egg-info/requires.txt +5 -3
- {plotpy-2.7.4 → plotpy-2.7.5}/colormaps/matplotlib_cmaps.py +1 -2
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/dev/contribute.rst +2 -7
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/dev/platforms.rst +3 -10
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/requirements.rst +25 -19
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/__init__.py +1 -1
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/builder/image.py +3 -3
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/io.py +1 -2
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/image/filter.py +1 -1
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/image/image_items.py +1 -1
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/image/masked.py +0 -1
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/image/transform.py +1 -1
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/mathutils/colormap.py +3 -1
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/panels/contrastadjustment.py +1 -1
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/panels/csection/csitem.py +1 -1
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/plot/interactive.py +1 -1
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/styles/histogram.py +1 -1
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/styles/image.py +1 -3
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/styles/shape.py +5 -5
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/items/test_image.py +1 -1
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/items/test_transform.py +1 -1
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tools/base.py +39 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tools/cross_section.py +1 -1
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tools/curve.py +11 -27
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tools/image.py +4 -28
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tools/misc.py +1 -1
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/widgets/colormap/_slider.py +2 -2
- {plotpy-2.7.4 → plotpy-2.7.5}/pyproject.toml +2 -2
- {plotpy-2.7.4 → plotpy-2.7.5}/qtdesigner/plotplugin.py +1 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/requirements.txt +9 -8
- {plotpy-2.7.4 → plotpy-2.7.5}/src/histogram2d.c +4270 -3071
- {plotpy-2.7.4 → plotpy-2.7.5}/src/mandelbrot.c +4122 -2797
- plotpy-2.7.4/plotpy/locale/fr/LC_MESSAGES/plotpy.mo +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/LICENSE +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/MANIFEST.in +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/PlotPy.egg-info/dependency_links.txt +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/PlotPy.egg-info/entry_points.txt +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/PlotPy.egg-info/top_level.txt +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/README.md +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/colormaps/README.md +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/colormaps/_cm.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/colormaps/colormap.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/_static/favicon.ico +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/changelog.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/conf.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/dev/build.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/dev/guiqwt_to_plotpy.csv +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/dev/guiqwt_to_plotpy.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/dev/index.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/dev/v1_to_guidata_v3.csv +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/dev/v1_to_v2.csv +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/dev/v1_to_v2.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/colormapmanager.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/events.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/fit.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/fliprotate.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/imagefile.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/index.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/io.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/items/builder.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/items/examples.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/items/index.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/items/overview.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/items/reference.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/mathutils/colormaps.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/mathutils/geometry.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/mathutils/index.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/mathutils/scaler.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/panels/index.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/panels/overview.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/panels/reference.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/plot/examples.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/plot/index.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/plot/overview.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/plot/reference.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/pyplot.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/resizedialog.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/rotatecrop.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/selectdialog.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/signals.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/styles/index.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/styles/overview.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/styles/reference.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/tools/examples.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/tools/index.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/tools/overview.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/tools/reference.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/my_plot_manager.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/my_plot_manager.svg +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/panorama-vertical.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/panorama-vertical.svg +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/panorama.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/panorama.svg +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/plot_widgets.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/plot_widgets.svg +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/plotpy-banner.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/plotpy-vertical.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/__init__.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/computations.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/contrast.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/cross_section.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/cross_section2.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/dotarraydemo.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/filtertest1.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/filtertest2.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/fit.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/get_point.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/hist2d.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/image_plot_tools.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/imagefilter.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/imagesuperp.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/imagexy.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/manager.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/mandelbrot.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/pcolor.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/plot.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/simple_dialog.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/simple_window.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/transform.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/index.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/intro/examples.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/intro/index.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/intro/installation.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/intro/licenses.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/intro/motivation.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/intro/overview.rst +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/doc/update_requirements.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/builder/__init__.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/builder/annotation.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/builder/curvemarker.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/builder/label.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/builder/plot.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/builder/shape.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/config.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/constants.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/coords.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/colormaps_default.json +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/apply.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/arredit.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/arrow_down.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/arrow_up.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/autorefresh.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/autoscale.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/axes.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/busy.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/cell_edit.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/center.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/cmap_edit.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/contrast.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/copy.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/copytoclipboard.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/csapplylut.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/csautoscale.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/csection.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/csection_a.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/csection_line.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/csection_oblique.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/csperimage.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/curve_downsample.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/curvestyles/dots.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/curvestyles/lines.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/curvestyles/steps.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/curvestyles/sticks.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/curvetypes/xfy.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/curvetypes/yfx.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/delete.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/edit.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/edit_point_selection.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/editors/edit.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/editors/edit_add.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/editors/editcopy.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/editors/editdelete.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/editors/editpaste.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/editors/fileimport.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/editors/filesave.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/editors/imshow.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/editors/insert.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/editors/plot.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/editors/rename.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/eliminate_outliers.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/eraser.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/exit.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/expander_down.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/expander_right.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/export.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/file.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/fileclose.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/fileimport.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/filenew.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/fileopen.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/filesave.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/filesaveas.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/filetypes/doc.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/filetypes/gif.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/filetypes/html.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/filetypes/jpg.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/filetypes/pdf.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/filetypes/png.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/filetypes/pps.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/filetypes/ps.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/filetypes/tar.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/filetypes/tgz.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/filetypes/tif.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/filetypes/txt.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/filetypes/xls.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/filetypes/zip.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/font.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/full_range.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/funct.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/hcursor.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/hflip.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/imagestats.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/item_list.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/items/annotation.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/items/curve.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/items/errorbar.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/items/grid.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/items/histogram.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/items/histogram2d.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/items/image.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/items/label.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/items/legend.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/items/polygonmap.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/magnifier.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/markers/cross.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/markers/diamond.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/markers/ellipse.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/markers/hexagon.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/markers/point.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/markers/square.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/markers/star.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/markers/triangle_d.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/markers/triangle_l.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/markers/triangle_r.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/markers/triangle_u.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/markers/xcross.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/markerstyles/cross_marker.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/markerstyles/horiz_marker.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/markerstyles/vert_marker.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/mask/mask_circle.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/mask/mask_circle_outside.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/mask/mask_rectangle.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/mask/mask_rectangle_outside.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/mask/mask_tool.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/max.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/min.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/move.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/multipoint_selection.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/none.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/not_found.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/on_curve.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/patterns/bdiagpattern.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/patterns/crosspattern.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/patterns/dense1pattern.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/patterns/dense2pattern.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/patterns/dense3pattern.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/patterns/dense4pattern.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/patterns/dense5pattern.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/patterns/dense6pattern.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/patterns/dense7pattern.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/patterns/diagcrosspattern.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/patterns/fdiagpattern.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/patterns/horpattern.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/patterns/nobrush.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/patterns/solidpattern.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/patterns/verpattern.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/plotpy-banner.svg +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/plotpy-vertical.svg +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/plotpy.svg +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/point_selection.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/print.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/python.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/quickview.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/refresh.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/save_all.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/scales/lin_lin.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/scales/lin_log.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/scales/log_lin.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/scales/log_log.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/select.svg +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/select_area.svg +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/settings.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/shape.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/shapes/circle.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/shapes/contour.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/shapes/ellipse_shape.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/shapes/gtaxes.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/shapes/marker.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/shapes/oblique_rectangle.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/shapes/point_shape.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/shapes/polygon.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/shapes/polyline.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/shapes/rectangle.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/shapes/segment.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/snapshot.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/styles/dash.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/styles/dashdot.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/styles/dashdotdot.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/styles/dot.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/styles/solid.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/trash.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/trimage_lock.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/trimage_unlock.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/vcursor.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/vflip.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/xcursor.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/xmax.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/xmin.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/xrange.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/zlog.svg +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/events.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/external/__init__.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/external/sliders/__init__.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/external/sliders/_generic_range_slider.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/external/sliders/_generic_slider.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/external/sliders/_labeled.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/external/sliders/_misc.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/external/sliders/_range_style.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/external/sliders/_sliders.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/interfaces/__init__.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/interfaces/items.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/interfaces/panel.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/interfaces/plotmanager.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/__init__.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/annotation.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/contour.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/curve/__init__.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/curve/base.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/curve/errorbar.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/grid.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/histogram.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/image/__init__.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/image/base.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/image/misc.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/label.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/polygonmap.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/shape/__init__.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/shape/axis.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/shape/base.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/shape/ellipse.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/shape/marker.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/shape/point.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/shape/polygon.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/shape/range.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/shape/rectangle.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/shape/segment.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/shape/svg.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/lutrange.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/mathutils/__init__.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/mathutils/arrayfuncs.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/mathutils/geometry.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/mathutils/scaler.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/panels/__init__.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/panels/base.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/panels/csection/__init__.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/panels/csection/csplot.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/panels/csection/cswidget.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/panels/itemlist.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/plot/__init__.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/plot/base.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/plot/manager.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/plot/plotwidget.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/pyplot.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/styles/__init__.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/styles/axes.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/styles/base.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/styles/curve.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/styles/errorbar.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/styles/label.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/styles/polygonmap.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/__init__.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/benchmarks/__init__.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/benchmarks/test_benchmarks.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/benchmarks/test_bigimages.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/benchmarks/test_loadtest.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/conftest.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/data/brain.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/data/brain_cylinder.png +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/data/mr-brain.dcm +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/data/svg_target.svg +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/data/svg_tool.svg +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/data.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/__init__.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_auto_curve_image.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_autoscale_shapes.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_builder.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_colormap_editor.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_colormap_manager.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_computations.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_contrast.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_cursors.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_data_update_curve.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_data_update_image.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_dicom_image.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_fit.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_image_coords.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_image_filter.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_image_superp.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_loadsaveitems_hdf5.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_loadsaveitems_json.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_loadsaveitems_pickle.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_manager.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_no_auto_tools.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_plot_log.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_plot_types.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_plot_yreverse.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_pyplot.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_resize.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/items/__init__.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/items/test_annotations.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/items/test_curves.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/items/test_curves_highdpi.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/items/test_hist2d.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/items/test_histogram.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/items/test_image_contour.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/items/test_image_masked.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/items/test_image_masked_xy.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/items/test_image_rgb.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/items/test_image_xy.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/items/test_mandelbrot.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/items/test_pcolor.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/items/test_polygons.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/items/test_svgshapes.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/tools/__init__.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/tools/test_actiontool.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/tools/test_cross_section.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/tools/test_cross_section_line.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/tools/test_cross_section_oblique.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/tools/test_customize_shape_tool.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/tools/test_cyclic_import.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/tools/test_downsample_curve.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/tools/test_edit_point.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/tools/test_get_point.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/tools/test_get_points.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/tools/test_get_rectangle.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/tools/test_get_rectangle_with_svg.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/tools/test_get_segment.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/tools/test_image_plot_tools.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/tools/test_stats_tools.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/tools/test_zaxislog.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/__init__.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_annotation_tools.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_aspect_ratio_tool.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_baseplot.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_builder_annotation.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_builder_curve.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_builder_image.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_builder_shape.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_contour.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_cursor_tools.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_curve_tools.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_display_coords_tool.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_events.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_fontparam.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_geometry.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_io.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_line.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_line_cross_section_tool.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_manipulate_selection.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_mask_tool.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_multiline_tools.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_oblique_cross_section_tool.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_plot_curve.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_plot_image.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_rect_zoom.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_seg_dist.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_styles.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_tools_export.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/utils.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/vistools.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/widgets/__init__.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/widgets/test_dotarraydemo.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/widgets/test_filtertest1.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/widgets/test_filtertest2.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/widgets/test_fliprotate.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/widgets/test_plot_timecurve.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/widgets/test_qtdesigner.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/widgets/test_qtdesigner.ui +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/widgets/test_resize_dialog.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/widgets/test_rotatecrop.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/widgets/test_simple_dialog.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/widgets/test_simple_window.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/widgets/test_syncplot.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/widgets/test_theme.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tools/__init__.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tools/annotation.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tools/axes.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tools/cursor.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tools/item.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tools/label.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tools/plot.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tools/selection.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tools/shape.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/widgets/__init__.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/widgets/about.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/widgets/basetransform.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/widgets/colormap/__init__.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/widgets/colormap/editor.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/widgets/colormap/manager.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/widgets/colormap/widget.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/widgets/fit.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/widgets/fliprotate.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/widgets/imagefile.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/widgets/qtdesigner.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/widgets/resizedialog.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/widgets/rotatecrop.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/widgets/selectdialog.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/plotpy-tests.desktop +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/setup.cfg +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/setup.py +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/src/arrays.hpp +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/src/debug.hpp +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/src/histogram2d.pyx +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/src/mandelbrot.pyx +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/src/pcolor.cpp +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/src/points.hpp +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/src/scaler.cpp +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/src/scaler.hpp +0 -0
- {plotpy-2.7.4 → plotpy-2.7.5}/src/traits.hpp +0 -0
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# Changelog #
|
|
2
2
|
|
|
3
|
+
## Version 2.7.5 ##
|
|
4
|
+
|
|
5
|
+
🛠️ Bug fixes:
|
|
6
|
+
|
|
7
|
+
* [Issue #44](https://github.com/PlotPyStack/PlotPy/issues/44) - Incorrect calculation method for "∑(y)" in `CurveStatsTool`: replaced `spt.trapezoid` with `np.sum`, which is more consistent with the summation operation
|
|
8
|
+
* Fix `update_status` method in all cross-section tools (intensity profile tools):
|
|
9
|
+
* Use `get_items` instead of `get_selected_items` to retrieve the image items
|
|
10
|
+
* This allows the tools to work properly when no image item is selected, but there are image items in the plot
|
|
11
|
+
* This closes [Issue #47](https://github.com/PlotPyStack/PlotPy/issues/47) - Intensity profile tools do not work when no image item is selected
|
|
12
|
+
|
|
13
|
+
Other changes:
|
|
14
|
+
|
|
15
|
+
* Updated `guidata` dependency to V3.10.0
|
|
16
|
+
* Using new `guidata` translation utility based on `babel`
|
|
17
|
+
|
|
3
18
|
## Version 2.7.4 ##
|
|
4
19
|
|
|
5
20
|
In this release, test coverage is 80%.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PlotPy
|
|
3
|
-
Version: 2.7.
|
|
3
|
+
Version: 2.7.5
|
|
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
|
|
@@ -62,17 +62,19 @@ Classifier: Topic :: Utilities
|
|
|
62
62
|
Requires-Python: <4,>=3.9
|
|
63
63
|
Description-Content-Type: text/markdown
|
|
64
64
|
License-File: LICENSE
|
|
65
|
-
Requires-Dist: guidata>=3.
|
|
65
|
+
Requires-Dist: guidata>=3.10
|
|
66
66
|
Requires-Dist: PythonQwt>=0.14
|
|
67
67
|
Requires-Dist: SciPy>=1.5
|
|
68
68
|
Requires-Dist: scikit-image>=0.18
|
|
69
69
|
Requires-Dist: Pillow
|
|
70
70
|
Requires-Dist: tifffile
|
|
71
71
|
Provides-Extra: dev
|
|
72
|
-
Requires-Dist:
|
|
73
|
-
Requires-Dist: pylint; extra == "dev"
|
|
72
|
+
Requires-Dist: babel; extra == "dev"
|
|
74
73
|
Requires-Dist: Coverage; extra == "dev"
|
|
75
74
|
Requires-Dist: Cython>=3.0; extra == "dev"
|
|
75
|
+
Requires-Dist: pylint; extra == "dev"
|
|
76
|
+
Requires-Dist: ruff; extra == "dev"
|
|
77
|
+
Requires-Dist: toml-to-requirements; extra == "dev"
|
|
76
78
|
Provides-Extra: doc
|
|
77
79
|
Requires-Dist: PyQt5; extra == "doc"
|
|
78
80
|
Requires-Dist: sphinx; extra == "doc"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PlotPy
|
|
3
|
-
Version: 2.7.
|
|
3
|
+
Version: 2.7.5
|
|
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
|
|
@@ -62,17 +62,19 @@ Classifier: Topic :: Utilities
|
|
|
62
62
|
Requires-Python: <4,>=3.9
|
|
63
63
|
Description-Content-Type: text/markdown
|
|
64
64
|
License-File: LICENSE
|
|
65
|
-
Requires-Dist: guidata>=3.
|
|
65
|
+
Requires-Dist: guidata>=3.10
|
|
66
66
|
Requires-Dist: PythonQwt>=0.14
|
|
67
67
|
Requires-Dist: SciPy>=1.5
|
|
68
68
|
Requires-Dist: scikit-image>=0.18
|
|
69
69
|
Requires-Dist: Pillow
|
|
70
70
|
Requires-Dist: tifffile
|
|
71
71
|
Provides-Extra: dev
|
|
72
|
-
Requires-Dist:
|
|
73
|
-
Requires-Dist: pylint; extra == "dev"
|
|
72
|
+
Requires-Dist: babel; extra == "dev"
|
|
74
73
|
Requires-Dist: Coverage; extra == "dev"
|
|
75
74
|
Requires-Dist: Cython>=3.0; extra == "dev"
|
|
75
|
+
Requires-Dist: pylint; extra == "dev"
|
|
76
|
+
Requires-Dist: ruff; extra == "dev"
|
|
77
|
+
Requires-Dist: toml-to-requirements; extra == "dev"
|
|
76
78
|
Provides-Extra: doc
|
|
77
79
|
Requires-Dist: PyQt5; extra == "doc"
|
|
78
80
|
Requires-Dist: sphinx; extra == "doc"
|
|
@@ -337,7 +337,6 @@ plotpy/items/shape/range.py
|
|
|
337
337
|
plotpy/items/shape/rectangle.py
|
|
338
338
|
plotpy/items/shape/segment.py
|
|
339
339
|
plotpy/items/shape/svg.py
|
|
340
|
-
plotpy/locale/fr/LC_MESSAGES/plotpy.mo
|
|
341
340
|
plotpy/mathutils/__init__.py
|
|
342
341
|
plotpy/mathutils/arrayfuncs.py
|
|
343
342
|
plotpy/mathutils/colormap.py
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
guidata>=3.
|
|
1
|
+
guidata>=3.10
|
|
2
2
|
PythonQwt>=0.14
|
|
3
3
|
SciPy>=1.5
|
|
4
4
|
scikit-image>=0.18
|
|
@@ -6,10 +6,12 @@ Pillow
|
|
|
6
6
|
tifffile
|
|
7
7
|
|
|
8
8
|
[dev]
|
|
9
|
-
|
|
10
|
-
pylint
|
|
9
|
+
babel
|
|
11
10
|
Coverage
|
|
12
11
|
Cython>=3.0
|
|
12
|
+
pylint
|
|
13
|
+
ruff
|
|
14
|
+
toml-to-requirements
|
|
13
15
|
|
|
14
16
|
[doc]
|
|
15
17
|
PyQt5
|
|
@@ -116,7 +116,7 @@ SORTED_MATPLOTLIB_COLORMAPS: list[str] = [
|
|
|
116
116
|
|
|
117
117
|
|
|
118
118
|
def rgb_colors_to_hex_list(
|
|
119
|
-
colors: list[tuple[int, int, int]]
|
|
119
|
+
colors: list[tuple[int, int, int]],
|
|
120
120
|
) -> list[tuple[float, str]]:
|
|
121
121
|
"""Convert a list of RGB colors to a list of tuples with the position of the color
|
|
122
122
|
and the color in hex format. Positions evenly distributed between 0 and 1.
|
|
@@ -261,7 +261,6 @@ def append_non_mpl_colormaps(mpl_colormaps: CmapDictType, colormaps: CmapDictTyp
|
|
|
261
261
|
|
|
262
262
|
|
|
263
263
|
def main(cmaps: CmapDictType, out_json_path: str = DEFAULT_COLORMAPS_PATH):
|
|
264
|
-
|
|
265
264
|
new_cmaps: dict[str, list[tuple[float, str]]] = {}
|
|
266
265
|
|
|
267
266
|
# Uniform colormaps with a .colors attribute that return a list of RGB colors
|
|
@@ -93,14 +93,9 @@ development environment. The easiest way to do this is to use `virtualenv
|
|
|
93
93
|
<http://pypi.python.org/pypi/virtualenv>`_ and `pip
|
|
94
94
|
<http://pypi.python.org/pypi/pip>`_.
|
|
95
95
|
|
|
96
|
-
|
|
97
|
-
Visual Studio Code (used in `launch.json` and `tasks.json`). These are:
|
|
96
|
+
Visual Studio Code `.env` file:
|
|
98
97
|
|
|
99
|
-
*
|
|
100
|
-
used to launch the application from within Visual Studio Code. If not set,
|
|
101
|
-
the default Python interpreter will be used.
|
|
102
|
-
|
|
103
|
-
* `.env` file: This file is used to set environment variables for the
|
|
98
|
+
* This file is used to set environment variables for the
|
|
104
99
|
application. It is used to set the ``PYTHONPATH`` environment variable to
|
|
105
100
|
the root of the project. This is required to be able to import the project
|
|
106
101
|
modules from within Visual Studio Code. To create this file, copy the
|
|
@@ -37,12 +37,12 @@ which is the reference file for the project dependencies.
|
|
|
37
37
|
Please note that the generation is not systematic and the ``requirements.txt``
|
|
38
38
|
file may not be up-to-date.
|
|
39
39
|
|
|
40
|
-
To update the ``requirements.txt`` file,
|
|
41
|
-
``
|
|
40
|
+
To update the ``requirements.txt`` file, use the Visual Studio task
|
|
41
|
+
``Update requirements.txt`` or execute the following command:
|
|
42
42
|
|
|
43
43
|
.. code-block:: bash
|
|
44
44
|
|
|
45
|
-
toml-to-req --toml-file
|
|
45
|
+
toml-to-req --toml-file pyproject.toml --include-optional-lists dev,doc,test
|
|
46
46
|
|
|
47
47
|
|
|
48
48
|
Microsoft Windows 10
|
|
@@ -75,13 +75,6 @@ That's it, you can now run the tests using the following command:
|
|
|
75
75
|
|
|
76
76
|
pytest plotpy
|
|
77
77
|
|
|
78
|
-
If you want to rely on Visual Studio Code for editing and take advantage of the
|
|
79
|
-
project settings and tasks, you will need to set the following environment variable:
|
|
80
|
-
|
|
81
|
-
.. code-block:: bash
|
|
82
|
-
|
|
83
|
-
set PPSTACK_PYTHONEXE=C:\WPy64-31110\python-3.11.1.amd64\python.exe
|
|
84
|
-
|
|
85
78
|
CentOS Stream 8.8
|
|
86
79
|
^^^^^^^^^^^^^^^^^
|
|
87
80
|
|
|
@@ -11,7 +11,7 @@ The :mod:`plotpy` package requires the following Python modules:
|
|
|
11
11
|
- >=3.9, <4
|
|
12
12
|
- Python programming language
|
|
13
13
|
* - guidata
|
|
14
|
-
- >=3.
|
|
14
|
+
- >=3.10
|
|
15
15
|
- Automatic GUI generation for easy dataset editing and display
|
|
16
16
|
* - PythonQwt
|
|
17
17
|
- >=0.14
|
|
@@ -23,10 +23,10 @@ The :mod:`plotpy` package requires the following Python modules:
|
|
|
23
23
|
- >= 0.18
|
|
24
24
|
- Image processing in Python
|
|
25
25
|
* - Pillow
|
|
26
|
-
-
|
|
26
|
+
-
|
|
27
27
|
- Python Imaging Library (Fork)
|
|
28
28
|
* - tifffile
|
|
29
|
-
-
|
|
29
|
+
-
|
|
30
30
|
- Read and write TIFF files
|
|
31
31
|
* - PyQt5
|
|
32
32
|
- >=5.11
|
|
@@ -41,18 +41,24 @@ Optional modules for development:
|
|
|
41
41
|
* - Name
|
|
42
42
|
- Version
|
|
43
43
|
- Summary
|
|
44
|
-
* -
|
|
45
|
-
-
|
|
46
|
-
-
|
|
47
|
-
* - pylint
|
|
48
|
-
-
|
|
49
|
-
- python code static checker
|
|
44
|
+
* - babel
|
|
45
|
+
-
|
|
46
|
+
- Internationalization utilities
|
|
50
47
|
* - Coverage
|
|
51
|
-
-
|
|
48
|
+
-
|
|
52
49
|
- Code coverage measurement for Python
|
|
53
50
|
* - Cython
|
|
54
|
-
-
|
|
51
|
+
- >=3.0
|
|
55
52
|
- The Cython compiler for writing C extensions in the Python language.
|
|
53
|
+
* - pylint
|
|
54
|
+
-
|
|
55
|
+
- python code static checker
|
|
56
|
+
* - ruff
|
|
57
|
+
-
|
|
58
|
+
- An extremely fast Python linter and code formatter, written in Rust.
|
|
59
|
+
* - toml-to-requirements
|
|
60
|
+
-
|
|
61
|
+
- Convert a pyproject.toml file to a requirements.txt file
|
|
56
62
|
|
|
57
63
|
Optional modules for building the documentation:
|
|
58
64
|
|
|
@@ -64,22 +70,22 @@ Optional modules for building the documentation:
|
|
|
64
70
|
- Version
|
|
65
71
|
- Summary
|
|
66
72
|
* - PyQt5
|
|
67
|
-
-
|
|
73
|
+
-
|
|
68
74
|
- Python bindings for the Qt cross platform application toolkit
|
|
69
75
|
* - sphinx
|
|
70
|
-
-
|
|
76
|
+
-
|
|
71
77
|
- Python documentation generator
|
|
72
78
|
* - myst_parser
|
|
73
|
-
-
|
|
79
|
+
-
|
|
74
80
|
- An extended [CommonMark](https://spec.commonmark.org/) compliant parser,
|
|
75
81
|
* - sphinx-copybutton
|
|
76
|
-
-
|
|
82
|
+
-
|
|
77
83
|
- Add a copy button to each of your code cells.
|
|
78
84
|
* - sphinx_qt_documentation
|
|
79
|
-
-
|
|
85
|
+
-
|
|
80
86
|
- Plugin for proper resolve intersphinx references for Qt elements
|
|
81
87
|
* - python-docs-theme
|
|
82
|
-
-
|
|
88
|
+
-
|
|
83
89
|
- The Sphinx theme for the CPython docs and related projects
|
|
84
90
|
|
|
85
91
|
Optional modules for running test suite:
|
|
@@ -92,8 +98,8 @@ Optional modules for running test suite:
|
|
|
92
98
|
- Version
|
|
93
99
|
- Summary
|
|
94
100
|
* - pytest
|
|
95
|
-
-
|
|
101
|
+
-
|
|
96
102
|
- pytest: simple powerful testing with Python
|
|
97
103
|
* - pytest-xvfb
|
|
98
|
-
-
|
|
104
|
+
-
|
|
99
105
|
- A pytest plugin to run Xvfb (or Xephyr/Xvnc) for tests.
|
|
@@ -20,7 +20,7 @@ External resources:
|
|
|
20
20
|
.. _GitHub: https://github.com/PierreRaybaut/plotpy
|
|
21
21
|
"""
|
|
22
22
|
|
|
23
|
-
__version__ = "2.7.
|
|
23
|
+
__version__ = "2.7.5"
|
|
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
|
|
@@ -247,9 +247,9 @@ class ImageBuilder:
|
|
|
247
247
|
)
|
|
248
248
|
assert data.ndim == 2, "Data must have 2 dimensions"
|
|
249
249
|
if pixel_size is None:
|
|
250
|
-
assert (
|
|
251
|
-
|
|
252
|
-
)
|
|
250
|
+
assert center_on is None, (
|
|
251
|
+
"Argument `pixel_size` must be specified when `center_on`"
|
|
252
|
+
)
|
|
253
253
|
xmin, xmax = xdata
|
|
254
254
|
ymin, ymax = ydata
|
|
255
255
|
else:
|
|
@@ -419,8 +419,7 @@ def _imread_dcm(filename, **kwargs):
|
|
|
419
419
|
arr = arr.reshape(spp, dcm.Rows, dcm.Columns)
|
|
420
420
|
else:
|
|
421
421
|
raise NotImplementedError(
|
|
422
|
-
"This code only handles "
|
|
423
|
-
"SamplesPerPixel > 1 if Bits Allocated = 8"
|
|
422
|
+
"This code only handles SamplesPerPixel > 1 if Bits Allocated = 8"
|
|
424
423
|
)
|
|
425
424
|
else:
|
|
426
425
|
arr = arr.reshape(dcm.Rows, dcm.Columns)
|
|
@@ -149,7 +149,6 @@ class MaskedImageMixin:
|
|
|
149
149
|
def update_mask(self) -> None:
|
|
150
150
|
"""Update mask"""
|
|
151
151
|
if isinstance(self.data, np.ma.MaskedArray):
|
|
152
|
-
|
|
153
152
|
# Casting filling_value to data dtype, otherwise this may raise an error
|
|
154
153
|
# in future versions of NumPy (at the time of writing, this raises a
|
|
155
154
|
# DeprecationWarning "NumPy will stop allowing conversion of out-of-bound
|
|
@@ -136,7 +136,9 @@ DEFAULT_COLORMAPS_PATH = get_cmap_path(
|
|
|
136
136
|
# Load custom colormaps path from the config file
|
|
137
137
|
CUSTOM_COLORMAPS_PATH = get_cmap_path(
|
|
138
138
|
CONF.get(
|
|
139
|
-
"colormaps",
|
|
139
|
+
"colormaps",
|
|
140
|
+
"colormaps/custom",
|
|
141
|
+
default="colormaps_custom.json", # type: ignore
|
|
140
142
|
)
|
|
141
143
|
)
|
|
142
144
|
|
|
@@ -543,7 +543,7 @@ class ContrastAdjustment(PanelWidget):
|
|
|
543
543
|
_("Full range"),
|
|
544
544
|
icon=get_icon("full_range.png"),
|
|
545
545
|
triggered=self.histogram.set_full_range,
|
|
546
|
-
tip=_("Scale the image's display range
|
|
546
|
+
tip=_("Scale the image's display range according to data range"),
|
|
547
547
|
)
|
|
548
548
|
outliers_ac = create_action(
|
|
549
549
|
self,
|
|
@@ -829,7 +829,7 @@ def savefig(fname, format=None):
|
|
|
829
829
|
format = fname.rsplit(".", 1)[-1].lower()
|
|
830
830
|
fmts = [fmt.data().decode() for fmt in QG.QImageWriter.supportedImageFormats()]
|
|
831
831
|
assert format in fmts, _(
|
|
832
|
-
"Function 'savefig' currently supports the
|
|
832
|
+
"Function 'savefig' currently supports the following formats:\n%s"
|
|
833
833
|
) % ", ".join(fmts)
|
|
834
834
|
else:
|
|
835
835
|
format = format.lower()
|
|
@@ -89,7 +89,7 @@ class Histogram2DParam(BaseImageParam):
|
|
|
89
89
|
auto_lut = BoolItem(
|
|
90
90
|
_("Automatic LUT range"),
|
|
91
91
|
default=True,
|
|
92
|
-
help=_("Automatically adapt color scale
|
|
92
|
+
help=_("Automatically adapt color scale when panning, zooming"),
|
|
93
93
|
)
|
|
94
94
|
background = ColorItem(
|
|
95
95
|
_("Background color"),
|
|
@@ -224,9 +224,7 @@ class QuadGridParam(DataSet):
|
|
|
224
224
|
[(0, _("Quadrangle interpolation")), (1, _("Flat"))],
|
|
225
225
|
default=0,
|
|
226
226
|
help=_(
|
|
227
|
-
"Image interpolation type, "
|
|
228
|
-
"Flat mode use fixed u,v "
|
|
229
|
-
"interpolation parameters"
|
|
227
|
+
"Image interpolation type, Flat mode use fixed u,v interpolation parameters"
|
|
230
228
|
),
|
|
231
229
|
)
|
|
232
230
|
uflat = FloatItem(
|
|
@@ -164,12 +164,12 @@ class ShapeParam(DataSet):
|
|
|
164
164
|
readonly = BoolItem(
|
|
165
165
|
_("Read-only shape"),
|
|
166
166
|
default=False,
|
|
167
|
-
help=_("Read-only shapes can't be removed from
|
|
167
|
+
help=_("Read-only shapes can't be removed from the item list panel"),
|
|
168
168
|
)
|
|
169
169
|
private = BoolItem(
|
|
170
170
|
_("Private shape"),
|
|
171
171
|
default=False,
|
|
172
|
-
help=_("Private shapes are not shown in
|
|
172
|
+
help=_("Private shapes are not shown in the item list panel"),
|
|
173
173
|
).set_pos(col=1)
|
|
174
174
|
|
|
175
175
|
def update_param(self, obj: PolygonShape) -> None:
|
|
@@ -305,7 +305,7 @@ class AnnotationParam(DataSet):
|
|
|
305
305
|
_multiselection = False
|
|
306
306
|
show_label = BoolItem(_("Show annotation"), default=True)
|
|
307
307
|
show_computations = BoolItem(
|
|
308
|
-
_("Show informations on area
|
|
308
|
+
_("Show informations on area covered by this shape"), default=True
|
|
309
309
|
)
|
|
310
310
|
show_subtitle = BoolItem(_("Show subtitle"), default=True)
|
|
311
311
|
title = StringItem(_("Title"), default="").set_prop(
|
|
@@ -328,12 +328,12 @@ class AnnotationParam(DataSet):
|
|
|
328
328
|
readonly = BoolItem(
|
|
329
329
|
_("Read-only shape"),
|
|
330
330
|
default=False,
|
|
331
|
-
help=_("Read-only shapes can't be removed from
|
|
331
|
+
help=_("Read-only shapes can't be removed from the item list panel"),
|
|
332
332
|
)
|
|
333
333
|
private = BoolItem(
|
|
334
334
|
_("Private shape"),
|
|
335
335
|
default=False,
|
|
336
|
-
help=_("Private shapes are not shown in
|
|
336
|
+
help=_("Private shapes are not shown in the item list panel"),
|
|
337
337
|
).set_pos(col=1)
|
|
338
338
|
|
|
339
339
|
def update_param(self, obj: AnnotatedShape) -> None:
|
|
@@ -17,7 +17,7 @@ from plotpy.tests import vistools as ptv
|
|
|
17
17
|
def test_image():
|
|
18
18
|
"""Testing ImageItem object"""
|
|
19
19
|
for index, func in enumerate((ptd.gen_image1, ptd.gen_image2, ptd.gen_image3)):
|
|
20
|
-
title = test_image.__doc__ + f" #{index+1}"
|
|
20
|
+
title = test_image.__doc__ + f" #{index + 1}"
|
|
21
21
|
data = func()
|
|
22
22
|
with qt_app_context(exec_loop=True):
|
|
23
23
|
_win = ptv.show_items([make.image(data)], wintitle=title)
|
|
@@ -184,7 +184,7 @@ def build_image(items: list[TrImageItem]) -> None:
|
|
|
184
184
|
if not execenv.unattended:
|
|
185
185
|
save_image("test1", dest)
|
|
186
186
|
print("-" * 80)
|
|
187
|
-
print(f"Assemble test1: {int(w/4)} x {int(h/4)}")
|
|
187
|
+
print(f"Assemble test1: {int(w / 4)} x {int(h / 4)}")
|
|
188
188
|
dest = assemble_imageitems(items, r, w / 4, h / 4)
|
|
189
189
|
if not execenv.unattended:
|
|
190
190
|
save_image("test2", dest)
|
|
@@ -22,6 +22,8 @@ if TYPE_CHECKING:
|
|
|
22
22
|
|
|
23
23
|
from qtpy.QtCore import QPointF
|
|
24
24
|
|
|
25
|
+
from plotpy.interfaces import ICurveItemType, IImageItemType
|
|
26
|
+
from plotpy.items import BaseImageItem, CurveItem
|
|
25
27
|
from plotpy.plot import BasePlot, PlotManager
|
|
26
28
|
|
|
27
29
|
|
|
@@ -644,3 +646,40 @@ class RectangularActionTool(InteractiveTool):
|
|
|
644
646
|
if self.switch_to_default_tool:
|
|
645
647
|
shape = self.get_last_final_shape()
|
|
646
648
|
plot.set_active_item(shape)
|
|
649
|
+
|
|
650
|
+
|
|
651
|
+
class LastItemHolder:
|
|
652
|
+
"""Class to hold a weak reference to the last item"""
|
|
653
|
+
|
|
654
|
+
def __init__(self, item_type: IImageItemType | ICurveItemType) -> None:
|
|
655
|
+
self._item_type = item_type
|
|
656
|
+
self._last_item: weakref.ReferenceType[CurveItem | BaseImageItem] | None = None
|
|
657
|
+
|
|
658
|
+
def set(self, item: CurveItem | BaseImageItem) -> None:
|
|
659
|
+
"""Set the last item
|
|
660
|
+
|
|
661
|
+
Args:
|
|
662
|
+
item: BaseImageItem instance
|
|
663
|
+
"""
|
|
664
|
+
self._last_item = weakref.ref(item)
|
|
665
|
+
|
|
666
|
+
def get(self) -> CurveItem | BaseImageItem | None:
|
|
667
|
+
"""Get the last item
|
|
668
|
+
|
|
669
|
+
Returns:
|
|
670
|
+
BaseImageItem instance or None
|
|
671
|
+
"""
|
|
672
|
+
if self._last_item is not None:
|
|
673
|
+
return self._last_item()
|
|
674
|
+
return None
|
|
675
|
+
|
|
676
|
+
def update_from_selection(self, plot: BasePlot) -> CurveItem | BaseImageItem | None:
|
|
677
|
+
"""Update the last item from the selected items of the plot, and return it.
|
|
678
|
+
|
|
679
|
+
Args:
|
|
680
|
+
plot: BasePlot instance
|
|
681
|
+
"""
|
|
682
|
+
items = plot.get_selected_items(item_type=self._item_type)
|
|
683
|
+
if len(items) == 1:
|
|
684
|
+
self.set(items[0])
|
|
685
|
+
return self.get()
|
|
@@ -33,7 +33,7 @@ class CrossSectionTool(RectangularShapeTool):
|
|
|
33
33
|
def update_status(self, plot: BasePlot) -> None:
|
|
34
34
|
"""Update status of the tool"""
|
|
35
35
|
if update_image_tool_status(self, plot):
|
|
36
|
-
item = plot.
|
|
36
|
+
item = plot.get_items(item_type=IImageItemType)
|
|
37
37
|
self.action.setEnabled(len(item) > 0)
|
|
38
38
|
|
|
39
39
|
def create_shape(self) -> AnnotatedPoint:
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
|
|
4
4
|
from __future__ import annotations
|
|
5
5
|
|
|
6
|
-
import weakref
|
|
7
6
|
from typing import TYPE_CHECKING, Any, Callable
|
|
8
7
|
|
|
9
8
|
import numpy as np
|
|
@@ -28,7 +27,12 @@ from plotpy.events import (
|
|
|
28
27
|
from plotpy.interfaces import ICurveItemType
|
|
29
28
|
from plotpy.items import Marker, XRangeSelection
|
|
30
29
|
from plotpy.items.curve.base import CurveItem
|
|
31
|
-
from plotpy.tools.base import
|
|
30
|
+
from plotpy.tools.base import (
|
|
31
|
+
DefaultToolbarID,
|
|
32
|
+
InteractiveTool,
|
|
33
|
+
LastItemHolder,
|
|
34
|
+
ToggleTool,
|
|
35
|
+
)
|
|
32
36
|
from plotpy.tools.cursor import BaseCursorTool
|
|
33
37
|
|
|
34
38
|
if TYPE_CHECKING:
|
|
@@ -66,7 +70,7 @@ class CurveStatsTool(BaseCursorTool):
|
|
|
66
70
|
tip: str | None = None,
|
|
67
71
|
) -> None:
|
|
68
72
|
super().__init__(manager, toolbar_id, title=title, icon=icon, tip=tip)
|
|
69
|
-
self.
|
|
73
|
+
self.last_item_holder = LastItemHolder(ICurveItemType)
|
|
70
74
|
self.label: DataInfoLabel | None = None
|
|
71
75
|
if labelfuncs is None:
|
|
72
76
|
labelfuncs: tuple[tuple[str, Callable[..., Any]], ...] = (
|
|
@@ -74,7 +78,7 @@ class CurveStatsTool(BaseCursorTool):
|
|
|
74
78
|
("%g < y < %g", lambda *args: (args[1].min(), args[1].max())),
|
|
75
79
|
("<y>=%g", lambda *args: args[1].mean()),
|
|
76
80
|
("σ(y)=%g", lambda *args: args[1].std()),
|
|
77
|
-
("∑(y)=%g", lambda *args:
|
|
81
|
+
("∑(y)=%g", lambda *args: np.sum(args[1])),
|
|
78
82
|
("∫ydx=%g", lambda *args: spt.trapezoid(args[1], args[0])),
|
|
79
83
|
)
|
|
80
84
|
self.labelfuncs = labelfuncs
|
|
@@ -96,18 +100,12 @@ class CurveStatsTool(BaseCursorTool):
|
|
|
96
100
|
("%g < y < %g", lambda *args: (args[1].min(), args[1].max())),
|
|
97
101
|
("<y>=%g", lambda *args: args[1].mean()),
|
|
98
102
|
("σ(y)=%g", lambda *args: args[1].std()),
|
|
99
|
-
("∑(y)=%g", lambda *args:
|
|
103
|
+
("∑(y)=%g", lambda *args: np.sum(args[1])),
|
|
100
104
|
("∫ydx=%g", lambda *args: spt.trapezoid(args[1], args[0])),
|
|
101
105
|
)
|
|
102
106
|
"""
|
|
103
107
|
self.labelfuncs = labelfuncs
|
|
104
108
|
|
|
105
|
-
def get_last_item(self) -> CurveItem | None:
|
|
106
|
-
"""Get last item on which the tool was used"""
|
|
107
|
-
if self._last_item is not None:
|
|
108
|
-
return self._last_item()
|
|
109
|
-
return None
|
|
110
|
-
|
|
111
109
|
def create_shape(self) -> XRangeSelection:
|
|
112
110
|
"""Create shape associated with the tool"""
|
|
113
111
|
return XRangeSelection(0, 0)
|
|
@@ -119,7 +117,7 @@ class CurveStatsTool(BaseCursorTool):
|
|
|
119
117
|
from plotpy.builder import make
|
|
120
118
|
|
|
121
119
|
plot = self.manager.get_plot()
|
|
122
|
-
curve = self.
|
|
120
|
+
curve = self.last_item_holder.update_from_selection(plot)
|
|
123
121
|
specs = [(curve, label, func) for label, func in self.labelfuncs]
|
|
124
122
|
title: QwtText = curve.title()
|
|
125
123
|
label = make.computations(self.shape, "TL", specs, title.text())
|
|
@@ -151,27 +149,13 @@ class CurveStatsTool(BaseCursorTool):
|
|
|
151
149
|
filter.plot.add_item_with_z_offset(self.label, SHAPE_Z_OFFSET)
|
|
152
150
|
self.label = None
|
|
153
151
|
|
|
154
|
-
def get_associated_item(self, plot: BasePlot) -> CurveItem | None:
|
|
155
|
-
"""Get associated item
|
|
156
|
-
|
|
157
|
-
Args:
|
|
158
|
-
plot: BasePlot instance
|
|
159
|
-
|
|
160
|
-
Returns:
|
|
161
|
-
curve item or None
|
|
162
|
-
"""
|
|
163
|
-
items = plot.get_selected_items(item_type=ICurveItemType)
|
|
164
|
-
if len(items) == 1:
|
|
165
|
-
self._last_item = weakref.ref(items[0])
|
|
166
|
-
return self.get_last_item()
|
|
167
|
-
|
|
168
152
|
def update_status(self, plot: BasePlot) -> None:
|
|
169
153
|
"""Update tool status
|
|
170
154
|
|
|
171
155
|
Args:
|
|
172
156
|
plot: BasePlot instance
|
|
173
157
|
"""
|
|
174
|
-
item = self.
|
|
158
|
+
item = self.last_item_holder.update_from_selection(plot)
|
|
175
159
|
self.action.setEnabled(item is not None)
|
|
176
160
|
|
|
177
161
|
|