PlotPy 2.3.3__tar.gz → 2.3.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.
Files changed (521) hide show
  1. {plotpy-2.3.3 → plotpy-2.3.5}/CHANGELOG.md +28 -0
  2. {plotpy-2.3.3/PlotPy.egg-info → plotpy-2.3.5}/PKG-INFO +2 -2
  3. {plotpy-2.3.3 → plotpy-2.3.5/PlotPy.egg-info}/PKG-INFO +2 -2
  4. {plotpy-2.3.3 → plotpy-2.3.5}/PlotPy.egg-info/SOURCES.txt +1 -1
  5. plotpy-2.3.5/PlotPy.egg-info/entry_points.txt +3 -0
  6. {plotpy-2.3.3 → plotpy-2.3.5}/PlotPy.egg-info/requires.txt +1 -1
  7. {plotpy-2.3.3 → plotpy-2.3.5}/doc/dev/build.rst +2 -2
  8. {plotpy-2.3.3 → plotpy-2.3.5}/doc/dev/contribute.rst +1 -1
  9. {plotpy-2.3.3 → plotpy-2.3.5}/doc/dev/platforms.rst +2 -2
  10. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/__init__.py +1 -1
  11. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/items/curve/base.py +2 -2
  12. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/items/curve/errorbar.py +2 -2
  13. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/items/polygonmap.py +3 -3
  14. plotpy-2.3.5/plotpy/tests/benchmarks/__init__.py +20 -0
  15. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/benchmarks/test_benchmarks.py +47 -10
  16. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/benchmarks/test_bigimages.py +2 -0
  17. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/benchmarks/test_loadtest.py +8 -2
  18. {plotpy-2.3.3 → plotpy-2.3.5/plotpy/tests}/conftest.py +10 -0
  19. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/features/test_computations.py +5 -4
  20. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/unit/test_builder_annotation.py +27 -24
  21. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/unit/test_builder_curve.py +25 -17
  22. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/unit/test_builder_image.py +28 -18
  23. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/unit/test_builder_shape.py +16 -12
  24. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/unit/test_curve_tools.py +1 -1
  25. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/unit/test_manipulate_selection.py +3 -0
  26. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/unit/test_mask_tool.py +4 -1
  27. plotpy-2.3.5/plotpy/tests/unit/test_plot_curve.py +94 -0
  28. plotpy-2.3.5/plotpy/tests/unit/test_tools_export.py +36 -0
  29. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tools/curve.py +7 -2
  30. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/widgets/colormap/editor.py +3 -5
  31. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/widgets/colormap/manager.py +10 -3
  32. {plotpy-2.3.3 → plotpy-2.3.5}/pyproject.toml +12 -2
  33. {plotpy-2.3.3 → plotpy-2.3.5}/src/contour2d.c +405 -216
  34. {plotpy-2.3.3 → plotpy-2.3.5}/src/histogram2d.c +400 -208
  35. {plotpy-2.3.3 → plotpy-2.3.5}/src/mandelbrot.c +397 -208
  36. plotpy-2.3.3/PlotPy.egg-info/entry_points.txt +0 -2
  37. plotpy-2.3.3/plotpy/tests/unit/test_plot_curve.py +0 -87
  38. plotpy-2.3.3/plotpy/tests/unit/test_tools_export.py +0 -33
  39. plotpy-2.3.3/plotpy/tests/widgets/__init__.py +0 -0
  40. {plotpy-2.3.3 → plotpy-2.3.5}/LICENSE +0 -0
  41. {plotpy-2.3.3 → plotpy-2.3.5}/MANIFEST.in +0 -0
  42. {plotpy-2.3.3 → plotpy-2.3.5}/PlotPy.egg-info/dependency_links.txt +0 -0
  43. {plotpy-2.3.3 → plotpy-2.3.5}/PlotPy.egg-info/top_level.txt +0 -0
  44. {plotpy-2.3.3 → plotpy-2.3.5}/README.md +0 -0
  45. {plotpy-2.3.3 → plotpy-2.3.5}/colormaps/README.md +0 -0
  46. {plotpy-2.3.3 → plotpy-2.3.5}/colormaps/_cm.py +0 -0
  47. {plotpy-2.3.3 → plotpy-2.3.5}/colormaps/colormap.py +0 -0
  48. {plotpy-2.3.3 → plotpy-2.3.5}/colormaps/matplotlib_cmaps.py +0 -0
  49. {plotpy-2.3.3 → plotpy-2.3.5}/doc/_static/favicon.ico +0 -0
  50. {plotpy-2.3.3 → plotpy-2.3.5}/doc/changelog.rst +0 -0
  51. {plotpy-2.3.3 → plotpy-2.3.5}/doc/conf.py +0 -0
  52. {plotpy-2.3.3 → plotpy-2.3.5}/doc/dev/guiqwt_to_plotpy.csv +0 -0
  53. {plotpy-2.3.3 → plotpy-2.3.5}/doc/dev/guiqwt_to_plotpy.rst +0 -0
  54. {plotpy-2.3.3 → plotpy-2.3.5}/doc/dev/index.rst +0 -0
  55. {plotpy-2.3.3 → plotpy-2.3.5}/doc/dev/v1_to_guidata_v3.csv +0 -0
  56. {plotpy-2.3.3 → plotpy-2.3.5}/doc/dev/v1_to_v2.csv +0 -0
  57. {plotpy-2.3.3 → plotpy-2.3.5}/doc/dev/v1_to_v2.rst +0 -0
  58. {plotpy-2.3.3 → plotpy-2.3.5}/doc/features/colormapmanager.rst +0 -0
  59. {plotpy-2.3.3 → plotpy-2.3.5}/doc/features/events.rst +0 -0
  60. {plotpy-2.3.3 → plotpy-2.3.5}/doc/features/fit.rst +0 -0
  61. {plotpy-2.3.3 → plotpy-2.3.5}/doc/features/fliprotate.rst +0 -0
  62. {plotpy-2.3.3 → plotpy-2.3.5}/doc/features/imagefile.rst +0 -0
  63. {plotpy-2.3.3 → plotpy-2.3.5}/doc/features/index.rst +0 -0
  64. {plotpy-2.3.3 → plotpy-2.3.5}/doc/features/io.rst +0 -0
  65. {plotpy-2.3.3 → plotpy-2.3.5}/doc/features/items/builder.rst +0 -0
  66. {plotpy-2.3.3 → plotpy-2.3.5}/doc/features/items/examples.rst +0 -0
  67. {plotpy-2.3.3 → plotpy-2.3.5}/doc/features/items/index.rst +0 -0
  68. {plotpy-2.3.3 → plotpy-2.3.5}/doc/features/items/overview.rst +0 -0
  69. {plotpy-2.3.3 → plotpy-2.3.5}/doc/features/items/reference.rst +0 -0
  70. {plotpy-2.3.3 → plotpy-2.3.5}/doc/features/mathutils/colormaps.rst +0 -0
  71. {plotpy-2.3.3 → plotpy-2.3.5}/doc/features/mathutils/geometry.rst +0 -0
  72. {plotpy-2.3.3 → plotpy-2.3.5}/doc/features/mathutils/index.rst +0 -0
  73. {plotpy-2.3.3 → plotpy-2.3.5}/doc/features/mathutils/scaler.rst +0 -0
  74. {plotpy-2.3.3 → plotpy-2.3.5}/doc/features/panels/index.rst +0 -0
  75. {plotpy-2.3.3 → plotpy-2.3.5}/doc/features/panels/overview.rst +0 -0
  76. {plotpy-2.3.3 → plotpy-2.3.5}/doc/features/panels/reference.rst +0 -0
  77. {plotpy-2.3.3 → plotpy-2.3.5}/doc/features/plot/examples.rst +0 -0
  78. {plotpy-2.3.3 → plotpy-2.3.5}/doc/features/plot/index.rst +0 -0
  79. {plotpy-2.3.3 → plotpy-2.3.5}/doc/features/plot/overview.rst +0 -0
  80. {plotpy-2.3.3 → plotpy-2.3.5}/doc/features/plot/reference.rst +0 -0
  81. {plotpy-2.3.3 → plotpy-2.3.5}/doc/features/pyplot.rst +0 -0
  82. {plotpy-2.3.3 → plotpy-2.3.5}/doc/features/resizedialog.rst +0 -0
  83. {plotpy-2.3.3 → plotpy-2.3.5}/doc/features/rotatecrop.rst +0 -0
  84. {plotpy-2.3.3 → plotpy-2.3.5}/doc/features/selectdialog.rst +0 -0
  85. {plotpy-2.3.3 → plotpy-2.3.5}/doc/features/signals.rst +0 -0
  86. {plotpy-2.3.3 → plotpy-2.3.5}/doc/features/styles/index.rst +0 -0
  87. {plotpy-2.3.3 → plotpy-2.3.5}/doc/features/styles/overview.rst +0 -0
  88. {plotpy-2.3.3 → plotpy-2.3.5}/doc/features/styles/reference.rst +0 -0
  89. {plotpy-2.3.3 → plotpy-2.3.5}/doc/features/tools/examples.rst +0 -0
  90. {plotpy-2.3.3 → plotpy-2.3.5}/doc/features/tools/index.rst +0 -0
  91. {plotpy-2.3.3 → plotpy-2.3.5}/doc/features/tools/overview.rst +0 -0
  92. {plotpy-2.3.3 → plotpy-2.3.5}/doc/features/tools/reference.rst +0 -0
  93. {plotpy-2.3.3 → plotpy-2.3.5}/doc/images/my_plot_manager.png +0 -0
  94. {plotpy-2.3.3 → plotpy-2.3.5}/doc/images/my_plot_manager.svg +0 -0
  95. {plotpy-2.3.3 → plotpy-2.3.5}/doc/images/panorama.png +0 -0
  96. {plotpy-2.3.3 → plotpy-2.3.5}/doc/images/panorama.svg +0 -0
  97. {plotpy-2.3.3 → plotpy-2.3.5}/doc/images/plot_widgets.png +0 -0
  98. {plotpy-2.3.3 → plotpy-2.3.5}/doc/images/plot_widgets.svg +0 -0
  99. {plotpy-2.3.3 → plotpy-2.3.5}/doc/images/plotpy-banner.png +0 -0
  100. {plotpy-2.3.3 → plotpy-2.3.5}/doc/images/plotpy-vertical.png +0 -0
  101. {plotpy-2.3.3 → plotpy-2.3.5}/doc/images/screenshots/__init__.png +0 -0
  102. {plotpy-2.3.3 → plotpy-2.3.5}/doc/images/screenshots/computations.png +0 -0
  103. {plotpy-2.3.3 → plotpy-2.3.5}/doc/images/screenshots/contrast.png +0 -0
  104. {plotpy-2.3.3 → plotpy-2.3.5}/doc/images/screenshots/cross_section.png +0 -0
  105. {plotpy-2.3.3 → plotpy-2.3.5}/doc/images/screenshots/cross_section2.png +0 -0
  106. {plotpy-2.3.3 → plotpy-2.3.5}/doc/images/screenshots/dotarraydemo.png +0 -0
  107. {plotpy-2.3.3 → plotpy-2.3.5}/doc/images/screenshots/filtertest1.png +0 -0
  108. {plotpy-2.3.3 → plotpy-2.3.5}/doc/images/screenshots/filtertest2.png +0 -0
  109. {plotpy-2.3.3 → plotpy-2.3.5}/doc/images/screenshots/fit.png +0 -0
  110. {plotpy-2.3.3 → plotpy-2.3.5}/doc/images/screenshots/get_point.png +0 -0
  111. {plotpy-2.3.3 → plotpy-2.3.5}/doc/images/screenshots/hist2d.png +0 -0
  112. {plotpy-2.3.3 → plotpy-2.3.5}/doc/images/screenshots/image_plot_tools.png +0 -0
  113. {plotpy-2.3.3 → plotpy-2.3.5}/doc/images/screenshots/imagefilter.png +0 -0
  114. {plotpy-2.3.3 → plotpy-2.3.5}/doc/images/screenshots/imagesuperp.png +0 -0
  115. {plotpy-2.3.3 → plotpy-2.3.5}/doc/images/screenshots/imagexy.png +0 -0
  116. {plotpy-2.3.3 → plotpy-2.3.5}/doc/images/screenshots/manager.png +0 -0
  117. {plotpy-2.3.3 → plotpy-2.3.5}/doc/images/screenshots/mandelbrot.png +0 -0
  118. {plotpy-2.3.3 → plotpy-2.3.5}/doc/images/screenshots/pcolor.png +0 -0
  119. {plotpy-2.3.3 → plotpy-2.3.5}/doc/images/screenshots/plot.png +0 -0
  120. {plotpy-2.3.3 → plotpy-2.3.5}/doc/images/screenshots/simple_dialog.png +0 -0
  121. {plotpy-2.3.3 → plotpy-2.3.5}/doc/images/screenshots/simple_window.png +0 -0
  122. {plotpy-2.3.3 → plotpy-2.3.5}/doc/images/screenshots/transform.png +0 -0
  123. {plotpy-2.3.3 → plotpy-2.3.5}/doc/index.rst +0 -0
  124. {plotpy-2.3.3 → plotpy-2.3.5}/doc/intro/examples.rst +0 -0
  125. {plotpy-2.3.3 → plotpy-2.3.5}/doc/intro/index.rst +0 -0
  126. {plotpy-2.3.3 → plotpy-2.3.5}/doc/intro/installation.rst +0 -0
  127. {plotpy-2.3.3 → plotpy-2.3.5}/doc/intro/licenses.rst +0 -0
  128. {plotpy-2.3.3 → plotpy-2.3.5}/doc/intro/motivation.rst +0 -0
  129. {plotpy-2.3.3 → plotpy-2.3.5}/doc/intro/overview.rst +0 -0
  130. {plotpy-2.3.3 → plotpy-2.3.5}/doc/requirements.rst +0 -0
  131. {plotpy-2.3.3 → plotpy-2.3.5}/doc/update_requirements.py +0 -0
  132. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/builder/__init__.py +0 -0
  133. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/builder/annotation.py +0 -0
  134. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/builder/curvemarker.py +0 -0
  135. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/builder/image.py +0 -0
  136. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/builder/label.py +0 -0
  137. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/builder/plot.py +0 -0
  138. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/builder/shape.py +0 -0
  139. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/config.py +0 -0
  140. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/constants.py +0 -0
  141. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/coords.py +0 -0
  142. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/colormaps_default.json +0 -0
  143. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/apply.png +0 -0
  144. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/arredit.png +0 -0
  145. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/arrow_down.png +0 -0
  146. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/arrow_up.png +0 -0
  147. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/autorefresh.png +0 -0
  148. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/autoscale.png +0 -0
  149. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/axes.png +0 -0
  150. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/busy.png +0 -0
  151. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/cell_edit.png +0 -0
  152. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/center.png +0 -0
  153. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/cmap_edit.png +0 -0
  154. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/contrast.png +0 -0
  155. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/copy.png +0 -0
  156. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/copytoclipboard.png +0 -0
  157. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/csapplylut.png +0 -0
  158. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/csautoscale.png +0 -0
  159. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/csection.png +0 -0
  160. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/csection_a.png +0 -0
  161. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/csection_line.png +0 -0
  162. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/csection_oblique.png +0 -0
  163. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/csperimage.png +0 -0
  164. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/curve_downsample.png +0 -0
  165. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/curvestyles/dots.png +0 -0
  166. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/curvestyles/lines.png +0 -0
  167. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/curvestyles/steps.png +0 -0
  168. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/curvestyles/sticks.png +0 -0
  169. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/curvetypes/xfy.png +0 -0
  170. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/curvetypes/yfx.png +0 -0
  171. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/delete.png +0 -0
  172. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/edit.png +0 -0
  173. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/edit_point_selection.png +0 -0
  174. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/editors/edit.png +0 -0
  175. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/editors/edit_add.png +0 -0
  176. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/editors/editcopy.png +0 -0
  177. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/editors/editdelete.png +0 -0
  178. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/editors/editpaste.png +0 -0
  179. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/editors/fileimport.png +0 -0
  180. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/editors/filesave.png +0 -0
  181. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/editors/imshow.png +0 -0
  182. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/editors/insert.png +0 -0
  183. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/editors/plot.png +0 -0
  184. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/editors/rename.png +0 -0
  185. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/eliminate_outliers.png +0 -0
  186. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/eraser.png +0 -0
  187. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/exit.png +0 -0
  188. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/expander_down.png +0 -0
  189. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/expander_right.png +0 -0
  190. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/export.png +0 -0
  191. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/file.png +0 -0
  192. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/fileclose.png +0 -0
  193. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/fileimport.png +0 -0
  194. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/filenew.png +0 -0
  195. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/fileopen.png +0 -0
  196. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/filesave.png +0 -0
  197. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/filesaveas.png +0 -0
  198. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/filetypes/doc.png +0 -0
  199. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/filetypes/gif.png +0 -0
  200. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/filetypes/html.png +0 -0
  201. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/filetypes/jpg.png +0 -0
  202. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/filetypes/pdf.png +0 -0
  203. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/filetypes/png.png +0 -0
  204. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/filetypes/pps.png +0 -0
  205. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/filetypes/ps.png +0 -0
  206. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/filetypes/tar.png +0 -0
  207. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/filetypes/tgz.png +0 -0
  208. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/filetypes/tif.png +0 -0
  209. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/filetypes/txt.png +0 -0
  210. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/filetypes/xls.png +0 -0
  211. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/filetypes/zip.png +0 -0
  212. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/font.png +0 -0
  213. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/full_range.png +0 -0
  214. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/funct.png +0 -0
  215. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/hcursor.png +0 -0
  216. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/hflip.png +0 -0
  217. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/imagestats.png +0 -0
  218. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/item_list.png +0 -0
  219. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/items/annotation.png +0 -0
  220. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/items/curve.png +0 -0
  221. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/items/errorbar.png +0 -0
  222. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/items/grid.png +0 -0
  223. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/items/histogram.png +0 -0
  224. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/items/histogram2d.png +0 -0
  225. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/items/image.png +0 -0
  226. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/items/label.png +0 -0
  227. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/items/legend.png +0 -0
  228. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/items/polygonmap.png +0 -0
  229. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/magnifier.png +0 -0
  230. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/markers/cross.png +0 -0
  231. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/markers/diamond.png +0 -0
  232. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/markers/ellipse.png +0 -0
  233. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/markers/hexagon.png +0 -0
  234. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/markers/point.png +0 -0
  235. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/markers/square.png +0 -0
  236. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/markers/star.png +0 -0
  237. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/markers/triangle_d.png +0 -0
  238. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/markers/triangle_l.png +0 -0
  239. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/markers/triangle_r.png +0 -0
  240. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/markers/triangle_u.png +0 -0
  241. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/markers/xcross.png +0 -0
  242. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/markerstyles/cross_marker.png +0 -0
  243. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/markerstyles/horiz_marker.png +0 -0
  244. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/markerstyles/vert_marker.png +0 -0
  245. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/mask/mask_circle.png +0 -0
  246. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/mask/mask_circle_outside.png +0 -0
  247. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/mask/mask_rectangle.png +0 -0
  248. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/mask/mask_rectangle_outside.png +0 -0
  249. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/mask/mask_tool.png +0 -0
  250. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/max.png +0 -0
  251. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/min.png +0 -0
  252. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/move.png +0 -0
  253. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/multipoint_selection.png +0 -0
  254. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/none.png +0 -0
  255. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/not_found.png +0 -0
  256. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/on_curve.png +0 -0
  257. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/patterns/bdiagpattern.png +0 -0
  258. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/patterns/crosspattern.png +0 -0
  259. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/patterns/dense1pattern.png +0 -0
  260. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/patterns/dense2pattern.png +0 -0
  261. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/patterns/dense3pattern.png +0 -0
  262. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/patterns/dense4pattern.png +0 -0
  263. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/patterns/dense5pattern.png +0 -0
  264. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/patterns/dense6pattern.png +0 -0
  265. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/patterns/dense7pattern.png +0 -0
  266. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/patterns/diagcrosspattern.png +0 -0
  267. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/patterns/fdiagpattern.png +0 -0
  268. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/patterns/horpattern.png +0 -0
  269. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/patterns/nobrush.png +0 -0
  270. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/patterns/solidpattern.png +0 -0
  271. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/patterns/verpattern.png +0 -0
  272. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/plotpy-banner.svg +0 -0
  273. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/plotpy-vertical.svg +0 -0
  274. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/plotpy.svg +0 -0
  275. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/point_selection.png +0 -0
  276. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/print.png +0 -0
  277. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/python.png +0 -0
  278. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/quickview.png +0 -0
  279. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/rectangular_select.png +0 -0
  280. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/refresh.png +0 -0
  281. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/save_all.png +0 -0
  282. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/scales/lin_lin.png +0 -0
  283. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/scales/lin_log.png +0 -0
  284. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/scales/log_lin.png +0 -0
  285. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/scales/log_log.png +0 -0
  286. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/selection.png +0 -0
  287. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/settings.png +0 -0
  288. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/shape.png +0 -0
  289. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/shapes/circle.png +0 -0
  290. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/shapes/contour.png +0 -0
  291. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/shapes/ellipse_shape.png +0 -0
  292. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/shapes/freeform.png +0 -0
  293. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/shapes/gtaxes.png +0 -0
  294. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/shapes/marker.png +0 -0
  295. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/shapes/oblique_rectangle.png +0 -0
  296. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/shapes/point_shape.png +0 -0
  297. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/shapes/polyline.png +0 -0
  298. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/shapes/rectangle.png +0 -0
  299. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/shapes/segment.png +0 -0
  300. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/snapshot.png +0 -0
  301. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/styles/dash.png +0 -0
  302. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/styles/dashdot.png +0 -0
  303. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/styles/dashdotdot.png +0 -0
  304. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/styles/dot.png +0 -0
  305. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/styles/solid.png +0 -0
  306. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/trash.png +0 -0
  307. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/trimage_lock.png +0 -0
  308. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/trimage_unlock.png +0 -0
  309. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/vcursor.png +0 -0
  310. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/vflip.png +0 -0
  311. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/xcursor.png +0 -0
  312. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/xmax.png +0 -0
  313. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/xmin.png +0 -0
  314. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/data/icons/xrange.png +0 -0
  315. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/events.py +0 -0
  316. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/external/__init__.py +0 -0
  317. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/external/sliders/__init__.py +0 -0
  318. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/external/sliders/_generic_range_slider.py +0 -0
  319. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/external/sliders/_generic_slider.py +0 -0
  320. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/external/sliders/_labeled.py +0 -0
  321. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/external/sliders/_misc.py +0 -0
  322. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/external/sliders/_range_style.py +0 -0
  323. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/external/sliders/_sliders.py +0 -0
  324. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/interfaces/__init__.py +0 -0
  325. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/interfaces/items.py +0 -0
  326. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/interfaces/panel.py +0 -0
  327. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/interfaces/plotmanager.py +0 -0
  328. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/io.py +0 -0
  329. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/items/__init__.py +0 -0
  330. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/items/annotation.py +0 -0
  331. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/items/contour.py +0 -0
  332. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/items/curve/__init__.py +0 -0
  333. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/items/grid.py +0 -0
  334. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/items/histogram.py +0 -0
  335. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/items/image/__init__.py +0 -0
  336. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/items/image/base.py +0 -0
  337. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/items/image/filter.py +0 -0
  338. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/items/image/image_items.py +0 -0
  339. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/items/image/masked.py +0 -0
  340. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/items/image/misc.py +0 -0
  341. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/items/image/transform.py +0 -0
  342. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/items/label.py +0 -0
  343. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/items/shape/__init__.py +0 -0
  344. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/items/shape/axis.py +0 -0
  345. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/items/shape/base.py +0 -0
  346. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/items/shape/ellipse.py +0 -0
  347. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/items/shape/marker.py +0 -0
  348. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/items/shape/point.py +0 -0
  349. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/items/shape/polygon.py +0 -0
  350. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/items/shape/range.py +0 -0
  351. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/items/shape/rectangle.py +0 -0
  352. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/items/shape/segment.py +0 -0
  353. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/items/shape/svg.py +0 -0
  354. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/locale/fr/LC_MESSAGES/plotpy.mo +0 -0
  355. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/lutrange.py +0 -0
  356. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/mathutils/__init__.py +0 -0
  357. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/mathutils/arrayfuncs.py +0 -0
  358. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/mathutils/colormap.py +0 -0
  359. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/mathutils/geometry.py +0 -0
  360. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/mathutils/scaler.py +0 -0
  361. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/panels/__init__.py +0 -0
  362. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/panels/base.py +0 -0
  363. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/panels/contrastadjustment.py +0 -0
  364. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/panels/csection/__init__.py +0 -0
  365. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/panels/csection/csitem.py +0 -0
  366. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/panels/csection/csplot.py +0 -0
  367. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/panels/csection/cswidget.py +0 -0
  368. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/panels/itemlist.py +0 -0
  369. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/plot/__init__.py +0 -0
  370. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/plot/base.py +0 -0
  371. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/plot/interactive.py +0 -0
  372. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/plot/manager.py +0 -0
  373. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/plot/plotwidget.py +0 -0
  374. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/pyplot.py +0 -0
  375. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/styles/__init__.py +0 -0
  376. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/styles/axes.py +0 -0
  377. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/styles/base.py +0 -0
  378. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/styles/curve.py +0 -0
  379. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/styles/errorbar.py +0 -0
  380. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/styles/histogram.py +0 -0
  381. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/styles/image.py +0 -0
  382. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/styles/label.py +0 -0
  383. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/styles/polygonmap.py +0 -0
  384. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/styles/shape.py +0 -0
  385. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/__init__.py +0 -0
  386. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/data/brain.png +0 -0
  387. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/data/brain_cylinder.png +0 -0
  388. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/data/mr-brain.dcm +0 -0
  389. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/data/svg_target.svg +0 -0
  390. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/data/svg_tool.svg +0 -0
  391. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/data.py +0 -0
  392. {plotpy-2.3.3/plotpy/tests/benchmarks → plotpy-2.3.5/plotpy/tests/features}/__init__.py +0 -0
  393. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/features/test_auto_curve_image.py +0 -0
  394. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/features/test_autoscale_shapes.py +0 -0
  395. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/features/test_builder.py +0 -0
  396. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/features/test_colormap_editor.py +0 -0
  397. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/features/test_colormap_manager.py +0 -0
  398. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/features/test_contrast.py +0 -0
  399. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/features/test_cursors.py +0 -0
  400. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/features/test_dicom_image.py +0 -0
  401. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/features/test_fit.py +0 -0
  402. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/features/test_image_coords.py +0 -0
  403. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/features/test_imagefilter.py +0 -0
  404. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/features/test_imagesuperp.py +0 -0
  405. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/features/test_loadsaveitems_hdf5.py +0 -0
  406. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/features/test_loadsaveitems_json.py +0 -0
  407. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/features/test_loadsaveitems_pickle.py +0 -0
  408. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/features/test_manager.py +0 -0
  409. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/features/test_no_auto_tools.py +0 -0
  410. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/features/test_plot_log.py +0 -0
  411. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/features/test_plot_types.py +0 -0
  412. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/features/test_plot_yreverse.py +0 -0
  413. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/features/test_pyplot.py +0 -0
  414. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/features/test_resize.py +0 -0
  415. {plotpy-2.3.3/plotpy/tests/features → plotpy-2.3.5/plotpy/tests/items}/__init__.py +0 -0
  416. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/items/test_annotations.py +0 -0
  417. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/items/test_curves.py +0 -0
  418. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/items/test_curves_highdpi.py +0 -0
  419. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/items/test_hist2d.py +0 -0
  420. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/items/test_histogram.py +0 -0
  421. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/items/test_image.py +0 -0
  422. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/items/test_image_contour.py +0 -0
  423. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/items/test_image_masked.py +0 -0
  424. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/items/test_image_masked_xy.py +0 -0
  425. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/items/test_image_rgb.py +0 -0
  426. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/items/test_image_xy.py +0 -0
  427. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/items/test_mandelbrot.py +0 -0
  428. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/items/test_pcolor.py +0 -0
  429. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/items/test_polygons.py +0 -0
  430. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/items/test_svgshapes.py +0 -0
  431. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/items/test_transform.py +0 -0
  432. {plotpy-2.3.3/plotpy/tests/items → plotpy-2.3.5/plotpy/tests/tools}/__init__.py +0 -0
  433. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/tools/test_actiontool.py +0 -0
  434. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/tools/test_cross_section.py +0 -0
  435. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/tools/test_cross_section_line.py +0 -0
  436. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/tools/test_cross_section_oblique.py +0 -0
  437. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/tools/test_customize_shape_tool.py +0 -0
  438. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/tools/test_downsample_curve.py +0 -0
  439. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/tools/test_edit_point.py +0 -0
  440. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/tools/test_get_point.py +0 -0
  441. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/tools/test_get_points.py +0 -0
  442. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/tools/test_get_rectangle.py +0 -0
  443. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/tools/test_get_rectangle_with_svg.py +0 -0
  444. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/tools/test_get_segment.py +0 -0
  445. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/tools/test_image_plot_tools.py +0 -0
  446. {plotpy-2.3.3/plotpy/tests/tools → plotpy-2.3.5/plotpy/tests/unit}/__init__.py +0 -0
  447. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/unit/test_annotation_tools.py +0 -0
  448. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/unit/test_aspect_ratio_tool.py +0 -0
  449. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/unit/test_baseplot.py +0 -0
  450. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/unit/test_contour.py +0 -0
  451. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/unit/test_cursor_tools.py +0 -0
  452. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/unit/test_display_coords_tool.py +0 -0
  453. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/unit/test_events.py +0 -0
  454. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/unit/test_fontparam.py +0 -0
  455. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/unit/test_geometry.py +0 -0
  456. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/unit/test_highprecisionxy.py +0 -0
  457. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/unit/test_io.py +0 -0
  458. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/unit/test_line.py +0 -0
  459. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/unit/test_line_cross_section_tool.py +0 -0
  460. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/unit/test_multiline_tools.py +0 -0
  461. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/unit/test_oblique_cross_section_tool.py +0 -0
  462. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/unit/test_plot_image.py +0 -0
  463. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/unit/test_rect_zoom.py +0 -0
  464. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/unit/test_seg_dist.py +0 -0
  465. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/unit/test_styles.py +0 -0
  466. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/unit/utils.py +0 -0
  467. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/vistools.py +0 -0
  468. {plotpy-2.3.3/plotpy/tests/unit → plotpy-2.3.5/plotpy/tests/widgets}/__init__.py +0 -0
  469. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/widgets/test_dotarraydemo.py +0 -0
  470. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/widgets/test_filtertest1.py +0 -0
  471. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/widgets/test_filtertest2.py +0 -0
  472. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/widgets/test_fliprotate.py +0 -0
  473. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/widgets/test_plot_timecurve.py +0 -0
  474. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/widgets/test_qtdesigner.py +0 -0
  475. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/widgets/test_qtdesigner.ui +0 -0
  476. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/widgets/test_resize_dialog.py +0 -0
  477. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/widgets/test_rotatecrop.py +0 -0
  478. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/widgets/test_simple_dialog.py +0 -0
  479. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/widgets/test_simple_window.py +0 -0
  480. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tests/widgets/test_syncplot.py +0 -0
  481. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tools/__init__.py +0 -0
  482. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tools/annotation.py +0 -0
  483. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tools/axes.py +0 -0
  484. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tools/base.py +0 -0
  485. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tools/cross_section.py +0 -0
  486. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tools/cursor.py +0 -0
  487. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tools/image.py +0 -0
  488. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tools/item.py +0 -0
  489. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tools/label.py +0 -0
  490. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tools/misc.py +0 -0
  491. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tools/plot.py +0 -0
  492. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tools/selection.py +0 -0
  493. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/tools/shape.py +0 -0
  494. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/widgets/__init__.py +0 -0
  495. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/widgets/about.py +0 -0
  496. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/widgets/basetransform.py +0 -0
  497. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/widgets/colormap/__init__.py +0 -0
  498. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/widgets/colormap/_slider.py +0 -0
  499. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/widgets/colormap/widget.py +0 -0
  500. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/widgets/fit.py +0 -0
  501. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/widgets/fliprotate.py +0 -0
  502. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/widgets/imagefile.py +0 -0
  503. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/widgets/qtdesigner.py +0 -0
  504. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/widgets/resizedialog.py +0 -0
  505. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/widgets/rotatecrop.py +0 -0
  506. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy/widgets/selectdialog.py +0 -0
  507. {plotpy-2.3.3 → plotpy-2.3.5}/plotpy-tests.desktop +0 -0
  508. {plotpy-2.3.3 → plotpy-2.3.5}/qtdesigner/plotplugin.py +0 -0
  509. {plotpy-2.3.3 → plotpy-2.3.5}/requirements.txt +0 -0
  510. {plotpy-2.3.3 → plotpy-2.3.5}/setup.cfg +0 -0
  511. {plotpy-2.3.3 → plotpy-2.3.5}/setup.py +0 -0
  512. {plotpy-2.3.3 → plotpy-2.3.5}/src/arrays.hpp +0 -0
  513. {plotpy-2.3.3 → plotpy-2.3.5}/src/contour2d.pyx +0 -0
  514. {plotpy-2.3.3 → plotpy-2.3.5}/src/debug.hpp +0 -0
  515. {plotpy-2.3.3 → plotpy-2.3.5}/src/histogram2d.pyx +0 -0
  516. {plotpy-2.3.3 → plotpy-2.3.5}/src/mandelbrot.pyx +0 -0
  517. {plotpy-2.3.3 → plotpy-2.3.5}/src/pcolor.cpp +0 -0
  518. {plotpy-2.3.3 → plotpy-2.3.5}/src/points.hpp +0 -0
  519. {plotpy-2.3.3 → plotpy-2.3.5}/src/scaler.cpp +0 -0
  520. {plotpy-2.3.3 → plotpy-2.3.5}/src/scaler.hpp +0 -0
  521. {plotpy-2.3.3 → plotpy-2.3.5}/src/traits.hpp +0 -0
@@ -1,5 +1,33 @@
1
1
  # Changelog #
2
2
 
3
+ ## Version 2.3.5 ##
4
+
5
+ This release is mainly intended to fix the Windows binary distribution, which was not
6
+ supporting NumPy 2.0.
7
+
8
+ 🛠️ Bug fixes:
9
+
10
+ * Moved back `conftest.py` to the `tests` folder (was in the root folder), so that
11
+ `pytest` can be executed with proper configuration when running the test suite
12
+ from the installed package
13
+
14
+ * Removed benchmarks from automated test suite (not relevant for the end user):
15
+ added `plotpy-benchmarks` script to run the benchmarks
16
+
17
+ ## Version 2.3.4 ##
18
+
19
+ In this release, test coverage is 79%.
20
+
21
+ 🛠️ Bug fixes:
22
+
23
+ * Add support for NumPy 2.0:
24
+ * Updated build system to use NumPy 2.0 on Python > 3.8 and NumPy 1 on Python 3.8
25
+ * Use `numpy.asarray` instead of `numpy.array(..., copy=False)`
26
+ * Use `numpy.isin` instead of `numpy.in1d`
27
+ * Use `scipy.integrate.trapezoid` instead of `numpy.trapz`
28
+
29
+ * `ColorMapManager`: fix segmentation fault with PySide6 on Linux
30
+
3
31
  ## Version 2.3.3 ##
4
32
 
5
33
  In this release, test coverage is 79%.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PlotPy
3
- Version: 2.3.3
3
+ Version: 2.3.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
@@ -64,7 +64,7 @@ Description-Content-Type: text/markdown
64
64
  License-File: LICENSE
65
65
  Requires-Dist: guidata>=3.4
66
66
  Requires-Dist: PythonQwt>=0.12.1
67
- Requires-Dist: NumPy<2,>=1.17
67
+ Requires-Dist: NumPy>=1.17
68
68
  Requires-Dist: SciPy>=1.3
69
69
  Requires-Dist: Pillow
70
70
  Requires-Dist: tifffile
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PlotPy
3
- Version: 2.3.3
3
+ Version: 2.3.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
@@ -64,7 +64,7 @@ Description-Content-Type: text/markdown
64
64
  License-File: LICENSE
65
65
  Requires-Dist: guidata>=3.4
66
66
  Requires-Dist: PythonQwt>=0.12.1
67
- Requires-Dist: NumPy<2,>=1.17
67
+ Requires-Dist: NumPy>=1.17
68
68
  Requires-Dist: SciPy>=1.3
69
69
  Requires-Dist: Pillow
70
70
  Requires-Dist: tifffile
@@ -2,7 +2,6 @@ CHANGELOG.md
2
2
  LICENSE
3
3
  MANIFEST.in
4
4
  README.md
5
- conftest.py
6
5
  plotpy-tests.desktop
7
6
  pyproject.toml
8
7
  requirements.txt
@@ -366,6 +365,7 @@ plotpy/styles/label.py
366
365
  plotpy/styles/polygonmap.py
367
366
  plotpy/styles/shape.py
368
367
  plotpy/tests/__init__.py
368
+ plotpy/tests/conftest.py
369
369
  plotpy/tests/data.py
370
370
  plotpy/tests/vistools.py
371
371
  plotpy/tests/benchmarks/__init__.py
@@ -0,0 +1,3 @@
1
+ [gui_scripts]
2
+ plotpy-benchmarks = plotpy.tests.benchmarks:run
3
+ plotpy-tests = plotpy.tests:run
@@ -1,6 +1,6 @@
1
1
  guidata>=3.4
2
2
  PythonQwt>=0.12.1
3
- NumPy<2,>=1.17
3
+ NumPy>=1.17
4
4
  SciPy>=1.3
5
5
  Pillow
6
6
  tifffile
@@ -29,11 +29,11 @@ To run the unittests, you need:
29
29
 
30
30
  Then run the following command::
31
31
 
32
- pytest
32
+ pytest plotpy
33
33
 
34
34
  To run test with coverage support, use the following command::
35
35
 
36
- pytest -v --cov --cov-report=html
36
+ pytest -v --cov --cov-report=html plotpy
37
37
 
38
38
 
39
39
  Code formatting
@@ -75,7 +75,7 @@ Before submitting a patch, please check the following points:
75
75
 
76
76
  .. code-block:: bash
77
77
 
78
- pytest
78
+ pytest plotpy
79
79
 
80
80
  Pull request
81
81
  ~~~~~~~~~~~~
@@ -72,7 +72,7 @@ That's it, you can now run the tests using the following command:
72
72
 
73
73
  .. code-block:: bash
74
74
 
75
- pytest
75
+ pytest plotpy
76
76
 
77
77
  If you want to rely on Visual Studio Code for editing and take advantage of the
78
78
  project settings and tasks, you will need to set the following environment variable:
@@ -160,4 +160,4 @@ That's it, you can now run the tests using the following command:
160
160
 
161
161
  .. code-block:: bash
162
162
 
163
- pytest
163
+ pytest plotpy
@@ -20,7 +20,7 @@ External resources:
20
20
  .. _GitHub: https://github.com/PierreRaybaut/plotpy
21
21
  """
22
22
 
23
- __version__ = "2.3.3"
23
+ __version__ = "2.3.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
@@ -388,8 +388,8 @@ class CurveItem(QwtPlotCurve):
388
388
  this method is called to update decimated data (i.e. only update 1/N value
389
389
  with N set in CurveItem.param.decimation).
390
390
  """
391
- self._x = np.array(x, copy=False)
392
- self._y = np.array(y, copy=False)
391
+ self._x = np.asarray(x)
392
+ self._y = np.asarray(y)
393
393
  self._setData(self._x, self._y)
394
394
 
395
395
  def is_empty(self) -> bool:
@@ -144,11 +144,11 @@ class ErrorBarCurveItem(CurveItem):
144
144
  """
145
145
  CurveItem.set_data(self, x, y)
146
146
  if dx is not None:
147
- dx = np.array(dx, copy=False)
147
+ dx = np.asarray(dx)
148
148
  if dx.size == 0:
149
149
  dx = None
150
150
  if dy is not None:
151
- dy = np.array(dy, copy=False)
151
+ dy = np.asarray(dy)
152
152
  if dy.size == 0:
153
153
  dy = None
154
154
  self._dx = dx
@@ -264,9 +264,9 @@ class PolygonMapItem(QwtPlotItem):
264
264
  * x: NumPy array
265
265
  * y: NumPy array
266
266
  """
267
- self._pts = np.array(pts, copy=False)
268
- self._n = np.array(n, copy=False)
269
- self._c = np.array(c, copy=False)
267
+ self._pts = np.asarray(pts)
268
+ self._n = np.asarray(n)
269
+ self._c = np.asarray(c)
270
270
  xmin, ymin = self._pts.min(axis=0)
271
271
  xmax, ymax = self._pts.max(axis=0)
272
272
  self.bounds = QC.QRectF(xmin, ymin, xmax - xmin, ymax - ymin)
@@ -0,0 +1,20 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # Licensed under the terms of the BSD 3-Clause
4
+ # (see plotpy/LICENSE for details)
5
+
6
+ """
7
+ plotpy benchmarks
8
+ =================
9
+ """
10
+
11
+ from .test_benchmarks import test_benchmarks
12
+
13
+
14
+ def run() -> None:
15
+ """Run plotpy benchmarks"""
16
+ test_benchmarks()
17
+
18
+
19
+ if __name__ == "__main__":
20
+ run()
@@ -3,12 +3,37 @@
3
3
  # Licensed under the terms of the BSD 3-Clause
4
4
  # (see plotpy/LICENSE for details)
5
5
 
6
- """plotpy plot benchmarking"""
6
+ """
7
+ PlotPy plot benchmark
8
+ ---------------------
9
+
10
+ This script benchmarks PlotPy plotting features.
11
+
12
+
13
+ Results obtained with PlotPy v2.3.5 on Windows 11 with a i5-1335U CPU @ 1.30 GHz:
14
+
15
+ .. code-block:: none
16
+
17
+ PlotPy plot benchmark [Python 3.12.3 64 bits, Qt 5.15.2, PyQt 5.15.10 on Windows]
18
+
19
+ N | ∆t (ms) | Description
20
+ --------------------------------------------------------------------------------
21
+ 5e+06 | 215 | Simple curve
22
+ 2e+05 | 774 | Curve with markers
23
+ 1e+06 | 2411 | Curve with sticks
24
+ 1e+04 | 2025 | Error bar curve (vertical bars only)
25
+ 1e+04 | 198 | Error bar curve (horizontal and vertical bars)
26
+ 1e+06 | 105 | Simple histogram
27
+ 1e+03 | 722 | Polar pcolor
28
+ 7e+03 | 902 | Simple image
29
+ """
7
30
 
8
31
  import time
9
32
 
10
33
  import guidata
11
34
  import numpy as np
35
+ import pytest
36
+ from guidata.env import execenv
12
37
  from guidata.qthelpers import qt_app_context
13
38
  from guidata.widgets import about
14
39
  from qtpy import QtWidgets as QW
@@ -23,6 +48,17 @@ class BaseBM:
23
48
  MAKE_FUNC = make.curve # to be overriden in subclasses
24
49
  WIN_TYPE = "auto"
25
50
 
51
+ @classmethod
52
+ def print_header(cls):
53
+ """Print header for benchmark results"""
54
+ execenv.print(f"PlotPy plot benchmark [{about.get_python_libs_infos()}]")
55
+ execenv.print()
56
+ table_header = (
57
+ "N".rjust(10) + " | " + "∆t (ms)".rjust(7) + " | " + "Description"
58
+ ).ljust(80)
59
+ execenv.print(table_header)
60
+ execenv.print("-" * len(table_header))
61
+
26
62
  def __init__(self, name, nsamples, **options):
27
63
  self.name = name
28
64
  self.nsamples = int(nsamples)
@@ -49,16 +85,19 @@ class BaseBM:
49
85
  QW.QApplication.processEvents()
50
86
  plot = win.manager.get_plot()
51
87
 
52
- # Create item (ignore this step in benchmark result!)
88
+ # Create item
53
89
  self.make_item()
54
90
 
55
91
  # Benchmarking
56
92
  t0 = time.time()
57
93
  self.add_to_plot(plot)
58
- print(self.name + ":")
59
- print(" N = {}".format(self.nsamples))
60
94
  plot.replot() # Force replot
61
- print(" dt = {} ms".format((time.time() - t0) * 1e3))
95
+ QW.QApplication.processEvents()
96
+ dt = (time.time() - t0) * 1e3
97
+
98
+ row = f"{self.nsamples:10.0e} | {int(dt):7} | {self.name}"
99
+ execenv.print(row)
100
+
62
101
  return win
63
102
 
64
103
 
@@ -122,13 +161,11 @@ class PColorBM(BaseBM):
122
161
  return x, y, z
123
162
 
124
163
 
164
+ @pytest.mark.skip(reason="Not relevant in automated test suite")
125
165
  def test_benchmarks():
126
166
  """Run benchmark"""
127
167
  # Print(informations banner)
128
- title = f"PlotPy plot benchmark [{about.get_python_libs_infos()}]"
129
- print(title)
130
- print("-" * len(title))
131
- print()
168
+ BaseBM.print_header()
132
169
 
133
170
  _app = guidata.qapplication()
134
171
 
@@ -141,7 +178,7 @@ def test_benchmarks():
141
178
  CurveBM("Curve with sticks", 1e6, curvestyle="Sticks"),
142
179
  ErrorBarBM("Error bar curve (vertical bars only)", 1e4),
143
180
  ErrorBarBM("Error bar curve (horizontal and vertical bars)", 1e4, dx=True),
144
- HistogramBM("Simple histogram", 1e6, bins=int(1e5)),
181
+ HistogramBM("Simple histogram", 1e6, bins=10000),
145
182
  PColorBM("Polar pcolor", 1e3),
146
183
  ImageBM("Simple image", 7e3, interpolation="antialiasing"),
147
184
  ):
@@ -8,6 +8,7 @@
8
8
  # guitest: show
9
9
 
10
10
  import numpy as np
11
+ import pytest
11
12
  from guidata.qthelpers import qt_app_context
12
13
 
13
14
  from plotpy.builder import make
@@ -28,6 +29,7 @@ def compute_image(i, N=7500, M=1750):
28
29
  return (np.random.rand(N, M) * 65536).astype(np.int16)
29
30
 
30
31
 
32
+ @pytest.mark.skip(reason="Not relevant in automated test suite")
31
33
  def test_bigimages():
32
34
  """Test Bigimages"""
33
35
  with qt_app_context(exec_loop=True):
@@ -8,6 +8,7 @@
8
8
  # guitest: show
9
9
 
10
10
  import numpy as np
11
+ import pytest
11
12
  from guidata.qthelpers import qt_app_context
12
13
 
13
14
  # import cProfile
@@ -72,9 +73,10 @@ class LoadTest(QW.QMainWindow):
72
73
  QW.QApplication.processEvents()
73
74
 
74
75
 
75
- if __name__ == "__main__":
76
+ @pytest.mark.skip(reason="Not relevant in automated test suite")
77
+ def test_loadtest():
78
+ """Run load test"""
76
79
  with qt_app_context(exec_loop=True):
77
- app = QW.QApplication([])
78
80
  # import time
79
81
  # t0 = time.time()
80
82
  # with cProfile.Profile() as pr:
@@ -87,3 +89,7 @@ if __name__ == "__main__":
87
89
  # stats.sort_stats('cumulative')
88
90
  # stats.dump_stats('.prof_stats')
89
91
  # stats.print_stats()
92
+
93
+
94
+ if __name__ == "__main__":
95
+ test_loadtest()
@@ -1,7 +1,13 @@
1
1
  # content of conftest.py
2
2
 
3
3
  import guidata
4
+ import h5py
5
+ import numpy
6
+ import PIL
4
7
  import qtpy
8
+ import qwt
9
+ import scipy
10
+ import tifffile
5
11
  from guidata.env import execenv
6
12
 
7
13
  import plotpy
@@ -18,5 +24,9 @@ def pytest_report_header(config):
18
24
  qtbindings_version = qtpy.PYQT_VERSION
19
25
  return [
20
26
  f"PlotPy {plotpy.__version__}, guidata {guidata.__version__}, "
27
+ f"PythonQwt {qwt.__version__}, "
21
28
  f"{qtpy.API_NAME} {qtbindings_version} [Qt version: {qtpy.QT_VERSION}]",
29
+ f"NumPy {numpy.__version__}, SciPy {scipy.__version__}, "
30
+ f"h5py {h5py.__version__}, "
31
+ f"Pillow {PIL.__version__}, tifffile {tifffile.__version__}",
22
32
  ]
@@ -7,8 +7,9 @@
7
7
 
8
8
  # guitest: show
9
9
 
10
+ import numpy as np
11
+ import scipy.integrate as spt
10
12
  from guidata.qthelpers import qt_app_context
11
- from numpy import linspace, sin, trapz
12
13
 
13
14
  from plotpy.builder import make
14
15
  from plotpy.tests import vistools as ptv
@@ -16,8 +17,8 @@ from plotpy.tests import vistools as ptv
16
17
 
17
18
  def test_computations():
18
19
  """Test computations"""
19
- x = linspace(-10, 10, 1000)
20
- y = sin(sin(sin(x)))
20
+ x = np.linspace(-10, 10, 1000)
21
+ y = np.sin(np.sin(np.sin(x)))
21
22
  with qt_app_context(exec_loop=True):
22
23
  curve = make.curve(x, y, "ab", "b")
23
24
  range = make.range(-2, 2)
@@ -26,7 +27,7 @@ def test_computations():
26
27
  )
27
28
 
28
29
  disp1 = make.computation(
29
- range, "BL", "trapz=%g", curve, lambda x, y: trapz(y, x)
30
+ range, "BL", "trapz=%g", curve, lambda x, y: spt.trapezoid(y, x)
30
31
  )
31
32
 
32
33
  disp2 = make.computations(
@@ -7,6 +7,7 @@
7
7
 
8
8
  import numpy as np
9
9
  import pytest
10
+ from guidata.qthelpers import qt_app_context
10
11
 
11
12
  from plotpy.builder import make
12
13
  from plotpy.tests.unit.test_builder_curve import show_items_qtbot
@@ -61,28 +62,30 @@ def _make_annotation(
61
62
  ],
62
63
  )
63
64
  def test_builder_annotation_params(method):
64
- items = []
65
- for show_label in [True, False]:
66
- items.append(
67
- _make_annotation(
68
- method,
69
- title="title",
70
- subtitle="subtitle",
71
- show_label=show_label,
65
+ """Test PlotBuilder annotation factory method parameters"""
66
+ with qt_app_context(exec_loop=False):
67
+ items = []
68
+ for show_label in [True, False]:
69
+ items.append(
70
+ _make_annotation(
71
+ method,
72
+ title="title",
73
+ subtitle="subtitle",
74
+ show_label=show_label,
75
+ )
72
76
  )
73
- )
74
- for show_computations in [True, False]:
75
- items.append(_make_annotation(method, show_computations=show_computations))
76
- for show_subtitle in [True, False]:
77
- items.append(_make_annotation(method, show_subtitle=show_subtitle))
78
- for format in ["%f", "%e"]:
79
- items.append(_make_annotation(method, format=format))
80
- for uncertainty in [0.0, 1.0]:
81
- items.append(_make_annotation(method, uncertainty=uncertainty))
82
- for transform_matrix in [None, np.identity(3)]:
83
- items.append(_make_annotation(method, transform_matrix=transform_matrix))
84
- for readonly in [True, False]:
85
- items.append(_make_annotation(method, readonly=readonly))
86
- for private in [True, False]:
87
- items.append(_make_annotation(method, private=private))
88
- show_items_qtbot(items)
77
+ for show_computations in [True, False]:
78
+ items.append(_make_annotation(method, show_computations=show_computations))
79
+ for show_subtitle in [True, False]:
80
+ items.append(_make_annotation(method, show_subtitle=show_subtitle))
81
+ for format in ["%f", "%e"]:
82
+ items.append(_make_annotation(method, format=format))
83
+ for uncertainty in [0.0, 1.0]:
84
+ items.append(_make_annotation(method, uncertainty=uncertainty))
85
+ for transform_matrix in [None, np.identity(3)]:
86
+ items.append(_make_annotation(method, transform_matrix=transform_matrix))
87
+ for readonly in [True, False]:
88
+ items.append(_make_annotation(method, readonly=readonly))
89
+ for private in [True, False]:
90
+ items.append(_make_annotation(method, private=private))
91
+ show_items_qtbot(items)
@@ -7,7 +7,7 @@
7
7
 
8
8
  import numpy as np
9
9
  import pytest
10
- from guidata.qthelpers import exec_dialog
10
+ from guidata.qthelpers import exec_dialog, qt_app_context
11
11
  from qtpy.QtCore import Qt
12
12
  from qwt import QwtPlotCurve
13
13
 
@@ -43,8 +43,9 @@ def _make_curve_style(shade, curvestyle, baseline):
43
43
  @pytest.mark.parametrize("baseline", [0.0])
44
44
  def test_builder_curve_curve_style(shade, curvestyle, baseline):
45
45
  """Test curve parameters of curve() method"""
46
- curve = _make_curve_style(shade, curvestyle, baseline)
47
- show_items_qtbot([curve], "curve")
46
+ with qt_app_context(exec_loop=False):
47
+ curve = _make_curve_style(shade, curvestyle, baseline)
48
+ show_items_qtbot([curve], "curve")
48
49
 
49
50
 
50
51
  @pytest.mark.parametrize("shade", [0, 0.4, 1.0])
@@ -52,8 +53,9 @@ def test_builder_curve_curve_style(shade, curvestyle, baseline):
52
53
  @pytest.mark.parametrize("baseline", [0.0, 1.0])
53
54
  def test_builder_curve_curve_shade_baseline(shade, curvestyle, baseline):
54
55
  """Test curve parameters of curve() method"""
55
- curve = _make_curve_style(shade, curvestyle, baseline)
56
- show_items_qtbot([curve], "curve")
56
+ with qt_app_context(exec_loop=False):
57
+ curve = _make_curve_style(shade, curvestyle, baseline)
58
+ show_items_qtbot([curve], "curve")
57
59
 
58
60
 
59
61
  def _make_curve_dsamp(dsamp_factor, use_dsamp):
@@ -70,16 +72,18 @@ def _make_curve_dsamp(dsamp_factor, use_dsamp):
70
72
  @pytest.mark.parametrize("use_dsamp", [True])
71
73
  def test_builder_curve_dsamp_on(dsamp_factor, use_dsamp):
72
74
  """Test downsampling parameters of curve() method: use_dsamp=True"""
73
- curve = _make_curve_dsamp(dsamp_factor, use_dsamp)
74
- show_items_qtbot([curve], "curve")
75
+ with qt_app_context(exec_loop=False):
76
+ curve = _make_curve_dsamp(dsamp_factor, use_dsamp)
77
+ show_items_qtbot([curve], "curve")
75
78
 
76
79
 
77
80
  @pytest.mark.parametrize("dsamp_factor", [1, 2])
78
81
  @pytest.mark.parametrize("use_dsamp", [False])
79
82
  def test_builder_curve_dsamp_off(dsamp_factor, use_dsamp):
80
83
  """Test downsampling parameters of curve() method: use_dsamp=False"""
81
- curve = _make_curve_dsamp(dsamp_factor, use_dsamp)
82
- show_items_qtbot([curve], "curve")
84
+ with qt_app_context(exec_loop=False):
85
+ curve = _make_curve_dsamp(dsamp_factor, use_dsamp)
86
+ show_items_qtbot([curve], "curve")
83
87
 
84
88
 
85
89
  def _make_curve_linestyle(color, linestyle, linewidth):
@@ -102,8 +106,9 @@ def _make_curve_linestyle(color, linestyle, linewidth):
102
106
  @pytest.mark.parametrize("linewidth", [1, 2])
103
107
  def test_builder_curve_line_style(color, linestyle, linewidth):
104
108
  """Test line parameters of curve() method"""
105
- curve = _make_curve_linestyle(color, linestyle, linewidth)
106
- show_items_qtbot([curve], "curve")
109
+ with qt_app_context(exec_loop=False):
110
+ curve = _make_curve_linestyle(color, linestyle, linewidth)
111
+ show_items_qtbot([curve], "curve")
107
112
 
108
113
 
109
114
  @pytest.mark.parametrize("color", ["red", "blue"])
@@ -111,8 +116,9 @@ def test_builder_curve_line_style(color, linestyle, linewidth):
111
116
  @pytest.mark.parametrize("linewidth", [1, 2])
112
117
  def test_builder_curve_line_color(color, linestyle, linewidth):
113
118
  """Test line parameters of curve() method"""
114
- curve = _make_curve_linestyle(color, linestyle, linewidth)
115
- show_items_qtbot([curve], "curve")
119
+ with qt_app_context(exec_loop=False):
120
+ curve = _make_curve_linestyle(color, linestyle, linewidth)
121
+ show_items_qtbot([curve], "curve")
116
122
 
117
123
 
118
124
  def _make_curve_marker(marker, markersize, markerfacecolor, markeredgecolor):
@@ -160,8 +166,9 @@ def test_builder_curve_marker_params_symbol(
160
166
  marker, markersize, markerfacecolor, markeredgecolor
161
167
  ):
162
168
  """Test marker parameters of curve() methodg"""
163
- curve = _make_curve_marker(marker, markersize, markerfacecolor, markeredgecolor)
164
- show_items_qtbot([curve], "curve")
169
+ with qt_app_context(exec_loop=False):
170
+ curve = _make_curve_marker(marker, markersize, markerfacecolor, markeredgecolor)
171
+ show_items_qtbot([curve], "curve")
165
172
 
166
173
 
167
174
  @pytest.mark.parametrize("marker", ["Cross"])
@@ -172,5 +179,6 @@ def test_builder_curve_marker_size_color(
172
179
  marker, markersize, markerfacecolor, markeredgecolor
173
180
  ):
174
181
  """Test marker parameters of curve() methodg"""
175
- curve = _make_curve_marker(marker, markersize, markerfacecolor, markeredgecolor)
176
- show_items_qtbot([curve], "curve")
182
+ with qt_app_context(exec_loop=False):
183
+ curve = _make_curve_marker(marker, markersize, markerfacecolor, markeredgecolor)
184
+ show_items_qtbot([curve], "curve")