Skip to content

Commit

Permalink
Replace OrderedDict with dict (#6637)
Browse files Browse the repository at this point in the history
  • Loading branch information
cdeil authored and ahuang11 committed Apr 2, 2024
1 parent 46a074a commit 6249cad
Show file tree
Hide file tree
Showing 19 changed files with 74 additions and 93 deletions.
3 changes: 1 addition & 2 deletions panel/interact.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@

import types

from collections import OrderedDict
from collections.abc import Iterable, Mapping
from inspect import (
Parameter, getcallargs, getfullargspec as check_argspec, signature,
Expand Down Expand Up @@ -99,7 +98,7 @@ def __init__(self, object, params={}, **kwargs):
widgets = self.widgets_from_abbreviations(new_kwargs)
if self.manual_update:
widgets.append(('manual', Button(name=self.manual_name)))
self._widgets = OrderedDict(widgets)
self._widgets = dict(widgets)
pane = self.object(**self.kwargs)
if isinstance(pane, Viewable):
self._pane = pane
Expand Down
3 changes: 1 addition & 2 deletions panel/io/notebook.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import uuid
import warnings

from collections import OrderedDict
from contextlib import contextmanager
from functools import partial
from typing import (
Expand Down Expand Up @@ -176,7 +175,7 @@ def render_template(
# the custom template may not reference it
if manager:
item = render_items[0]
item.roots._roots = OrderedDict(list(item.roots._roots.items())[:-1])
item.roots._roots = dict(list(item.roots._roots.items())[:-1])

html = html_for_render_items(
docs_json, render_items, template=document.template,
Expand Down
3 changes: 1 addition & 2 deletions panel/io/resources.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
import re
import textwrap

from collections import OrderedDict
from contextlib import contextmanager
from functools import lru_cache
from pathlib import Path
Expand Down Expand Up @@ -67,7 +66,7 @@ def get_env():
]))

def conffilter(value):
return json.dumps(OrderedDict(value)).replace('"', '\'')
return json.dumps(dict(value)).replace('"', '\'')

class json_dumps(json.JSONEncoder):
def default(self, obj):
Expand Down
3 changes: 1 addition & 2 deletions panel/io/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
import threading
import uuid

from collections import OrderedDict
from contextlib import contextmanager
from functools import partial, wraps
from html import escape
Expand Down Expand Up @@ -192,7 +191,7 @@ def _initialize_session_info(session_context: 'BokehSessionContext'):
state.session_info['total'] += 1
if history > 0 and len(sessions) >= history:
old_history = list(sessions.items())
sessions = OrderedDict(old_history[-(history-1):])
sessions = dict(old_history[-(history-1):])
state.session_info['sessions'] = sessions
sessions[session_id] = {
'launched': dt.datetime.now().timestamp(),
Expand Down
4 changes: 2 additions & 2 deletions panel/io/state.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
import threading
import time

from collections import Counter, OrderedDict, defaultdict
from collections import Counter, defaultdict
from collections.abc import Iterator
from contextlib import contextmanager
from contextvars import ContextVar
Expand Down Expand Up @@ -108,7 +108,7 @@ class _state(param.Parameterized):
this will instead reflect an absolute path.""")

session_info = param.Dict(default={'total': 0, 'live': 0,
'sessions': OrderedDict()}, doc="""
'sessions': {}}, doc="""
Tracks information and statistics about user sessions.""")

webdriver = param.Parameter(default=None, doc="""
Expand Down
14 changes: 7 additions & 7 deletions panel/layout/grid.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

import math

from collections import OrderedDict, namedtuple
from collections import namedtuple
from functools import partial
from typing import (
TYPE_CHECKING, Any, ClassVar, Dict, List, Mapping, Optional, Tuple,
Expand Down Expand Up @@ -287,7 +287,7 @@ class GridSpec(Panel):

def __init__(self, **params):
if 'objects' not in params:
params['objects'] = OrderedDict()
params['objects'] = {}
super().__init__(**params)
self._updating = False
self._update_nrows()
Expand Down Expand Up @@ -462,7 +462,7 @@ def __delitem__(self, index):

subgrid = self._object_grid[yidx, xidx]
if isinstance(subgrid, np.ndarray):
deleted = OrderedDict([list(o)[0] for o in subgrid.flatten()])
deleted = dict([list(o)[0] for o in subgrid.flatten()])
else:
deleted = [list(subgrid)[0][0]]
for key in deleted:
Expand All @@ -477,7 +477,7 @@ def __getitem__(self, index):

subgrid = self._object_grid[yidx, xidx]
if isinstance(subgrid, np.ndarray):
objects = OrderedDict([list(o)[0] for o in subgrid.flatten()])
objects = dict([list(o)[0] for o in subgrid.flatten()])
gspec = self.clone(objects=objects)
xoff, yoff = gspec._xoffset, gspec._yoffset
adjusted = []
Expand All @@ -488,7 +488,7 @@ def __getitem__(self, index):
if x1 is not None: x1 -= xoff
if ((y0, x0, y1, x1), obj) not in adjusted:
adjusted.append(((y0, x0, y1, x1), obj))
gspec.objects = OrderedDict(adjusted)
gspec.objects = dict(adjusted)
width_scale = gspec.ncols/float(self.ncols)
height_scale = gspec.nrows/float(self.nrows)
if gspec.width:
Expand Down Expand Up @@ -535,7 +535,7 @@ def __setitem__(self, index, obj):

key = (y0, x0, y1, x1)
overlap = key in self.objects
clone = self.clone(objects=OrderedDict(self.objects), mode='override')
clone = self.clone(objects=dict(self.objects), mode='override')
if not overlap:
clone.objects[key] = panel(obj)
clone._update_grid_size()
Expand All @@ -545,7 +545,7 @@ def __setitem__(self, index, obj):
grid[t:b, l:r] += 1

overlap_grid = grid > 1
new_objects = OrderedDict(self.objects)
new_objects = dict(self.objects)
if overlap_grid.any():
overlapping = ''
objects = []
Expand Down
3 changes: 1 addition & 2 deletions panel/layout/gridstack.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
from __future__ import annotations

from collections import OrderedDict
from typing import ClassVar, List, Mapping

import param
Expand Down Expand Up @@ -163,7 +162,7 @@ def __css__(cls):

@param.depends('state', watch=True)
def _update_objects(self):
objects = OrderedDict()
objects = {}
object_ids = {str(id(obj)): obj for obj in self}
for p in self.state:
objects[(p['y0'], p['x0'], p['y1'], p['x1'])] = object_ids[p['id']]
Expand Down
24 changes: 11 additions & 13 deletions panel/models/deckgl.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@
- [PyDeck Repo](https://github.com/uber/deck.gl/tree/master/bindings/pydeck)
"""

from collections import OrderedDict

from bokeh.core.properties import (
Any, Bool, Dict, Either, Instance, Int, List, Override, String,
)
Expand Down Expand Up @@ -49,20 +47,20 @@ def __javascript__(cls):
def __js_skip__(cls):
return {
'deck': cls.__javascript__[:-1],
'mapboxgl': cls.__javascript__[-1:]
'mapboxgl': cls.__javascript__[-1:],
}

__js_require__ = {
'paths': OrderedDict([
("h3", f"{config.npm_cdn}/h3-js@3.7.2/dist/h3-js.umd"),
("deck-gl", f"{config.npm_cdn}/deck.gl@8.6.7/dist.min"),
("deck-json", f"{config.npm_cdn}/@deck.gl/json@8.6.7/dist.min"),
("loader-csv", f"{config.npm_cdn}/@loaders.gl/csv@3.1.7/dist/dist.min"),
("loader-json", f"{config.npm_cdn}/@loaders.gl/json@3.1.7/dist/dist.min"),
("loader-tiles", f"{config.npm_cdn}/@loaders.gl/3d-tiles@3.1.7/dist/dist.min"),
("mapbox-gl", "https://api.mapbox.com/mapbox-gl-js/v3.0.1/mapbox-gl"),
("carto", "{config.npm_cdn}/@deck.gl/carto@^8.7.0/dist.min.js"),
]),
'paths': {
"h3": f"{config.npm_cdn}/h3-js@3.7.2/dist/h3-js.umd",
"deck-gl": f"{config.npm_cdn}/deck.gl@8.6.7/dist.min",
"deck-json": f"{config.npm_cdn}/@deck.gl/json@8.6.7/dist.min",
"loader-csv": f"{config.npm_cdn}/@loaders.gl/csv@3.1.7/dist/dist.min",
"loader-json": f"{config.npm_cdn}/@loaders.gl/json@3.1.7/dist/dist.min",
"loader-tiles": f"{config.npm_cdn}/@loaders.gl/3d-tiles@3.1.7/dist/dist.min",
"mapbox-gl": "https://api.mapbox.com/mapbox-gl-js/v3.0.1/mapbox-gl",
"carto": "{config.npm_cdn}/@deck.gl/carto@^8.7.0/dist.min.js",
},
'exports': {"deck-gl": "deck", "mapbox-gl": "mapboxgl", "h3": "h3"},
'shim': {
'deck-json': {'deps': ["deck-gl"]},
Expand Down
10 changes: 4 additions & 6 deletions panel/models/terminal.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
from collections import OrderedDict

from bokeh.core.properties import (
Any, Dict, Int, String,
)
Expand Down Expand Up @@ -45,10 +43,10 @@ def __js_skip__(cls):
}

__js_require__ = {
'paths': OrderedDict([
("xtermjs", XTERM_JS[:-3]),
("xtermjsweblinks", XTERM_LINKS_JS[:-3]),
]),
'paths': {
"xtermjs": XTERM_JS[:-3],
"xtermjsweblinks": XTERM_LINKS_JS[:-3],
},
'exports': {
"xtermjs": "xtermjs",
"xtermjsweblinks": "WebLinksAddon",
Expand Down
6 changes: 3 additions & 3 deletions panel/pane/holoviews.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

import sys

from collections import OrderedDict, defaultdict
from collections import defaultdict
from functools import partial
from typing import (
TYPE_CHECKING, Any, ClassVar, Mapping, Optional, Tuple, Type,
Expand Down Expand Up @@ -606,7 +606,7 @@ def widgets_from_dimensions(cls, object, widget_types=None, widgets_type='indivi

nframes = 1
values = {} if dynamic else dict(zip(dims, zip(*keys)))
dim_values = OrderedDict()
dim_values = {}
widgets = []
dims = [d for d in dims if values.get(d) is not None or
d.values or d.range != (None, None)]
Expand Down Expand Up @@ -659,7 +659,7 @@ def widgets_from_dimensions(cls, object, widget_types=None, widgets_type='indivi
if all(isnumeric(v) or isinstance(v, datetime_types) for v in vals) and len(vals) > 1:
vals = sorted(vals)
labels = [str(dim.pprint_value(v)) for v in vals]
options = OrderedDict(zip(labels, vals))
options = dict(zip(labels, vals))
widget_type = widget_type or DiscreteSlider
else:
options = list(vals)
Expand Down
4 changes: 2 additions & 2 deletions panel/param.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
import textwrap
import types

from collections import OrderedDict, defaultdict, namedtuple
from collections import defaultdict, namedtuple
from collections.abc import Callable
from contextlib import contextmanager
from functools import partial
Expand Down Expand Up @@ -712,7 +712,7 @@ def _get_widgets(self):
else:
widgets = []
widgets += [(pname, self.widget(pname)) for pname in self._ordered_params]
return OrderedDict(widgets)
return dict(widgets)

def _get_model(
self, doc: Document, root: Optional[Model] = None,
Expand Down
4 changes: 2 additions & 2 deletions panel/pipeline.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import sys
import traceback as tb

from collections import OrderedDict, defaultdict
from collections import defaultdict
from typing import ClassVar, Tuple

import param
Expand Down Expand Up @@ -177,7 +177,7 @@ def __init__(self, stages=[], graph={}, **params):

# Initialize internal state
self._stage = None
self._stages = OrderedDict()
self._stages = {}
self._states = {}
self._state = None
self._linear = True
Expand Down
17 changes: 8 additions & 9 deletions panel/tests/pane/test_holoviews.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
import datetime as dt
import warnings

from collections import OrderedDict

import numpy as np
import pytest

Expand Down Expand Up @@ -292,7 +290,7 @@ def test_holoviews_widgets_from_dynamicmap(document, comm):

assert isinstance(widgets[5], DiscreteSlider)
assert widgets[5].name == 'F'
assert widgets[5].options == OrderedDict([(str(v), v) for v in value_numeric_dim.values])
assert widgets[5].options == {str(v): v for v in value_numeric_dim.values}
assert widgets[5].value == value_numeric_dim.default


Expand Down Expand Up @@ -473,7 +471,7 @@ def test_holoviews_widgets_from_holomap():

assert isinstance(widgets[0], DiscreteSlider)
assert widgets[0].name == 'X'
assert widgets[0].options == OrderedDict([(str(i), i) for i in range(3)])
assert widgets[0].options == {str(i): i for i in range(3)}
assert widgets[0].value == 0

assert isinstance(widgets[1], Select)
Expand All @@ -490,10 +488,11 @@ def test_holoviews_date_slider_widgets_from_holomap():

assert isinstance(widgets[0], DiscreteSlider)
assert widgets[0].name == 'X'
assert widgets[0].options == OrderedDict([
('2016-01-01 00:00:00', dt.datetime(2016, 1, 1)),
('2016-01-02 00:00:00', dt.datetime(2016, 1, 2)),
('2016-01-03 00:00:00', dt.datetime(2016, 1, 3))])
assert widgets[0].options == {
'2016-01-01 00:00:00': dt.datetime(2016, 1, 1),
'2016-01-02 00:00:00': dt.datetime(2016, 1, 2),
'2016-01-03 00:00:00': dt.datetime(2016, 1, 3),
}
assert widgets[0].value == dt.datetime(2016, 1, 1)


Expand All @@ -505,7 +504,7 @@ def test_holoviews_widgets_explicit_widget_type_override():

assert isinstance(widgets[0], Select)
assert widgets[0].name == 'X'
assert widgets[0].options == OrderedDict([(str(i), i) for i in range(3)])
assert widgets[0].options == {str(i): i for i in range(3)}
assert widgets[0].value == 0


Expand Down
1 change: 0 additions & 1 deletion panel/tests/test_util.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,6 @@ def test_abbreviated_repr_dict():
def test_abbreviated_repr_list():
assert abbreviated_repr(['some really, really long string']) == "['some really, ...]"


def test_abbreviated_repr_ordereddict():
if sys.version_info >= (3, 12):
expected = "OrderedDict({'key': 'some ...])"
Expand Down
10 changes: 4 additions & 6 deletions panel/tests/widgets/test_file_selector.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
import os

from collections import OrderedDict

import pytest

from panel.widgets import FileSelector
Expand Down Expand Up @@ -159,9 +157,9 @@ def test_file_selector_multiple_across_dirs(test_dir):
selector._selector._lists[True].value = ['\U0001f4c1'+os.path.join('..', 'subdir2')]
selector._selector._buttons[False].clicks = 1

assert selector._selector.options == OrderedDict([
('a', os.path.join(test_dir, 'subdir1', 'a')),
('b', os.path.join(test_dir, 'subdir1', 'b'))
])
assert selector._selector.options == {
'a': os.path.join(test_dir, 'subdir1', 'a'),
'b': os.path.join(test_dir, 'subdir1', 'b'),
}
assert selector._selector._lists[False].options == ['b']
assert selector.value == [os.path.join(test_dir, 'subdir1', 'a')]
Loading

0 comments on commit 6249cad

Please sign in to comment.