Metadata-Version: 2.1
Name: svix-ksuid
Version: 0.4.1
Summary:  A pure-Python KSUID implementation
Home-page: https://github.com/svixhq/python-ksuid/
Author: Svix
Author-email: development@svix.com
License: MIT
Description: ![API-Lint](https://github.com/svixhq/python-ksuid/workflows/lint/badge.svg)
        ![Frontend-Lint](https://github.com/svixhq/python-ksuid/workflows/test/badge.svg)
        
        # Python-KSUID
        
        This library is inspired by [Segment's KSUID](https://segment.com/blog/a-brief-history-of-the-uuid/) implementation:
        https://github.com/segmentio/ksuid
        
        ## What is a ksuid?
        
        A ksuid is a K sorted UID. In other words, a KSUID also stores a date component, so that ksuids can be approximately 
        sorted based on the time they were created. 
        
        Read more [here](https://segment.com/blog/)
        
        ## Usage
        
        ```
        pip install svix-ksuid
        ```
        
        ## Examples
        
        ### Default ksuid
        
        Generate a ksuid without passing a specific datetime
        
        ```
        In [1]: from ksuid.ksuid import Ksuid
        
        In [2]: ksuid = Ksuid()
        
        In [3]: f"Base62: {ksuid}"
        Out[3]: 'Base62: 1srOrx2ZWZBpBUvZwXKQmoEYga2'
        
        In [4]: f"Bytes: {bytes(ksuid)}"
        Out[4]: "Bytes: b'\\r5\\xc43\\xe1\\x93>7\\xf2up\\x87c\\xad\\xc7tZ\\xf5\\xe7\\xf2'"
        
        In [5]: f"Datetime: {ksuid.datetime}"
        Out[5]: 'Datetime: 2021-05-21 14:04:03'
        
        In [6]: f"Timestamp: {ksuid.timestamp}"
        Out[6]: 'Timestamp: 1621627443'
        
        In [7]: f"Payload: {ksuid.payload}"
        Out[7]: "Payload: b'\\xe1\\x93>7\\xf2up\\x87c\\xad\\xc7tZ\\xf5\\xe7\\xf2'"
        ```
        
        ### ksuid from datetime
        
        ```
        In [1]: datetime = datetime(year=2021, month=5, day=19, hour=1, minute=1, second=1, microsecond=1)
        
        In [2]: datetime
        Out[2]: datetime.datetime(2021, 5, 19, 1, 1, 1, 1)
        
        In [3]: ksuid = Ksuid(datetime)
        
        In [4]: ksuid.datetime
        Out[4]: datetime.datetime(2021, 5, 19, 1, 1, 1)
        
        In [5]: ksuid.timestamp
        Out[5]: 1621407661
        ```
        
        ### ksuid from base62
        
        ```
        In [1]: ksuid = Ksuid()
        
        In [2]: ksuid.timestamp
        Out[2]: 1621634852
        
        In [3]: f"Base62: {ksuid}"
        Out[3]: 'Base62: 1srdszO8Xy2cR6CnARnvxCfRmK4'
        
        In [4]: ksuid_from_base62 = Ksuid.from_base62("1srdszO8Xy2cR6CnARnvxCfRmK4")
        
        In [5]: ksuid_from_base62.timestamp
        Out[5]: 1621634852
        ```
        
        ### ksuid from bytes
        
        ```
        In [1]: ksuid = Ksuid()
        
        In [2]: ksuid_from_bytes = ksuid.from_bytes(bytes(ksuid))
        
        In [3]: f"ksuid: {ksuid}, ksuid_from_bytes: {ksuid_from_bytes}"
        Out[3]: 'ksuid: 1sreAHoz6myPhXghsOdVBoec3Vr, ksuid_from_bytes: 1sreAHoz6myPhXghsOdVBoec3Vr'
        
        In [4]: ksuid == ksuid_from_bytes
        Out[4]: True
        ```
        
        ### Compare ksuid(s)
        
        ```
        In [1]: ksuid_1
        Out[1]: <ksuid.ksuid.Ksuid at 0x7f8868dfcbb0>
        
        In [2]: ksuid_2
        Out[2]: <ksuid.ksuid.Ksuid at 0x7f88480de460>
        
        In [3]: f"ksuid_1: {ksuid_1}, ksuid_2: {ksuid_2}"
        Out[3]: 'ksuid_1: 1sreAHoz6myPhXghsOdVBoec3Vr, ksuid_2: 1sreAHoz6myPhXghsOdVBoec3Vr'
        
        In [4]: ksuid_1 == ksuid_2
        Out[4]: True
        ```
        
Keywords: svix,ksuid
Platform: UNKNOWN
Requires-Python: >=3.6
Description-Content-Type: text/markdown
