From 31618d30845d95177e17e4074a574b489e5e7ba0 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Thu, 28 Jul 2022 18:49:35 -0400 Subject: [PATCH] Add explicit registration of units in examples Starting in https://github.com/sphinx-gallery/sphinx-gallery/pull/890, sphinx-gallery started clearing Matplotlib's unit registry. But since `basic_units` was already imported, its register-on-import never happened for subsequent examples, breaking them. --- examples/units/annotate_with_units.py | 5 ++++- examples/units/artist_tests.py | 5 ++++- examples/units/bar_demo2.py | 5 ++++- examples/units/bar_unit_demo.py | 4 +++- examples/units/basic_units.py | 15 ++++++++++++++- examples/units/ellipse_with_units.py | 4 +++- examples/units/radian_demo.py | 5 ++++- examples/units/units_sample.py | 5 ++++- examples/units/units_scatter.py | 5 ++++- 9 files changed, 44 insertions(+), 9 deletions(-) diff --git a/examples/units/annotate_with_units.py b/examples/units/annotate_with_units.py index cd4e47ddaf12..255777422975 100644 --- a/examples/units/annotate_with_units.py +++ b/examples/units/annotate_with_units.py @@ -12,7 +12,10 @@ """ import matplotlib.pyplot as plt -from basic_units import cm +from basic_units import register_units, cm + + +register_units() fig, ax = plt.subplots() diff --git a/examples/units/artist_tests.py b/examples/units/artist_tests.py index 0b078ce5cb6f..f4e564857c76 100644 --- a/examples/units/artist_tests.py +++ b/examples/units/artist_tests.py @@ -20,10 +20,13 @@ import matplotlib.text as text import matplotlib.collections as collections -from basic_units import cm, inch +from basic_units import register_units, cm, inch import numpy as np import matplotlib.pyplot as plt + +register_units() + fig, ax = plt.subplots() ax.xaxis.set_units(cm) ax.yaxis.set_units(cm) diff --git a/examples/units/bar_demo2.py b/examples/units/bar_demo2.py index d18f81b77535..b2d47b541fb3 100644 --- a/examples/units/bar_demo2.py +++ b/examples/units/bar_demo2.py @@ -14,9 +14,12 @@ This example requires :download:`basic_units.py ` """ import numpy as np -from basic_units import cm, inch +from basic_units import register_units, cm, inch import matplotlib.pyplot as plt + +register_units() + cms = cm * np.arange(0, 10, 2) bottom = 0 * cm width = 0.8 * cm diff --git a/examples/units/bar_unit_demo.py b/examples/units/bar_unit_demo.py index 7b24a453154d..c73c3d73ba36 100644 --- a/examples/units/bar_unit_demo.py +++ b/examples/units/bar_unit_demo.py @@ -13,10 +13,12 @@ """ import numpy as np -from basic_units import cm, inch +from basic_units import register_units, cm, inch import matplotlib.pyplot as plt +register_units() + N = 5 men_means = [150*cm, 160*cm, 146*cm, 172*cm, 155*cm] men_std = [20*cm, 30*cm, 32*cm, 10*cm, 20*cm] diff --git a/examples/units/basic_units.py b/examples/units/basic_units.py index 3b4f13313f50..65d3488bf183 100644 --- a/examples/units/basic_units.py +++ b/examples/units/basic_units.py @@ -380,4 +380,17 @@ def cos(x): return math.cos(x.convert_to(radians).get_value()) -units.registry[BasicUnit] = units.registry[TaggedValue] = BasicUnitConverter() +def register_units(): + """ + Explicitly register units provided here. + + Normally, this will not be needed as units are registered on import. + However, if you reset the Matplotlib unit registry (as is done by + sphinx-gallery between running each example), then you will need to + explicitly re-register units from this module by calling this function. + """ + converter = BasicUnitConverter() + units.registry[BasicUnit] = units.registry[TaggedValue] = converter + + +register_units() diff --git a/examples/units/ellipse_with_units.py b/examples/units/ellipse_with_units.py index 369ad5cf4e68..7869d66b0853 100644 --- a/examples/units/ellipse_with_units.py +++ b/examples/units/ellipse_with_units.py @@ -10,12 +10,14 @@ This example requires :download:`basic_units.py ` """ -from basic_units import cm +from basic_units import register_units, cm import numpy as np from matplotlib import patches import matplotlib.pyplot as plt +register_units() + xcenter, ycenter = 0.38*cm, 0.52*cm width, height = 1e-1*cm, 3e-1*cm angle = -30 diff --git a/examples/units/radian_demo.py b/examples/units/radian_demo.py index f9da342defcd..37f78fd603d1 100644 --- a/examples/units/radian_demo.py +++ b/examples/units/radian_demo.py @@ -17,7 +17,10 @@ import matplotlib.pyplot as plt import numpy as np -from basic_units import radians, degrees, cos +from basic_units import register_units, radians, degrees, cos + + +register_units() x = [val*radians for val in np.arange(0, 15, 0.01)] diff --git a/examples/units/units_sample.py b/examples/units/units_sample.py index 81547601e711..9540cce881b7 100644 --- a/examples/units/units_sample.py +++ b/examples/units/units_sample.py @@ -13,10 +13,13 @@ This example requires :download:`basic_units.py ` """ -from basic_units import cm, inch +from basic_units import register_units, cm, inch import matplotlib.pyplot as plt import numpy as np + +register_units() + cms = cm * np.arange(0, 10, 2) fig, axs = plt.subplots(2, 2, constrained_layout=True) diff --git a/examples/units/units_scatter.py b/examples/units/units_scatter.py index 8a121b4afd0f..1e74dd6b11b3 100644 --- a/examples/units/units_scatter.py +++ b/examples/units/units_scatter.py @@ -12,7 +12,10 @@ """ import numpy as np import matplotlib.pyplot as plt -from basic_units import secs, hertz, minutes +from basic_units import register_units, secs, hertz, minutes + + +register_units() # create masked array data = (1, 2, 3, 4, 5, 6, 7, 8) pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy