118 lines
3.4 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Metadata-Version: 2.1
Name: nanoid
Version: 2.0.0
Summary: A tiny, secure, URL-friendly, unique string ID generator for Python
Home-page: https://github.com/puyuan/py-nanoid
Author: Paul Yuan
Author-email: puyuan1@gmail.com
License: MIT
Platform: UNKNOWN
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
Classifier: Operating System :: OS Independent
Classifier: Topic :: Utilities
Description-Content-Type: text/markdown
# Nano ID
[![CircleCI](https://circleci.com/gh/puyuan/py-nanoid/tree/master.svg?style=svg)](https://circleci.com/gh/puyuan/py-nanoid/tree/master)
A tiny, secure, URL-friendly, unique string ID generator for Python.
* __Safe__. It uses cryptographically strong random APIs and tests distribution of symbols;
* __Compact__. It uses a larger alphabet than UUID (A-Za-z0-9_-). So ID size was reduced from 36 to 21 symbols.
## Usage
Install Nano ID using pip:
```
pip install nanoid
```
### Normal
The main module uses URL-friendly symbols (A-Za-z0-9_-) and returns an ID with 21 characters (to have a collision probability similar to UUID v4).
```python
from nanoid import generate
generate() # => NDzkGoTCdRcaRyt7GOepg
```
Symbols `-,.()` are not encoded in the URL. If used at the end of a link they could be identified as a punctuation symbol.
If you want to reduce ID length (and increase collisions probability), you can pass the length as an argument.
```python
from nanoid import generate
generate(size=10) # => "IRFa-VaY2b"
```
Dont forget to check the safety of your ID length in ID [collision probability calculator](https://zelark.github.io/nano-id-cc/).
## Custom Alphabet or Length
If you want to change the ID's alphabet or length you can use the internal generate module.
```python
from nanoid import generate
generate('1234567890abcdef', 10) # => "4f9zd13a42"
```
Non-secure API is also available:
```python
from nanoid import non_secure_generate
non_secure_generate('1234567890abcdef', 10)
```
## Tools
* [ID size calculator](https://zelark.github.io/nano-id-cc/) to choice smaller ID size depends on your case.
nanoid-dictionary with popular alphabets to use with nanoid/generate;
* [`nanoid-dictionary`](https://github.com/aidarkhanov/py-nanoid-dictionary) with popular alphabets to use.
## Other Programming Languages
* [C#](https://github.com/codeyu/nanoid-net)
* [Clojure and ClojureScript](https://github.com/zelark/nano-id)
* [Crystal](https://github.com/mamantoha/nanoid.cr)
* [Dart](https://github.com/pd4d10/nanoid)
* [Go](https://github.com/matoous/go-nanoid)
* [Elixir](https://github.com/railsmechanic/nanoid)
* [Haskell](https://github.com/4e6/nanoid-hs)
* [Java](https://github.com/aventrix/jnanoid)
* [JavaScript](https://github.com/ai/nanoid)
* [Nim](https://github.com/icyphox/nanoid.nim)
* [PHP](https://github.com/hidehalo/nanoid-php)
* [Ruby](https://github.com/radeno/nanoid.rb)
* [Rust](https://github.com/nikolay-govorov/nanoid)
* [Swift](https://github.com/antiflasher/NanoID)
## Changelog
- v2.0.0
- Replace ~ to - in default alphabet
- Add non-secure fast generator
- Reduce default characters from 22 to 21
- v0.3.0
- Fix array out of bound error.
## Credits
- Andrey Sitnik for [Nano ID](https://github.com/ai/nanoid);
- [Dair Aidarkhanov](https://github.com/aidarkhanov) for main contribution to v2.0, and adding test cases.
- Aleksandr Zhuravlev for [ID collision probability](https://zelark.github.io/nano-id-cc/).