@@ -799,18 +799,21 @@ def __setitem__(self, key, val):
799799
800800 def __getitem__ (self , key ):
801801 if key == "backend" :
802- # In theory, this should only ever be used after the global rcParams
803- # has been set up, but better be safe e.g. in presence of breakpoints.
804- if (self is globals ().get ("rcParams" )
805- and RcParams ._backend is rcsetup ._auto_backend_sentinel ):
806- from matplotlib import pyplot as plt
807- plt .switch_backend (rcsetup ._auto_backend_sentinel )
808- return RcParams ._backend
802+ return self ._get_backend_resolved ()
809803 return self ._get (key )
810804
811- def _get_backend_or_none (self ):
812- """Get the requested backend, if any, without triggering resolution."""
813- backend = RcParams ._backend
805+ @classmethod
806+ def _get_backend_resolved (cls ):
807+ """Get the backend, resolving the auto-sentinel if needed."""
808+ if cls ._backend is rcsetup ._auto_backend_sentinel :
809+ from matplotlib import pyplot as plt
810+ plt .switch_backend (rcsetup ._auto_backend_sentinel )
811+ return cls ._backend
812+
813+ @classmethod
814+ def _get_backend_or_none (cls ):
815+ """Get the current backend or None."""
816+ backend = cls ._backend
814817 return None if backend is rcsetup ._auto_backend_sentinel else backend
815818
816819 def __repr__ (self ):
@@ -1292,14 +1295,14 @@ def use(backend, *, force=True):
12921295 # value which will be respected when the user finally imports
12931296 # pyplot
12941297 else :
1295- rcParams [ 'backend' ] = backend
1298+ rcParams . _backend = backend
12961299 # if the user has asked for a given backend, do not helpfully
12971300 # fallback
12981301 rcParams ['backend_fallback' ] = False
12991302
13001303
13011304if os .environ .get ('MPLBACKEND' ):
1302- rcParams [ 'backend' ] = os .environ .get ('MPLBACKEND' )
1305+ rcParams . _backend = os .environ .get ('MPLBACKEND' )
13031306
13041307
13051308def get_backend (* , auto_select = True ):
@@ -1326,13 +1329,9 @@ def get_backend(*, auto_select=True):
13261329 matplotlib.use
13271330 """
13281331 if auto_select :
1329- return rcParams [ 'backend' ]
1332+ return rcParams . _get_backend_resolved ()
13301333 else :
1331- backend = rcParams ._get ('backend' )
1332- if backend is rcsetup ._auto_backend_sentinel :
1333- return None
1334- else :
1335- return backend
1334+ return rcParams ._get_backend_or_none ()
13361335
13371336
13381337def interactive (b ):
0 commit comments