vasuki


Namevasuki JSON
Version 0.7.0 PyPI version JSON
download
home_pagehttps://github.com/daq-tools/vasuki
SummaryVasuki generates different kinds of random unique identifiers, tokens, and words
upload_time2023-09-09 18:51:54
maintainer
docs_urlNone
authorAndreas Motl
requires_python
licenseMIT
keywords random unique identifier token word generator id uuid ulid hashid gibberish nagamani19
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            .. image:: https://github.com/daq-tools/vasuki/actions/workflows/main.yml/badge.svg
    :alt: Software test outcome
    :target: https://github.com/daq-tools/vasuki/actions/workflows/main.yml

.. image:: https://img.shields.io/codecov/c/gh/daq-tools/vasuki.svg
    :alt: Software tests code coverage
    :target: https://codecov.io/gh/daq-tools/vasuki/

.. image:: https://img.shields.io/pypi/pyversions/vasuki.svg
    :alt: Supported versions of Python
    :target: https://pypi.org/project/vasuki/

.. image:: https://img.shields.io/pypi/status/vasuki.svg
    :alt: PyPI Status
    :target: https://pypi.org/project/vasuki/

.. image:: https://img.shields.io/pypi/v/vasuki.svg
    :alt: Version on PyPI
    :target: https://pypi.org/project/vasuki/

.. image:: https://pepy.tech/badge/vasuki/month
    :target: https://pypi.org/project/vasuki/

.. image:: https://img.shields.io/pypi/l/vasuki.svg
    :alt: License
    :target: https://github.com/daq-tools/vasuki/blob/main/LICENSE

|

.. figure:: https://ptrace.hiveeyes.org/2019-06-29_vasuki-small.jpg
    :target: https://en.wikipedia.org/wiki/File:Kurma,_the_tortoise_incarnation_of_Vishnu.jpg


.. vasuki-readme:

######
Vasuki
######


*****
About
*****

Vasuki generates different kinds of random unique identifiers, tokens, and words.

It can be used as a library and as an HTTP service, aiming to provide effortless
identifier generation for your applications.

A public instance of the HTTP service is available at https://api.hiveeyes.org/vasuki/.


********
Synopsis
********
::

    # UUIDv4 universally unique identifier.
    vasuki uuid

    # ULID universally unique lexicographically sortable identifier.
    vasuki ulid

    # Gibberish random, pronounceable pseudo-words
    vasuki gibberish

    # MomentName short epoch slugs
    vasuki moment

    # Nagamani19 short, unique, non-sequential identifier.
    vasuki naga19


*******
Install
*******

Prerequisites
=============
::

    pip install vasuki

With service API::

    pip install 'vasuki[service]'

Please note this software is a work in progress, and its interfaces may change.
For those reasons, if you use it as a dependency in your own programs, version
pinning is always recommended.


********
Features
********

Unique ID generators
====================
- UUIDv4_ universally unique identifier
- ULID_ universally unique lexicographically sortable identifier
- Gibberish_ random, pronounceable pseudo-words
- MomentName, a short epoch slug
- Nagamani19, a short, unique, non-sequential identifier based on Hashids_
  and a custom Epoch starting on January 1, 2019.

Time and randomness is usually taking from the system
as implemented by the libraries underpinning this package.

Slugifiers
==========
- `six-nibble-name`_ converts six nibbles (three bytes) into a 4-character name

Optional service API
====================
The fine responder_ library optionally exposes the machinery as HTTP API.



********
Examples
********

Identifier generation
=====================
::

    # UUIDv4
    vasuki uuid
    d192b464-d32c-48f1-9c23-0fe04a4e8133

    # ULID
    vasuki ulid
    01DEFKXYCJ0E91DQY0YPWZY01D

    # Gibberish
    vasuki gibberish
    shoomly

    # MomentName
    vasuki moment
    Zese

    # Nagamani19
    vasuki naga19
    Xm3k6mWq


With transformations
====================
Vasuki can apply uppercase or lowercase transformation to the
generated identifier or word::

    # UUIDv4, uppercase
    vasuki uuid --upper
    43FA0272-CA48-40AE-8CC1-204302D91D89

    # ULID, lowercase
    vasuki ulid --lower
    01defkz01k47dqkvcyhy0mz06e

With variable word length
=========================
::

    vasuki gibberish --size medium
    schreblyiopp


Slug tools
==========
::

    vasuki slug 42 --format=sixnibble
    Baca

Multiple tokens at once
=======================
::

    vasuki naga19 --count 10
    vasuki gibberish --size large --count 50


HTTP API
========
Start the Vasuki service as daemon::

    vasuki service

Example requests would look like::

    # UUIDv4
    /unique/uuid

    # Uppercase UUIDv4
    /unique/uuid?upper=true

    # Multiple ULIDs
    /unique/ulid?count=10

    # Very short Nagamani19
    /unique/naga19?size=small


***********
Development
***********

Acquire sources::

    git clone https://github.com/daq-tools/vasuki
    cd vasuki

Install development sandbox::

    python3 -m venv .venv
    source .venv/bin/activate
    pip install --editable='.[service,develop,docs,test]'
    vasuki --version

Run linter and software tests::

    poe check


**********
Disclaimer
**********

The algorithms and procedures curated here generate different kinds of random and
pseudo-random identifiers, tokens, names or passwords.

While some generated tokens max out on the randomness and uniqueness
aspects like UUIDs, others compromise on the time vs. space domain but focus
more on human memorability and empathize with their common sense and humor.

Saying that, it is important to understand their properties and features when using
those identifiers in different contexts. YMMV.

For more in-depth information, enjoy reading `Understanding UUIDs, ULIDs and String
Representations`_ and its `corresponding discussion`_.

Warranty and License
====================
Please refer to the `LICENSE`_ file for further information and caveats about
warranty and licensing information.

You are responsible for using this software responsibly, it comes without
warranty of any kind.


*******
Credits
*******
- Andrew Hawker for https://github.com/ahawker/ulid
- David Aurelio for https://github.com/davidaurelio/hashids-python
- Gregory Haskins for https://github.com/greghaskins/gibberish
- Oliver Robson for https://github.com/HowManyOliversAreThere/six-nibble-name
- All authors for all other fine pieces this software is made of.
- Mozilla for `Zilla Slab`_
- Vasuki Logo from https://en.wikipedia.org/wiki/Vasuki



*********
Etymology
*********

Kurma_ is one of the avatars of Vishnu_. He appears in the form of a tortoise
or turtle to support the foundation of the cosmos, while the gods and demons
churn the cosmic ocean with the help of serpent Vasuki_ to produce the nectar
of immortality.

Vasuki is a naga serpent king, occasionally coiling around Kurma's or Shiva's
neck, who blessed and wore him as an ornament. He is described as having
a gem called Nagamani on his head.


.. _corresponding discussion: https://news.ycombinator.com/item?id=29794186
.. _Gibberish: https://github.com/greghaskins/gibberish
.. _Hashids: https://hashids.org/
.. _Kurma: https://en.wikipedia.org/wiki/Kurma
.. _LICENSE: https://github.com/daq-tools/vasuki/blob/main/LICENSE
.. _responder: https://pypi.org/project/responder/
.. _six-nibble-name: https://github.com/HowManyOliversAreThere/six-nibble-name
.. _ULID: https://github.com/ulid/spec
.. _Understanding UUIDs, ULIDs and String Representations: https://sudhir.io/uuids-ulids
.. _UUIDv4: https://en.wikipedia.org/wiki/Universally_unique_identifier
.. _Vasuki: https://en.wikipedia.org/wiki/Vasuki
.. _Vishnu: https://en.wikipedia.org/wiki/Vishnu
.. _Zilla Slab: https://blog.mozilla.org/opendesign/zilla-slab-common-language-shared-font/

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/daq-tools/vasuki",
    "name": "vasuki",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "random unique identifier token word generator id uuid ulid hashid gibberish nagamani19",
    "author": "Andreas Motl",
    "author_email": "andreas@terkin.org",
    "download_url": "https://files.pythonhosted.org/packages/2c/3e/60e5367f6e62274db6210faa52ff173f973f411489c51de9fca3e614f364/vasuki-0.7.0.tar.gz",
    "platform": null,
    "description": ".. image:: https://github.com/daq-tools/vasuki/actions/workflows/main.yml/badge.svg\n    :alt: Software test outcome\n    :target: https://github.com/daq-tools/vasuki/actions/workflows/main.yml\n\n.. image:: https://img.shields.io/codecov/c/gh/daq-tools/vasuki.svg\n    :alt: Software tests code coverage\n    :target: https://codecov.io/gh/daq-tools/vasuki/\n\n.. image:: https://img.shields.io/pypi/pyversions/vasuki.svg\n    :alt: Supported versions of Python\n    :target: https://pypi.org/project/vasuki/\n\n.. image:: https://img.shields.io/pypi/status/vasuki.svg\n    :alt: PyPI Status\n    :target: https://pypi.org/project/vasuki/\n\n.. image:: https://img.shields.io/pypi/v/vasuki.svg\n    :alt: Version on PyPI\n    :target: https://pypi.org/project/vasuki/\n\n.. image:: https://pepy.tech/badge/vasuki/month\n    :target: https://pypi.org/project/vasuki/\n\n.. image:: https://img.shields.io/pypi/l/vasuki.svg\n    :alt: License\n    :target: https://github.com/daq-tools/vasuki/blob/main/LICENSE\n\n|\n\n.. figure:: https://ptrace.hiveeyes.org/2019-06-29_vasuki-small.jpg\n    :target: https://en.wikipedia.org/wiki/File:Kurma,_the_tortoise_incarnation_of_Vishnu.jpg\n\n\n.. vasuki-readme:\n\n######\nVasuki\n######\n\n\n*****\nAbout\n*****\n\nVasuki generates different kinds of random unique identifiers, tokens, and words.\n\nIt can be used as a library and as an HTTP service, aiming to provide effortless\nidentifier generation for your applications.\n\nA public instance of the HTTP service is available at https://api.hiveeyes.org/vasuki/.\n\n\n********\nSynopsis\n********\n::\n\n    # UUIDv4 universally unique identifier.\n    vasuki uuid\n\n    # ULID universally unique lexicographically sortable identifier.\n    vasuki ulid\n\n    # Gibberish random, pronounceable pseudo-words\n    vasuki gibberish\n\n    # MomentName short epoch slugs\n    vasuki moment\n\n    # Nagamani19 short, unique, non-sequential identifier.\n    vasuki naga19\n\n\n*******\nInstall\n*******\n\nPrerequisites\n=============\n::\n\n    pip install vasuki\n\nWith service API::\n\n    pip install 'vasuki[service]'\n\nPlease note this software is a work in progress, and its interfaces may change.\nFor those reasons, if you use it as a dependency in your own programs, version\npinning is always recommended.\n\n\n********\nFeatures\n********\n\nUnique ID generators\n====================\n- UUIDv4_ universally unique identifier\n- ULID_ universally unique lexicographically sortable identifier\n- Gibberish_ random, pronounceable pseudo-words\n- MomentName, a short epoch slug\n- Nagamani19, a short, unique, non-sequential identifier based on Hashids_\n  and a custom Epoch starting on January 1, 2019.\n\nTime and randomness is usually taking from the system\nas implemented by the libraries underpinning this package.\n\nSlugifiers\n==========\n- `six-nibble-name`_ converts six nibbles (three bytes) into a 4-character name\n\nOptional service API\n====================\nThe fine responder_ library optionally exposes the machinery as HTTP API.\n\n\n\n********\nExamples\n********\n\nIdentifier generation\n=====================\n::\n\n    # UUIDv4\n    vasuki uuid\n    d192b464-d32c-48f1-9c23-0fe04a4e8133\n\n    # ULID\n    vasuki ulid\n    01DEFKXYCJ0E91DQY0YPWZY01D\n\n    # Gibberish\n    vasuki gibberish\n    shoomly\n\n    # MomentName\n    vasuki moment\n    Zese\n\n    # Nagamani19\n    vasuki naga19\n    Xm3k6mWq\n\n\nWith transformations\n====================\nVasuki can apply uppercase or lowercase transformation to the\ngenerated identifier or word::\n\n    # UUIDv4, uppercase\n    vasuki uuid --upper\n    43FA0272-CA48-40AE-8CC1-204302D91D89\n\n    # ULID, lowercase\n    vasuki ulid --lower\n    01defkz01k47dqkvcyhy0mz06e\n\nWith variable word length\n=========================\n::\n\n    vasuki gibberish --size medium\n    schreblyiopp\n\n\nSlug tools\n==========\n::\n\n    vasuki slug 42 --format=sixnibble\n    Baca\n\nMultiple tokens at once\n=======================\n::\n\n    vasuki naga19 --count 10\n    vasuki gibberish --size large --count 50\n\n\nHTTP API\n========\nStart the Vasuki service as daemon::\n\n    vasuki service\n\nExample requests would look like::\n\n    # UUIDv4\n    /unique/uuid\n\n    # Uppercase UUIDv4\n    /unique/uuid?upper=true\n\n    # Multiple ULIDs\n    /unique/ulid?count=10\n\n    # Very short Nagamani19\n    /unique/naga19?size=small\n\n\n***********\nDevelopment\n***********\n\nAcquire sources::\n\n    git clone https://github.com/daq-tools/vasuki\n    cd vasuki\n\nInstall development sandbox::\n\n    python3 -m venv .venv\n    source .venv/bin/activate\n    pip install --editable='.[service,develop,docs,test]'\n    vasuki --version\n\nRun linter and software tests::\n\n    poe check\n\n\n**********\nDisclaimer\n**********\n\nThe algorithms and procedures curated here generate different kinds of random and\npseudo-random identifiers, tokens, names or passwords.\n\nWhile some generated tokens max out on the randomness and uniqueness\naspects like UUIDs, others compromise on the time vs. space domain but focus\nmore on human memorability and empathize with their common sense and humor.\n\nSaying that, it is important to understand their properties and features when using\nthose identifiers in different contexts. YMMV.\n\nFor more in-depth information, enjoy reading `Understanding UUIDs, ULIDs and String\nRepresentations`_ and its `corresponding discussion`_.\n\nWarranty and License\n====================\nPlease refer to the `LICENSE`_ file for further information and caveats about\nwarranty and licensing information.\n\nYou are responsible for using this software responsibly, it comes without\nwarranty of any kind.\n\n\n*******\nCredits\n*******\n- Andrew Hawker for https://github.com/ahawker/ulid\n- David Aurelio for https://github.com/davidaurelio/hashids-python\n- Gregory Haskins for https://github.com/greghaskins/gibberish\n- Oliver Robson for https://github.com/HowManyOliversAreThere/six-nibble-name\n- All authors for all other fine pieces this software is made of.\n- Mozilla for `Zilla Slab`_\n- Vasuki Logo from https://en.wikipedia.org/wiki/Vasuki\n\n\n\n*********\nEtymology\n*********\n\nKurma_ is one of the avatars of Vishnu_. He appears in the form of a tortoise\nor turtle to support the foundation of the cosmos, while the gods and demons\nchurn the cosmic ocean with the help of serpent Vasuki_ to produce the nectar\nof immortality.\n\nVasuki is a naga serpent king, occasionally coiling around Kurma's or Shiva's\nneck, who blessed and wore him as an ornament. He is described as having\na gem called Nagamani on his head.\n\n\n.. _corresponding discussion: https://news.ycombinator.com/item?id=29794186\n.. _Gibberish: https://github.com/greghaskins/gibberish\n.. _Hashids: https://hashids.org/\n.. _Kurma: https://en.wikipedia.org/wiki/Kurma\n.. _LICENSE: https://github.com/daq-tools/vasuki/blob/main/LICENSE\n.. _responder: https://pypi.org/project/responder/\n.. _six-nibble-name: https://github.com/HowManyOliversAreThere/six-nibble-name\n.. _ULID: https://github.com/ulid/spec\n.. _Understanding UUIDs, ULIDs and String Representations: https://sudhir.io/uuids-ulids\n.. _UUIDv4: https://en.wikipedia.org/wiki/Universally_unique_identifier\n.. _Vasuki: https://en.wikipedia.org/wiki/Vasuki\n.. _Vishnu: https://en.wikipedia.org/wiki/Vishnu\n.. _Zilla Slab: https://blog.mozilla.org/opendesign/zilla-slab-common-language-shared-font/\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Vasuki generates different kinds of random unique identifiers, tokens, and words",
    "version": "0.7.0",
    "project_urls": {
        "Homepage": "https://github.com/daq-tools/vasuki"
    },
    "split_keywords": [
        "random",
        "unique",
        "identifier",
        "token",
        "word",
        "generator",
        "id",
        "uuid",
        "ulid",
        "hashid",
        "gibberish",
        "nagamani19"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2fbe82932b21d7c286263e12bfc7ea641983380dac8500172a1d8a9f16db87a0",
                "md5": "4f311189c1c076b928fdab7b769cb0ff",
                "sha256": "381d8a428fd3f8edf66604cb946612cfb636ebb4b585c4fb4eca1d54a6b5eb58"
            },
            "downloads": -1,
            "filename": "vasuki-0.7.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "4f311189c1c076b928fdab7b769cb0ff",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 18741,
            "upload_time": "2023-09-09T18:51:52",
            "upload_time_iso_8601": "2023-09-09T18:51:52.495278Z",
            "url": "https://files.pythonhosted.org/packages/2f/be/82932b21d7c286263e12bfc7ea641983380dac8500172a1d8a9f16db87a0/vasuki-0.7.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2c3e60e5367f6e62274db6210faa52ff173f973f411489c51de9fca3e614f364",
                "md5": "bc6e91daa1f32358358f211db2447af5",
                "sha256": "31b2f8b9cc6d7c3c967ad160ae30019e74d5b7780afeea9c23e4b98fcbc55023"
            },
            "downloads": -1,
            "filename": "vasuki-0.7.0.tar.gz",
            "has_sig": false,
            "md5_digest": "bc6e91daa1f32358358f211db2447af5",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 19265,
            "upload_time": "2023-09-09T18:51:54",
            "upload_time_iso_8601": "2023-09-09T18:51:54.003825Z",
            "url": "https://files.pythonhosted.org/packages/2c/3e/60e5367f6e62274db6210faa52ff173f973f411489c51de9fca3e614f364/vasuki-0.7.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-09-09 18:51:54",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "daq-tools",
    "github_project": "vasuki",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "vasuki"
}
        
Elapsed time: 0.12649s