Skip to content

Commit 3a04af4

Browse files
authored
refactor: use dict instead of OrderedDict (#963)
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
1 parent 2254a1e commit 3a04af4

5 files changed

Lines changed: 17 additions & 26 deletions

File tree

nox/_option_set.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
from __future__ import annotations
2020

2121
import argparse
22-
import collections
2322
import functools
2423
import os
2524
from argparse import ArgumentError, ArgumentParser, Namespace
@@ -254,10 +253,8 @@ class OptionSet:
254253
def __init__(self, *args: Any, **kwargs: Any) -> None:
255254
self.parser_args = args
256255
self.parser_kwargs = kwargs
257-
self.options: collections.OrderedDict[str, Option] = collections.OrderedDict()
258-
self.groups: collections.OrderedDict[str, OptionGroup] = (
259-
collections.OrderedDict()
260-
)
256+
self.options: dict[str, Option] = {}
257+
self.groups: dict[str, OptionGroup] = {}
261258

262259
def add_options(self, *args: Option) -> None:
263260
"""Adds a sequence of Options to the OptionSet.

nox/_resolver.py

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
from __future__ import annotations
1616

1717
import itertools
18-
from collections import OrderedDict
1918
from typing import Hashable, Iterable, Iterator, Mapping, TypeVar
2019

2120
__all__ = ["CycleError", "lazy_stable_topo_sort"]
@@ -130,7 +129,7 @@ def lazy_stable_topo_sort(
130129

131130
def prepended_by_dependencies(
132131
node: Node,
133-
walk: OrderedDict[Node, None] | None = None,
132+
walk: dict[Node, None] | None = None,
134133
) -> Iterator[Node]:
135134
"""Yields a node's dependencies depth-first, followed by the node itself.
136135
@@ -142,10 +141,10 @@ def prepended_by_dependencies(
142141
Args:
143142
node (~nox._resolver.Node):
144143
A node in the dependency graph.
145-
walk (OrderedDict[~nox._resolver.Node, None] | None):
146-
An ``OrderedDict`` whose keys are the nodes traversed when walking a
144+
walk (dict[~nox._resolver.Node, None] | None):
145+
An ordered ``dict`` whose keys are the nodes traversed when walking a
147146
path leading up to ``node`` on the reversed-edge dependency graph.
148-
Defaults to ``OrderedDict()``.
147+
Defaults to ``{}``.
149148
150149
Yields:
151150
~nox._resolver.Node: ``node``'s direct dependencies, each
@@ -159,9 +158,9 @@ def prepended_by_dependencies(
159158
# We would like for ``walk`` to be an ordered set so that we get (a) O(1) ``node
160159
# in walk`` and (b) so that we can use the order to report to the user what the
161160
# dependency cycle is, if one is encountered. The standard library does not have
162-
# an ordered set type, so we instead use the keys of an ``OrderedDict[Node,
163-
# None]`` as an ordered set.
164-
walk = walk or OrderedDict()
161+
# an ordered set type, so we instead use the keys of an ``dict[Node, None]`` as
162+
# an ordered set.
163+
walk = walk or {}
165164
walk = extend_walk(walk, node)
166165
if not visited[node]:
167166
visited[node] = True
@@ -175,19 +174,17 @@ def prepended_by_dependencies(
175174
else:
176175
return
177176

178-
def extend_walk(
179-
walk: OrderedDict[Node, None], node: Node
180-
) -> OrderedDict[Node, None]:
177+
def extend_walk(walk: dict[Node, None], node: Node) -> dict[Node, None]:
181178
"""Extend a walk by a node, checking for dependency cycles.
182179
183180
Args:
184-
walk (OrderedDict[~nox._resolver.Node, None]):
181+
walk (dict[~nox._resolver.Node, None]):
185182
See ``prepended_by_dependencies``.
186183
nodes (~nox._resolver.Node):
187184
A node to extend the walk with.
188185
189186
Returns:
190-
OrderedDict[~nox._resolver.Node, None]: ``walk``, extended by
187+
dict[~nox._resolver.Node, None]: ``walk``, extended by
191188
``node``.
192189
193190
Raises:

nox/manifest.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
import ast
1818
import itertools
1919
import operator
20-
from collections import OrderedDict
2120
from typing import TYPE_CHECKING, Any, Mapping, cast
2221

2322
from nox._decorators import Call, Func
@@ -40,7 +39,7 @@ def __dir__() -> list[str]:
4039

4140
def _unique_list(*args: str) -> list[str]:
4241
"""Return a list without duplicates, while preserving order."""
43-
return list(OrderedDict.fromkeys(args))
42+
return list(dict.fromkeys(args))
4443

4544

4645
class Manifest:

nox/registry.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414

1515
from __future__ import annotations
1616

17-
import collections
1817
import copy
1918
import functools
2019
from typing import TYPE_CHECKING, Any, Callable, overload
@@ -35,7 +34,7 @@ def __dir__() -> list[str]:
3534

3635
RawFunc = Callable[..., Any]
3736

38-
_REGISTRY: collections.OrderedDict[str, Func] = collections.OrderedDict()
37+
_REGISTRY: dict[str, Func] = {}
3938

4039

4140
@overload
@@ -122,7 +121,7 @@ def session_decorator(
122121
return fn
123122

124123

125-
def get() -> collections.OrderedDict[str, Func]:
124+
def get() -> dict[str, Func]:
126125
"""Return a shallow copy of the registry.
127126
128127
This ensures that the registry is not accidentally modified by

tests/test_manifest.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414

1515
from __future__ import annotations
1616

17-
import collections
1817
import typing
1918
from collections.abc import Sequence
2019
from typing import TYPE_CHECKING, Any
@@ -37,8 +36,8 @@
3736
from collections.abc import Sequence
3837

3938

40-
def create_mock_sessions() -> collections.OrderedDict[str, mock.Mock]:
41-
sessions = collections.OrderedDict()
39+
def create_mock_sessions() -> dict[str, mock.Mock]:
40+
sessions = {}
4241
sessions["foo"] = mock.Mock(spec=(), python=None, venv_backend=None, tags=["baz"])
4342
sessions["bar"] = mock.Mock(
4443
spec=(),

0 commit comments

Comments
 (0)