PlotPy 2.8.3__tar.gz → 2.9.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {plotpy-2.8.3 → plotpy-2.9.0}/PKG-INFO +12 -7
- {plotpy-2.8.3 → plotpy-2.9.0}/PlotPy.egg-info/PKG-INFO +12 -7
- {plotpy-2.8.3 → plotpy-2.9.0}/PlotPy.egg-info/SOURCES.txt +7 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/PlotPy.egg-info/requires.txt +3 -1
- {plotpy-2.8.3 → plotpy-2.9.0}/README.md +7 -5
- plotpy-2.9.0/doc/dev/gitworkflow.rst +311 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/dev/index.rst +1 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/features/colormapmanager.rst +1 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/features/items/overview.rst +7 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/features/items/reference.rst +6 -0
- plotpy-2.9.0/doc/features/mathutils/colormaps.rst +2 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/intro/examples.rst +2 -2
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/release_notes/release_2.07.md +3 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/release_notes/release_2.08.md +27 -1
- plotpy-2.9.0/doc/release_notes/release_2.09.md +58 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/requirements.rst +16 -16
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/__init__.py +1 -1
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/builder/curvemarker.py +74 -6
- plotpy-2.9.0/plotpy/data/icons/items/quiver.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/events.py +6 -6
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/io.py +7 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/items/__init__.py +1 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/items/curve/errorbar.py +4 -4
- plotpy-2.9.0/plotpy/items/quiver.py +513 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/locale/fr/LC_MESSAGES/plotpy.mo +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/mathutils/arrayfuncs.py +16 -4
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/mathutils/geometry.py +6 -1
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/plot/base.py +10 -10
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/plot/interactive.py +32 -9
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/plot/plotwidget.py +28 -10
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/styles/shape.py +14 -3
- plotpy-2.9.0/plotpy/tests/benchmarks/test_bigcurves.py +89 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/benchmarks/test_large_number_of_annotations.py +2 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/features/test_pyplot.py +7 -0
- plotpy-2.9.0/plotpy/tests/features/test_quiver.py +75 -0
- plotpy-2.9.0/plotpy/tests/unit/test_arrayfuncs.py +49 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/unit/test_geometry.py +14 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/unit/test_io.py +30 -1
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/unit/test_multiline_tools.py +4 -1
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/unit/test_styles.py +24 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/vistools.py +2 -2
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/widgets/test_plot_timecurve.py +1 -1
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tools/base.py +13 -7
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tools/curve.py +1 -1
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tools/image.py +12 -5
- plotpy-2.9.0/plotpy/widgets/colormap/__init__.py +15 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/widgets/colormap/manager.py +47 -2
- {plotpy-2.8.3 → plotpy-2.9.0}/pyproject.toml +8 -6
- {plotpy-2.8.3 → plotpy-2.9.0}/requirements.txt +2 -1
- {plotpy-2.8.3 → plotpy-2.9.0}/src/histogram2d.c +275 -268
- {plotpy-2.8.3 → plotpy-2.9.0}/src/mandelbrot.c +275 -268
- plotpy-2.8.3/doc/features/mathutils/colormaps.rst +0 -1
- plotpy-2.8.3/plotpy/widgets/colormap/__init__.py +0 -16
- {plotpy-2.8.3 → plotpy-2.9.0}/LICENSE +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/MANIFEST.in +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/PlotPy.egg-info/dependency_links.txt +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/PlotPy.egg-info/entry_points.txt +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/PlotPy.egg-info/top_level.txt +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/colormaps/README.md +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/colormaps/_cm.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/colormaps/colormap.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/colormaps/matplotlib_cmaps.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/_static/favicon.ico +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/conf.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/dev/build.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/dev/contribute.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/dev/guiqwt_to_plotpy.csv +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/dev/guiqwt_to_plotpy.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/dev/platforms.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/dev/v1_to_guidata_v3.csv +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/dev/v1_to_v2.csv +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/dev/v1_to_v2.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/features/events.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/features/fit.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/features/fliprotate.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/features/imagefile.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/features/index.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/features/io.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/features/items/builder.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/features/items/examples.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/features/items/index.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/features/mathutils/geometry.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/features/mathutils/index.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/features/mathutils/scaler.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/features/panels/index.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/features/panels/overview.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/features/panels/reference.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/features/plot/examples.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/features/plot/index.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/features/plot/overview.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/features/plot/reference.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/features/pyplot.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/features/resizedialog.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/features/rotatecrop.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/features/selectdialog.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/features/signals.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/features/styles/index.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/features/styles/overview.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/features/styles/reference.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/features/tools/examples.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/features/tools/index.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/features/tools/overview.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/features/tools/reference.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/images/my_plot_manager.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/images/my_plot_manager.svg +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/images/panorama-vertical.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/images/panorama-vertical.svg +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/images/panorama.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/images/panorama.svg +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/images/plot_widgets.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/images/plot_widgets.svg +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/images/plotpy-banner.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/images/plotpy-vertical.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/images/screenshots/__init__.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/images/screenshots/computations.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/images/screenshots/contrast.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/images/screenshots/cross_section.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/images/screenshots/cross_section2.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/images/screenshots/dotarraydemo.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/images/screenshots/filtertest1.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/images/screenshots/filtertest2.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/images/screenshots/fit.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/images/screenshots/get_point.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/images/screenshots/hist2d.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/images/screenshots/image_plot_tools.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/images/screenshots/imagefilter.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/images/screenshots/imagesuperp.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/images/screenshots/imagexy.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/images/screenshots/manager.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/images/screenshots/mandelbrot.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/images/screenshots/pcolor.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/images/screenshots/plot.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/images/screenshots/simple_dialog.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/images/screenshots/simple_window.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/images/screenshots/transform.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/index.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/intro/index.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/intro/installation.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/intro/licenses.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/intro/motivation.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/intro/overview.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/release_notes/index.rst +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/release_notes/release_2.00.md +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/release_notes/release_2.01.md +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/release_notes/release_2.02.md +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/release_notes/release_2.03.md +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/release_notes/release_2.04.md +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/release_notes/release_2.05.md +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/doc/release_notes/release_2.06.md +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/builder/__init__.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/builder/annotation.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/builder/image.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/builder/label.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/builder/plot.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/builder/shape.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/config.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/constants.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/coords.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/colormaps_default.json +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/apply.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/arredit.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/arrow_down.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/arrow_up.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/autorefresh.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/autoscale.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/axes.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/busy.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/cell_edit.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/center.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/cmap_edit.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/contrast.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/copy.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/copytoclipboard.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/csapplylut.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/csautoscale.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/csection.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/csection_a.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/csection_line.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/csection_oblique.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/csperimage.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/curve_downsample.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/curvestyles/dots.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/curvestyles/lines.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/curvestyles/steps.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/curvestyles/sticks.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/curvetypes/xfy.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/curvetypes/yfx.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/delete.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/edit.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/edit_point_selection.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/editors/edit.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/editors/edit_add.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/editors/editcopy.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/editors/editdelete.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/editors/editpaste.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/editors/fileimport.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/editors/filesave.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/editors/imshow.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/editors/insert.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/editors/plot.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/editors/rename.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/eliminate_outliers.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/eraser.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/exit.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/expander_down.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/expander_right.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/export.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/file.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/fileclose.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/fileimport.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/filenew.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/fileopen.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/filesave.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/filesaveas.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/filetypes/doc.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/filetypes/gif.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/filetypes/html.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/filetypes/jpg.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/filetypes/pdf.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/filetypes/png.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/filetypes/pps.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/filetypes/ps.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/filetypes/tar.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/filetypes/tgz.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/filetypes/tif.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/filetypes/txt.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/filetypes/xls.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/filetypes/zip.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/font.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/full_range.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/funct.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/hcursor.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/hflip.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/imagestats.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/item_list.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/items/annotation.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/items/curve.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/items/errorbar.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/items/grid.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/items/histogram.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/items/histogram2d.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/items/image.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/items/label.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/items/legend.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/items/polygonmap.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/magnifier.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/markers/cross.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/markers/diamond.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/markers/ellipse.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/markers/hexagon.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/markers/point.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/markers/square.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/markers/star.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/markers/triangle_d.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/markers/triangle_l.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/markers/triangle_r.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/markers/triangle_u.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/markers/xcross.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/markerstyles/cross_marker.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/markerstyles/horiz_marker.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/markerstyles/vert_marker.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/mask/mask_circle.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/mask/mask_circle_outside.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/mask/mask_rectangle.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/mask/mask_rectangle_outside.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/mask/mask_tool.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/max.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/min.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/move.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/multipoint_selection.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/none.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/not_found.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/on_curve.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/patterns/bdiagpattern.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/patterns/crosspattern.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/patterns/dense1pattern.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/patterns/dense2pattern.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/patterns/dense3pattern.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/patterns/dense4pattern.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/patterns/dense5pattern.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/patterns/dense6pattern.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/patterns/dense7pattern.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/patterns/diagcrosspattern.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/patterns/fdiagpattern.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/patterns/horpattern.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/patterns/nobrush.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/patterns/solidpattern.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/patterns/verpattern.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/plotpy-banner.svg +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/plotpy-vertical.svg +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/plotpy.svg +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/point_selection.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/print.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/python.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/quickview.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/refresh.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/save_all.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/scales/lin_lin.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/scales/lin_log.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/scales/log_lin.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/scales/log_log.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/select.svg +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/select_area.svg +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/settings.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/shape.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/shapes/circle.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/shapes/contour.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/shapes/ellipse_shape.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/shapes/gtaxes.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/shapes/marker.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/shapes/oblique_rectangle.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/shapes/point_shape.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/shapes/polygon.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/shapes/polyline.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/shapes/rectangle.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/shapes/segment.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/shapes/xrange.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/shapes/yrange.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/snapshot.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/styles/dash.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/styles/dashdot.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/styles/dashdotdot.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/styles/dot.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/styles/solid.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/trash.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/trimage_lock.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/trimage_unlock.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/vcursor.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/vflip.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/xcursor.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/xmax.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/xmin.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/data/icons/zlog.svg +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/external/__init__.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/external/sliders/__init__.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/external/sliders/_generic_range_slider.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/external/sliders/_generic_slider.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/external/sliders/_labeled.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/external/sliders/_misc.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/external/sliders/_range_style.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/external/sliders/_sliders.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/interfaces/__init__.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/interfaces/items.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/interfaces/panel.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/interfaces/plotmanager.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/items/annotation.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/items/contour.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/items/curve/__init__.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/items/curve/base.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/items/grid.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/items/histogram.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/items/image/__init__.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/items/image/base.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/items/image/filter.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/items/image/masked.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/items/image/misc.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/items/image/standard.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/items/image/transform.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/items/label.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/items/polygonmap.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/items/shape/__init__.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/items/shape/axis.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/items/shape/base.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/items/shape/ellipse.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/items/shape/marker.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/items/shape/point.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/items/shape/polygon.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/items/shape/range.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/items/shape/rectangle.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/items/shape/segment.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/items/shape/svg.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/lutrange.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/mathutils/__init__.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/mathutils/colormap.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/mathutils/scaler.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/panels/__init__.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/panels/base.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/panels/contrastadjustment.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/panels/csection/__init__.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/panels/csection/csitem.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/panels/csection/csplot.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/panels/csection/cswidget.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/panels/itemlist.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/plot/__init__.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/plot/manager.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/pyplot.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/styles/__init__.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/styles/axes.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/styles/base.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/styles/curve.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/styles/errorbar.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/styles/histogram.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/styles/image.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/styles/label.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/styles/polygonmap.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/__init__.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/benchmarks/__init__.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/benchmarks/test_benchmarks.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/benchmarks/test_bigimages.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/benchmarks/test_loadtest.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/conftest.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/data/brain.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/data/brain_cylinder.png +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/data/datetime.txt +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/data/mr-brain.dcm +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/data/svg_target.svg +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/data/svg_tool.svg +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/data.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/features/__init__.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/features/test_auto_curve_image.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/features/test_autoscale_shapes.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/features/test_builder.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/features/test_colormap_editor.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/features/test_colormap_manager.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/features/test_computations.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/features/test_contrast.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/features/test_cursors.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/features/test_data_update_curve.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/features/test_data_update_image.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/features/test_dicom_image.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/features/test_fit.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/features/test_fit_locked_params.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/features/test_image_coords.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/features/test_image_filter.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/features/test_image_superp.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/features/test_loadsaveitems_hdf5.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/features/test_loadsaveitems_json.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/features/test_loadsaveitems_pickle.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/features/test_manager.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/features/test_no_auto_tools.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/features/test_plot_log.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/features/test_plot_time.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/features/test_plot_types.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/features/test_plot_yreverse.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/features/test_resize.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/items/__init__.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/items/test_annotated_range.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/items/test_annotations.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/items/test_curves.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/items/test_curves_highdpi.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/items/test_hist2d.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/items/test_histogram.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/items/test_image.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/items/test_image_aspect_ratio.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/items/test_image_contour.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/items/test_image_masked.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/items/test_image_masked_xy.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/items/test_image_rgb.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/items/test_image_xy.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/items/test_mandelbrot.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/items/test_pcolor.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/items/test_polygons.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/items/test_svgshapes.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/items/test_to_bins.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/items/test_transform.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/tools/__init__.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/tools/test_actiontool.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/tools/test_cross_section.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/tools/test_cross_section_line.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/tools/test_cross_section_oblique.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/tools/test_customize_shape_tool.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/tools/test_cyclic_import.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/tools/test_downsample_curve.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/tools/test_edit_point.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/tools/test_get_point.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/tools/test_get_points.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/tools/test_get_rectangle.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/tools/test_get_rectangle_with_svg.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/tools/test_get_segment.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/tools/test_image_plot_tools.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/tools/test_stats_tools.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/tools/test_zaxislog.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/unit/__init__.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/unit/test_annotation_tools.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/unit/test_aspect_ratio_tool.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/unit/test_baseplot.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/unit/test_builder_annotation.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/unit/test_builder_curve.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/unit/test_builder_image.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/unit/test_builder_shape.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/unit/test_contour.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/unit/test_cursor_tools.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/unit/test_curve_tools.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/unit/test_datetime_axis.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/unit/test_display_coords_tool.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/unit/test_events.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/unit/test_fontparam.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/unit/test_line.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/unit/test_line_cross_section_tool.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/unit/test_manipulate_selection.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/unit/test_mask_tool.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/unit/test_masked_dtype_change.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/unit/test_oblique_cross_section_tool.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/unit/test_plot_curve.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/unit/test_plot_image.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/unit/test_rect_zoom.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/unit/test_seg_dist.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/unit/test_tools_export.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/unit/utils.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/widgets/__init__.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/widgets/test_dotarraydemo.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/widgets/test_filtertest1.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/widgets/test_filtertest2.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/widgets/test_fliprotate.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/widgets/test_qtdesigner.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/widgets/test_qtdesigner.ui +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/widgets/test_resize_dialog.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/widgets/test_rotatecrop.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/widgets/test_simple_dialog.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/widgets/test_simple_window.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/widgets/test_syncplot.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tests/widgets/test_theme.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tools/__init__.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tools/annotation.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tools/axes.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tools/cross_section.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tools/cursor.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tools/item.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tools/label.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tools/misc.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tools/plot.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tools/selection.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/tools/shape.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/widgets/__init__.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/widgets/about.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/widgets/basetransform.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/widgets/colormap/_slider.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/widgets/colormap/editor.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/widgets/colormap/widget.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/widgets/fit.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/widgets/fliprotate.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/widgets/imagefile.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/widgets/qtdesigner.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/widgets/resizedialog.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/widgets/rotatecrop.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy/widgets/selectdialog.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/plotpy-tests.desktop +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/qtdesigner/plotplugin.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/setup.cfg +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/setup.py +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/src/arrays.hpp +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/src/debug.hpp +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/src/histogram2d.pyx +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/src/mandelbrot.pyx +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/src/pcolor.cpp +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/src/points.hpp +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/src/scaler.cpp +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/src/scaler.hpp +0 -0
- {plotpy-2.8.3 → plotpy-2.9.0}/src/traits.hpp +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PlotPy
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.9.0
|
|
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
|
|
@@ -50,6 +50,7 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
50
50
|
Classifier: Programming Language :: Python :: 3.11
|
|
51
51
|
Classifier: Programming Language :: Python :: 3.12
|
|
52
52
|
Classifier: Programming Language :: Python :: 3.13
|
|
53
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
53
54
|
Classifier: Topic :: Scientific/Engineering
|
|
54
55
|
Classifier: Topic :: Scientific/Engineering :: Image Processing
|
|
55
56
|
Classifier: Topic :: Scientific/Engineering :: Human Machine Interfaces
|
|
@@ -61,7 +62,7 @@ Classifier: Topic :: Utilities
|
|
|
61
62
|
Requires-Python: <4,>=3.9
|
|
62
63
|
Description-Content-Type: text/markdown
|
|
63
64
|
License-File: LICENSE
|
|
64
|
-
Requires-Dist: guidata>=3.
|
|
65
|
+
Requires-Dist: guidata>=3.14.1
|
|
65
66
|
Requires-Dist: PythonQwt>=0.15
|
|
66
67
|
Requires-Dist: numpy>=1.22
|
|
67
68
|
Requires-Dist: SciPy>=1.7.3
|
|
@@ -78,6 +79,8 @@ Requires-Dist: Cython>=3.0; extra == "dev"
|
|
|
78
79
|
Requires-Dist: pylint; extra == "dev"
|
|
79
80
|
Requires-Dist: ruff; extra == "dev"
|
|
80
81
|
Requires-Dist: pre-commit; extra == "dev"
|
|
82
|
+
Requires-Dist: setuptools; extra == "dev"
|
|
83
|
+
Requires-Dist: wheel; extra == "dev"
|
|
81
84
|
Provides-Extra: doc
|
|
82
85
|
Requires-Dist: sphinx; extra == "doc"
|
|
83
86
|
Requires-Dist: myst_parser; extra == "doc"
|
|
@@ -111,6 +114,8 @@ It is part of the [PlotPyStack](https://github.com/PlotPyStack) project, aiming
|
|
|
111
114
|
* [guidata](https://pypi.python.org/pypi/guidata) automatic GUI generation library
|
|
112
115
|
* [PythonQwt](https://pypi.python.org/pypi/PythonQwt) plotting widgets library
|
|
113
116
|
* [NumPy](https://pypi.python.org/pypi/NumPy) and [SciPy](https://pypi.python.org/pypi/SciPy) scientific computing libraries
|
|
117
|
+
* [scikit-image](https://pypi.python.org/pypi/scikit-image) image processing library
|
|
118
|
+
* [Pillow](https://pypi.python.org/pypi/Pillow) imaging library and [tifffile](https://pypi.python.org/pypi/tifffile) TIFF I/O library
|
|
114
119
|
|
|
115
120
|
<img src="https://raw.githubusercontent.com/PlotPyStack/plotpy/master/doc/images/panorama.png">
|
|
116
121
|
|
|
@@ -118,7 +123,7 @@ See [documentation](https://plotpy.readthedocs.io/en/latest/) for more details o
|
|
|
118
123
|
|
|
119
124
|
Copyrights and licensing:
|
|
120
125
|
|
|
121
|
-
* Copyright © 2023 [CEA](https://www.cea.fr), [Codra](https://codra.net/), [Pierre Raybaut](https://github.com/PierreRaybaut).
|
|
126
|
+
* Copyright © 2023-2026 [CEA](https://www.cea.fr), [Codra](https://codra.net/), [Pierre Raybaut](https://github.com/PierreRaybaut).
|
|
122
127
|
* Licensed under the terms of the BSD 3-Clause (see [LICENSE](https://github.com/PlotPyStack/PlotPy/blob/master/LICENSE)).
|
|
123
128
|
|
|
124
129
|
## Features
|
|
@@ -129,7 +134,7 @@ General plotting features:
|
|
|
129
134
|
|
|
130
135
|
* Ready-to-use [plot widgets and dialog boxes](https://plotpy.readthedocs.io/en/latest/features/plot/index.html)
|
|
131
136
|
* [pyplot](https://plotpy.readthedocs.io/en/latest/features/pyplot.html): interactive plotting widgets, equivalent to `matplotlib.pyplot`, at least for the implemented functions
|
|
132
|
-
* Supported [plot items](https://plotpy.readthedocs.io/en/latest/features/items/index.html): curves, images, contours, histograms, labels, shapes, annotations, ...
|
|
137
|
+
* Supported [plot items](https://plotpy.readthedocs.io/en/latest/features/items/index.html): curves, images, contours, histograms, vector fields (quiver plots), labels, shapes, annotations, ...
|
|
133
138
|
|
|
134
139
|
Interactive features (i.e. not only programmatic plotting but also with mouse/keyboard):
|
|
135
140
|
|
|
@@ -138,7 +143,7 @@ Interactive features (i.e. not only programmatic plotting but also with mouse/ke
|
|
|
138
143
|
* Customizable aspect ratio for images
|
|
139
144
|
* Tons of ready-to-use tools: plot canvas export to image file, image snapshot, interval selection, image rectangular filter, etc.
|
|
140
145
|
* Curve fitting tool with automatic fit, manual fit with sliders, ...
|
|
141
|
-
* Contrast adjustment panel for images: select the LUT by moving a range selection object on the image levels histogram, eliminate outliers, ...
|
|
146
|
+
* Contrast adjustment panel for images: select the LUT by moving a range selection object on the image levels histogram, eliminate outliers, invert colormaps, ...
|
|
142
147
|
* X-axis and Y-axis cross-sections: support for multiple images, average cross-section tool on a rectangular area, ...
|
|
143
148
|
* Apply any affine transform to displayed images in real-time (rotation, magnification, translation, horizontal/vertical flip, ...)
|
|
144
149
|
|
|
@@ -158,8 +163,8 @@ Compatibility table:
|
|
|
158
163
|
|
|
159
164
|
| PlotPy version | PyQt5 | PyQt6 | PySide2 | PySide6 |
|
|
160
165
|
|----------------|-------|-------|---------|---------|
|
|
161
|
-
| 2.0-2.5 | ✅ | ⚠️ | ❌
|
|
162
|
-
| Latest | ✅ | ✅ | ❌
|
|
166
|
+
| 2.0-2.5 | ✅ | ⚠️ | ❌ | ⚠️ |
|
|
167
|
+
| Latest | ✅ | ✅ | ❌ | ✅ |
|
|
163
168
|
|
|
164
169
|
### Other dependencies and installation
|
|
165
170
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PlotPy
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.9.0
|
|
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
|
|
@@ -50,6 +50,7 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
50
50
|
Classifier: Programming Language :: Python :: 3.11
|
|
51
51
|
Classifier: Programming Language :: Python :: 3.12
|
|
52
52
|
Classifier: Programming Language :: Python :: 3.13
|
|
53
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
53
54
|
Classifier: Topic :: Scientific/Engineering
|
|
54
55
|
Classifier: Topic :: Scientific/Engineering :: Image Processing
|
|
55
56
|
Classifier: Topic :: Scientific/Engineering :: Human Machine Interfaces
|
|
@@ -61,7 +62,7 @@ Classifier: Topic :: Utilities
|
|
|
61
62
|
Requires-Python: <4,>=3.9
|
|
62
63
|
Description-Content-Type: text/markdown
|
|
63
64
|
License-File: LICENSE
|
|
64
|
-
Requires-Dist: guidata>=3.
|
|
65
|
+
Requires-Dist: guidata>=3.14.1
|
|
65
66
|
Requires-Dist: PythonQwt>=0.15
|
|
66
67
|
Requires-Dist: numpy>=1.22
|
|
67
68
|
Requires-Dist: SciPy>=1.7.3
|
|
@@ -78,6 +79,8 @@ Requires-Dist: Cython>=3.0; extra == "dev"
|
|
|
78
79
|
Requires-Dist: pylint; extra == "dev"
|
|
79
80
|
Requires-Dist: ruff; extra == "dev"
|
|
80
81
|
Requires-Dist: pre-commit; extra == "dev"
|
|
82
|
+
Requires-Dist: setuptools; extra == "dev"
|
|
83
|
+
Requires-Dist: wheel; extra == "dev"
|
|
81
84
|
Provides-Extra: doc
|
|
82
85
|
Requires-Dist: sphinx; extra == "doc"
|
|
83
86
|
Requires-Dist: myst_parser; extra == "doc"
|
|
@@ -111,6 +114,8 @@ It is part of the [PlotPyStack](https://github.com/PlotPyStack) project, aiming
|
|
|
111
114
|
* [guidata](https://pypi.python.org/pypi/guidata) automatic GUI generation library
|
|
112
115
|
* [PythonQwt](https://pypi.python.org/pypi/PythonQwt) plotting widgets library
|
|
113
116
|
* [NumPy](https://pypi.python.org/pypi/NumPy) and [SciPy](https://pypi.python.org/pypi/SciPy) scientific computing libraries
|
|
117
|
+
* [scikit-image](https://pypi.python.org/pypi/scikit-image) image processing library
|
|
118
|
+
* [Pillow](https://pypi.python.org/pypi/Pillow) imaging library and [tifffile](https://pypi.python.org/pypi/tifffile) TIFF I/O library
|
|
114
119
|
|
|
115
120
|
<img src="https://raw.githubusercontent.com/PlotPyStack/plotpy/master/doc/images/panorama.png">
|
|
116
121
|
|
|
@@ -118,7 +123,7 @@ See [documentation](https://plotpy.readthedocs.io/en/latest/) for more details o
|
|
|
118
123
|
|
|
119
124
|
Copyrights and licensing:
|
|
120
125
|
|
|
121
|
-
* Copyright © 2023 [CEA](https://www.cea.fr), [Codra](https://codra.net/), [Pierre Raybaut](https://github.com/PierreRaybaut).
|
|
126
|
+
* Copyright © 2023-2026 [CEA](https://www.cea.fr), [Codra](https://codra.net/), [Pierre Raybaut](https://github.com/PierreRaybaut).
|
|
122
127
|
* Licensed under the terms of the BSD 3-Clause (see [LICENSE](https://github.com/PlotPyStack/PlotPy/blob/master/LICENSE)).
|
|
123
128
|
|
|
124
129
|
## Features
|
|
@@ -129,7 +134,7 @@ General plotting features:
|
|
|
129
134
|
|
|
130
135
|
* Ready-to-use [plot widgets and dialog boxes](https://plotpy.readthedocs.io/en/latest/features/plot/index.html)
|
|
131
136
|
* [pyplot](https://plotpy.readthedocs.io/en/latest/features/pyplot.html): interactive plotting widgets, equivalent to `matplotlib.pyplot`, at least for the implemented functions
|
|
132
|
-
* Supported [plot items](https://plotpy.readthedocs.io/en/latest/features/items/index.html): curves, images, contours, histograms, labels, shapes, annotations, ...
|
|
137
|
+
* Supported [plot items](https://plotpy.readthedocs.io/en/latest/features/items/index.html): curves, images, contours, histograms, vector fields (quiver plots), labels, shapes, annotations, ...
|
|
133
138
|
|
|
134
139
|
Interactive features (i.e. not only programmatic plotting but also with mouse/keyboard):
|
|
135
140
|
|
|
@@ -138,7 +143,7 @@ Interactive features (i.e. not only programmatic plotting but also with mouse/ke
|
|
|
138
143
|
* Customizable aspect ratio for images
|
|
139
144
|
* Tons of ready-to-use tools: plot canvas export to image file, image snapshot, interval selection, image rectangular filter, etc.
|
|
140
145
|
* Curve fitting tool with automatic fit, manual fit with sliders, ...
|
|
141
|
-
* Contrast adjustment panel for images: select the LUT by moving a range selection object on the image levels histogram, eliminate outliers, ...
|
|
146
|
+
* Contrast adjustment panel for images: select the LUT by moving a range selection object on the image levels histogram, eliminate outliers, invert colormaps, ...
|
|
142
147
|
* X-axis and Y-axis cross-sections: support for multiple images, average cross-section tool on a rectangular area, ...
|
|
143
148
|
* Apply any affine transform to displayed images in real-time (rotation, magnification, translation, horizontal/vertical flip, ...)
|
|
144
149
|
|
|
@@ -158,8 +163,8 @@ Compatibility table:
|
|
|
158
163
|
|
|
159
164
|
| PlotPy version | PyQt5 | PyQt6 | PySide2 | PySide6 |
|
|
160
165
|
|----------------|-------|-------|---------|---------|
|
|
161
|
-
| 2.0-2.5 | ✅ | ⚠️ | ❌
|
|
162
|
-
| Latest | ✅ | ✅ | ❌
|
|
166
|
+
| 2.0-2.5 | ✅ | ⚠️ | ❌ | ⚠️ |
|
|
167
|
+
| Latest | ✅ | ✅ | ❌ | ✅ |
|
|
163
168
|
|
|
164
169
|
### Other dependencies and installation
|
|
165
170
|
|
|
@@ -25,6 +25,7 @@ doc/requirements.rst
|
|
|
25
25
|
doc/_static/favicon.ico
|
|
26
26
|
doc/dev/build.rst
|
|
27
27
|
doc/dev/contribute.rst
|
|
28
|
+
doc/dev/gitworkflow.rst
|
|
28
29
|
doc/dev/guiqwt_to_plotpy.csv
|
|
29
30
|
doc/dev/guiqwt_to_plotpy.rst
|
|
30
31
|
doc/dev/index.rst
|
|
@@ -115,6 +116,7 @@ doc/release_notes/release_2.05.md
|
|
|
115
116
|
doc/release_notes/release_2.06.md
|
|
116
117
|
doc/release_notes/release_2.07.md
|
|
117
118
|
doc/release_notes/release_2.08.md
|
|
119
|
+
doc/release_notes/release_2.09.md
|
|
118
120
|
plotpy/__init__.py
|
|
119
121
|
plotpy/config.py
|
|
120
122
|
plotpy/constants.py
|
|
@@ -248,6 +250,7 @@ plotpy/data/icons/items/image.png
|
|
|
248
250
|
plotpy/data/icons/items/label.png
|
|
249
251
|
plotpy/data/icons/items/legend.png
|
|
250
252
|
plotpy/data/icons/items/polygonmap.png
|
|
253
|
+
plotpy/data/icons/items/quiver.png
|
|
251
254
|
plotpy/data/icons/markers/cross.png
|
|
252
255
|
plotpy/data/icons/markers/diamond.png
|
|
253
256
|
plotpy/data/icons/markers/ellipse.png
|
|
@@ -324,6 +327,7 @@ plotpy/items/grid.py
|
|
|
324
327
|
plotpy/items/histogram.py
|
|
325
328
|
plotpy/items/label.py
|
|
326
329
|
plotpy/items/polygonmap.py
|
|
330
|
+
plotpy/items/quiver.py
|
|
327
331
|
plotpy/items/curve/__init__.py
|
|
328
332
|
plotpy/items/curve/base.py
|
|
329
333
|
plotpy/items/curve/errorbar.py
|
|
@@ -380,6 +384,7 @@ plotpy/tests/data.py
|
|
|
380
384
|
plotpy/tests/vistools.py
|
|
381
385
|
plotpy/tests/benchmarks/__init__.py
|
|
382
386
|
plotpy/tests/benchmarks/test_benchmarks.py
|
|
387
|
+
plotpy/tests/benchmarks/test_bigcurves.py
|
|
383
388
|
plotpy/tests/benchmarks/test_bigimages.py
|
|
384
389
|
plotpy/tests/benchmarks/test_large_number_of_annotations.py
|
|
385
390
|
plotpy/tests/benchmarks/test_loadtest.py
|
|
@@ -416,6 +421,7 @@ plotpy/tests/features/test_plot_time.py
|
|
|
416
421
|
plotpy/tests/features/test_plot_types.py
|
|
417
422
|
plotpy/tests/features/test_plot_yreverse.py
|
|
418
423
|
plotpy/tests/features/test_pyplot.py
|
|
424
|
+
plotpy/tests/features/test_quiver.py
|
|
419
425
|
plotpy/tests/features/test_resize.py
|
|
420
426
|
plotpy/tests/items/__init__.py
|
|
421
427
|
plotpy/tests/items/test_annotated_range.py
|
|
@@ -456,6 +462,7 @@ plotpy/tests/tools/test_stats_tools.py
|
|
|
456
462
|
plotpy/tests/tools/test_zaxislog.py
|
|
457
463
|
plotpy/tests/unit/__init__.py
|
|
458
464
|
plotpy/tests/unit/test_annotation_tools.py
|
|
465
|
+
plotpy/tests/unit/test_arrayfuncs.py
|
|
459
466
|
plotpy/tests/unit/test_aspect_ratio_tool.py
|
|
460
467
|
plotpy/tests/unit/test_baseplot.py
|
|
461
468
|
plotpy/tests/unit/test_builder_annotation.py
|
|
@@ -20,6 +20,8 @@ It is part of the [PlotPyStack](https://github.com/PlotPyStack) project, aiming
|
|
|
20
20
|
* [guidata](https://pypi.python.org/pypi/guidata) automatic GUI generation library
|
|
21
21
|
* [PythonQwt](https://pypi.python.org/pypi/PythonQwt) plotting widgets library
|
|
22
22
|
* [NumPy](https://pypi.python.org/pypi/NumPy) and [SciPy](https://pypi.python.org/pypi/SciPy) scientific computing libraries
|
|
23
|
+
* [scikit-image](https://pypi.python.org/pypi/scikit-image) image processing library
|
|
24
|
+
* [Pillow](https://pypi.python.org/pypi/Pillow) imaging library and [tifffile](https://pypi.python.org/pypi/tifffile) TIFF I/O library
|
|
23
25
|
|
|
24
26
|
<img src="https://raw.githubusercontent.com/PlotPyStack/plotpy/master/doc/images/panorama.png">
|
|
25
27
|
|
|
@@ -27,7 +29,7 @@ See [documentation](https://plotpy.readthedocs.io/en/latest/) for more details o
|
|
|
27
29
|
|
|
28
30
|
Copyrights and licensing:
|
|
29
31
|
|
|
30
|
-
* Copyright © 2023 [CEA](https://www.cea.fr), [Codra](https://codra.net/), [Pierre Raybaut](https://github.com/PierreRaybaut).
|
|
32
|
+
* Copyright © 2023-2026 [CEA](https://www.cea.fr), [Codra](https://codra.net/), [Pierre Raybaut](https://github.com/PierreRaybaut).
|
|
31
33
|
* Licensed under the terms of the BSD 3-Clause (see [LICENSE](https://github.com/PlotPyStack/PlotPy/blob/master/LICENSE)).
|
|
32
34
|
|
|
33
35
|
## Features
|
|
@@ -38,7 +40,7 @@ General plotting features:
|
|
|
38
40
|
|
|
39
41
|
* Ready-to-use [plot widgets and dialog boxes](https://plotpy.readthedocs.io/en/latest/features/plot/index.html)
|
|
40
42
|
* [pyplot](https://plotpy.readthedocs.io/en/latest/features/pyplot.html): interactive plotting widgets, equivalent to `matplotlib.pyplot`, at least for the implemented functions
|
|
41
|
-
* Supported [plot items](https://plotpy.readthedocs.io/en/latest/features/items/index.html): curves, images, contours, histograms, labels, shapes, annotations, ...
|
|
43
|
+
* Supported [plot items](https://plotpy.readthedocs.io/en/latest/features/items/index.html): curves, images, contours, histograms, vector fields (quiver plots), labels, shapes, annotations, ...
|
|
42
44
|
|
|
43
45
|
Interactive features (i.e. not only programmatic plotting but also with mouse/keyboard):
|
|
44
46
|
|
|
@@ -47,7 +49,7 @@ Interactive features (i.e. not only programmatic plotting but also with mouse/ke
|
|
|
47
49
|
* Customizable aspect ratio for images
|
|
48
50
|
* Tons of ready-to-use tools: plot canvas export to image file, image snapshot, interval selection, image rectangular filter, etc.
|
|
49
51
|
* Curve fitting tool with automatic fit, manual fit with sliders, ...
|
|
50
|
-
* Contrast adjustment panel for images: select the LUT by moving a range selection object on the image levels histogram, eliminate outliers, ...
|
|
52
|
+
* Contrast adjustment panel for images: select the LUT by moving a range selection object on the image levels histogram, eliminate outliers, invert colormaps, ...
|
|
51
53
|
* X-axis and Y-axis cross-sections: support for multiple images, average cross-section tool on a rectangular area, ...
|
|
52
54
|
* Apply any affine transform to displayed images in real-time (rotation, magnification, translation, horizontal/vertical flip, ...)
|
|
53
55
|
|
|
@@ -67,8 +69,8 @@ Compatibility table:
|
|
|
67
69
|
|
|
68
70
|
| PlotPy version | PyQt5 | PyQt6 | PySide2 | PySide6 |
|
|
69
71
|
|----------------|-------|-------|---------|---------|
|
|
70
|
-
| 2.0-2.5 | ✅ | ⚠️ | ❌
|
|
71
|
-
| Latest | ✅ | ✅ | ❌
|
|
72
|
+
| 2.0-2.5 | ✅ | ⚠️ | ❌ | ⚠️ |
|
|
73
|
+
| Latest | ✅ | ✅ | ❌ | ✅ |
|
|
72
74
|
|
|
73
75
|
### Other dependencies and installation
|
|
74
76
|
|
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
.. _gitworkflow:
|
|
2
|
+
|
|
3
|
+
Git Workflow
|
|
4
|
+
============
|
|
5
|
+
|
|
6
|
+
This document describes the Git workflow used in the PlotPy project,
|
|
7
|
+
based on a ``master`` branch, a ``develop`` branch, and feature-specific branches.
|
|
8
|
+
It also defines how bug fixes are managed.
|
|
9
|
+
|
|
10
|
+
.. note::
|
|
11
|
+
|
|
12
|
+
This workflow is a simplified version of the `Gitflow Workflow <https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow>`_.
|
|
13
|
+
It has been adapted to suit the needs of the PlotPy project at the current stage of development.
|
|
14
|
+
|
|
15
|
+
Branching Model
|
|
16
|
+
---------------
|
|
17
|
+
|
|
18
|
+
Main Branches
|
|
19
|
+
^^^^^^^^^^^^^
|
|
20
|
+
|
|
21
|
+
- ``master``: Represents the stable, production-ready version of the project.
|
|
22
|
+
- ``develop``: Used for ongoing development and integration of new features.
|
|
23
|
+
|
|
24
|
+
Feature Branches
|
|
25
|
+
^^^^^^^^^^^^^^^^
|
|
26
|
+
|
|
27
|
+
- ``feature/feature_name``: Used for the development of new features.
|
|
28
|
+
|
|
29
|
+
- Created from ``develop``.
|
|
30
|
+
- Merged back into ``develop`` once completed.
|
|
31
|
+
- Deleted after merging.
|
|
32
|
+
|
|
33
|
+
Release Branch
|
|
34
|
+
^^^^^^^^^^^^^^
|
|
35
|
+
|
|
36
|
+
- ``release``: Represents the current maintenance line for patch releases.
|
|
37
|
+
|
|
38
|
+
- Created from ``master`` after a stable release when the first patch is needed.
|
|
39
|
+
- Accepts ``fix/xxx`` and ``hotfix/xxx`` branch merges.
|
|
40
|
+
- Merged back into ``master`` for each patch release tag (e.g., 2.8.1, 2.8.2).
|
|
41
|
+
- Reset or recreated when starting a new minor/major release cycle.
|
|
42
|
+
|
|
43
|
+
.. note::
|
|
44
|
+
|
|
45
|
+
The ``release`` branch is not versioned (no ``release/2.8.x``). It always
|
|
46
|
+
represents "the current maintenance line." When a new minor version is released
|
|
47
|
+
(e.g., 2.9.0), the old ``release`` branch is deleted and a new one is created
|
|
48
|
+
from the fresh tag when the first patch for 2.9.1 is needed.
|
|
49
|
+
|
|
50
|
+
Bug Fix Branches
|
|
51
|
+
^^^^^^^^^^^^^^^^
|
|
52
|
+
|
|
53
|
+
- ``fix/xxx``: Used for general bug fixes that are not urgent.
|
|
54
|
+
|
|
55
|
+
- Created from ``develop`` (for next feature release) or ``release`` (for patch release).
|
|
56
|
+
- Merged back into the originating branch once completed.
|
|
57
|
+
- Deleted after merging.
|
|
58
|
+
|
|
59
|
+
- ``hotfix/xxx``: Used for urgent production-critical fixes.
|
|
60
|
+
|
|
61
|
+
- Created from ``release`` (if exists) or ``master`` (if no ``release`` branch yet).
|
|
62
|
+
- Merged back into ``release`` or ``master``.
|
|
63
|
+
- The fix is then cherry-picked into ``develop``.
|
|
64
|
+
- Deleted after merging.
|
|
65
|
+
|
|
66
|
+
.. note::
|
|
67
|
+
|
|
68
|
+
Hotfixes (high-priority fixes) will be integrated in the next maintenance
|
|
69
|
+
release (X.Y.Z -> Z+1), while fixes (low-priority fixes) will be integrated
|
|
70
|
+
in the next feature release (X.Y -> Y+1).
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
Documentation Branches
|
|
74
|
+
----------------------
|
|
75
|
+
|
|
76
|
+
When working on documentation that is not related to source code
|
|
77
|
+
(e.g. training materials, user guides), branches should be named
|
|
78
|
+
using the ``doc/`` prefix.
|
|
79
|
+
|
|
80
|
+
Examples:
|
|
81
|
+
|
|
82
|
+
- ``doc/training-materials``
|
|
83
|
+
- ``doc/user-guide``
|
|
84
|
+
|
|
85
|
+
This naming convention improves clarity by clearly separating
|
|
86
|
+
documentation efforts from code-related development (features, fixes, etc.).
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
Workflow for New Features
|
|
90
|
+
-------------------------
|
|
91
|
+
|
|
92
|
+
1. Create a new feature branch from ``develop``:
|
|
93
|
+
|
|
94
|
+
.. code-block:: sh
|
|
95
|
+
|
|
96
|
+
git checkout develop
|
|
97
|
+
git checkout -b develop/feature_name
|
|
98
|
+
|
|
99
|
+
2. Develop the feature and commit changes.
|
|
100
|
+
|
|
101
|
+
3. Merge the feature branch back into ``develop``:
|
|
102
|
+
|
|
103
|
+
.. code-block:: sh
|
|
104
|
+
|
|
105
|
+
git checkout develop
|
|
106
|
+
git merge --no-ff develop/feature_name
|
|
107
|
+
|
|
108
|
+
4. Delete the feature branch:
|
|
109
|
+
|
|
110
|
+
.. code-block:: sh
|
|
111
|
+
|
|
112
|
+
git branch -d develop/feature_name
|
|
113
|
+
|
|
114
|
+
.. warning::
|
|
115
|
+
|
|
116
|
+
Do not leave feature branches unmerged for too long.
|
|
117
|
+
Regularly rebase them on ``develop`` to minimize conflicts.
|
|
118
|
+
|
|
119
|
+
Workflow for Regular Bug Fixes
|
|
120
|
+
------------------------------
|
|
121
|
+
|
|
122
|
+
For next feature release (target: ``develop``):
|
|
123
|
+
|
|
124
|
+
1. Create a bug fix branch from ``develop``:
|
|
125
|
+
|
|
126
|
+
.. code-block:: sh
|
|
127
|
+
|
|
128
|
+
git checkout develop
|
|
129
|
+
git checkout -b fix/bug_description
|
|
130
|
+
|
|
131
|
+
2. Apply the fix and commit changes.
|
|
132
|
+
|
|
133
|
+
3. Merge the fix branch back into ``develop``:
|
|
134
|
+
|
|
135
|
+
.. code-block:: sh
|
|
136
|
+
|
|
137
|
+
git checkout develop
|
|
138
|
+
git merge --no-ff fix/bug_description
|
|
139
|
+
|
|
140
|
+
4. Delete the fix branch:
|
|
141
|
+
|
|
142
|
+
.. code-block:: sh
|
|
143
|
+
|
|
144
|
+
git branch -d fix/bug_description
|
|
145
|
+
|
|
146
|
+
For current maintenance release (target: ``release``):
|
|
147
|
+
|
|
148
|
+
1. Create a bug fix branch from ``release``:
|
|
149
|
+
|
|
150
|
+
.. code-block:: sh
|
|
151
|
+
|
|
152
|
+
git checkout release
|
|
153
|
+
git checkout -b fix/bug_description
|
|
154
|
+
|
|
155
|
+
2. Apply the fix and commit changes.
|
|
156
|
+
|
|
157
|
+
3. Merge the fix branch back into ``release``:
|
|
158
|
+
|
|
159
|
+
.. code-block:: sh
|
|
160
|
+
|
|
161
|
+
git checkout release
|
|
162
|
+
git merge --no-ff fix/bug_description
|
|
163
|
+
|
|
164
|
+
4. Delete the fix branch:
|
|
165
|
+
|
|
166
|
+
.. code-block:: sh
|
|
167
|
+
|
|
168
|
+
git branch -d fix/bug_description
|
|
169
|
+
|
|
170
|
+
.. warning::
|
|
171
|
+
|
|
172
|
+
Do not create a ``fix/xxx`` branch from a ``develop/feature_name`` branch.
|
|
173
|
+
Always branch from ``develop`` or ``release`` to ensure fixes are correctly propagated.
|
|
174
|
+
|
|
175
|
+
.. code-block:: sh
|
|
176
|
+
|
|
177
|
+
# Incorrect:
|
|
178
|
+
git checkout develop/feature_name
|
|
179
|
+
git checkout -b fix/wrong_branch
|
|
180
|
+
|
|
181
|
+
.. code-block:: sh
|
|
182
|
+
|
|
183
|
+
# Correct:
|
|
184
|
+
git checkout develop
|
|
185
|
+
git checkout -b fix/correct_branch
|
|
186
|
+
|
|
187
|
+
Workflow for Critical Hotfixes
|
|
188
|
+
------------------------------
|
|
189
|
+
|
|
190
|
+
1. Create a hotfix branch from ``release`` (or ``master`` if no ``release`` branch exists):
|
|
191
|
+
|
|
192
|
+
.. code-block:: sh
|
|
193
|
+
|
|
194
|
+
git checkout release # or: git checkout master
|
|
195
|
+
git checkout -b hotfix/critical_bug
|
|
196
|
+
|
|
197
|
+
2. Apply the fix and commit changes.
|
|
198
|
+
|
|
199
|
+
3. Merge the fix back into ``release`` (or ``master``):
|
|
200
|
+
|
|
201
|
+
.. code-block:: sh
|
|
202
|
+
|
|
203
|
+
git checkout release # or: git checkout master
|
|
204
|
+
git merge --no-ff hotfix/critical_bug
|
|
205
|
+
|
|
206
|
+
4. Cherry-pick the fix into ``develop``:
|
|
207
|
+
|
|
208
|
+
.. code-block:: sh
|
|
209
|
+
|
|
210
|
+
git checkout develop
|
|
211
|
+
git cherry-pick <commit_hash>
|
|
212
|
+
|
|
213
|
+
5. Delete the hotfix branch:
|
|
214
|
+
|
|
215
|
+
.. code-block:: sh
|
|
216
|
+
|
|
217
|
+
git branch -d hotfix/critical_bug
|
|
218
|
+
|
|
219
|
+
.. warning::
|
|
220
|
+
|
|
221
|
+
Do not merge ``fix/xxx`` or ``hotfix/xxx`` directly into ``master`` without following the workflow.
|
|
222
|
+
Ensure hotfixes are cherry-picked into ``develop`` to avoid losing fixes in future releases.
|
|
223
|
+
|
|
224
|
+
Workflow for Patch Releases
|
|
225
|
+
----------------------------
|
|
226
|
+
|
|
227
|
+
When ready to release a patch version (e.g., 2.8.1, 2.8.2):
|
|
228
|
+
|
|
229
|
+
1. Ensure the ``release`` branch contains all desired fixes.
|
|
230
|
+
|
|
231
|
+
2. Merge ``release`` into ``master``:
|
|
232
|
+
|
|
233
|
+
.. code-block:: sh
|
|
234
|
+
|
|
235
|
+
git checkout master
|
|
236
|
+
git merge --no-ff release
|
|
237
|
+
|
|
238
|
+
3. Tag the release on ``master``:
|
|
239
|
+
|
|
240
|
+
.. code-block:: sh
|
|
241
|
+
|
|
242
|
+
git tag -a v2.8.1 -m "Release version 2.8.1"
|
|
243
|
+
git push origin master --tags
|
|
244
|
+
|
|
245
|
+
4. Keep the ``release`` branch for additional patches in the same minor version series.
|
|
246
|
+
|
|
247
|
+
Workflow for Minor/Major Releases
|
|
248
|
+
----------------------------------
|
|
249
|
+
|
|
250
|
+
When ready to release a new minor or major version (e.g., 2.9.0, 3.0.0):
|
|
251
|
+
|
|
252
|
+
1. Merge ``develop`` into ``master``:
|
|
253
|
+
|
|
254
|
+
.. code-block:: sh
|
|
255
|
+
|
|
256
|
+
git checkout master
|
|
257
|
+
git merge --no-ff develop
|
|
258
|
+
|
|
259
|
+
2. Tag the release on ``master``:
|
|
260
|
+
|
|
261
|
+
.. code-block:: sh
|
|
262
|
+
|
|
263
|
+
git tag -a v2.9.0 -m "Release version 2.9.0"
|
|
264
|
+
git push origin master --tags
|
|
265
|
+
|
|
266
|
+
3. Delete the old ``release`` branch (if exists):
|
|
267
|
+
|
|
268
|
+
.. code-block:: sh
|
|
269
|
+
|
|
270
|
+
git branch -d release
|
|
271
|
+
git push origin --delete release
|
|
272
|
+
|
|
273
|
+
4. Create a new ``release`` branch from ``master`` when the first patch for 2.9.1 is needed:
|
|
274
|
+
|
|
275
|
+
.. code-block:: sh
|
|
276
|
+
|
|
277
|
+
git checkout master
|
|
278
|
+
git checkout -b release
|
|
279
|
+
git push -u origin release
|
|
280
|
+
|
|
281
|
+
Best Practices
|
|
282
|
+
--------------
|
|
283
|
+
|
|
284
|
+
- Regularly **rebase feature branches** on ``develop`` to stay up to date:
|
|
285
|
+
|
|
286
|
+
.. code-block:: sh
|
|
287
|
+
|
|
288
|
+
git checkout develop/feature_name
|
|
289
|
+
git rebase develop
|
|
290
|
+
|
|
291
|
+
- Avoid long-lived branches to minimize merge conflicts.
|
|
292
|
+
|
|
293
|
+
- Ensure bug fixes in ``release`` or ``master`` are **always cherry-picked** to ``develop``.
|
|
294
|
+
|
|
295
|
+
- Clearly differentiate between ``fix/xxx`` (non-urgent fixes) and ``hotfix/xxx`` (critical production fixes).
|
|
296
|
+
|
|
297
|
+
- When creating the ``release`` branch, update release notes to indicate which version it targets (e.g., add a comment in the merge commit: "Create release branch for v2.8.x maintenance").
|
|
298
|
+
|
|
299
|
+
- The ``release`` branch always represents the current maintenance line. To know which version it targets, check the most recent tag on ``master`` or the release notes.
|
|
300
|
+
|
|
301
|
+
Takeaway
|
|
302
|
+
--------
|
|
303
|
+
|
|
304
|
+
This workflow ensures a structured yet flexible development process while keeping
|
|
305
|
+
``master`` stable and ``develop`` always updated with the latest changes.
|
|
306
|
+
|
|
307
|
+
The ``release`` branch provides a dedicated maintenance line for patch releases,
|
|
308
|
+
allowing ``develop`` to proceed with new features without interference. This solves
|
|
309
|
+
the problem of coordinating unreleased changes across the PlotPyStack ecosystem
|
|
310
|
+
(DataLab, Sigima, PlotPy, guidata, PythonQwt) by providing a stable branch for
|
|
311
|
+
CI testing during maintenance cycles.
|
|
@@ -41,6 +41,13 @@ The following image items are available:
|
|
|
41
41
|
* :py:func:`.get_plot_qrect`
|
|
42
42
|
* :py:func:`.get_image_from_plot`
|
|
43
43
|
|
|
44
|
+
Flow fields
|
|
45
|
+
^^^^^^^^^^^
|
|
46
|
+
|
|
47
|
+
The following flow field items are available:
|
|
48
|
+
|
|
49
|
+
* :py:class:`.QuiverItem`: a flow field item with arrows
|
|
50
|
+
|
|
44
51
|
Grid
|
|
45
52
|
^^^^
|
|
46
53
|
|
|
@@ -22,7 +22,7 @@ Curve plotting
|
|
|
22
22
|
Basic curve plotting
|
|
23
23
|
~~~~~~~~~~~~~~~~~~~~
|
|
24
24
|
|
|
25
|
-
.. literalinclude:: ../../plotpy/tests/items/
|
|
25
|
+
.. literalinclude:: ../../plotpy/tests/items/test_curves.py
|
|
26
26
|
:start-after: guitest:
|
|
27
27
|
|
|
28
28
|
|
|
@@ -86,7 +86,7 @@ Affine transforms example on 3000x3000 images (real-time transforms):
|
|
|
86
86
|
Image rectangular filter
|
|
87
87
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
|
88
88
|
|
|
89
|
-
.. literalinclude:: ../../plotpy/tests/features/
|
|
89
|
+
.. literalinclude:: ../../plotpy/tests/features/test_image_filter.py
|
|
90
90
|
:start-after: guitest:
|
|
91
91
|
|
|
92
92
|
|
|
@@ -14,6 +14,9 @@ Other changes:
|
|
|
14
14
|
|
|
15
15
|
* Updated `guidata` dependency to V3.10.0
|
|
16
16
|
* Using new `guidata` translation utility based on `babel`
|
|
17
|
+
* Development environment:
|
|
18
|
+
* Historically, the default Python interpreter for development was handled by the `PPSTACK_PYTHONEXE` environment variable, for example to run VS Code tasks with the correct Python interpreter.
|
|
19
|
+
* This approach has been replaced by relying on the virtual environment management as provided by VS Code itself, which is more standard and compatible with various tools.
|
|
17
20
|
|
|
18
21
|
## PlotPy Version 2.7.4 (2025-04-26) ##
|
|
19
22
|
|