Skip to main content

grex generates regular expressions from user-provided test cases.

Project description

grex


build status codecov demo supported Python versions pypi license


1. What does this library do?

grex is a library that is meant to simplify the often complicated and tedious task of creating regular expressions. It does so by automatically generating a single regular expression from user-provided test cases. The resulting expression is guaranteed to match the test cases which it was generated from.

This project has started as a Rust port of the JavaScript tool regexgen written by Devon Govett. Although a lot of further useful features could be added to it, its development was apparently ceased several years ago. The Rust library offers new features and extended Unicode support. With the help of PyO3 and Maturin, the library has been compiled to a Python extension module so that it can be used within any Python software as well.

The philosophy of this project is to generate the most specific regular expression possible by default which exactly matches the given input only and nothing else. With the use of preprocessing methods, more generalized expressions can be created.

The produced expressions are Perl-compatible regular expressions which are also compatible with the regular expression module in Python's standard library.

There is a demo website available where you can give grex a try.

demo website

2. Do I still need to learn to write regexes then?

Definitely, yes! Using the standard settings, grex produces a regular expression that is guaranteed to match only the test cases given as input and nothing else. However, if the conversion to shorthand character classes such as \w is enabled, the resulting regex matches a much wider scope of test cases. Knowledge about the consequences of this conversion is essential for finding a correct regular expression for your business domain.

grex uses an algorithm that tries to find the shortest possible regex for the given test cases. Very often though, the resulting expression is still longer or more complex than it needs to be. In such cases, a more compact or elegant regex can be created only by hand. Also, every regular expression engine has different built-in optimizations. grex does not know anything about those and therefore cannot optimize its regexes for a specific engine.

So, please learn how to write regular expressions! The currently best use case for grex is to find an initial correct regex which should be inspected by hand if further optimizations are possible.

3. Current Features

  • literals
  • character classes
  • detection of common prefixes and suffixes
  • detection of repeated substrings and conversion to {min,max} quantifier notation
  • alternation using | operator
  • optionality using ? quantifier
  • escaping of non-ascii characters, with optional conversion of astral code points to surrogate pairs
  • case-sensitive or case-insensitive matching
  • capturing or non-capturing groups
  • optional anchors ^ and $
  • fully compliant to Unicode Standard 16.0
  • correctly handles graphemes consisting of multiple Unicode symbols
  • produces more readable expressions indented on multiple using optional verbose mode
  • optional syntax highlighting for nicer output in supported terminals

4. How to install?

grex is available in the Python Package Index and can be installed with:

pip install grex

The current version 1.0.2 corresponds to the latest version 1.4.6 of the Rust library and command-line tool.

5. How to use?

This library contains a single class named RegExpBuilder that can be imported like so:

from grex import RegExpBuilder

5.1 Default settings

pattern = RegExpBuilder.from_test_cases(["a", "aa", "aaa"]).build()
assert pattern == "^a(?:aa?)?$"

5.2 Convert to character classes

pattern = (RegExpBuilder.from_test_cases(["a", "aa", "123"])
    .with_conversion_of_digits()
    .with_conversion_of_words()
    .build())
assert pattern == "^(?:\\d\\d\\d|\\w(?:\\w)?)$"

5.3 Convert repeated substrings

pattern = (RegExpBuilder.from_test_cases(["aa", "bcbc", "defdefdef"])
    .with_conversion_of_repetitions()
    .build())
assert pattern == "^(?:a{2}|(?:bc){2}|(?:def){3})$"

By default, grex converts each substring this way which is at least a single character long and which is subsequently repeated at least once. You can customize these two parameters if you like.

In the following example, the test case aa is not converted to a{2} because the repeated substring a has a length of 1, but the minimum substring length has been set to 2.

pattern = (RegExpBuilder.from_test_cases(["aa", "bcbc", "defdefdef"])
    .with_conversion_of_repetitions()
    .with_minimum_substring_length(2)
    .build())
assert pattern == "^(?:aa|(?:bc){2}|(?:def){3})$"

Setting a minimum number of 2 repetitions in the next example, only the test case defdefdef will be converted because it is the only one that is repeated twice.

pattern = (RegExpBuilder.from_test_cases(["aa", "bcbc", "defdefdef"])
    .with_conversion_of_repetitions()
    .with_minimum_repetitions(2)
    .build())
assert pattern == "^(?:bcbc|aa|(?:def){3})$"

5.4 Escape non-ascii characters

pattern = (RegExpBuilder.from_test_cases(["You smell like 💩."])
    .with_escaping_of_non_ascii_chars(use_surrogate_pairs=False)
    .build())
assert pattern == "^You smell like \\U0001f4a9\\.$"

Old versions of JavaScript do not support unicode escape sequences for the astral code planes (range U+010000 to U+10FFFF). In order to support these symbols in JavaScript regular expressions, the conversion to surrogate pairs is necessary. More information on that matter can be found here.

pattern = (RegExpBuilder.from_test_cases(["You smell like 💩."])
    .with_escaping_of_non_ascii_chars(use_surrogate_pairs=True)
    .build())
assert pattern == "^You smell like \\ud83d\\udca9\\.$"

5.5 Case-insensitive matching

The regular expressions that grex generates are case-sensitive by default. Case-insensitive matching can be enabled like so:

pattern = (RegExpBuilder.from_test_cases(["big", "BIGGER"])
    .with_case_insensitive_matching()
    .build())
assert pattern == "(?i)^big(?:ger)?$"

5.6 Capturing Groups

Non-capturing groups are used by default. Extending the previous example, you can switch to capturing groups instead.

pattern = (RegExpBuilder.from_test_cases(["big", "BIGGER"])
    .with_case_insensitive_matching()
    .with_capturing_groups()
    .build())
assert pattern == "(?i)^big(ger)?$"

5.7 Verbose mode

If you find the generated regular expression hard to read, you can enable verbose mode. The expression is then put on multiple lines and indented to make it more pleasant to the eyes.

import inspect

pattern = (RegExpBuilder.from_test_cases(["a", "b", "bcd"])
    .with_verbose_mode()
    .build())

assert pattern == inspect.cleandoc("""
    (?x)
    ^
      (?:
        b
        (?:
          cd
        )?
        |
        a
      )
    $
    """
)

5.8 Disable anchors

By default, the anchors ^ and $ are put around every generated regular expression in order to ensure that it matches only the test cases given as input. Often enough, however, it is desired to use the generated pattern as part of a larger one. For this purpose, the anchors can be disabled, either separately or both of them.

pattern = (RegExpBuilder.from_test_cases(["a", "aa", "aaa"])
    .without_anchors()
    .build())
assert pattern == "a(?:aa?)?"

6. How to build?

In order to build the source code yourself, you need the stable Rust toolchain installed on your machine so that cargo, the Rust package manager is available.

git clone https://github.com/pemistahl/grex.git
cd grex
cargo build

To build the Python extension module, create a virtual environment and install Maturin.

python -m venv /path/to/virtual/environment
source /path/to/virtual/environment/bin/activate
pip install maturin
maturin build

The Rust source code is accompanied by an extensive test suite consisting of unit tests, integration tests and property tests. For running them, simply say:

cargo test

Additional Python tests can be run after installing pytest which is an optional dependency:

maturin develop --extras=test
pytest tests/python/test_grex.py

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

grex-1.0.2-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl (1.4 MB view details)

Uploaded PyPymusllinux: musl 1.2+ x86-64

grex-1.0.2-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl (1.3 MB view details)

Uploaded PyPymusllinux: musl 1.2+ ARM64

grex-1.0.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

grex-1.0.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

grex-1.0.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl (1.0 MB view details)

Uploaded PyPymacOS 11.0+ ARM64

grex-1.0.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl (1.1 MB view details)

Uploaded PyPymacOS 10.12+ x86-64

grex-1.0.2-cp314-cp314-win_arm64.whl (841.4 kB view details)

Uploaded CPython 3.14Windows ARM64

grex-1.0.2-cp314-cp314-win_amd64.whl (909.6 kB view details)

Uploaded CPython 3.14Windows x86-64

grex-1.0.2-cp314-cp314-musllinux_1_2_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

grex-1.0.2-cp314-cp314-musllinux_1_2_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

grex-1.0.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

grex-1.0.2-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

grex-1.0.2-cp314-cp314-macosx_11_0_arm64.whl (1.0 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

grex-1.0.2-cp314-cp314-macosx_10_12_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

grex-1.0.2-cp313-cp313-win_arm64.whl (842.3 kB view details)

Uploaded CPython 3.13Windows ARM64

grex-1.0.2-cp313-cp313-win_amd64.whl (912.2 kB view details)

Uploaded CPython 3.13Windows x86-64

grex-1.0.2-cp313-cp313-musllinux_1_2_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

grex-1.0.2-cp313-cp313-musllinux_1_2_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

grex-1.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

grex-1.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

grex-1.0.2-cp313-cp313-macosx_11_0_arm64.whl (1.0 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

grex-1.0.2-cp313-cp313-macosx_10_12_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

grex-1.0.2-cp312-cp312-win_arm64.whl (842.7 kB view details)

Uploaded CPython 3.12Windows ARM64

grex-1.0.2-cp312-cp312-win_amd64.whl (912.3 kB view details)

Uploaded CPython 3.12Windows x86-64

grex-1.0.2-cp312-cp312-musllinux_1_2_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

grex-1.0.2-cp312-cp312-musllinux_1_2_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

grex-1.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

grex-1.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

grex-1.0.2-cp312-cp312-macosx_11_0_arm64.whl (1.0 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

grex-1.0.2-cp312-cp312-macosx_10_12_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

File details

Details for the file grex-1.0.2-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for grex-1.0.2-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a3cced9d51f763f40df96e7aeb17d17ae73cefdb0a1751b985b2cba5db6a0405
MD5 17b0dc0d79d331daf7560185ab567bb2
BLAKE2b-256 ff0cdeeb934e208437e0bd1873796e455dfb9ca42c1259a55ebf729eb3f0bdd6

See more details on using hashes here.

File details

Details for the file grex-1.0.2-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for grex-1.0.2-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c5ae86fd4f6f2bc39a542bcdd36d2aaaa9452bd628c56373c2ed4a71ef360e0c
MD5 dd9d77e342ed15401755a4d1b9f2987a
BLAKE2b-256 82853bd00481191ad3a5501eb2076b928ab0b2bc18bef61a4d5cd1b693861530

See more details on using hashes here.

File details

Details for the file grex-1.0.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for grex-1.0.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 acb6cd07df5aaea64282753b6c0580ce0c4048c897fbadc7d95a4fdfb94e6068
MD5 68e3f5438cc61de1129bb6a3da69ac8d
BLAKE2b-256 ddf615950baf80be8336f5e8caa96e3143252cba8d36198621bfe56c192474bb

See more details on using hashes here.

File details

Details for the file grex-1.0.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for grex-1.0.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 916a9b35fcd4a5787cf28d4644a4352bb411b972eca9028f4571f2058028e872
MD5 c9af625337bf5883f25c19f61dcef3c2
BLAKE2b-256 82ef771cee99beffb46aa426d87dcb289bfbd89f06a05150a7e9033b9ff6a10d

See more details on using hashes here.

File details

Details for the file grex-1.0.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for grex-1.0.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0616cd666c192598749d69a84519a4516dbee7a140a068c9a2137d9f3de31830
MD5 aca748cd1cac4bff79b313a24e48a915
BLAKE2b-256 0d65803df406e7c352b579c898c4aba6fe35e23695d20622e4b1356c44be9820

See more details on using hashes here.

File details

Details for the file grex-1.0.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for grex-1.0.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ab7e6d31cf8408b01a471693139c5f52774e5835ae5846f82a30cbd6616200f9
MD5 7a8f93e5b7596f446116c26a178b5762
BLAKE2b-256 ed2ecc5fd4b358d428a3a15666054df9ae80f0ed80e71f6dc3e033e85df121f6

See more details on using hashes here.

File details

Details for the file grex-1.0.2-cp314-cp314-win_arm64.whl.

File metadata

  • Download URL: grex-1.0.2-cp314-cp314-win_arm64.whl
  • Upload date:
  • Size: 841.4 kB
  • Tags: CPython 3.14, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.10.1

File hashes

Hashes for grex-1.0.2-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 538b4498bb879e4209fb2497836302fe7be1568496ad1d75919cabac34d3e18a
MD5 67ce8b3661e2db07556dad82d9a7fafb
BLAKE2b-256 fd8302d5a3da0c03bcd5651ed6bb21960ba190f6c13b99f48613597ee8c6a1e5

See more details on using hashes here.

File details

Details for the file grex-1.0.2-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: grex-1.0.2-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 909.6 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.10.1

File hashes

Hashes for grex-1.0.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 bf9c3be6bfd4e28ab8eeb9eb6ff6f7d3579db5a03ca613845e8445624ac355d9
MD5 ba59888d866134c49351cc990be409f6
BLAKE2b-256 930f43d5895f49bb0c7357b1528ba94629e981b0c2630a254c23db0505bc2116

See more details on using hashes here.

File details

Details for the file grex-1.0.2-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for grex-1.0.2-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5bbb5f48446632b361658ce79e43fdacda89c93944886b3374bd74183e64412b
MD5 a379ac1b55a037dd7b938ef72d97b0da
BLAKE2b-256 3a86b7c263bd9644ceb8a7004d06e5a08fa2392f89af852147e44f0b59247f5d

See more details on using hashes here.

File details

Details for the file grex-1.0.2-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for grex-1.0.2-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 594fd1c3f4e310330a223f088ccbedd289148e74d0e213f00d265f45b8d3a607
MD5 78a5b0f8c2126d34aba1dbaccda8a0fe
BLAKE2b-256 0dd79282cc624b8f2a78cd12a72d3af9a4925b4662b0924120ab52529274bd0b

See more details on using hashes here.

File details

Details for the file grex-1.0.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for grex-1.0.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f80bb501a28b560780c78b69ae2ad8f8bba861e05c8a2507abe1d383772a9bbd
MD5 27cc3c277a3be659871172880df55cbe
BLAKE2b-256 c4b0ffeae07ee466fdb17888ff7f181693e0f1741eaa463442426ebaff4bf7b6

See more details on using hashes here.

File details

Details for the file grex-1.0.2-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for grex-1.0.2-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9eb091b96913485a55498f6a15ca13694ec9d9479143b5f973c044cb8a40e092
MD5 f29451d4deecf4af960b48e9db3f70d9
BLAKE2b-256 1c1f78340b899e0fb142377fbcfccea590dca091ae1e855da6b84012739e4230

See more details on using hashes here.

File details

Details for the file grex-1.0.2-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for grex-1.0.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9ea809fd2534369b4cc7d41b67b474af05d8fda8277f31258e6864d1e8385c87
MD5 0c57c9c22b9250b11cd4e3dcdb127fa8
BLAKE2b-256 c42cbc433860f82d7403593eac4057525889a4128981776c0a9c8bf846819ea4

See more details on using hashes here.

File details

Details for the file grex-1.0.2-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for grex-1.0.2-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 47ce10641329b59670e95535f233317dccfbb51267e3d632bd7324012d0a96a5
MD5 64467f2da3a2151e345f70a95c02c504
BLAKE2b-256 5bfe571fc3f8189267d7377b79da9581e010de9db7f72f91f586963ad411f447

See more details on using hashes here.

File details

Details for the file grex-1.0.2-cp313-cp313-win_arm64.whl.

File metadata

  • Download URL: grex-1.0.2-cp313-cp313-win_arm64.whl
  • Upload date:
  • Size: 842.3 kB
  • Tags: CPython 3.13, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.10.1

File hashes

Hashes for grex-1.0.2-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 c0cf90c17efa84508b09c4417aafc10c21863d08e82b5bb6921aeb2b2c77e3f6
MD5 ef4e772d914702104c6b87902bb9ab7a
BLAKE2b-256 18f8cba1d87827ae46e78636f331661f3393f89485bd30129e4a8b1745d0df63

See more details on using hashes here.

File details

Details for the file grex-1.0.2-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: grex-1.0.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 912.2 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.10.1

File hashes

Hashes for grex-1.0.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 86b7a03cdf6d495368f0d552ef979957b008ae5a1f7fc1d7acd8c2b93e57b2ca
MD5 beb93dcd7bf1c11a194a3b7e14b542df
BLAKE2b-256 f8eee6d83b8ec7086996f98317b1eea76a505204fa5eed8b19f39030fe23cb7d

See more details on using hashes here.

File details

Details for the file grex-1.0.2-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for grex-1.0.2-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d933a884d5513106e53791405b2cd78ae8d5765a879a720ecc937837df3e3ef2
MD5 1b98d4965107e462c1d6158217d48dd7
BLAKE2b-256 7bff2ae260c93476d07a898ffaa051c3320e56206f321e14a766e7cc6161bed2

See more details on using hashes here.

File details

Details for the file grex-1.0.2-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for grex-1.0.2-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 860e6a96198b792017d844485815b6e1cbb1ac3fad85fd893884f6746769477c
MD5 b928f5e53cb47b0fc631fa32c1d7ddb5
BLAKE2b-256 da7befc6f81e382ab5ed1f8eb5838205fba76342e1d6fa67aa5fe80cbffe1a11

See more details on using hashes here.

File details

Details for the file grex-1.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for grex-1.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 75e0540127fc038d61b17c91b41e6c0e0c7d9f676ec98e031ad9bc6d2cf058b2
MD5 6e43e5f5dd3ab9d033d956ef3f11d2a3
BLAKE2b-256 d4e44b7168a9630fc7914e5bfe39ddb41cccfc614741ecc40322e159759785ee

See more details on using hashes here.

File details

Details for the file grex-1.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for grex-1.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c2de4976f5a29c29d85e2fbd5da8c73150cc61f286aceede6bbaa950040cbe53
MD5 d690be81d292bf99fc0ce52c5f4a109e
BLAKE2b-256 d6b477d7c092193c5cae23f6dcb7eb4dc28749172dc5af23b956d66b147a9ce9

See more details on using hashes here.

File details

Details for the file grex-1.0.2-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for grex-1.0.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 06ca0094e7577a2f0e9d18b86a3988d0ccdcf73f96f5fbd26984142dfa7230ef
MD5 2c3d05d1777c05b4c27d5bb8cc0cda6a
BLAKE2b-256 81c06aed2c7d944efa44bcdea641527392d9b59d5db057f79ccf67915e4a1d19

See more details on using hashes here.

File details

Details for the file grex-1.0.2-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for grex-1.0.2-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 cdc7d24234e7c37a4e640a1dd4beead073302324efefed60c5f39d1db2c3e7c1
MD5 68e719ca6030161e7b7f9210ea404046
BLAKE2b-256 08137b2457f9bf2c7c0dcb09427d077e459d0547fecd801c0dce897d5b405429

See more details on using hashes here.

File details

Details for the file grex-1.0.2-cp312-cp312-win_arm64.whl.

File metadata

  • Download URL: grex-1.0.2-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 842.7 kB
  • Tags: CPython 3.12, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.10.1

File hashes

Hashes for grex-1.0.2-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 eb4d0593bace565da50eb05552818a2270cd670e73c071d878685809edba2ea2
MD5 2263bdbaeebf52bf56ba5381177d6099
BLAKE2b-256 a3d3ffc1ab471eb6757f2380d6edbcf42b5a0b507e2391655b72ed9cabb0d4ba

See more details on using hashes here.

File details

Details for the file grex-1.0.2-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: grex-1.0.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 912.3 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.10.1

File hashes

Hashes for grex-1.0.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b0cc3fa05c9df1452ca1cfcbc1a24c2086776ded10f89f24589846ea42f03d6f
MD5 61d12bd3a26b4e5651a537d71063c463
BLAKE2b-256 b3ca9d649e195c150530f49b91f178d49e57d28a9a56d74fbc4a8e6850c309f2

See more details on using hashes here.

File details

Details for the file grex-1.0.2-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for grex-1.0.2-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3cd729adb670a0356d742e84cce17f16b661acc88dd1be79cc6ed6fa37f74f62
MD5 709534147b04462215b07d81c80f520f
BLAKE2b-256 f428c21646e7e550fea8ec0c933975bba3377e7573767949b02bde9968e84fe1

See more details on using hashes here.

File details

Details for the file grex-1.0.2-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for grex-1.0.2-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c79f988d272e41f38c404c9efef6fa34774aba05f1eb528f1e9ae3e4d187e3c4
MD5 94a58f3933a82787e62aa94453b54361
BLAKE2b-256 4f00d5479b3fb31e1f9c0472283d6f6dd7ae3a534d9e7929586a654422f8e5c1

See more details on using hashes here.

File details

Details for the file grex-1.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for grex-1.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 88fb10b8e6471cf0efe76b1c7859058f77e0f9ea17d196fd10f4951d49837c72
MD5 969ff4833705fac09922cfb0b77d4385
BLAKE2b-256 782833ed2f2aeadef8f206a6ada8484aa5be7a687eb7c05813d30e9dc9e962ba

See more details on using hashes here.

File details

Details for the file grex-1.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for grex-1.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 95a7cdbe312b9af7992758cac41d7e27e87026a4adc5e36d726ffeea362a9d71
MD5 77dfcfe13e0ebfb75f1445f7e14e5a22
BLAKE2b-256 052e434c978eb449a0c51ebe50dcbe1c3a7f058b9340189e41ae81c45cbbed71

See more details on using hashes here.

File details

Details for the file grex-1.0.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for grex-1.0.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ccfe8b16efe4757e5382d40989a2ae6001800fd8465a194d0ddcb33a1643fda3
MD5 bfe152d2d55bf2ffb955a5382451bf08
BLAKE2b-256 99b8ad2e38d473459d26b061555f80c47343bf839ef790ec81486ac16be0b058

See more details on using hashes here.

File details

Details for the file grex-1.0.2-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for grex-1.0.2-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d737e64fe4bcec8da0fae3e4c49a028c899623336d1500e8c0996f5c9b7963c5
MD5 a5a5b1a812bddcc8d8e9e65dcc425d30
BLAKE2b-256 85ef70fba80ac31a53946f8bf27575469c541d9622b26eb22f0a8120b2220394

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page