Skip to main content

strgen

Python package Documentation Status

Generate test data, unique ids, passwords, vouchers or other randomized textual data very quickly using a template language. The template language is superficially similar to regular expressions but instead of defining how to match or capture strings, it defines how to generate randomized strings. A very simple invocation to produce a random string with word characters of 30 characters length:

from strgen import StringGenerator as SG
SG(r"[\w]{30}").render()
'wQjLVRIj1sjjslORpqLJyDObaCnDR2'

Full documentation

The current package requires Python 3.6 or higher. Use version 0.3.4 or earlier if you want to use Python 2.7 or an earlier Python 3 version.

NB: with version 0.4.2, the preferred method for generating a unique list is StringGenerator.render_set() instead of render_list(). Generate 50000 unique secure tokens in a few seconds:

secure_tokens = SG("[\p\w]{32}").render_set(50000)

render_set() does not support a progress callback.

There is a rich feature set to randomize strings in situ or include external data.

The purpose of this module is to save the Python developer from having to write verbose code around the same pattern every time to generate passwords, keys, tokens, test data, etc. of this sort:

my_secret_key = ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(30))

that is:

  1. Hard to read even at this simplistic level.

  2. Hard to safely change quickly. Even modest additions to the requirements need unreasonably verbose solutions.

  3. Doesn’t use safe encryption standards.

  4. Doesn’t provide the implied minimal guarantees of character occurance.

  5. Hard to track back to requirements (“must be between x and y in length and have characters from sets Q, R and S”).

The template uses short forms similar to those of regular expressions. An example template for generating a strong password:

[\w\p\d]{20}

will generate something like the following:

P{:45Ec5$3)2!I68x`{6

Guarantee at least two “special” characters in a string:

[\w\p]{10}&[\p]{2}

You can also generate useful test data, like fake emails with plenty of variation:

[\c]{10}.[\c]{5:10}@[\c]{3:12}.(com|net|org)

Requirements

From version 0.4.0, support for Python 2 is dropped. If you still need support for Python 2, use version 0.3.4.

There are no dependencies beyond the Python Standard Library.

Installation

Install as standard for Python packages from PyPi:

pip install StringGenerator

License

Released under the BSD license.

Acknowledgements

Thanks to Robert LeBlanc who caught some important errors in escaping special characters. Thanks to Andreas Motl for the progress counter.

Original Author: paul.wolf@yewleaf.com

Release files for StringGenerator 0.4.2.post1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for StringGenerator 0.4.2.post1
File Size Uploaded
StringGenerator-0.4.2.post1.tar.gz 11.4 kB Details

Release files / StringGenerator-0.4.2.post1.tar.gz

Download URL StringGenerator-0.4.2.post1.tar.gz
Size 11.4 kB
Tags Source
SHA-256 checksum
How to use checksums
e23bdd97dfecba7a6fdd30f58af8752c432985021c0e349882488bf9c964d277
BLAKE2b-256 checksum
How to use checksums
8a6c5a1acefbb5d2092d6b7358da76d6958af5ea2bcaddca06721a871e4870cc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/54.1.0 requests-toolbelt/0.9.1 tqdm/4.58.0 CPython/3.8.7

Release history Release notifications | RSS feed

0.5.1

2 release files

0.5.0

2 release files

0.4.4

1 release file

0.4.3

1 release file

This release

0.4.2.post1 This release

1 release file

0.4.2

1 release file

0.4.1

1 release file

0.4.0

1 release file

0.3.4

1 release file

0.3.3

1 release file

0.3.2

1 release file

0.3.1

1 release file

0.3.0

1 release file

0.2.1

1 release file

0.2.0

1 release file

0.1.9

1 release file

0.1.8

1 release file

0.1.7

1 release file

0.1.6

1 release file

0.1.5

1 release file

0.1.4

1 release file

0.1.3

1 release file

0.1.2

1 release file

0.1.1

1 release file

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page