from collections import defaultdict
import difflib
-import typing
-from typing import (
- Dict,
- List,
-)
-
import json
try:
CLI node ID (integer) -> dict of commands in that node.
"""
- nodenames: Dict[int, str] = {}
+ nodenames = {} # Dict[int, str]
def __init__(self):
super().__init__(dict)
correctly.
"""
- all_defs: List["CommandEntry"] = []
+ all_defs = [] # List[CommandEntry]
warn_counter = 0
def __init__(self, origin, name, spec):
return {}
def __repr__(self):
- return f"<CommandEntry {self.name}: {self.cmd!r}>"
+ return "<CommandEntry %s: %r>" % (self.name, self.cmd)
def register(self):
"""Track DEFUNs so each is only output once."""
def merge(self, other, nodename):
if self._cmd_normalized != other._cmd_normalized:
self.warn_loc(
- f"command definition mismatch, first definied as:\n{self.cmd!r}",
+ "command definition mismatch, first definied as:\n%r" % (self.cmd,),
nodename=nodename,
)
- other.warn_loc(f"later defined as:\n{other.cmd!r}", nodename=nodename)
+ other.warn_loc("later defined as:\n%r" % (other.cmd,), nodename=nodename)
if self._spec["doc"] != other._spec["doc"]:
self.warn_loc(
- f"help string mismatch, first defined here (-)", nodename=nodename
+ "help string mismatch, first defined here (-)", nodename=nodename
)
other.warn_loc(
- f"later defined here (+)\nnote: both commands define {self.cmd!r} in same node ({nodename})",
+ "later defined here (+)\nnote: both commands define %r in same node (%s)"
+ % (self.cmd, nodename),
nodename=nodename,
)
if self.hidden != other.hidden:
self.warn_loc(
- f"hidden flag mismatch, first {self.hidden!r} here", nodename=nodename
+ "hidden flag mismatch, first %r here" % (self.hidden,),
+ nodename=nodename,
)
other.warn_loc(
- f"later {other.hidden!r} here (+)\nnote: both commands define {self.cmd!r} in same node ({nodename})",
+ "later %r here (+)\nnote: both commands define %r in same node (%s)"
+ % (other.hidden, self.cmd, nodename),
nodename=nodename,
)
daemons.update(daemon.split("|"))
daemon_str = "|".join(sorted(daemons))
- return f"""
-{defsh} ({daemon_str}, {self.name}_vtysh,
-\t"{c_escape(self.cmd)}",
-{doc})
-"""
+ return """
+%s (%s, %s_vtysh,
+\t"%s",
+%s)
+""" % (
+ defsh,
+ daemon_str,
+ self.name,
+ c_escape(self.cmd),
+ doc,
+ )
# accept slightly different command definitions that result in the same command
re_collapse_ws = re.compile(r"\s+")
for name, items in sorted(nodes.items_named()):
for item in sorted(items.values(), key=lambda i: i.name):
- ofd.write(f"\tinstall_element({name}, &{item.name}_vtysh);\n")
+ ofd.write("\tinstall_element(%s, &%s_vtysh);\n" % (name, item.name))
ofd.write("}\n")