{"id":20613188,"url":"https://github.com/konradmalik/hlcpy","last_synced_at":"2025-04-15T07:11:20.400Z","repository":{"id":57437420,"uuid":"315128617","full_name":"konradmalik/hlcpy","owner":"konradmalik","description":"Hybrid Logical Clock implementation in Python as a small library","archived":false,"fork":false,"pushed_at":"2021-04-24T19:12:48.000Z","size":24,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-28T17:34:34.255Z","etag":null,"topics":["crdt","distributed","hlc","hybrid-logical-clocks","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/konradmalik.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-11-22T20:44:48.000Z","updated_at":"2025-03-16T03:45:53.000Z","dependencies_parsed_at":"2022-09-15T18:31:47.328Z","dependency_job_id":null,"html_url":"https://github.com/konradmalik/hlcpy","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/konradmalik%2Fhlcpy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/konradmalik%2Fhlcpy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/konradmalik%2Fhlcpy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/konradmalik%2Fhlcpy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/konradmalik","download_url":"https://codeload.github.com/konradmalik/hlcpy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249023726,"owners_count":21199960,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["crdt","distributed","hlc","hybrid-logical-clocks","python"],"created_at":"2024-11-16T11:09:03.629Z","updated_at":"2025-04-15T07:11:20.384Z","avatar_url":"https://github.com/konradmalik.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![tests](https://github.com/konradmalik/hlcpy/actions/workflows/test.yaml/badge.svg) ![publishing](https://github.com/konradmalik/hlcpy/actions/workflows/publish.yaml/badge.svg)\n[![PyPI version](https://badge.fury.io/py/hlcpy.svg)](https://badge.fury.io/py/hlcpy)\n\n# Hybrid Logical Clock\n\nPython implementation of Hybrid Logical Clock.\n\nRequires Python version \u003e= 3.7.\n\nYou can install this package from [PyPI](https://pypi.org/project/hlcpy/):\n\n```bash\n$ pip install hlcpy\n```\n\n## Exemplary usage\n\n```python\nimport hlcpy\n\n# BASIC USAGE\n# Instantiate HLC\nc = hlcpy.HLC()\n\n# specify starting nanos and logical time\nc = hlcpy.HLC(nanos=123, logical=0)\n\n# create from current time\nc = hlcpy.HLC.from_now()\n\n# create from iso8601 time\nc = hlcpy.HLC.from_str('2020-01-01T00:00:00Z')\n\n# string representation of HLC\nprint(str(c))\n#\u003e\u003e\u003e 2020-01-01T00:00:00.000000000Z_0\n\n# create from string representation\nc1 = hlcpy.HLC.from_str(str(c))\n\n# refresh the clock\nc.sync()\n\n# supports comparison\nprint(c \u003e c1)\n#\u003e\u003e\u003e True\n\n# merge two events\nc.merge(c1)\nprint(c)\n#\u003e\u003e\u003e 2021-04-24T18:42:47.001864924Z_0\n\n# merge event that occured in the future to see the logical tick\nimport time\nfuture = hlcpy.HLC(nanos=int(time.time_ns() + 3e9))\nc.merge(future)\nprint(c)\n#\u003e\u003e\u003e 2021-04-24T18:42:50.001891328Z_1\n\n# More examples - see tests/unit/test_hlc.py\n\n```\n\n## Credits\n\nBased on:\nhttps://www.cse.buffalo.edu/tech-reports/2014-04.pdf\n\nInspired by:\n\n- https://www.youtube.com/watch?v=iEFcmfmdh2w\n- https://github.com/adsharma/hlcpy (based on but heavily rewritten)\n- https://bartoszsypytkowski.com/hybrid-logical-clocks/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkonradmalik%2Fhlcpy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkonradmalik%2Fhlcpy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkonradmalik%2Fhlcpy/lists"}