Sync edgetx to Gitea
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
import sys
|
||||
from typing import Any, Dict, Iterator, KeysView, Optional, ValuesView, ItemsView
|
||||
|
||||
|
||||
class LoggingDict:
|
||||
"""A dictionary wrapper that logs all lookups to stderr."""
|
||||
|
||||
def __init__(self, data: Optional[Dict[Any, Any]] = None):
|
||||
self._data = data if data is not None else {}
|
||||
|
||||
def __getitem__(self, key: Any) -> Any:
|
||||
"""Log the lookup and return the value."""
|
||||
print(f"{str(key)}", file=sys.stderr)
|
||||
return self._data[key]
|
||||
|
||||
def __setitem__(self, key: Any, value: Any) -> None:
|
||||
"""Set an item in the dictionary."""
|
||||
self._data[key] = value
|
||||
|
||||
def __delitem__(self, key: Any) -> None:
|
||||
"""Delete an item from the dictionary."""
|
||||
del self._data[key]
|
||||
|
||||
def __contains__(self, key: Any) -> bool:
|
||||
"""Check if key exists (this is also a lookup, so log it)."""
|
||||
print(f"{str(key)}", file=sys.stderr)
|
||||
return key in self._data
|
||||
|
||||
def __len__(self) -> int:
|
||||
"""Return the length of the dictionary."""
|
||||
return len(self._data)
|
||||
|
||||
def __iter__(self) -> Iterator:
|
||||
"""Return an iterator over the keys."""
|
||||
return iter(self._data)
|
||||
|
||||
def __repr__(self) -> str:
|
||||
"""Return a string representation."""
|
||||
return f"LoggingDict({self._data})"
|
||||
|
||||
def get(self, key: Any, default: Any = None) -> Any:
|
||||
"""Get a value with optional default (logs the lookup)."""
|
||||
print(f"{str(key)}", file=sys.stderr)
|
||||
return self._data.get(key, default)
|
||||
|
||||
def keys(self) -> KeysView:
|
||||
"""Return dictionary keys."""
|
||||
return self._data.keys()
|
||||
|
||||
def values(self) -> ValuesView:
|
||||
"""Return dictionary values."""
|
||||
return self._data.values()
|
||||
|
||||
def items(self) -> ItemsView:
|
||||
"""Return dictionary items."""
|
||||
return self._data.items()
|
||||
|
||||
def update(self, other: Dict[Any, Any]) -> None:
|
||||
"""Update the dictionary with another dictionary."""
|
||||
self._data.update(other)
|
||||
|
||||
def clear(self) -> None:
|
||||
"""Clear all items from the dictionary."""
|
||||
self._data.clear()
|
||||
|
||||
def pop(self, key: Any, default: Any = None) -> Any:
|
||||
"""Remove and return a value (logs the lookup)."""
|
||||
print(f"{str(key)}", file=sys.stderr)
|
||||
if default is None:
|
||||
return self._data.pop(key)
|
||||
return self._data.pop(key, default)
|
||||
|
||||
def setdefault(self, key: Any, default: Any = None) -> Any:
|
||||
"""Get a value or set/return default (logs the lookup)."""
|
||||
print(f"{str(key)}", file=sys.stderr)
|
||||
return self._data.setdefault(key, default)
|
||||
|
||||
|
||||
# Example usage
|
||||
if __name__ == "__main__":
|
||||
# Create a logging dictionary
|
||||
d = LoggingDict({"a": 1, "b": 2, "c": 3})
|
||||
|
||||
# These operations will be logged to stderr
|
||||
print("Value of 'a':", d["a"])
|
||||
print("Value of 'b':", d.get("b"))
|
||||
print("Does 'c' exist?", "c" in d)
|
||||
print("Does 'd' exist?", "d" in d)
|
||||
|
||||
# Add new items
|
||||
d["d"] = 4
|
||||
d["e"] = 5
|
||||
|
||||
# More logged lookups
|
||||
print("Value of 'd':", d["d"])
|
||||
print("Popped 'e':", d.pop("e"))
|
||||
|
||||
print("Final dictionary:", d)
|
||||
Reference in New Issue
Block a user