First working implementation of the genid method

This commit is contained in:
2026-07-15 21:09:52 +02:00
parent f702f99b3b
commit 17908b55e8
+14 -1
View File
@@ -1,5 +1,7 @@
#!/usr/bin/env python #!/usr/bin/env python
import random
from dataclass_persistence import Persistent from dataclass_persistence import Persistent
from dataclasses import dataclass, field from dataclasses import dataclass, field
from typing import ClassVar from typing import ClassVar
@@ -72,7 +74,18 @@ class Minter(Persistent):
# - value + (index * percounter) # - value + (index * percounter)
# - mask # - mask
# 10. return the noid # 10. return the noid
return "" if self.oacounter >= self.oatop:
raise Exception("noid are exhausted.")
s = len(self.active_counters)
if s < 1:
raise Exception("noid are exhausted.")
idx = random.randrange(s)
c = self.active_counters[idx]
c.value += 1
self.oacounter += 1
if c.value >= c.top:
self.active_counters.pop(idx)
return self._n2xdig(c.value + (c.rank * self.percounter))
def initcounters(self) -> None: def initcounters(self) -> None:
# 1. [X] Initialize oacounter to 0 # 1. [X] Initialize oacounter to 0