matcher-py


Namematcher-py JSON
Version 0.5.6 PyPI version JSON
download
home_pagehttps://github.com/Lips7/Matcher
SummaryA high-performance matcher designed to solve LOGICAL and TEXT VARIATIONS problems in word matching, implemented in Rust.
upload_time2024-11-18 09:54:16
maintainerNone
docs_urlNone
authorFoster Guo <f975793771@gmail.com>
requires_python>=3.8
licenseApache-2.0 OR MIT
keywords text string search pattern multi
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Matcher Rust Implementation with PyO3 Binding

A high-performance matcher designed to solve **LOGICAL** and **TEXT VARIATIONS** problems in word matching, implemented in Rust.

For detailed implementation, see the [Design Document](../DESIGN.md).

## Features

- **Multiple Matching Methods**:
  - Simple Word Matching
  - Regex-Based Matching
  - Similarity-Based Matching
- **Text Normalization**:
  - **Fanjian**: Simplify traditional Chinese characters to simplified ones.
    Example: `蟲艸` -> `虫艹`
  - **Delete**: Remove specific characters.
    Example: `*Fu&*iii&^%%*&kkkk` -> `Fuiiikkkk`
  - **Normalize**: Normalize special characters to identifiable characters.
    Example: `𝜢𝕰𝕃𝙻𝝧 𝙒ⓞᵣℒ𝒟!` -> `hello world!`
  - **PinYin**: Convert Chinese characters to Pinyin for fuzzy matching.
    Example: `西安` -> ` xi  an `, matches `洗按` -> ` xi  an `, but not `先` -> ` xian `
  - **PinYinChar**: Convert Chinese characters to Pinyin.
    Example: `西安` -> `xian`, matches `洗按` and `先` -> `xian`
- **AND OR NOT Word Matching**:
  - Takes into account the number of repetitions of words.
  - Example: `hello&world` matches `hello world` and `world,hello`
  - Example: `无&法&无&天` matches `无无法天` (because `无` is repeated twice), but not `无法天`
  - Example: `hello~helloo~hhello` matches `hello` but not `helloo` and `hhello`
- **Customizable Exemption Lists**: Exclude specific words from matching.
- **Efficient Handling of Large Word Lists**: Optimized for performance.

## Installation

### Use pip

```shell
pip install matcher_py
```

### Install pre-built binary

Visit the [release page](https://github.com/Lips7/Matcher/releases) to download the pre-built binary.

## Usage

All relevant types are defined in [extension_types.py](./python/matcher_py/extension_types.py).

### Explanation of the configuration

* `Matcher`'s configuration is defined by the `MatchTableMap = Dict[int, List[MatchTable]]` type, the key of `MatchTableMap` is called `match_id`, **for each `match_id`, the `table_id` inside is required to be unique**.
* `SimpleMatcher`'s configuration is defined by the `SimpleTable = Dict[ProcessType, Dict[int, str]]` type, the value `Dict[int, str]`'s key is called `word_id`, **`word_id` is required to be globally unique**.

#### MatchTable

* `table_id`: The unique ID of the match table.
* `match_table_type`: The type of the match table.
* `word_list`: The word list of the match table.
* `exemption_process_type`: The type of the exemption simple match.
* `exemption_word_list`: The exemption word list of the match table.

For each match table, word matching is performed over the `word_list`, and exemption word matching is performed over the `exemption_word_list`. If the exemption word matching result is True, the word matching result will be False.

#### MatchTableType

* `Simple`: Supports simple multiple patterns matching with text normalization defined by `process_type`.
  * It can handle combination patterns and repeated times sensitive matching, delimited by `&` and `~`, such as `hello&world&hello` will match `hellohelloworld` and `worldhellohello`, but not `helloworld` due to the repeated times of `hello`.
* `Regex`: Supports regex patterns matching.
  * `SimilarChar`: Supports similar character matching using regex.
    * `["hello,hallo,hollo,hi", "word,world,wrd,🌍", "!,?,~"]` will match `helloworld!`, `hollowrd?`, `hi🌍~` ··· any combinations of the words split by `,` in the list.
  * `Acrostic`: Supports acrostic matching using regex **(currently only supports Chinese and simple English sentences)**.
    * `["h,e,l,l,o", "你,好"]` will match `hope, endures, love, lasts, onward.` and `你的笑容温暖, 好心情常伴。`.
  * `Regex`: Supports regex matching.
    * `["h[aeiou]llo", "w[aeiou]rd"]` will match `hello`, `world`, `hillo`, `wurld` ··· any text that matches the regex in the list.
* `Similar`: Supports similar text matching based on distance and threshold.
  * `Levenshtein`: Supports similar text matching based on Levenshtein distance.

#### ProcessType

* `None`: No transformation.
* `Fanjian`: Traditional Chinese to simplified Chinese transformation. Based on [FANJIAN](../matcher_rs/process_map/FANJIAN.txt).
  * `妳好` -> `你好`
  * `現⾝` -> `现身`
* `Delete`: Delete all punctuation, special characters and white spaces. Based on [TEXT_DELETE](../matcher_rs/process_map/TEXT-DELETE.txt) and `WHITE_SPACE`.
  * `hello, world!` -> `helloworld`
  * `《你∷好》` -> `你好`
* `Normalize`: Normalize all English character variations and number variations to basic characters. Based on [NORM](../matcher_rs//process_map/NORM.txt) and [NUM_NORM](../matcher_rs//process_map/NUM-NORM.txt).
  * `ℋЀ⒈㈠Õ` -> `he11o`
  * `⒈Ƨ㊂` -> `123`
* `PinYin`: Convert all unicode Chinese characters to pinyin with boundaries. Based on [PINYIN](../matcher_rs/process_map/PINYIN.txt).
  * `你好` -> ` ni  hao `
  * `西安` -> ` xi  an `
* `PinYinChar`: Convert all unicode Chinese characters to pinyin without boundaries. Based on [PINYIN](../matcher_rs/process_map/PINYIN.txt).
  * `你好` -> `nihao`
  * `西安` -> `xian`

You can combine these transformations as needed. Pre-defined combinations like `DeleteNormalize` and `FanjianDeleteNormalize` are provided for convenience.

Avoid combining `PinYin` and `PinYinChar` due to that `PinYin` is a more limited version of `PinYinChar`, in some cases like `xian`, can be treat as two words `xi` and `an`, or only one word `xian`.

### Text Process Usage

Here’s an example of how to use the `reduce_text_process` and `text_process` functions:

```python
from matcher_py import reduce_text_process, text_process
from matcher_py.extension_types import ProcessType

print(reduce_text_process(ProcessType.MatchDeleteNormalize, "hello, world!"))
print(text_process(ProcessType.MatchDelete, "hello, world!"))
```

### Matcher Basic Usage

Here’s an example of how to use the `Matcher`:

```python
import json

from matcher_py import Matcher
from matcher_py.extension_types import MatchTable, MatchTableType, ProcessType, RegexMatchType, SimMatchType

matcher = Matcher(
    json.dumps({
        1: [
            MatchTable(
                table_id=1,
                match_table_type=MatchTableType.Simple(process_type = ProcessType.MatchFanjianDeleteNormalize),
                word_list=["hello", "world"],
                exemption_process_type=ProcessType.MatchNone,
                exemption_word_list=["word"],
            ),
            MatchTable(
                table_id=2,
                match_table_type=MatchTableType.Regex(
                  process_type = ProcessType.MatchFanjianDeleteNormalize,
                  regex_match_type=RegexMatchType.Regex
                ),
                word_list=["h[aeiou]llo"],
                exemption_process_type=ProcessType.MatchNone,
                exemption_word_list=[],
            )
        ],
        2: [
            MatchTable(
                table_id=3,
                match_table_type=MatchTableType.Similar(
                  process_type = ProcessType.MatchFanjianDeleteNormalize,
                  sim_match_type=SimMatchType.MatchLevenshtein,
                  threshold=0.5
                ),
                word_list=["halxo"],
                exemption_process_type=ProcessType.MatchNone,
                exemption_word_list=[],
            )
        ]
    }).encode()
)
# Check if a text matches
assert matcher.is_match("hello")
assert not matcher.is_match("word")
# Perform process as a list
result = matcher.process("hello")
assert result == [{'match_id': 1,
  'table_id': 2,
  'word_id': 0,
  'word': 'h[aeiou]llo',
  'similarity': 1.0},
 {'match_id': 1,
  'table_id': 1,
  'word_id': 0,
  'word': 'hello',
  'similarity': 1.0},
 {'match_id': 2,
  'table_id': 3,
  'word_id': 0,
  'word': 'halxo',
  'similarity': 0.6}]
# Perform word matching as a dict
assert matcher.word_match(r"hello, world")[1] == [{'match_id': 1,
  'table_id': 2,
  'word_id': 0,
  'word': 'h[aeiou]llo',
  'similarity': 1.0},
 {'match_id': 1,
  'table_id': 1,
  'word_id': 0,
  'word': 'hello',
  'similarity': 1.0},
 {'match_id': 1,
  'table_id': 1,
  'word_id': 1,
  'word': 'world',
  'similarity': 1.0}]
# Perform word matching as a string
result = matcher.word_match_as_string("hello")
assert result == """{"2":[{"match_id":2,"table_id":3,"word_id":0,"word":"halxo","similarity":0.6}],"1":[{"match_id":1,"table_id":2,"word_id":0,"word":"h[aeiou]llo","similarity":1.0},{"match_id":1,"table_id":1,"word_id":0,"word":"hello","similarity":1.0}]}"""
```

### Simple Matcher Basic Usage

Here’s an example of how to use the `SimpleMatcher`:

```python
import json

from matcher_py import SimpleMatcher
from matcher_py.extension_types import ProcessType

simple_matcher = SimpleMatcher(
    json.dumps(
        {
            ProcessType.MatchNone: {
                1: "hello&world",
                2: "word&word~hello"
            },
            ProcessType.MatchDelete: {
                3: "hallo"
            }
        }
    ).encode()
)
# Check if a text matches
assert simple_matcher.is_match("hello^&!#*#&!^#*()world")
# Perform simple processing
result = simple_matcher.process("hello,world,word,word,hallo")
assert result == [{'word_id': 1, 'word': 'hello&world'}, {'word_id': 3, 'word': 'hallo'}]
```

## Contributing

Contributions to `matcher_py` are welcome! If you find a bug or have a feature request, please open an issue on the [GitHub repository](https://github.com/Lips7/Matcher). If you would like to contribute code, please fork the repository and submit a pull request.

## License

`matcher_py` is licensed under the MIT OR Apache-2.0 license.

## More Information

For more details, visit the [GitHub repository](https://github.com/Lips7/Matcher).

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/Lips7/Matcher",
    "name": "matcher-py",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "text, string, search, pattern, multi",
    "author": "Foster Guo <f975793771@gmail.com>",
    "author_email": "Foster Guo <f975793771@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/8a/1c/6df2ca16f252237daa0be9a0ee80c15bba9a736a9aed75b62fc931dcf792/matcher_py-0.5.6.tar.gz",
    "platform": null,
    "description": "# Matcher Rust Implementation with PyO3 Binding\n\nA high-performance matcher designed to solve **LOGICAL** and **TEXT VARIATIONS** problems in word matching, implemented in Rust.\n\nFor detailed implementation, see the [Design Document](../DESIGN.md).\n\n## Features\n\n- **Multiple Matching Methods**:\n  - Simple Word Matching\n  - Regex-Based Matching\n  - Similarity-Based Matching\n- **Text Normalization**:\n  - **Fanjian**: Simplify traditional Chinese characters to simplified ones.\n    Example: `\u87f2\u8278` -> `\u866b\u8279`\n  - **Delete**: Remove specific characters.\n    Example: `*Fu&*iii&^%%*&kkkk` -> `Fuiiikkkk`\n  - **Normalize**: Normalize special characters to identifiable characters.\n    Example: `\ud835\udf22\ud835\udd70\ud835\udd43\ud835\ude7b\ud835\udf67 \ud835\ude52\u24de\u1d63\u2112\ud835\udc9f!` -> `hello world!`\n  - **PinYin**: Convert Chinese characters to Pinyin for fuzzy matching.\n    Example: `\u897f\u5b89` -> ` xi  an `, matches `\u6d17\u6309` -> ` xi  an `, but not `\u5148` -> ` xian `\n  - **PinYinChar**: Convert Chinese characters to Pinyin.\n    Example: `\u897f\u5b89` -> `xian`, matches `\u6d17\u6309` and `\u5148` -> `xian`\n- **AND OR NOT Word Matching**:\n  - Takes into account the number of repetitions of words.\n  - Example: `hello&world` matches `hello world` and `world,hello`\n  - Example: `\u65e0&\u6cd5&\u65e0&\u5929` matches `\u65e0\u65e0\u6cd5\u5929` (because `\u65e0` is repeated twice), but not `\u65e0\u6cd5\u5929`\n  - Example: `hello~helloo~hhello` matches `hello` but not `helloo` and `hhello`\n- **Customizable Exemption Lists**: Exclude specific words from matching.\n- **Efficient Handling of Large Word Lists**: Optimized for performance.\n\n## Installation\n\n### Use pip\n\n```shell\npip install matcher_py\n```\n\n### Install pre-built binary\n\nVisit the [release page](https://github.com/Lips7/Matcher/releases) to download the pre-built binary.\n\n## Usage\n\nAll relevant types are defined in [extension_types.py](./python/matcher_py/extension_types.py).\n\n### Explanation of the configuration\n\n* `Matcher`'s configuration is defined by the `MatchTableMap = Dict[int, List[MatchTable]]` type, the key of `MatchTableMap` is called `match_id`, **for each `match_id`, the `table_id` inside is required to be unique**.\n* `SimpleMatcher`'s configuration is defined by the `SimpleTable = Dict[ProcessType, Dict[int, str]]` type, the value `Dict[int, str]`'s key is called `word_id`, **`word_id` is required to be globally unique**.\n\n#### MatchTable\n\n* `table_id`: The unique ID of the match table.\n* `match_table_type`: The type of the match table.\n* `word_list`: The word list of the match table.\n* `exemption_process_type`: The type of the exemption simple match.\n* `exemption_word_list`: The exemption word list of the match table.\n\nFor each match table, word matching is performed over the `word_list`, and exemption word matching is performed over the `exemption_word_list`. If the exemption word matching result is True, the word matching result will be False.\n\n#### MatchTableType\n\n* `Simple`: Supports simple multiple patterns matching with text normalization defined by `process_type`.\n  * It can handle combination patterns and repeated times sensitive matching, delimited by `&` and `~`, such as `hello&world&hello` will match `hellohelloworld` and `worldhellohello`, but not `helloworld` due to the repeated times of `hello`.\n* `Regex`: Supports regex patterns matching.\n  * `SimilarChar`: Supports similar character matching using regex.\n    * `[\"hello,hallo,hollo,hi\", \"word,world,wrd,\ud83c\udf0d\", \"!,?,~\"]` will match `helloworld!`, `hollowrd?`, `hi\ud83c\udf0d~` \u00b7\u00b7\u00b7 any combinations of the words split by `,` in the list.\n  * `Acrostic`: Supports acrostic matching using regex **(currently only supports Chinese and simple English sentences)**.\n    * `[\"h,e,l,l,o\", \"\u4f60,\u597d\"]` will match `hope, endures, love, lasts, onward.` and `\u4f60\u7684\u7b11\u5bb9\u6e29\u6696, \u597d\u5fc3\u60c5\u5e38\u4f34\u3002`.\n  * `Regex`: Supports regex matching.\n    * `[\"h[aeiou]llo\", \"w[aeiou]rd\"]` will match `hello`, `world`, `hillo`, `wurld` \u00b7\u00b7\u00b7 any text that matches the regex in the list.\n* `Similar`: Supports similar text matching based on distance and threshold.\n  * `Levenshtein`: Supports similar text matching based on Levenshtein distance.\n\n#### ProcessType\n\n* `None`: No transformation.\n* `Fanjian`: Traditional Chinese to simplified Chinese transformation. Based on [FANJIAN](../matcher_rs/process_map/FANJIAN.txt).\n  * `\u59b3\u597d` -> `\u4f60\u597d`\n  * `\u73fe\u2f9d` -> `\u73b0\u8eab`\n* `Delete`: Delete all punctuation, special characters and white spaces. Based on [TEXT_DELETE](../matcher_rs/process_map/TEXT-DELETE.txt) and `WHITE_SPACE`.\n  * `hello, world!` -> `helloworld`\n  * `\u300a\u4f60\u2237\u597d\u300b` -> `\u4f60\u597d`\n* `Normalize`: Normalize all English character variations and number variations to basic characters. Based on [NORM](../matcher_rs//process_map/NORM.txt) and [NUM_NORM](../matcher_rs//process_map/NUM-NORM.txt).\n  * `\u210b\u0400\u2488\u3220\u00d5` -> `he11o`\n  * `\u2488\u01a7\u3282` -> `123`\n* `PinYin`: Convert all unicode Chinese characters to pinyin with boundaries. Based on [PINYIN](../matcher_rs/process_map/PINYIN.txt).\n  * `\u4f60\u597d` -> ` ni  hao `\n  * `\u897f\u5b89` -> ` xi  an `\n* `PinYinChar`: Convert all unicode Chinese characters to pinyin without boundaries. Based on [PINYIN](../matcher_rs/process_map/PINYIN.txt).\n  * `\u4f60\u597d` -> `nihao`\n  * `\u897f\u5b89` -> `xian`\n\nYou can combine these transformations as needed. Pre-defined combinations like `DeleteNormalize` and `FanjianDeleteNormalize` are provided for convenience.\n\nAvoid combining `PinYin` and `PinYinChar` due to that `PinYin` is a more limited version of `PinYinChar`, in some cases like `xian`, can be treat as two words `xi` and `an`, or only one word `xian`.\n\n### Text Process Usage\n\nHere\u2019s an example of how to use the `reduce_text_process` and `text_process` functions:\n\n```python\nfrom matcher_py import reduce_text_process, text_process\nfrom matcher_py.extension_types import ProcessType\n\nprint(reduce_text_process(ProcessType.MatchDeleteNormalize, \"hello, world!\"))\nprint(text_process(ProcessType.MatchDelete, \"hello, world!\"))\n```\n\n### Matcher Basic Usage\n\nHere\u2019s an example of how to use the `Matcher`:\n\n```python\nimport json\n\nfrom matcher_py import Matcher\nfrom matcher_py.extension_types import MatchTable, MatchTableType, ProcessType, RegexMatchType, SimMatchType\n\nmatcher = Matcher(\n    json.dumps({\n        1: [\n            MatchTable(\n                table_id=1,\n                match_table_type=MatchTableType.Simple(process_type = ProcessType.MatchFanjianDeleteNormalize),\n                word_list=[\"hello\", \"world\"],\n                exemption_process_type=ProcessType.MatchNone,\n                exemption_word_list=[\"word\"],\n            ),\n            MatchTable(\n                table_id=2,\n                match_table_type=MatchTableType.Regex(\n                  process_type = ProcessType.MatchFanjianDeleteNormalize,\n                  regex_match_type=RegexMatchType.Regex\n                ),\n                word_list=[\"h[aeiou]llo\"],\n                exemption_process_type=ProcessType.MatchNone,\n                exemption_word_list=[],\n            )\n        ],\n        2: [\n            MatchTable(\n                table_id=3,\n                match_table_type=MatchTableType.Similar(\n                  process_type = ProcessType.MatchFanjianDeleteNormalize,\n                  sim_match_type=SimMatchType.MatchLevenshtein,\n                  threshold=0.5\n                ),\n                word_list=[\"halxo\"],\n                exemption_process_type=ProcessType.MatchNone,\n                exemption_word_list=[],\n            )\n        ]\n    }).encode()\n)\n# Check if a text matches\nassert matcher.is_match(\"hello\")\nassert not matcher.is_match(\"word\")\n# Perform process as a list\nresult = matcher.process(\"hello\")\nassert result == [{'match_id': 1,\n  'table_id': 2,\n  'word_id': 0,\n  'word': 'h[aeiou]llo',\n  'similarity': 1.0},\n {'match_id': 1,\n  'table_id': 1,\n  'word_id': 0,\n  'word': 'hello',\n  'similarity': 1.0},\n {'match_id': 2,\n  'table_id': 3,\n  'word_id': 0,\n  'word': 'halxo',\n  'similarity': 0.6}]\n# Perform word matching as a dict\nassert matcher.word_match(r\"hello, world\")[1] == [{'match_id': 1,\n  'table_id': 2,\n  'word_id': 0,\n  'word': 'h[aeiou]llo',\n  'similarity': 1.0},\n {'match_id': 1,\n  'table_id': 1,\n  'word_id': 0,\n  'word': 'hello',\n  'similarity': 1.0},\n {'match_id': 1,\n  'table_id': 1,\n  'word_id': 1,\n  'word': 'world',\n  'similarity': 1.0}]\n# Perform word matching as a string\nresult = matcher.word_match_as_string(\"hello\")\nassert result == \"\"\"{\"2\":[{\"match_id\":2,\"table_id\":3,\"word_id\":0,\"word\":\"halxo\",\"similarity\":0.6}],\"1\":[{\"match_id\":1,\"table_id\":2,\"word_id\":0,\"word\":\"h[aeiou]llo\",\"similarity\":1.0},{\"match_id\":1,\"table_id\":1,\"word_id\":0,\"word\":\"hello\",\"similarity\":1.0}]}\"\"\"\n```\n\n### Simple Matcher Basic Usage\n\nHere\u2019s an example of how to use the `SimpleMatcher`:\n\n```python\nimport json\n\nfrom matcher_py import SimpleMatcher\nfrom matcher_py.extension_types import ProcessType\n\nsimple_matcher = SimpleMatcher(\n    json.dumps(\n        {\n            ProcessType.MatchNone: {\n                1: \"hello&world\",\n                2: \"word&word~hello\"\n            },\n            ProcessType.MatchDelete: {\n                3: \"hallo\"\n            }\n        }\n    ).encode()\n)\n# Check if a text matches\nassert simple_matcher.is_match(\"hello^&!#*#&!^#*()world\")\n# Perform simple processing\nresult = simple_matcher.process(\"hello,world,word,word,hallo\")\nassert result == [{'word_id': 1, 'word': 'hello&world'}, {'word_id': 3, 'word': 'hallo'}]\n```\n\n## Contributing\n\nContributions to `matcher_py` are welcome! If you find a bug or have a feature request, please open an issue on the [GitHub repository](https://github.com/Lips7/Matcher). If you would like to contribute code, please fork the repository and submit a pull request.\n\n## License\n\n`matcher_py` is licensed under the MIT OR Apache-2.0 license.\n\n## More Information\n\nFor more details, visit the [GitHub repository](https://github.com/Lips7/Matcher).\n",
    "bugtrack_url": null,
    "license": "Apache-2.0 OR MIT",
    "summary": "A high-performance matcher designed to solve LOGICAL and TEXT VARIATIONS problems in word matching, implemented in Rust.",
    "version": "0.5.6",
    "project_urls": {
        "Homepage": "https://github.com/Lips7/Matcher",
        "changelog": "https://github.com/Lips7/Matcher/blob/master/CHANGELOG.md",
        "repository": "https://github.com/Lips7/Matcher"
    },
    "split_keywords": [
        "text",
        " string",
        " search",
        " pattern",
        " multi"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a7eb55289e000e1c579ac69079115bc577d2a7e359fb60d09ded65af9b51267b",
                "md5": "0b5bfe6ef7920dd3ca7a2e5304426f76",
                "sha256": "8383f45a644b865767aa63cb3e8d1caf7263e162fdac3b376aa38748c1436921"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "0b5bfe6ef7920dd3ca7a2e5304426f76",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 1641337,
            "upload_time": "2024-11-18T09:53:18",
            "upload_time_iso_8601": "2024-11-18T09:53:18.675971Z",
            "url": "https://files.pythonhosted.org/packages/a7/eb/55289e000e1c579ac69079115bc577d2a7e359fb60d09ded65af9b51267b/matcher_py-0.5.6-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "444fec746b003161d3bf833318651e702a1b3ace06a4f0de096dfc37a224350c",
                "md5": "d1818e6ee390f09d6773fbf0033fbb29",
                "sha256": "c9002111f8a07b05a047e9eb5618e0f1996710c6986a99ea13605d2ad37f3194"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "d1818e6ee390f09d6773fbf0033fbb29",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 1786487,
            "upload_time": "2024-11-18T09:53:20",
            "upload_time_iso_8601": "2024-11-18T09:53:20.194544Z",
            "url": "https://files.pythonhosted.org/packages/44/4f/ec746b003161d3bf833318651e702a1b3ace06a4f0de096dfc37a224350c/matcher_py-0.5.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "76093dab2226b08f2db14ff3a84958e70a04b45b6e5c5ea2f2876a88d1a36044",
                "md5": "1a39183ddb331ce02d8891b5a5f8f618",
                "sha256": "d7ce4545f48e59b18ca548b6f7ae0ed947af611af4395e3fc3093be36e6a0ce9"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "1a39183ddb331ce02d8891b5a5f8f618",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 1830631,
            "upload_time": "2024-11-18T09:53:21",
            "upload_time_iso_8601": "2024-11-18T09:53:21.582462Z",
            "url": "https://files.pythonhosted.org/packages/76/09/3dab2226b08f2db14ff3a84958e70a04b45b6e5c5ea2f2876a88d1a36044/matcher_py-0.5.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4f03331faa1c5ed1e96039b4f34f40f2a808688e42f57d7cb08573f827d61ede",
                "md5": "ae570502f794cc7c5204ac3fe0695c29",
                "sha256": "9d80e72f1ef90409d28176a7db9343b6123063ed4f974f6924982987c74eba2a"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp310-cp310-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "ae570502f794cc7c5204ac3fe0695c29",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 1992090,
            "upload_time": "2024-11-18T09:53:23",
            "upload_time_iso_8601": "2024-11-18T09:53:23.166193Z",
            "url": "https://files.pythonhosted.org/packages/4f/03/331faa1c5ed1e96039b4f34f40f2a808688e42f57d7cb08573f827d61ede/matcher_py-0.5.6-cp310-cp310-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1cf03dee7d52aa264b6f39451a9d9353bf51340c946dfe77ddea0d31f87c4d2e",
                "md5": "f19b456af3dce6655b2a0b060d282b48",
                "sha256": "d2ebccdafa729720566defa9cb6a8cb9cf56d5993391c36ca8d87a5cb38a642b"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp310-cp310-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f19b456af3dce6655b2a0b060d282b48",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 2015050,
            "upload_time": "2024-11-18T09:53:25",
            "upload_time_iso_8601": "2024-11-18T09:53:25.203906Z",
            "url": "https://files.pythonhosted.org/packages/1c/f0/3dee7d52aa264b6f39451a9d9353bf51340c946dfe77ddea0d31f87c4d2e/matcher_py-0.5.6-cp310-cp310-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2910c43cfb5d697f5c76d2527b47799ad3912fe5a1590a80770bb05dca14f540",
                "md5": "91a1d110cfb14a9c2c52ab232df16fc6",
                "sha256": "c253612e8e0fe9950be9f5e45a5ed844f2a71a78f54520c419bfa62aa26d087d"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp310-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "91a1d110cfb14a9c2c52ab232df16fc6",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 1728502,
            "upload_time": "2024-11-18T09:53:26",
            "upload_time_iso_8601": "2024-11-18T09:53:26.445949Z",
            "url": "https://files.pythonhosted.org/packages/29/10/c43cfb5d697f5c76d2527b47799ad3912fe5a1590a80770bb05dca14f540/matcher_py-0.5.6-cp310-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bcd78ab223d94918d8bf5b454c844df8e8b04c29ad260e2b353955fe998baba2",
                "md5": "cad8ba16c96769f92bd169572e2f4af9",
                "sha256": "fce980f69880b86b6c57c4b62037507dd8e052f14bca8a5e3fefc0c27139880a"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "cad8ba16c96769f92bd169572e2f4af9",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 1641511,
            "upload_time": "2024-11-18T09:53:28",
            "upload_time_iso_8601": "2024-11-18T09:53:28.608306Z",
            "url": "https://files.pythonhosted.org/packages/bc/d7/8ab223d94918d8bf5b454c844df8e8b04c29ad260e2b353955fe998baba2/matcher_py-0.5.6-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "95c3e07796eca1bec1011fb17ae34a6bfcbe74ebadd9c19005e7ef5b33c2205d",
                "md5": "8c6a3ee5964868e7ee918dca04bd7a99",
                "sha256": "2ae31a090f779789e4787ebc52f1e130725917790dfa1a104dfeb5570041f515"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "8c6a3ee5964868e7ee918dca04bd7a99",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 1786602,
            "upload_time": "2024-11-18T09:53:30",
            "upload_time_iso_8601": "2024-11-18T09:53:30.560986Z",
            "url": "https://files.pythonhosted.org/packages/95/c3/e07796eca1bec1011fb17ae34a6bfcbe74ebadd9c19005e7ef5b33c2205d/matcher_py-0.5.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b9729f4c25f98217c99e445745c80b1ffb0f73e4622a7721484e5498eeffe580",
                "md5": "d11ab5607972e7f7b11acfda0b1084bd",
                "sha256": "e1bb81069d48bd8763e282704860c686b901baea85127a6bd3dfc93e78de8213"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d11ab5607972e7f7b11acfda0b1084bd",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 1830534,
            "upload_time": "2024-11-18T09:53:32",
            "upload_time_iso_8601": "2024-11-18T09:53:32.594454Z",
            "url": "https://files.pythonhosted.org/packages/b9/72/9f4c25f98217c99e445745c80b1ffb0f73e4622a7721484e5498eeffe580/matcher_py-0.5.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d1da777e46dbaaa2223e6198b7e7c443dcd212f2930d1f42ed2b9c07f1e041b9",
                "md5": "8c367de2bc715f1a6e95f6a65d681b64",
                "sha256": "139a1eec9e18bae6f5c4c02eae124d8a4f08090e02dce81c5e595d7b1783feef"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp311-cp311-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "8c367de2bc715f1a6e95f6a65d681b64",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 1992025,
            "upload_time": "2024-11-18T09:53:33",
            "upload_time_iso_8601": "2024-11-18T09:53:33.888842Z",
            "url": "https://files.pythonhosted.org/packages/d1/da/777e46dbaaa2223e6198b7e7c443dcd212f2930d1f42ed2b9c07f1e041b9/matcher_py-0.5.6-cp311-cp311-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7d6fa525e2e9b19da7d142a693f4e87fcad9c95758714b7478ccd236a55444f8",
                "md5": "961c6fe1cbbbc2aaf895099c3b050abe",
                "sha256": "4dea4224e0439b31c9d1ea91a95d393c15d96d5cb5190ad73af68f832637baac"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp311-cp311-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "961c6fe1cbbbc2aaf895099c3b050abe",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 2014973,
            "upload_time": "2024-11-18T09:53:35",
            "upload_time_iso_8601": "2024-11-18T09:53:35.829685Z",
            "url": "https://files.pythonhosted.org/packages/7d/6f/a525e2e9b19da7d142a693f4e87fcad9c95758714b7478ccd236a55444f8/matcher_py-0.5.6-cp311-cp311-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "16a0a61b07c5882feaf34ff533486704f7a9b6bbf9b45b1df406c29b734b32d1",
                "md5": "68a69a9f641730b4fdd8d2f1155a80ff",
                "sha256": "1038d59450a0f38994bf60fd44d90e493f00b6981a2dd4494fc9dae1b56e5a21"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp311-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "68a69a9f641730b4fdd8d2f1155a80ff",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 1728799,
            "upload_time": "2024-11-18T09:53:37",
            "upload_time_iso_8601": "2024-11-18T09:53:37.891670Z",
            "url": "https://files.pythonhosted.org/packages/16/a0/a61b07c5882feaf34ff533486704f7a9b6bbf9b45b1df406c29b734b32d1/matcher_py-0.5.6-cp311-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "08a3cac5bded8701fb02974d49e7c521c794b446b299af6c679b48b9fcfee30a",
                "md5": "6c568708371dde53fc569024553b0588",
                "sha256": "715ecb1c71f633153e03159bc6306a6bb4fcfb241645be6e895a235fcea1ad70"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp312-cp312-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "6c568708371dde53fc569024553b0588",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 1640350,
            "upload_time": "2024-11-18T09:53:40",
            "upload_time_iso_8601": "2024-11-18T09:53:40.655319Z",
            "url": "https://files.pythonhosted.org/packages/08/a3/cac5bded8701fb02974d49e7c521c794b446b299af6c679b48b9fcfee30a/matcher_py-0.5.6-cp312-cp312-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1b43bcf13f32ae918b9339cb2ac663b36ea922fe1032b429a2f7b6b7e40a7ad9",
                "md5": "6eff5f6cb242d6b5e666d9121177deb2",
                "sha256": "5d1b87a36b333aad9328fef94f346b9756624506cef7e5fac72434d0be0f82c5"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "6eff5f6cb242d6b5e666d9121177deb2",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 1783844,
            "upload_time": "2024-11-18T09:53:41",
            "upload_time_iso_8601": "2024-11-18T09:53:41.919900Z",
            "url": "https://files.pythonhosted.org/packages/1b/43/bcf13f32ae918b9339cb2ac663b36ea922fe1032b429a2f7b6b7e40a7ad9/matcher_py-0.5.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "edd06c63cc735e73ab3b22802e534de8807aa354690e44061eadb27dea51fd1e",
                "md5": "4a176123d9e8b9f0a1471d3cbd699ba8",
                "sha256": "99d6a071be83904ab4cc83ee659c3eed32bd6723b6fd149c6950e70b9f4f22da"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "4a176123d9e8b9f0a1471d3cbd699ba8",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 1829170,
            "upload_time": "2024-11-18T09:53:43",
            "upload_time_iso_8601": "2024-11-18T09:53:43.171431Z",
            "url": "https://files.pythonhosted.org/packages/ed/d0/6c63cc735e73ab3b22802e534de8807aa354690e44061eadb27dea51fd1e/matcher_py-0.5.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fefb328c63a707c6d70f03b192cad099aca5227fbe62ced7bc3905783c14fa63",
                "md5": "38d76d28b95ac54d516b0a11206d0134",
                "sha256": "d25841bc67bb3ff17ce8ea489250e8057390c5732cd6174cc95e5e6d846451c5"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp312-cp312-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "38d76d28b95ac54d516b0a11206d0134",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 1990053,
            "upload_time": "2024-11-18T09:53:45",
            "upload_time_iso_8601": "2024-11-18T09:53:45.159899Z",
            "url": "https://files.pythonhosted.org/packages/fe/fb/328c63a707c6d70f03b192cad099aca5227fbe62ced7bc3905783c14fa63/matcher_py-0.5.6-cp312-cp312-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4519187986ba58bdd4e42ab93fa3b06cdfb89a765bffbf47101b72f78436b743",
                "md5": "a27d9ccb7a16a2ade274c1d605985e7c",
                "sha256": "3f0a2f8cf3ee4c2f87f4ca9aa00809f9fdfde4149f5f6cc09ad7f4341e7c9965"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp312-cp312-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "a27d9ccb7a16a2ade274c1d605985e7c",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 2013324,
            "upload_time": "2024-11-18T09:53:46",
            "upload_time_iso_8601": "2024-11-18T09:53:46.709637Z",
            "url": "https://files.pythonhosted.org/packages/45/19/187986ba58bdd4e42ab93fa3b06cdfb89a765bffbf47101b72f78436b743/matcher_py-0.5.6-cp312-cp312-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4be62be8a0fe90cb45eff2f4da19886228161ca2f9a9aa9033f494e1bfc951ae",
                "md5": "4e057c3f42d602cc08e7f670cd6459e2",
                "sha256": "1dfe04bbf9c3bbc86534e9cc00a36d15eae8c629c6fe56683623290bf37c96bb"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp312-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "4e057c3f42d602cc08e7f670cd6459e2",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 1729286,
            "upload_time": "2024-11-18T09:53:48",
            "upload_time_iso_8601": "2024-11-18T09:53:48.635210Z",
            "url": "https://files.pythonhosted.org/packages/4b/e6/2be8a0fe90cb45eff2f4da19886228161ca2f9a9aa9033f494e1bfc951ae/matcher_py-0.5.6-cp312-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bf56ee53d5a1c1c9f8d388180c4364b0e00e7dd4cadd7739ae243aa2f24bdedf",
                "md5": "c4def1922cad4400c60a55f223d0c11f",
                "sha256": "aae0d8a59fcc1790f6ddd1c86c5a5af291a3e6b434f8779f08e9f93f3e543c89"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp313-cp313-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "c4def1922cad4400c60a55f223d0c11f",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 1640189,
            "upload_time": "2024-11-18T09:53:49",
            "upload_time_iso_8601": "2024-11-18T09:53:49.813376Z",
            "url": "https://files.pythonhosted.org/packages/bf/56/ee53d5a1c1c9f8d388180c4364b0e00e7dd4cadd7739ae243aa2f24bdedf/matcher_py-0.5.6-cp313-cp313-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "303d9fcf3b97890403386713d5f43c8e41cc4d2956686550f1a9612fbcf790bf",
                "md5": "b62e745baf32fb43c5819df23e6bcb21",
                "sha256": "e12002cce25daca0045beaf5351bd11682578d16e7e04ce94f725c52e8de08e7"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "b62e745baf32fb43c5819df23e6bcb21",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 1783809,
            "upload_time": "2024-11-18T09:53:51",
            "upload_time_iso_8601": "2024-11-18T09:53:51.863991Z",
            "url": "https://files.pythonhosted.org/packages/30/3d/9fcf3b97890403386713d5f43c8e41cc4d2956686550f1a9612fbcf790bf/matcher_py-0.5.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6f6d073204285d491a3746b69ad67e0525dd2c134a8050639d96e69fb55bd7a1",
                "md5": "f73cb650f8fe25a769d305e331793b0c",
                "sha256": "53a069e74d6fe58920f174374cb331f12bc4d67b8453e9d2ac0ed01e557591db"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f73cb650f8fe25a769d305e331793b0c",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 1828765,
            "upload_time": "2024-11-18T09:53:53",
            "upload_time_iso_8601": "2024-11-18T09:53:53.942141Z",
            "url": "https://files.pythonhosted.org/packages/6f/6d/073204285d491a3746b69ad67e0525dd2c134a8050639d96e69fb55bd7a1/matcher_py-0.5.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a520c253a93c7ba21713547837865080f990f7d27ca722574c774a571346e5f0",
                "md5": "275b6091d2f195b594955ac4b2fb3949",
                "sha256": "4ba6f6b6fa2a3cef24275cb9e145c88375296e29499dde067be08a92d0617481"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp313-cp313-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "275b6091d2f195b594955ac4b2fb3949",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 1989686,
            "upload_time": "2024-11-18T09:53:56",
            "upload_time_iso_8601": "2024-11-18T09:53:56.124091Z",
            "url": "https://files.pythonhosted.org/packages/a5/20/c253a93c7ba21713547837865080f990f7d27ca722574c774a571346e5f0/matcher_py-0.5.6-cp313-cp313-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3abb3ba950a9d8002a13d30ad3c582ebc6609c6e584852780126a71322975066",
                "md5": "e475b327c38fd3ad00450e620283ac38",
                "sha256": "6ba02a80d303bbfb166db7ffd0bc6a4eb3eda4a9d9ec70404a6791522a3888e8"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp313-cp313-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e475b327c38fd3ad00450e620283ac38",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 2013090,
            "upload_time": "2024-11-18T09:53:57",
            "upload_time_iso_8601": "2024-11-18T09:53:57.460860Z",
            "url": "https://files.pythonhosted.org/packages/3a/bb/3ba950a9d8002a13d30ad3c582ebc6609c6e584852780126a71322975066/matcher_py-0.5.6-cp313-cp313-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a1fc6c50d938071de1be40c4d145fa62283912d935e86ce0fdcca3965526dd98",
                "md5": "6fdb5ecceb70067f5dd769f5c8ed9428",
                "sha256": "ecdced61c23b8f42f0c5a0030d64658654d56cddbef402237b23b2821cebbf40"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp313-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "6fdb5ecceb70067f5dd769f5c8ed9428",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 1729385,
            "upload_time": "2024-11-18T09:53:58",
            "upload_time_iso_8601": "2024-11-18T09:53:58.751592Z",
            "url": "https://files.pythonhosted.org/packages/a1/fc/6c50d938071de1be40c4d145fa62283912d935e86ce0fdcca3965526dd98/matcher_py-0.5.6-cp313-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "29d8d9245d8aa0609cc89127beac5e6a85411b61e2ebb1d6bdc7d9b60afef70d",
                "md5": "6222455ae5129ceaa4b9a38e60e9445a",
                "sha256": "b3a2193684ee1df8d3f9d1806706d35002d10f0f25276be28506d53687a6a5c8"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp38-cp38-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "6222455ae5129ceaa4b9a38e60e9445a",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 1641699,
            "upload_time": "2024-11-18T09:53:59",
            "upload_time_iso_8601": "2024-11-18T09:53:59.923137Z",
            "url": "https://files.pythonhosted.org/packages/29/d8/d9245d8aa0609cc89127beac5e6a85411b61e2ebb1d6bdc7d9b60afef70d/matcher_py-0.5.6-cp38-cp38-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a59a9bba4d2899564626eefa58e63ded61e627cbf8344f0e92af65bf9d676d49",
                "md5": "a6b41297398bedcf99325ebaf5ecc6c9",
                "sha256": "480f1b089c1dfdc7ab859271e6cc2d84f9912eebf321ab1b9f94837afab27399"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "a6b41297398bedcf99325ebaf5ecc6c9",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 1787386,
            "upload_time": "2024-11-18T09:54:01",
            "upload_time_iso_8601": "2024-11-18T09:54:01.125174Z",
            "url": "https://files.pythonhosted.org/packages/a5/9a/9bba4d2899564626eefa58e63ded61e627cbf8344f0e92af65bf9d676d49/matcher_py-0.5.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2b1f1114c2a2406a671077cdf3c7d8f09f55a77a3fb989b1aaac43f13fe1b6cb",
                "md5": "2559ed9580ae5b24b1d27c3aedc6626b",
                "sha256": "50fb5c7fc7bf073acfca78666cea5f5fbce014afc66b588613510ec95d719004"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "2559ed9580ae5b24b1d27c3aedc6626b",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 1831555,
            "upload_time": "2024-11-18T09:54:02",
            "upload_time_iso_8601": "2024-11-18T09:54:02.315562Z",
            "url": "https://files.pythonhosted.org/packages/2b/1f/1114c2a2406a671077cdf3c7d8f09f55a77a3fb989b1aaac43f13fe1b6cb/matcher_py-0.5.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e1f5e7bfeab76914b29f7a42b314ac2898a60d44394091a349a07f9b06626b8a",
                "md5": "1e1fe2157b837ccd131beefcdde38e08",
                "sha256": "7a6d3a25266d7246122cbc3e192d3ea0f59675727c5eb6e40d419659470ca121"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp38-cp38-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "1e1fe2157b837ccd131beefcdde38e08",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 1993239,
            "upload_time": "2024-11-18T09:54:03",
            "upload_time_iso_8601": "2024-11-18T09:54:03.558157Z",
            "url": "https://files.pythonhosted.org/packages/e1/f5/e7bfeab76914b29f7a42b314ac2898a60d44394091a349a07f9b06626b8a/matcher_py-0.5.6-cp38-cp38-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c3b08b6a929a506ab335e0f1835045ea5f343e5c3e61cd7bbe071be349e33fc9",
                "md5": "48c6cc3fee73ebfca3eb1e1d9a313e61",
                "sha256": "9a0d7478e57b3af8bfe288e2edf1f9b9accd3191acc4406e91caff9a7e00caf0"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp38-cp38-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "48c6cc3fee73ebfca3eb1e1d9a313e61",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 2015759,
            "upload_time": "2024-11-18T09:54:04",
            "upload_time_iso_8601": "2024-11-18T09:54:04.847784Z",
            "url": "https://files.pythonhosted.org/packages/c3/b0/8b6a929a506ab335e0f1835045ea5f343e5c3e61cd7bbe071be349e33fc9/matcher_py-0.5.6-cp38-cp38-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a05b50f15780c92c171bbbbdc89e5f0f9f605fe747e7cef369444aaf00994152",
                "md5": "41e84e642a33422f4d8c94a76943be9c",
                "sha256": "e75e5a002f38c7aec7c021f32002c05958db6a58e78cb1bdab722df9ad66d72d"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp38-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "41e84e642a33422f4d8c94a76943be9c",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 1729352,
            "upload_time": "2024-11-18T09:54:06",
            "upload_time_iso_8601": "2024-11-18T09:54:06.042735Z",
            "url": "https://files.pythonhosted.org/packages/a0/5b/50f15780c92c171bbbbdc89e5f0f9f605fe747e7cef369444aaf00994152/matcher_py-0.5.6-cp38-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f77a10c14a7edce48dbc994933e65999beace96652206340577cbcb2d24b97ca",
                "md5": "1c831376f7f2ec00895f745c7ad2e7d5",
                "sha256": "580ea47bc859d2740ec1d903faa59f3f676fd34d21c1f63deddcdd59d3488d27"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp39-cp39-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "1c831376f7f2ec00895f745c7ad2e7d5",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 1641998,
            "upload_time": "2024-11-18T09:54:07",
            "upload_time_iso_8601": "2024-11-18T09:54:07.322603Z",
            "url": "https://files.pythonhosted.org/packages/f7/7a/10c14a7edce48dbc994933e65999beace96652206340577cbcb2d24b97ca/matcher_py-0.5.6-cp39-cp39-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0b37f1ef134d7a0c1044bb21d3f62cbb2bdc8b87c7d4b5d12684397fcebedd71",
                "md5": "bbc0034e8d5400473b56c7cf92d0dfa3",
                "sha256": "195418ce181ff874eeeeb4bfd3e95dc9fab5c7789f88a24222d5a82c4662db5d"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "bbc0034e8d5400473b56c7cf92d0dfa3",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 1787360,
            "upload_time": "2024-11-18T09:54:08",
            "upload_time_iso_8601": "2024-11-18T09:54:08.718182Z",
            "url": "https://files.pythonhosted.org/packages/0b/37/f1ef134d7a0c1044bb21d3f62cbb2bdc8b87c7d4b5d12684397fcebedd71/matcher_py-0.5.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3240eb5ebfc8449b886d947f682a75238703f9feab7e08bf6d2775ca5302c25b",
                "md5": "49bde57a00674c2b3e26584b91669670",
                "sha256": "065768b38c1ca3ca57a6b089f06b708951c23ffa5c6752ed8cfeb147f7415b45"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "49bde57a00674c2b3e26584b91669670",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 1831574,
            "upload_time": "2024-11-18T09:54:10",
            "upload_time_iso_8601": "2024-11-18T09:54:10.180504Z",
            "url": "https://files.pythonhosted.org/packages/32/40/eb5ebfc8449b886d947f682a75238703f9feab7e08bf6d2775ca5302c25b/matcher_py-0.5.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f8804adacce8e33bd07da9b7c1d12343b413f5992f101eda2432d90e2704acaa",
                "md5": "7d55c37da094d2d8621c234e2b842f5c",
                "sha256": "48a588bc7d0b3878782726422b0f2efd1a112db4099bf355f4b26ff97e2a3a02"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp39-cp39-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "7d55c37da094d2d8621c234e2b842f5c",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 1993209,
            "upload_time": "2024-11-18T09:54:11",
            "upload_time_iso_8601": "2024-11-18T09:54:11.519367Z",
            "url": "https://files.pythonhosted.org/packages/f8/80/4adacce8e33bd07da9b7c1d12343b413f5992f101eda2432d90e2704acaa/matcher_py-0.5.6-cp39-cp39-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ea13d320597a150a5d77f2d2c84ff0c96930b57cf9109602691682132935f2c2",
                "md5": "938b5fcc7a53cc856a2e035217f587c9",
                "sha256": "7cd68f74621c1294071388e59909b59277257eabd53a94ca4e56201006459ecc"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp39-cp39-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "938b5fcc7a53cc856a2e035217f587c9",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 2015645,
            "upload_time": "2024-11-18T09:54:12",
            "upload_time_iso_8601": "2024-11-18T09:54:12.970645Z",
            "url": "https://files.pythonhosted.org/packages/ea/13/d320597a150a5d77f2d2c84ff0c96930b57cf9109602691682132935f2c2/matcher_py-0.5.6-cp39-cp39-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7d7f3faa4664af5a94c524445596c4229bbc30b8a82f118e6d66247bc10e94b0",
                "md5": "40fc26ef9d830c4804272ce1fd3bba00",
                "sha256": "40a84fb620b9643f0dff97e3266956c03e5543b5583dedb9bec66cf386800c20"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6-cp39-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "40fc26ef9d830c4804272ce1fd3bba00",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 1729354,
            "upload_time": "2024-11-18T09:54:14",
            "upload_time_iso_8601": "2024-11-18T09:54:14.928148Z",
            "url": "https://files.pythonhosted.org/packages/7d/7f/3faa4664af5a94c524445596c4229bbc30b8a82f118e6d66247bc10e94b0/matcher_py-0.5.6-cp39-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8a1c6df2ca16f252237daa0be9a0ee80c15bba9a736a9aed75b62fc931dcf792",
                "md5": "84f2287ce5799a00dcc2903909ae48a0",
                "sha256": "cc96ae10bfb80441368f2fc4d81107fc2bf059a92cdc788e5782cbfd3a244037"
            },
            "downloads": -1,
            "filename": "matcher_py-0.5.6.tar.gz",
            "has_sig": false,
            "md5_digest": "84f2287ce5799a00dcc2903909ae48a0",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 312002,
            "upload_time": "2024-11-18T09:54:16",
            "upload_time_iso_8601": "2024-11-18T09:54:16.864112Z",
            "url": "https://files.pythonhosted.org/packages/8a/1c/6df2ca16f252237daa0be9a0ee80c15bba9a736a9aed75b62fc931dcf792/matcher_py-0.5.6.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-11-18 09:54:16",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "Lips7",
    "github_project": "Matcher",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "matcher-py"
}
        
Elapsed time: 0.37125s