Skip to content

trag1c/ixia

Repository files navigation

Ixia

Ixia is a cryptographically secure RNG library. It mainly merges secrets' security with random's versatility, but also adds some of its own functions, such as ixia.passphrase(), ixia.shuffled(), or ixia.universe_rand(). All random values are generated using urandom (or BCryptGenRandom on Windows).

Installation

Ixia is available on PyPI and can be installed with pip, or any other Python package manager:

$ pip install ixia

(Some systems may require you to use pip3, python -m pip, or py -m pip instead.)

Documentation

Ixia documentation is available at https://trag1c.github.io/ixia/.

⚠️ Important Notes

While supporting Python 3.9+, Ixia is based on the Python 3.12 implementation of the random module. The following changes have been made to the module since Python 3.9:

  • gauss, expovariate and normalvariate have default parameter values
  • binomialvariate was added

Additionally, Ixia executes 3.9+ deprecations, thus:

  • ixia.rand_range doesn't convert non-integer types to equivalent integers
  • ixia.sample doesn't support set as a sequence type
  • ixia.shuffle doesn't support the random parameter

Contributing

Contributions are welcome!

Please open an issue before submitting a pull request (doesn't apply to minor changes like typos).

To get started:

  1. Clone the project
git clone https://github.com/trag1c/ixia.git
  1. Set up the project with just (make sure you have poetry installed):
just install

Note

If you don't want to install just, simply look up the recipes in the project's justfile.

  1. After you're done, use the following just recipes for checking your changes:
just check     # pytest, mypy, ruff
just coverage  # pytest (with coverage), interrogate (docstring coverage)

License

ixia is licensed under the MIT License.
© trag1c, 2022–2024