interactive-figure 0.3.5__tar.gz → 0.3.6__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 (101) hide show
  1. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/PKG-INFO +1 -1
  2. interactive_figure-0.3.6/src/interactive_figure/__about__.py +1 -0
  3. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/src/interactive_figure/interactive_figure.py +27 -6
  4. interactive_figure-0.3.5/src/interactive_figure/__about__.py +0 -1
  5. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/.gitignore +0 -0
  6. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/LICENSE.txt +0 -0
  7. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/README.md +0 -0
  8. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/demo/press.py +0 -0
  9. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/demo/reaction_time.py +0 -0
  10. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/demo/usage.py +0 -0
  11. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/.buildinfo +0 -0
  12. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/.buildinfo.bak +0 -0
  13. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/.doctrees/autoapi/index.doctree +0 -0
  14. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/.doctrees/autoapi/interactive_figure/__about__/index.doctree +0 -0
  15. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/.doctrees/autoapi/interactive_figure/index.doctree +0 -0
  16. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/.doctrees/autoapi/interactive_figure/interactive_figure/index.doctree +0 -0
  17. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/.doctrees/environment.pickle +0 -0
  18. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/.doctrees/index.doctree +0 -0
  19. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/.nojekyll +0 -0
  20. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_sources/autoapi/index.rst.txt +0 -0
  21. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_sources/autoapi/interactive_figure/__about__/index.rst.txt +0 -0
  22. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_sources/autoapi/interactive_figure/index.rst.txt +0 -0
  23. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_sources/autoapi/interactive_figure/interactive_figure/index.rst.txt +0 -0
  24. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_sources/index.rst.txt +0 -0
  25. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/_sphinx_javascript_frameworks_compat.js +0 -0
  26. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/basic.css +0 -0
  27. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/css/badge_only.css +0 -0
  28. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
  29. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
  30. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
  31. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
  32. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/css/fonts/fontawesome-webfont.eot +0 -0
  33. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/css/fonts/fontawesome-webfont.svg +0 -0
  34. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/css/fonts/fontawesome-webfont.ttf +0 -0
  35. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/css/fonts/fontawesome-webfont.woff +0 -0
  36. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
  37. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/css/fonts/lato-bold-italic.woff +0 -0
  38. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/css/fonts/lato-bold-italic.woff2 +0 -0
  39. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/css/fonts/lato-bold.woff +0 -0
  40. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/css/fonts/lato-bold.woff2 +0 -0
  41. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/css/fonts/lato-normal-italic.woff +0 -0
  42. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/css/fonts/lato-normal-italic.woff2 +0 -0
  43. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/css/fonts/lato-normal.woff +0 -0
  44. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/css/fonts/lato-normal.woff2 +0 -0
  45. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/css/theme.css +0 -0
  46. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/doctools.js +0 -0
  47. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/documentation_options.js +0 -0
  48. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/file.png +0 -0
  49. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/fonts/Lato/lato-bold.eot +0 -0
  50. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/fonts/Lato/lato-bold.ttf +0 -0
  51. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/fonts/Lato/lato-bold.woff +0 -0
  52. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/fonts/Lato/lato-bold.woff2 +0 -0
  53. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/fonts/Lato/lato-bolditalic.eot +0 -0
  54. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
  55. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/fonts/Lato/lato-bolditalic.woff +0 -0
  56. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
  57. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/fonts/Lato/lato-italic.eot +0 -0
  58. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/fonts/Lato/lato-italic.ttf +0 -0
  59. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/fonts/Lato/lato-italic.woff +0 -0
  60. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/fonts/Lato/lato-italic.woff2 +0 -0
  61. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/fonts/Lato/lato-regular.eot +0 -0
  62. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/fonts/Lato/lato-regular.ttf +0 -0
  63. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/fonts/Lato/lato-regular.woff +0 -0
  64. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/fonts/Lato/lato-regular.woff2 +0 -0
  65. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
  66. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
  67. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
  68. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
  69. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
  70. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
  71. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
  72. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
  73. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/graphviz.css +0 -0
  74. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/jquery.js +0 -0
  75. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/js/badge_only.js +0 -0
  76. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/js/html5shiv-printshiv.min.js +0 -0
  77. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/js/html5shiv.min.js +0 -0
  78. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/js/theme.js +0 -0
  79. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/js/versions.js +0 -0
  80. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/language_data.js +0 -0
  81. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/minus.png +0 -0
  82. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/plus.png +0 -0
  83. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/pygments.css +0 -0
  84. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/searchtools.js +0 -0
  85. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/_static/sphinx_highlight.js +0 -0
  86. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/autoapi/index.html +0 -0
  87. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/autoapi/interactive_figure/__about__/index.html +0 -0
  88. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/autoapi/interactive_figure/index.html +0 -0
  89. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/autoapi/interactive_figure/interactive_figure/index.html +0 -0
  90. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/genindex.html +0 -0
  91. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/index.html +0 -0
  92. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/objects.inv +0 -0
  93. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/py-modindex.html +0 -0
  94. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/search.html +0 -0
  95. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs/searchindex.js +0 -0
  96. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs_source/conf.py +0 -0
  97. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/docs_source/index.rst +0 -0
  98. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/generate_docs.sh +0 -0
  99. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/pyproject.toml +0 -0
  100. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/src/interactive_figure/__init__.py +0 -0
  101. {interactive_figure-0.3.5 → interactive_figure-0.3.6}/tests/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: interactive-figure
3
- Version: 0.3.5
3
+ Version: 0.3.6
4
4
  Summary: Create interactive Matplotlib figures!
5
5
  Project-URL: Documentation, https://teuncm.github.io/interactive-figure/autoapi/interactive_figure/interactive_figure/index.html
6
6
  Project-URL: Issues, https://github.com/teuncm/interactive-figure/issues
@@ -0,0 +1 @@
1
+ __version__ = "0.3.6"
@@ -7,6 +7,7 @@ Source: https://github.com/teuncm/interactive-figure
7
7
 
8
8
  import matplotlib.pyplot as plt
9
9
  from types import SimpleNamespace
10
+ import sys
10
11
 
11
12
 
12
13
  def create(aspect_ratio="auto", hide_toolbar=False, **kwargs):
@@ -57,10 +58,11 @@ def create(aspect_ratio="auto", hide_toolbar=False, **kwargs):
57
58
  fig.canvas.mpl_disconnect(fig.canvas.manager.button_press_handler_id)
58
59
  fig.canvas.mpl_connect("key_press_event", _key_press_handler)
59
60
  fig.canvas.mpl_connect("button_press_event", _button_press_handler)
61
+ fig.canvas.mpl_connect("close_event", _close_handler)
60
62
 
61
- print("Successfully created the interactive figure.")
63
+ print("Interactive figure: created")
62
64
  else:
63
- raise RuntimeError("Error: you cannot create multiple interactive figures.")
65
+ raise RuntimeError("Error: you cannot create multiple interactive figures at the same time.")
64
66
 
65
67
 
66
68
  def draw():
@@ -110,13 +112,13 @@ def close():
110
112
  """Close the figure."""
111
113
  _check_exists()
112
114
 
115
+ _state.closed_using_ui = False
113
116
  plt.close(_state.fig)
114
117
 
118
+ # Handle proper closure so that the figure can be reused.
115
119
  _state_reset_fig()
116
120
  _state_reset_press()
117
121
 
118
- print("Successfully closed the interactive figure.")
119
-
120
122
 
121
123
  def wait_for_interaction(timeout=-1):
122
124
  """Wait for interaction.
@@ -166,7 +168,7 @@ def wait_for_interaction(timeout=-1):
166
168
  interaction_type = None if event is None else event.name == "key_press_event"
167
169
 
168
170
  if interaction_type is None:
169
- # No button was pressed, so reset the state.
171
+ # No button was pressed, so reset the press state.
170
172
  _state_reset_press()
171
173
 
172
174
  return interaction_type
@@ -235,7 +237,7 @@ def wait(timeout):
235
237
  _check_exists()
236
238
 
237
239
  _state.fig.canvas.start_event_loop(timeout=timeout)
238
- # No button was pressed, so reset the state.
240
+ # Reset the press state.
239
241
  _state_reset_press()
240
242
 
241
243
 
@@ -269,6 +271,7 @@ def _state_reset_fig():
269
271
  """Reset figure information."""
270
272
  _state.fig = None
271
273
  _state.ax = None
274
+ _state.closed_using_ui = True
272
275
 
273
276
 
274
277
  def _state_reset_press():
@@ -307,6 +310,23 @@ def _button_press_handler(event):
307
310
  _state.last_mouse_y = event.ydata
308
311
 
309
312
 
313
+ def _close_handler(event):
314
+ """Exit when the user presses the red x to close the figure
315
+ to prevent an infinite event loop.
316
+
317
+ Parameters
318
+ ----------
319
+ event
320
+ The event object that was generated internally
321
+ """
322
+ print("Interactive figure: closed")
323
+
324
+ # Triggered if the UI ('the red x') is used to close the figure.
325
+ if _state.closed_using_ui:
326
+ print("Interactive figure: exited script")
327
+ sys.exit(0)
328
+
329
+
310
330
  # Namespace to track the internal state of the interactive figure.
311
331
  _state = SimpleNamespace(
312
332
  fig=None,
@@ -315,4 +335,5 @@ _state = SimpleNamespace(
315
335
  last_mousepress=None,
316
336
  last_mouse_x=None,
317
337
  last_mouse_y=None,
338
+ closed_using_ui=True
318
339
  )
@@ -1 +0,0 @@
1
- __version__ = "0.3.5"