Skip to content

[Bug]: UnboundLocalError: local variable 'interval' referenced before assignment #26363

Open
@tnakamot

Description

@tnakamot

Bug summary

The code below ends up with an exception.

Code for reproduction

from datetime import datetime, timedelta
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

fig, ax = plt.subplots()
t0 = datetime.now()
dt = timedelta(seconds=1)
ax.plot([t0, t0+dt, t0+dt*2], [1, 2, 3])

locator = mdates.AutoDateLocator()
locator.intervald[mdates.MICROSECONDLY] = []
ax.xaxis.set_major_locator(locator)
ax.xaxis.set_major_formatter(mdates.DateFormatter('%H:%M:%S'))

plt.show()

Actual outcome

Below is the exception message with a stack trace.

Traceback (most recent call last):
File "/home/tnakamoto/.local/lib/python3.10/site-packages/matplotlib/backends/backend_qt.py", line 468, in _draw_idle
self.draw()
File "/home/tnakamoto/.local/lib/python3.10/site-packages/matplotlib/backends/backend_agg.py", line 400, in draw
self.figure.draw(self.renderer)
File "/home/tnakamoto/.local/lib/python3.10/site-packages/matplotlib/artist.py", line 95, in draw_wrapper
result = draw(artist, renderer, *args, **kwargs)
File "/home/tnakamoto/.local/lib/python3.10/site-packages/matplotlib/artist.py", line 72, in draw_wrapper
return draw(artist, renderer)
File "/home/tnakamoto/.local/lib/python3.10/site-packages/matplotlib/figure.py", line 3175, in draw
mimage._draw_list_compositing_images(
File "/home/tnakamoto/.local/lib/python3.10/site-packages/matplotlib/image.py", line 131, in _draw_list_compositing_images
a.draw(renderer)
File "/home/tnakamoto/.local/lib/python3.10/site-packages/matplotlib/artist.py", line 72, in draw_wrapper
return draw(artist, renderer)
File "/home/tnakamoto/.local/lib/python3.10/site-packages/matplotlib/axes/_base.py", line 3064, in draw
mimage._draw_list_compositing_images(
File "/home/tnakamoto/.local/lib/python3.10/site-packages/matplotlib/image.py", line 131, in _draw_list_compositing_images
a.draw(renderer)
File "/home/tnakamoto/.local/lib/python3.10/site-packages/matplotlib/artist.py", line 72, in draw_wrapper
return draw(artist, renderer)
File "/home/tnakamoto/.local/lib/python3.10/site-packages/matplotlib/axis.py", line 1376, in draw
ticks_to_draw = self._update_ticks()
File "/home/tnakamoto/.local/lib/python3.10/site-packages/matplotlib/axis.py", line 1262, in _update_ticks
major_locs = self.get_majorticklocs()
File "/home/tnakamoto/.local/lib/python3.10/site-packages/matplotlib/axis.py", line 1484, in get_majorticklocs
return self.major.locator()
File "/home/tnakamoto/.local/lib/python3.10/site-packages/matplotlib/dates.py", line 1378, in call
locator = self.get_locator(dmin, dmax)
File "/home/tnakamoto/.local/lib/python3.10/site-packages/matplotlib/dates.py", line 1460, in get_locator
f"intervald dictionary. Defaulting to {interval}.")
UnboundLocalError: local variable 'interval' referenced before assignment

Expected outcome

Matplotlib should not raise this exception, but show an appropriate warning instead.

Additional information

No response

Operating system

Ubuntu 22.04 on WSL2

Matplotlib Version

3.7.2

Matplotlib Backend

QtAgg

Python version

3.10.6

Jupyter version

No response

Installation

pip

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions