Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 9 additions & 10 deletions ksuid/ksuid.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import math
import secrets
import typing as t
from datetime import datetime, timezone
from datetime import datetime as datetime_lib
from datetime import timezone
from functools import total_ordering

from baseconv import base62
Expand Down Expand Up @@ -55,9 +56,7 @@ def from_bytes(cls: t.Type[SelfT], value: bytes) -> SelfT:

return res

def __init__(self, datetime: t.Optional[datetime] = None, payload: t.Optional[bytes] = None):
from datetime import datetime as datetime_lib

def __init__(self, datetime: t.Optional[datetime_lib] = None, payload: t.Optional[bytes] = None):
if payload is not None and len(payload) != self.PAYLOAD_LENGTH_IN_BYTES:
raise ByteArrayLengthException()

Expand Down Expand Up @@ -86,16 +85,16 @@ def __lt__(self: SelfT, other: SelfT) -> bool:
def __hash__(self) -> int:
return int.from_bytes(self._uid, "big")

def _inner_init(self, dt: datetime, payload: bytes) -> bytes:
timestamp = int(dt.timestamp() - EPOCH_STAMP)
def _inner_init(self, datetime: datetime_lib, payload: bytes) -> bytes:
timestamp = int(datetime.timestamp() - EPOCH_STAMP)

return int.to_bytes(timestamp, self.TIMESTAMP_LENGTH_IN_BYTES, "big") + payload

@property
def datetime(self) -> datetime:
def datetime(self) -> datetime_lib:
unix_time = self.timestamp

return datetime.fromtimestamp(unix_time, tz=timezone.utc)
return datetime_lib.fromtimestamp(unix_time, tz=timezone.utc)

@property
def timestamp(self) -> float:
Expand All @@ -121,8 +120,8 @@ class KsuidMs(Ksuid):

TIMESTAMP_MULTIPLIER = 256

def _inner_init(self, dt: datetime, payload: bytes) -> bytes:
timestamp = round((dt.timestamp() - EPOCH_STAMP) * self.TIMESTAMP_MULTIPLIER)
def _inner_init(self, datetime: datetime_lib, payload: bytes) -> bytes:
timestamp = round((datetime.timestamp() - EPOCH_STAMP) * self.TIMESTAMP_MULTIPLIER)

return int.to_bytes(timestamp, self.TIMESTAMP_LENGTH_IN_BYTES, "big") + payload

Expand Down