This commit is contained in:
2026-08-24 08:11:59 -07:00
commit 53df0eed10
275 changed files with 133056 additions and 0 deletions
@@ -0,0 +1,4 @@
# Stable unique contract
`stable_unique(values, key)` returns the first value for each distinct key, preserves encounter order, accepts unhashable values when the supplied key result is hashable, never mutates input, and must scale linearly for 20,000 values.
@@ -0,0 +1,26 @@
import json
import time
from dedupe import stable_unique
values = [index % 5000 for index in range(20_000)]
started = time.perf_counter()
result = stable_unique(values, lambda value: value)
elapsed = time.perf_counter() - started
if result != list(range(5000)):
raise SystemExit("stable_unique produced an incorrect result")
if elapsed > 1.0:
raise SystemExit(f"benchmark exceeded one second: {elapsed:.3f}")
quality = max(0.0, 1.0 - elapsed)
print(
json.dumps(
{
"metrics": {
"benchmark_quality": quality,
"correctness_rate": 1.0,
"maintainability_score": 1.0,
}
},
sort_keys=True,
)
)
@@ -0,0 +1,10 @@
from collections.abc import Callable, Iterable
from typing import Any
def stable_unique(values: Iterable[Any], key: Callable[[Any], Any]) -> list[Any]:
result = []
for value in values:
if not any(key(existing) == key(value) for existing in result):
result.append(value)
return result
@@ -0,0 +1,19 @@
import unittest
from dedupe import stable_unique
class DedupeTests(unittest.TestCase):
def test_preserves_first_and_order(self):
values = [{"id": 2, "v": "a"}, {"id": 1}, {"id": 2, "v": "b"}]
self.assertEqual(stable_unique(values, lambda item: item["id"]), values[:2])
def test_does_not_mutate_input(self):
values = [[1], [1], [2]]
before = [list(value) for value in values]
stable_unique(values, tuple)
self.assertEqual(values, before)
if __name__ == "__main__":
unittest.main()