stringmatch


Namestringmatch JSON
Version 0.14.3 PyPI version JSON
download
home_pagehttps://github.com/atomflunder/stringmatch
SummaryA library to match and compare strings.
upload_time2023-10-02 22:52:37
maintainer
docs_urlNone
authoratomflunder
requires_python>=3.8
licenseMIT
keywords stringmatch string match fuzzy matching
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # stringmatch

[![PyPI](https://img.shields.io/pypi/v/stringmatch?color=blue)](https://pypi.org/project/stringmatch/)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/stringmatch)](https://pypi.org/project/stringmatch/)
[![Downloads](https://pepy.tech/badge/stringmatch)](https://pepy.tech/project/stringmatch)
[![Build](https://github.com/atomflunder/stringmatch/actions/workflows/build.yml/badge.svg)](https://github.com/atomflunder/stringmatch/actions/workflows/build.yml)
[![Documentation Status](https://readthedocs.org/projects/stringmatch/badge/?version=latest)](https://stringmatch.readthedocs.io/en/latest/?badge=latest)
[![codecov](https://codecov.io/gh/atomflunder/stringmatch/branch/master/graph/badge.svg?token=7JIAENN2BZ)](https://codecov.io/gh/atomflunder/stringmatch)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)


**stringmatch** is a small, lightweight string matching library written in Python, based on the [Levenshtein distance](https://en.wikipedia.org/wiki/Levenshtein_distance).  
Inspired by libraries like [seatgeek/thefuzz](https://github.com/seatgeek/thefuzz), which did not quite fit my needs. And so I am building this library for myself, primarily.

**Disclaimer: This library is still in an alpha development phase!** Changes may be frequent and breaking changes can occur! It is recommended to update frequently to minimise bugs and maximise features.

## Table of Contents
- [🎯 Key Features](#key-features)
- [📋 Requirements](#requirements)
- [⚙️ Installation](#installation)
- [🔨 Basic Usage](#basic-usage)
  - [Matching](#matching)
  - [Ratios](#ratios)
  - [Matching & Ratios](#matching--ratios)
  - [Distances](#distances)
  - [Strings](#strings)
- [🛠️ Advanced Usage](#advanced-usage)
    - [Keyword Arguments](#keyword-arguments)
    - [Class Keyword Arguments](#class-keyword-arguments)
    - [Your Own Scorer](#your-own-scorer)
- [🌟 Contributing](#contributing)
- [🔗 Links](#links)
- [⚠️ License](#license)

## Key Features

This library **matches compares and strings to each other** based mainly on, among others, the [Levenshtein distance](https://en.wikipedia.org/wiki/Levenshtein_distance).  
What makes stringmatch special compared to other libraries with similar functions:

- 💨 Lightweight, straightforward and easy to use
- ⚡ High speed - at least ~12x faster than thefuzz and up to 70x
- 🧰 Allows for highly customisable searches, that yield better results
- 📚 Lots of utility functions to make your life easier
- 📝 Statically typed with mypy, compiled with mypyc
- 🌍 Handles special unicode characters, like emojis or characters from other languages, like ジャパニーズ

## Requirements

- Python 3.8 or later.
- The packages in [`requirements.txt`](/requirements.txt), pip will handle these for you.

## Installation

Install the latest stable version with pip:

```
pip install -U stringmatch
```

Or install the newest version via git (Might be unstable or unfinished):
```
pip install -U git+https://github.com/atomflunder/stringmatch
```

## Basic Usage

Below are some basic examples on how to use this library.  
For a more detailed explanation head over to [the Documentation](https://stringmatch.readthedocs.io/en/latest/).  
For examples on how to use this library, head over to the [`examples` directory](/examples/).  

### Matching

The match functions allow you to compare 2 strings and check if they are "similar enough" to each other, or get the best match(es) from a list of strings:

```python
from stringmatch import Match

match = Match()

# Checks if the strings are similar:
match.match("stringmatch", "strngmach")         # returns True
match.match("stringmatch", "something else")    # returns False

# Returns the best match(es) found in the list:
searches = ["stringmat", "strinma", "strings", "mtch", "whatever", "s"]
match.get_best_match("stringmatch", searches)   # returns "stringmat"
match.get_best_matches("stringmatch", searches) # returns ["stringmat", "strinma"]
```

### Ratios

The "ratio of similarity" describes how similar the strings are to each other. It ranges from 100 being an exact match to 0 being something completely different.  
You can get the ratio between strings like this:

```python
from stringmatch import Ratio

ratio = Ratio()

# Getting the ratio between the two strings:
ratio.ratio("stringmatch", "stringmatch")           # returns 100
ratio.ratio("stringmatch", "strngmach")             # returns 90
ratio.ratio("stringmatch", "eh")                    # returns 15

# Getting the ratio between the first string and the list of strings at once:
searches = ["stringmatch", "strngmach", "eh"]
ratio.ratio_list("stringmatch", searches)           # returns [100, 90, 15]

# Searching for partial ratios with substrings:
ratio.partial_ratio("a string", "a string longer")  # returns 80
```

### Matching & Ratios

You can also get both the match and the ratio together in a tuple using these functions:

```python
from stringmatch import Match

match = Match()

match.match_with_ratio("stringmatch", "strngmach")    # returns (True, 90)

searches = ["test", "nope", "tset"]
match.get_best_match_with_ratio("test", searches)     # returns ("test", 100)
match.get_best_matches_with_ratio("test", searches)   # returns [("test", 100), ("tset", 75)]
```

### Distances

Instead of the ratio, you can also get the Levenshtein distance between strings directly. The bigger the distance, the more different the strings:

```python
from stringmatch import Distance

distance = Distance()

distance.distance("kitten", "sitting")      # returns 3

searches = ["sitting", "kitten"]
distance.distance_list("kitten", searches)  # returns [3, 0]
```

### Strings

This is primarily meant for internal usage, but you can also use this library to modify strings:

```python
from stringmatch import Strings

strings = Strings()

strings.latinise("Héllö, world!")               # returns "Hello, world!"
strings.remove_punctuation("wh'at;, ever")      # returns "what ever"
strings.alphanumeric("Héllö, world!")           # returns "Hll world"
strings.ignore_case("test test!", lower=False)  # returns "TEST TEST!"
```

## Advanced Usage

### Keyword Arguments

There are some **optional arguments** available for a few functions.

### `score`

| Type  | Default | Description | Available for: |
| ---   | ---     | ---         | ---            |
| Integer | 70 | The score cutoff for matching. If the score is below the threshold it will not get returned. | All functions from the `Match()` class.

```python
# Example:

from stringmatch import Match

match = Match()

match.match("stringmatch", "strngmach", score=95)    # returns False
match.match("stringmatch", "strngmach", score=70)    # returns True
```

---

### `limit`

| Type  | Default | Description | Available for: |
| ---   | ---     | ---         | ---            |
| Integer | 5 | The limit of how many matches to return. **If you want to return every match set this to 0 or None.** | `get_best_matches()`, `get_best_matches_with_ratio()`

```python
# Example:

from stringmatch import Match

match = Match()

searches = ["limit 5", "limit 4", "limit 3", "limit 2", "limit 1", "limit 0", "something else"]

# returns ["limit 5", "limit 4"]
match.get_best_matches("limit 5", searches, limit=2)

# returns ["limit 5"]
match.get_best_matches("limit 5", searches, limit=1)

# returns ["limit 5", "limit 4", "limit 3", "limit 2", "limit 1", "limit 0"]
match.get_best_matches("limit 5", searches, limit=None) 
```

---

### Class Keyword Arguments

You can also pass in on or more of these **optional arguments when initialising the `Match()` and `Ratio()`** classes to customize your search even further.  
Of course you can use multiple of these keyword arguments at once, to customise the search to do exactly what you intend to do.  

### `scorer`

| Type  | Default | Description |
| ---   | ---     | ---         |
| BaseScorer | LevenshteinScorer | Different scoring algorithms to use. The available options are: [`LevenshteinScorer`](https://en.wikipedia.org/wiki/Levenshtein_distance), [`JaroScorer`](https://en.wikipedia.org/wiki/Jaro–Winkler_distance#Jaro_similarity), [`JaroWinklerScorer`](https://en.wikipedia.org/wiki/Jaro–Winkler_distance#Jaro–Winkler_similarity). 

Click on the links above for detailed information about these, but speaking generally the Jaro Scorer will be the fastest, focussing on the characters the strings have in common.  
The Jaro-Winkler Scorer slightly modified the Jaro Scorer to prioritise characters at the start of the string.  
The Levenshtein Scorer will, most likely, produce the best results, focussing on the number of edits needed to get from one string to the other.

```python
# Example:

from stringmatch import Match, LevenshteinScorer, JaroWinklerScorer

lev_matcher = Match(scorer=LevenshteinScorer)
lev_matcher.match_with_ratio("test", "th test") # returns (True, 73)

jw_matcher = Match(scorer=JaroWinklerScorer)
jw_matcher.match_with_ratio("test", "th test")  # returns (False, 60)
```

---

### `latinise`

| Type  | Default | Description |
| ---   | ---     | ---         |
| Boolean | False | Replaces special unicode characters with their latin alphabet equivalents. Examples: `Ǽ` -> `AE`, `ノース` -> `nosu` 

```python
# Example:

from stringmatch import Match

lat_match = Match(latinise=True)
lat_match.match("séärçh", "search") # returns True

def_match = Match(latinise=False)
def_match.match("séärçh", "search") # returns False
```

---

### `ignore_case`

| Type  | Default | Description |
| ---   | ---     | ---         |
| Boolean | True | If you want to ignore case sensitivity while searching. 

```python
# Example:

from stringmatch import Match

def_match = Match(ignore_case=True)
def_match.match("test", "TEST")   # returns True

case_match = Match(ignore_case=False)
case_match.match("test", "TEST")  # returns False
```

---

### `remove_punctuation`

| Type  | Default | Description |
| ---   | ---     | ---         |
| Boolean | False | Removes commonly used punctuation symbols from the strings, like `.,;:!?` and so on. 

```python
# Example:

from stringmatch import Match

punc_match = Match(remove_punctuation=True)
punc_match.match("test,---....", "test")  # returns True

def_match = Match(remove_punctuation=False)
def_match.match("test,---....", "test")   # returns False
```

---

### `alphanumeric`

| Type  | Default | Description |
| ---   | ---     | ---         |
| Boolean | False | Removes every character that is not a number or in the latin alphabet, a more extreme version of `remove_punctuation`. 

```python
# Example:

from stringmatch import Match

let_match = Match(alphanumeric=True)
let_match.match("»»ᅳtestᅳ►", "test")  # returns True

def_match = Match(alphanumeric=False)
def_match.match("»»ᅳtestᅳ►", "test")  # returns False
```

---

### `include_partial`

| Type  | Default | Description |
| ---   | ---     | ---         |
| Boolean | False | If set to true, also searches for partial substring matches. This may lead to more desirable results but is a bit slower. This will return a score of 65-95 depending on how far apart the sizes of the strings are to ensure only identical matches provide a score of 100. It will start matching at a length of 2, or 1 if it is the first letter of the string.

```python
# Example:

from stringmatch import Match

part_match = Match(include_partial=True)
# returns (True, 65)
part_match.match_with_ratio("A string", "A string thats like really really long", score=60)

def_match = Match(include_partial=False)
# returns (False, 35)
def_match.match_with_ratio("A string", "A string thats like really really long", score=60)
```

---

### Your Own Scorer

If you are unhappy with the scoring algorithms provided, you can of course construct your own scorer class. Make sure it inherits from `BaseScorer` and has a `score()` method that takes 2 strings and returns a float between 0 and 100.

```python
# Example:

from stringmatch import BaseScorer, Match

class MyOwnScorer(BaseScorer):
    def score(self, string1: str, string2: str) -> float:
        # Highly advanced technology
        return 100

my_matcher = Match(scorer=MyOwnScorer)
my_matcher.match_with_ratio("anything", "whatever") # returns (True, 100)
```

## Contributing

Contributions to this library are always appreciated! If you have any sort of feedback, or are interested in contributing, head on over to the [Contributing Guidelines](/.github/CONTRIBUTING.md).  
Additionally, if you like this library, leaving a star and spreading the word would be appreciated a lot!  
Thanks in advance for taking the time to do so.

## Links

Packages used:

- [Mypy](https://github.com/python/mypy) ([Mypyc](https://github.com/mypyc/mypyc))
- [RapidFuzz](https://github.com/maxbachmann/RapidFuzz)
- [Unidecode](https://github.com/avian2/unidecode)

## License

This project is licensed under the [MIT License](/LICENSE).

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/atomflunder/stringmatch",
    "name": "stringmatch",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "",
    "keywords": "stringmatch string match fuzzy matching",
    "author": "atomflunder",
    "author_email": "80397293+atomflunder@users.noreply.github.com",
    "download_url": "https://files.pythonhosted.org/packages/0f/3b/32c88a20184f2cf0b57db7571bd564f7044c43b2b3652b5ca06db778e628/stringmatch-0.14.3.tar.gz",
    "platform": null,
    "description": "# stringmatch\n\n[![PyPI](https://img.shields.io/pypi/v/stringmatch?color=blue)](https://pypi.org/project/stringmatch/)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/stringmatch)](https://pypi.org/project/stringmatch/)\n[![Downloads](https://pepy.tech/badge/stringmatch)](https://pepy.tech/project/stringmatch)\n[![Build](https://github.com/atomflunder/stringmatch/actions/workflows/build.yml/badge.svg)](https://github.com/atomflunder/stringmatch/actions/workflows/build.yml)\n[![Documentation Status](https://readthedocs.org/projects/stringmatch/badge/?version=latest)](https://stringmatch.readthedocs.io/en/latest/?badge=latest)\n[![codecov](https://codecov.io/gh/atomflunder/stringmatch/branch/master/graph/badge.svg?token=7JIAENN2BZ)](https://codecov.io/gh/atomflunder/stringmatch)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n\n\n**stringmatch** is a small, lightweight string matching library written in Python, based on the [Levenshtein distance](https://en.wikipedia.org/wiki/Levenshtein_distance).  \nInspired by libraries like [seatgeek/thefuzz](https://github.com/seatgeek/thefuzz), which did not quite fit my needs. And so I am building this library for myself, primarily.\n\n**Disclaimer: This library is still in an alpha development phase!** Changes may be frequent and breaking changes can occur! It is recommended to update frequently to minimise bugs and maximise features.\n\n## Table of Contents\n- [\ud83c\udfaf Key Features](#key-features)\n- [\ud83d\udccb Requirements](#requirements)\n- [\u2699\ufe0f Installation](#installation)\n- [\ud83d\udd28 Basic Usage](#basic-usage)\n  - [Matching](#matching)\n  - [Ratios](#ratios)\n  - [Matching & Ratios](#matching--ratios)\n  - [Distances](#distances)\n  - [Strings](#strings)\n- [\ud83d\udee0\ufe0f Advanced Usage](#advanced-usage)\n    - [Keyword Arguments](#keyword-arguments)\n    - [Class Keyword Arguments](#class-keyword-arguments)\n    - [Your Own Scorer](#your-own-scorer)\n- [\ud83c\udf1f Contributing](#contributing)\n- [\ud83d\udd17 Links](#links)\n- [\u26a0\ufe0f License](#license)\n\n## Key Features\n\nThis library **matches compares and strings to each other** based mainly on, among others, the [Levenshtein distance](https://en.wikipedia.org/wiki/Levenshtein_distance).  \nWhat makes stringmatch special compared to other libraries with similar functions:\n\n- \ud83d\udca8 Lightweight, straightforward and easy to use\n- \u26a1 High speed - at least ~12x faster than thefuzz and up to 70x\n- \ud83e\uddf0 Allows for highly customisable searches, that yield better results\n- \ud83d\udcda Lots of utility functions to make your life easier\n- \ud83d\udcdd Statically typed with mypy, compiled with mypyc\n- \ud83c\udf0d Handles special unicode characters, like emojis or characters from other languages, like \u30b8\u30e3\u30d1\u30cb\u30fc\u30ba\n\n## Requirements\n\n- Python 3.8 or later.\n- The packages in [`requirements.txt`](/requirements.txt), pip will handle these for you.\n\n## Installation\n\nInstall the latest stable version with pip:\n\n```\npip install -U stringmatch\n```\n\nOr install the newest version via git (Might be unstable or unfinished):\n```\npip install -U git+https://github.com/atomflunder/stringmatch\n```\n\n## Basic Usage\n\nBelow are some basic examples on how to use this library.  \nFor a more detailed explanation head over to [the Documentation](https://stringmatch.readthedocs.io/en/latest/).  \nFor examples on how to use this library, head over to the [`examples` directory](/examples/).  \n\n### Matching\n\nThe match functions allow you to compare 2 strings and check if they are \"similar enough\" to each other, or get the best match(es) from a list of strings:\n\n```python\nfrom stringmatch import Match\n\nmatch = Match()\n\n# Checks if the strings are similar:\nmatch.match(\"stringmatch\", \"strngmach\")         # returns True\nmatch.match(\"stringmatch\", \"something else\")    # returns False\n\n# Returns the best match(es) found in the list:\nsearches = [\"stringmat\", \"strinma\", \"strings\", \"mtch\", \"whatever\", \"s\"]\nmatch.get_best_match(\"stringmatch\", searches)   # returns \"stringmat\"\nmatch.get_best_matches(\"stringmatch\", searches) # returns [\"stringmat\", \"strinma\"]\n```\n\n### Ratios\n\nThe \"ratio of similarity\" describes how similar the strings are to each other. It ranges from 100 being an exact match to 0 being something completely different.  \nYou can get the ratio between strings like this:\n\n```python\nfrom stringmatch import Ratio\n\nratio = Ratio()\n\n# Getting the ratio between the two strings:\nratio.ratio(\"stringmatch\", \"stringmatch\")           # returns 100\nratio.ratio(\"stringmatch\", \"strngmach\")             # returns 90\nratio.ratio(\"stringmatch\", \"eh\")                    # returns 15\n\n# Getting the ratio between the first string and the list of strings at once:\nsearches = [\"stringmatch\", \"strngmach\", \"eh\"]\nratio.ratio_list(\"stringmatch\", searches)           # returns [100, 90, 15]\n\n# Searching for partial ratios with substrings:\nratio.partial_ratio(\"a string\", \"a string longer\")  # returns 80\n```\n\n### Matching & Ratios\n\nYou can also get both the match and the ratio together in a tuple using these functions:\n\n```python\nfrom stringmatch import Match\n\nmatch = Match()\n\nmatch.match_with_ratio(\"stringmatch\", \"strngmach\")    # returns (True, 90)\n\nsearches = [\"test\", \"nope\", \"tset\"]\nmatch.get_best_match_with_ratio(\"test\", searches)     # returns (\"test\", 100)\nmatch.get_best_matches_with_ratio(\"test\", searches)   # returns [(\"test\", 100), (\"tset\", 75)]\n```\n\n### Distances\n\nInstead of the ratio, you can also get the Levenshtein distance between strings directly. The bigger the distance, the more different the strings:\n\n```python\nfrom stringmatch import Distance\n\ndistance = Distance()\n\ndistance.distance(\"kitten\", \"sitting\")      # returns 3\n\nsearches = [\"sitting\", \"kitten\"]\ndistance.distance_list(\"kitten\", searches)  # returns [3, 0]\n```\n\n### Strings\n\nThis is primarily meant for internal usage, but you can also use this library to modify strings:\n\n```python\nfrom stringmatch import Strings\n\nstrings = Strings()\n\nstrings.latinise(\"H\u00e9ll\u00f6, world!\")               # returns \"Hello, world!\"\nstrings.remove_punctuation(\"wh'at;, ever\")      # returns \"what ever\"\nstrings.alphanumeric(\"H\u00e9ll\u00f6, world!\")           # returns \"Hll world\"\nstrings.ignore_case(\"test test!\", lower=False)  # returns \"TEST TEST!\"\n```\n\n## Advanced Usage\n\n### Keyword Arguments\n\nThere are some **optional arguments** available for a few functions.\n\n### `score`\n\n| Type  | Default | Description | Available for: |\n| ---   | ---     | ---         | ---            |\n| Integer | 70 | The score cutoff for matching. If the score is below the threshold it will not get returned. | All functions from the `Match()` class.\n\n```python\n# Example:\n\nfrom stringmatch import Match\n\nmatch = Match()\n\nmatch.match(\"stringmatch\", \"strngmach\", score=95)    # returns False\nmatch.match(\"stringmatch\", \"strngmach\", score=70)    # returns True\n```\n\n---\n\n### `limit`\n\n| Type  | Default | Description | Available for: |\n| ---   | ---     | ---         | ---            |\n| Integer | 5 | The limit of how many matches to return. **If you want to return every match set this to 0 or None.** | `get_best_matches()`, `get_best_matches_with_ratio()`\n\n```python\n# Example:\n\nfrom stringmatch import Match\n\nmatch = Match()\n\nsearches = [\"limit 5\", \"limit 4\", \"limit 3\", \"limit 2\", \"limit 1\", \"limit 0\", \"something else\"]\n\n# returns [\"limit 5\", \"limit 4\"]\nmatch.get_best_matches(\"limit 5\", searches, limit=2)\n\n# returns [\"limit 5\"]\nmatch.get_best_matches(\"limit 5\", searches, limit=1)\n\n# returns [\"limit 5\", \"limit 4\", \"limit 3\", \"limit 2\", \"limit 1\", \"limit 0\"]\nmatch.get_best_matches(\"limit 5\", searches, limit=None) \n```\n\n---\n\n### Class Keyword Arguments\n\nYou can also pass in on or more of these **optional arguments when initialising the `Match()` and `Ratio()`** classes to customize your search even further.  \nOf course you can use multiple of these keyword arguments at once, to customise the search to do exactly what you intend to do.  \n\n### `scorer`\n\n| Type  | Default | Description |\n| ---   | ---     | ---         |\n| BaseScorer | LevenshteinScorer | Different scoring algorithms to use. The available options are: [`LevenshteinScorer`](https://en.wikipedia.org/wiki/Levenshtein_distance), [`JaroScorer`](https://en.wikipedia.org/wiki/Jaro\u2013Winkler_distance#Jaro_similarity), [`JaroWinklerScorer`](https://en.wikipedia.org/wiki/Jaro\u2013Winkler_distance#Jaro\u2013Winkler_similarity). \n\nClick on the links above for detailed information about these, but speaking generally the Jaro Scorer will be the fastest, focussing on the characters the strings have in common.  \nThe Jaro-Winkler Scorer slightly modified the Jaro Scorer to prioritise characters at the start of the string.  \nThe Levenshtein Scorer will, most likely, produce the best results, focussing on the number of edits needed to get from one string to the other.\n\n```python\n# Example:\n\nfrom stringmatch import Match, LevenshteinScorer, JaroWinklerScorer\n\nlev_matcher = Match(scorer=LevenshteinScorer)\nlev_matcher.match_with_ratio(\"test\", \"th test\") # returns (True, 73)\n\njw_matcher = Match(scorer=JaroWinklerScorer)\njw_matcher.match_with_ratio(\"test\", \"th test\")  # returns (False, 60)\n```\n\n---\n\n### `latinise`\n\n| Type  | Default | Description |\n| ---   | ---     | ---         |\n| Boolean | False | Replaces special unicode characters with their latin alphabet equivalents. Examples: `\u01fc` -> `AE`, `\u30ce\u30fc\u30b9` -> `nosu` \n\n```python\n# Example:\n\nfrom stringmatch import Match\n\nlat_match = Match(latinise=True)\nlat_match.match(\"s\u00e9\u00e4r\u00e7h\", \"search\") # returns True\n\ndef_match = Match(latinise=False)\ndef_match.match(\"s\u00e9\u00e4r\u00e7h\", \"search\") # returns False\n```\n\n---\n\n### `ignore_case`\n\n| Type  | Default | Description |\n| ---   | ---     | ---         |\n| Boolean | True | If you want to ignore case sensitivity while searching. \n\n```python\n# Example:\n\nfrom stringmatch import Match\n\ndef_match = Match(ignore_case=True)\ndef_match.match(\"test\", \"TEST\")   # returns True\n\ncase_match = Match(ignore_case=False)\ncase_match.match(\"test\", \"TEST\")  # returns False\n```\n\n---\n\n### `remove_punctuation`\n\n| Type  | Default | Description |\n| ---   | ---     | ---         |\n| Boolean | False | Removes commonly used punctuation symbols from the strings, like `.,;:!?` and so on. \n\n```python\n# Example:\n\nfrom stringmatch import Match\n\npunc_match = Match(remove_punctuation=True)\npunc_match.match(\"test,---....\", \"test\")  # returns True\n\ndef_match = Match(remove_punctuation=False)\ndef_match.match(\"test,---....\", \"test\")   # returns False\n```\n\n---\n\n### `alphanumeric`\n\n| Type  | Default | Description |\n| ---   | ---     | ---         |\n| Boolean | False | Removes every character that is not a number or in the latin alphabet, a more extreme version of `remove_punctuation`. \n\n```python\n# Example:\n\nfrom stringmatch import Match\n\nlet_match = Match(alphanumeric=True)\nlet_match.match(\"\u00bb\u00bb\u1173test\u1173\u25ba\", \"test\")  # returns True\n\ndef_match = Match(alphanumeric=False)\ndef_match.match(\"\u00bb\u00bb\u1173test\u1173\u25ba\", \"test\")  # returns False\n```\n\n---\n\n### `include_partial`\n\n| Type  | Default | Description |\n| ---   | ---     | ---         |\n| Boolean | False | If set to true, also searches for partial substring matches. This may lead to more desirable results but is a bit slower. This will return a score of 65-95 depending on how far apart the sizes of the strings are to ensure only identical matches provide a score of 100. It will start matching at a length of 2, or 1 if it is the first letter of the string.\n\n```python\n# Example:\n\nfrom stringmatch import Match\n\npart_match = Match(include_partial=True)\n# returns (True, 65)\npart_match.match_with_ratio(\"A string\", \"A string thats like really really long\", score=60)\n\ndef_match = Match(include_partial=False)\n# returns (False, 35)\ndef_match.match_with_ratio(\"A string\", \"A string thats like really really long\", score=60)\n```\n\n---\n\n### Your Own Scorer\n\nIf you are unhappy with the scoring algorithms provided, you can of course construct your own scorer class. Make sure it inherits from `BaseScorer` and has a `score()` method that takes 2 strings and returns a float between 0 and 100.\n\n```python\n# Example:\n\nfrom stringmatch import BaseScorer, Match\n\nclass MyOwnScorer(BaseScorer):\n    def score(self, string1: str, string2: str) -> float:\n        # Highly advanced technology\n        return 100\n\nmy_matcher = Match(scorer=MyOwnScorer)\nmy_matcher.match_with_ratio(\"anything\", \"whatever\") # returns (True, 100)\n```\n\n## Contributing\n\nContributions to this library are always appreciated! If you have any sort of feedback, or are interested in contributing, head on over to the [Contributing Guidelines](/.github/CONTRIBUTING.md).  \nAdditionally, if you like this library, leaving a star and spreading the word would be appreciated a lot!  \nThanks in advance for taking the time to do so.\n\n## Links\n\nPackages used:\n\n- [Mypy](https://github.com/python/mypy) ([Mypyc](https://github.com/mypyc/mypyc))\n- [RapidFuzz](https://github.com/maxbachmann/RapidFuzz)\n- [Unidecode](https://github.com/avian2/unidecode)\n\n## License\n\nThis project is licensed under the [MIT License](/LICENSE).\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A library to match and compare strings.",
    "version": "0.14.3",
    "project_urls": {
        "Homepage": "https://github.com/atomflunder/stringmatch"
    },
    "split_keywords": [
        "stringmatch",
        "string",
        "match",
        "fuzzy",
        "matching"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e3208905427b198d0f33ac4ae26c49333399ce60f7d2b721961e60403912beca",
                "md5": "7bf8f6f28491e07fcc78189d061adcd3",
                "sha256": "d0fecef63419c902b3f632c5217b000ecb301436d1fc1d61f14b2b6dfbfd0500"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp310-cp310-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7bf8f6f28491e07fcc78189d061adcd3",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 97205,
            "upload_time": "2023-10-02T22:51:18",
            "upload_time_iso_8601": "2023-10-02T22:51:18.301655Z",
            "url": "https://files.pythonhosted.org/packages/e3/20/8905427b198d0f33ac4ae26c49333399ce60f7d2b721961e60403912beca/stringmatch-0.14.3-cp310-cp310-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9629b0873fbb4a0bd0b1990f3092152182a70f6c49ec9f6b4f0fdb59aba5c956",
                "md5": "e00f1138dbb387e8b7c4369fbb078b0c",
                "sha256": "d5c08c571d6abeda284b97568f69213ff2e5491d97e75756adb9562381e45cdf"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "e00f1138dbb387e8b7c4369fbb078b0c",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 169180,
            "upload_time": "2023-10-02T22:51:20",
            "upload_time_iso_8601": "2023-10-02T22:51:20.359689Z",
            "url": "https://files.pythonhosted.org/packages/96/29/b0873fbb4a0bd0b1990f3092152182a70f6c49ec9f6b4f0fdb59aba5c956/stringmatch-0.14.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9643591bf1e87497856b82cb02ed2cd54b88617741813a9f2728ed2fddbacd3e",
                "md5": "6ea7f6ad2100153b4a6dc6db39e57a68",
                "sha256": "476952bb21add947c50055735c7a55c826f089bc0204cfc7cf664cfba8069bb1"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "6ea7f6ad2100153b4a6dc6db39e57a68",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 169741,
            "upload_time": "2023-10-02T22:51:23",
            "upload_time_iso_8601": "2023-10-02T22:51:23.119460Z",
            "url": "https://files.pythonhosted.org/packages/96/43/591bf1e87497856b82cb02ed2cd54b88617741813a9f2728ed2fddbacd3e/stringmatch-0.14.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "aba1c5f499317a0530aef5013e38977bc65edb1b057775ce7dc07e088647c316",
                "md5": "0b47d513124be814867ce6d5bd4d0db6",
                "sha256": "9e3bd7fd85057d644d1e7c189568972bfc88a9c5723a15ee9973a33c1e674ca8"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "0b47d513124be814867ce6d5bd4d0db6",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 171571,
            "upload_time": "2023-10-02T22:51:25",
            "upload_time_iso_8601": "2023-10-02T22:51:25.424163Z",
            "url": "https://files.pythonhosted.org/packages/ab/a1/c5f499317a0530aef5013e38977bc65edb1b057775ce7dc07e088647c316/stringmatch-0.14.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "aeede7fb5b6d21c2883bbe1e7ef913f0d5189f20fb3d3938267b12b2c169b229",
                "md5": "cf3a829163525beeb627b85e560b1838",
                "sha256": "5d0fa1bc3ccaeb387444292817d132a1f6c5a42e7eea8fda9bb76239add50caa"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp310-cp310-musllinux_1_1_aarch64.whl",
            "has_sig": false,
            "md5_digest": "cf3a829163525beeb627b85e560b1838",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 163950,
            "upload_time": "2023-10-02T22:51:27",
            "upload_time_iso_8601": "2023-10-02T22:51:27.630079Z",
            "url": "https://files.pythonhosted.org/packages/ae/ed/e7fb5b6d21c2883bbe1e7ef913f0d5189f20fb3d3938267b12b2c169b229/stringmatch-0.14.3-cp310-cp310-musllinux_1_1_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2fe244d78ada1ce7b91a527b16ca706d99922b6ff5fd9172b9a6ef5e83799df8",
                "md5": "59fce90fead573873ad73e5256b7a5e1",
                "sha256": "1ee13ab4cf53f65015cede28e125b574d0968b8b48f19c1f02ff8ec7fd08ed51"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp310-cp310-musllinux_1_1_i686.whl",
            "has_sig": false,
            "md5_digest": "59fce90fead573873ad73e5256b7a5e1",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 167025,
            "upload_time": "2023-10-02T22:51:29",
            "upload_time_iso_8601": "2023-10-02T22:51:29.715025Z",
            "url": "https://files.pythonhosted.org/packages/2f/e2/44d78ada1ce7b91a527b16ca706d99922b6ff5fd9172b9a6ef5e83799df8/stringmatch-0.14.3-cp310-cp310-musllinux_1_1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4bd91a9a383dd9d77a39cee54a336a44b6fb22fa3aa8322b965082c511ed19c9",
                "md5": "68ebfa80744dcac611bbd566219d7dc0",
                "sha256": "b26949dae10e7d5a01e524df35e338100e59c253c2df466ca03834e014a3a88e"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp310-cp310-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "68ebfa80744dcac611bbd566219d7dc0",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 164725,
            "upload_time": "2023-10-02T22:51:31",
            "upload_time_iso_8601": "2023-10-02T22:51:31.882796Z",
            "url": "https://files.pythonhosted.org/packages/4b/d9/1a9a383dd9d77a39cee54a336a44b6fb22fa3aa8322b965082c511ed19c9/stringmatch-0.14.3-cp310-cp310-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "819593a99b73d0b9b4f6dd909fa8ad77de0ff56f49afbb9639ca84de4d97f9f2",
                "md5": "9b54fe3f37f55cff171e1c62493c43c4",
                "sha256": "ae1a4c682606f92587149b0c8e3ac93cf48c149f4672be209386606397824a84"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp310-cp310-win32.whl",
            "has_sig": false,
            "md5_digest": "9b54fe3f37f55cff171e1c62493c43c4",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 76637,
            "upload_time": "2023-10-02T22:51:33",
            "upload_time_iso_8601": "2023-10-02T22:51:33.793289Z",
            "url": "https://files.pythonhosted.org/packages/81/95/93a99b73d0b9b4f6dd909fa8ad77de0ff56f49afbb9639ca84de4d97f9f2/stringmatch-0.14.3-cp310-cp310-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "17c52436054963902682148e4d4707b05955b7d8df44b6a995f7a3248eea37ea",
                "md5": "a92d17e95b0a81cd70b50df29b2b2650",
                "sha256": "26b39430ba9594993fd8f823ebf3fcec1c78a604b32e3e40e0a80c1927585819"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "a92d17e95b0a81cd70b50df29b2b2650",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 84555,
            "upload_time": "2023-10-02T22:51:35",
            "upload_time_iso_8601": "2023-10-02T22:51:35.517988Z",
            "url": "https://files.pythonhosted.org/packages/17/c5/2436054963902682148e4d4707b05955b7d8df44b6a995f7a3248eea37ea/stringmatch-0.14.3-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d4ccce66cfcf6f982cbb65ae63c4586a100eebde887e8ece8750024a18a41176",
                "md5": "577d870d13542f408470a16792b5aa32",
                "sha256": "1bf90627e9eb2fac88a18ab94a82429f2488d9d9dcb4f51097886531d595b588"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp311-cp311-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "577d870d13542f408470a16792b5aa32",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 96338,
            "upload_time": "2023-10-02T22:51:37",
            "upload_time_iso_8601": "2023-10-02T22:51:37.402415Z",
            "url": "https://files.pythonhosted.org/packages/d4/cc/ce66cfcf6f982cbb65ae63c4586a100eebde887e8ece8750024a18a41176/stringmatch-0.14.3-cp311-cp311-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6aa4f0d7ad91188fd683f7fc4c96782dd85804a67e93bca2ccfa3e329b680a70",
                "md5": "d4b203266e4172b0ab36d675e4d03e61",
                "sha256": "49584ee0e1e78725f527b2c4b25d64acbde7fb205b9d5475588392d690046dc8"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "d4b203266e4172b0ab36d675e4d03e61",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 169187,
            "upload_time": "2023-10-02T22:51:39",
            "upload_time_iso_8601": "2023-10-02T22:51:39.652992Z",
            "url": "https://files.pythonhosted.org/packages/6a/a4/f0d7ad91188fd683f7fc4c96782dd85804a67e93bca2ccfa3e329b680a70/stringmatch-0.14.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "825bcf118e56a50ec7c0b4745e19b147f48cc339038a1c3d310e498c21cefd6a",
                "md5": "b156f2a4f3fe0075cfa55b6c5544025f",
                "sha256": "0a8f2c9367a364a30cd4960df76a326899f67787bfa33597718fa801b56d5bbc"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b156f2a4f3fe0075cfa55b6c5544025f",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 169882,
            "upload_time": "2023-10-02T22:51:41",
            "upload_time_iso_8601": "2023-10-02T22:51:41.691740Z",
            "url": "https://files.pythonhosted.org/packages/82/5b/cf118e56a50ec7c0b4745e19b147f48cc339038a1c3d310e498c21cefd6a/stringmatch-0.14.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "19faa96555672575e05efd8414d69b592ff827c8bbb0d693106d561e88b5d1cb",
                "md5": "b5aa29a0a77e034378b6ec7dc410def0",
                "sha256": "eb21a02cba312d33afd5c31675695bc1c0b0c1d798da2e89adb2fabeff7cc661"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "b5aa29a0a77e034378b6ec7dc410def0",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 171078,
            "upload_time": "2023-10-02T22:51:43",
            "upload_time_iso_8601": "2023-10-02T22:51:43.645620Z",
            "url": "https://files.pythonhosted.org/packages/19/fa/a96555672575e05efd8414d69b592ff827c8bbb0d693106d561e88b5d1cb/stringmatch-0.14.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a06b49bc52347746d2a6c4b62453a8ac29752ecb70553d83ede5135f0a5a6e2b",
                "md5": "4f119f24eec8a50b3a93ed735fd627f2",
                "sha256": "7ee6b605f29cad382a74eebe2f9065a1701c388b2637902ca7a94951cba918e4"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp311-cp311-musllinux_1_1_aarch64.whl",
            "has_sig": false,
            "md5_digest": "4f119f24eec8a50b3a93ed735fd627f2",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 163789,
            "upload_time": "2023-10-02T22:51:45",
            "upload_time_iso_8601": "2023-10-02T22:51:45.545552Z",
            "url": "https://files.pythonhosted.org/packages/a0/6b/49bc52347746d2a6c4b62453a8ac29752ecb70553d83ede5135f0a5a6e2b/stringmatch-0.14.3-cp311-cp311-musllinux_1_1_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d996cc96b773a947db4b4ae9d28fe41c83bc022090eaeb7ab38962eaa23e6d6d",
                "md5": "2baf2de755e3f35361743b8ade0b22da",
                "sha256": "f54f4b44fb1a39a59267b84f08ace2806a77ea335f7e4c294368d0450a824176"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp311-cp311-musllinux_1_1_i686.whl",
            "has_sig": false,
            "md5_digest": "2baf2de755e3f35361743b8ade0b22da",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 166202,
            "upload_time": "2023-10-02T22:51:47",
            "upload_time_iso_8601": "2023-10-02T22:51:47.701168Z",
            "url": "https://files.pythonhosted.org/packages/d9/96/cc96b773a947db4b4ae9d28fe41c83bc022090eaeb7ab38962eaa23e6d6d/stringmatch-0.14.3-cp311-cp311-musllinux_1_1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "01ea6696687a195cee607b11cbf9575a0e191c5dfccfd327728ab23db9256d6e",
                "md5": "90034f68481de4394727e8995fc5ab36",
                "sha256": "7d1882293a7d2b6e0fd55887fb58b70dc06966866587f8913d78936165604f3e"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp311-cp311-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "90034f68481de4394727e8995fc5ab36",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 164830,
            "upload_time": "2023-10-02T22:51:49",
            "upload_time_iso_8601": "2023-10-02T22:51:49.486236Z",
            "url": "https://files.pythonhosted.org/packages/01/ea/6696687a195cee607b11cbf9575a0e191c5dfccfd327728ab23db9256d6e/stringmatch-0.14.3-cp311-cp311-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d01f74d9ce81027bab05219aabfa27a80634506498e63dfb2a2c6ad60a7ca82e",
                "md5": "3b4d6d6b408c4e10c491863c19f0bb65",
                "sha256": "e9cd7c39655cf7f8c479f4f9bca7542e7e885f780f9dc95c47b5694cf5fcff51"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp311-cp311-win32.whl",
            "has_sig": false,
            "md5_digest": "3b4d6d6b408c4e10c491863c19f0bb65",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 76454,
            "upload_time": "2023-10-02T22:51:51",
            "upload_time_iso_8601": "2023-10-02T22:51:51.301903Z",
            "url": "https://files.pythonhosted.org/packages/d0/1f/74d9ce81027bab05219aabfa27a80634506498e63dfb2a2c6ad60a7ca82e/stringmatch-0.14.3-cp311-cp311-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c83857e5c3fd444caca5292efdc2d41bfef5c6b06eb40c87ce7671b05de1f712",
                "md5": "4cd99241eb82da74e18804b4fb4498e3",
                "sha256": "342996efcace43442c547c7017ef3e8c12d5a5afd688ab3c861093c13de47dbe"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "4cd99241eb82da74e18804b4fb4498e3",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 84308,
            "upload_time": "2023-10-02T22:51:52",
            "upload_time_iso_8601": "2023-10-02T22:51:52.988896Z",
            "url": "https://files.pythonhosted.org/packages/c8/38/57e5c3fd444caca5292efdc2d41bfef5c6b06eb40c87ce7671b05de1f712/stringmatch-0.14.3-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d55b34163f7556a9a9e288e802df685932e746a65d282367969c5a0609c7f4fc",
                "md5": "76b7dba46a6855ceac03c2608024ec08",
                "sha256": "ebc08f4313844433370e1d6e33605ead1b945ec0c3201405e6822784aff554b7"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp312-cp312-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "76b7dba46a6855ceac03c2608024ec08",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 97610,
            "upload_time": "2023-10-02T22:51:54",
            "upload_time_iso_8601": "2023-10-02T22:51:54.606963Z",
            "url": "https://files.pythonhosted.org/packages/d5/5b/34163f7556a9a9e288e802df685932e746a65d282367969c5a0609c7f4fc/stringmatch-0.14.3-cp312-cp312-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7545dc02bef03314bdab4b7bca9c37f38513f1607fc2cda2abe0bce7df811511",
                "md5": "6b1fd8cba58f63483dcbf5c530f603e3",
                "sha256": "924054b0e3284654408a104674bb6267e94a81e8bcccd6e3aca1768e670c78af"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "6b1fd8cba58f63483dcbf5c530f603e3",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 172794,
            "upload_time": "2023-10-02T22:51:56",
            "upload_time_iso_8601": "2023-10-02T22:51:56.626594Z",
            "url": "https://files.pythonhosted.org/packages/75/45/dc02bef03314bdab4b7bca9c37f38513f1607fc2cda2abe0bce7df811511/stringmatch-0.14.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0b7ce4830915abb48468bf555bb3ad5bbdc93e22b81f5bf0d30508d39019f185",
                "md5": "6575dbe8a99f07ff9265ab1a90511b10",
                "sha256": "08fbfcc490004ff0499a546c3cee0a6f7e75a832163acbe7adf32b9fa1371db0"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "6575dbe8a99f07ff9265ab1a90511b10",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 173995,
            "upload_time": "2023-10-02T22:51:58",
            "upload_time_iso_8601": "2023-10-02T22:51:58.808427Z",
            "url": "https://files.pythonhosted.org/packages/0b/7c/e4830915abb48468bf555bb3ad5bbdc93e22b81f5bf0d30508d39019f185/stringmatch-0.14.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ee8f5b4de18372befcf983abfec51a3c5d4ba699d3908d754600c70daabb4a04",
                "md5": "07900d24ede6dc298fd599fc31d48f0b",
                "sha256": "337344df87c829bff8a5622ff9c275009d6562688f76baa2e8e998f56de458c3"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "07900d24ede6dc298fd599fc31d48f0b",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 178372,
            "upload_time": "2023-10-02T22:52:01",
            "upload_time_iso_8601": "2023-10-02T22:52:01.155575Z",
            "url": "https://files.pythonhosted.org/packages/ee/8f/5b4de18372befcf983abfec51a3c5d4ba699d3908d754600c70daabb4a04/stringmatch-0.14.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0ea04c31349e0def5a0fddb2bdcbffb6ea812925d3baab7d2e5842b1d2ae1072",
                "md5": "ff7425f86ad035de877ea69b579bde10",
                "sha256": "a7c04dfc9050d590a4c729a1482adbc46f84cbaf4cf1134040bf4f74caa3d054"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp312-cp312-musllinux_1_1_aarch64.whl",
            "has_sig": false,
            "md5_digest": "ff7425f86ad035de877ea69b579bde10",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 167791,
            "upload_time": "2023-10-02T22:52:02",
            "upload_time_iso_8601": "2023-10-02T22:52:02.866280Z",
            "url": "https://files.pythonhosted.org/packages/0e/a0/4c31349e0def5a0fddb2bdcbffb6ea812925d3baab7d2e5842b1d2ae1072/stringmatch-0.14.3-cp312-cp312-musllinux_1_1_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b416532210b3770c5e3a0eb84887eee405ff28f391b040f03c2c50f83fb5a6cc",
                "md5": "2aadb5a43936fec9cefcac9e77b90968",
                "sha256": "474b562dde49f0fcee0323be77aa3bbc918158047fab6af9ec80bc614af42bc4"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp312-cp312-musllinux_1_1_i686.whl",
            "has_sig": false,
            "md5_digest": "2aadb5a43936fec9cefcac9e77b90968",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 173226,
            "upload_time": "2023-10-02T22:52:04",
            "upload_time_iso_8601": "2023-10-02T22:52:04.438329Z",
            "url": "https://files.pythonhosted.org/packages/b4/16/532210b3770c5e3a0eb84887eee405ff28f391b040f03c2c50f83fb5a6cc/stringmatch-0.14.3-cp312-cp312-musllinux_1_1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b442262359cb53c293f600e0b40d33e65a0924eaec51573d41209a63fbf736af",
                "md5": "49b9dfbb3fc7a7b4d6efdfa5f99b1eeb",
                "sha256": "a7e8f5f958e32a713c93bfbe5a7afdf803c6f1b7d412cfac46d8f6025d9be37f"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp312-cp312-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "49b9dfbb3fc7a7b4d6efdfa5f99b1eeb",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 169480,
            "upload_time": "2023-10-02T22:52:05",
            "upload_time_iso_8601": "2023-10-02T22:52:05.856193Z",
            "url": "https://files.pythonhosted.org/packages/b4/42/262359cb53c293f600e0b40d33e65a0924eaec51573d41209a63fbf736af/stringmatch-0.14.3-cp312-cp312-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "030136f74a8d92d2e8b1c16cf86bf76a4d6bdf5feeff980ced5e9199be60ac41",
                "md5": "5bc25c7b18e81a93136a6ffdd8ba8103",
                "sha256": "6206c2a67ce9551be371a818aa966fe6d6f1a50261772cd9d9233d190fcddef8"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp312-cp312-win32.whl",
            "has_sig": false,
            "md5_digest": "5bc25c7b18e81a93136a6ffdd8ba8103",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 77254,
            "upload_time": "2023-10-02T22:52:07",
            "upload_time_iso_8601": "2023-10-02T22:52:07.584202Z",
            "url": "https://files.pythonhosted.org/packages/03/01/36f74a8d92d2e8b1c16cf86bf76a4d6bdf5feeff980ced5e9199be60ac41/stringmatch-0.14.3-cp312-cp312-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0a6c86cbe2f8d19a0084c87cc24eabe4914041030268d659277af6f318302cde",
                "md5": "243e849ff3aa925ebe15f43c5ff26982",
                "sha256": "83849c19ce40cad6da09383ccdfdfcc2470c101eabc1918fa27343944aed7d6d"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "243e849ff3aa925ebe15f43c5ff26982",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 84754,
            "upload_time": "2023-10-02T22:52:09",
            "upload_time_iso_8601": "2023-10-02T22:52:09.776500Z",
            "url": "https://files.pythonhosted.org/packages/0a/6c/86cbe2f8d19a0084c87cc24eabe4914041030268d659277af6f318302cde/stringmatch-0.14.3-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a69001205983f0c69156d69341592cebdf938be93bea871dd86c7abf45023b32",
                "md5": "74e41df4cad7ea2ab8d4ca1ec09aad08",
                "sha256": "b4dca8db38c0d9e6c0146e15a1ca1d23887f7b2132300e57f8585cf5bd882874"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp38-cp38-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "74e41df4cad7ea2ab8d4ca1ec09aad08",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 96302,
            "upload_time": "2023-10-02T22:52:11",
            "upload_time_iso_8601": "2023-10-02T22:52:11.032550Z",
            "url": "https://files.pythonhosted.org/packages/a6/90/01205983f0c69156d69341592cebdf938be93bea871dd86c7abf45023b32/stringmatch-0.14.3-cp38-cp38-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8459cb1f1c62f4285e2d139d3d4205732d7cf6e0367978c236ccbad8e0faa739",
                "md5": "a79bd3329871a3e7e00db9a0b3bd3721",
                "sha256": "ce70513dd551cb16f9e59912afd4be62cd2d34a711ad6460edd248af0312d2cb"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "a79bd3329871a3e7e00db9a0b3bd3721",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 165234,
            "upload_time": "2023-10-02T22:52:12",
            "upload_time_iso_8601": "2023-10-02T22:52:12.471093Z",
            "url": "https://files.pythonhosted.org/packages/84/59/cb1f1c62f4285e2d139d3d4205732d7cf6e0367978c236ccbad8e0faa739/stringmatch-0.14.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "668871a39916026ea8c06477fdaf709981021bd4f0e1a6ef7acecd83d93b0817",
                "md5": "db8c4ad3c913ee99c9e526c2afc03423",
                "sha256": "48b547325f056e6cc60e22f7501806aa9af5b1cddb3b161687f9fcb858b6e891"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "db8c4ad3c913ee99c9e526c2afc03423",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 166772,
            "upload_time": "2023-10-02T22:52:13",
            "upload_time_iso_8601": "2023-10-02T22:52:13.995343Z",
            "url": "https://files.pythonhosted.org/packages/66/88/71a39916026ea8c06477fdaf709981021bd4f0e1a6ef7acecd83d93b0817/stringmatch-0.14.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e4c9cc504d8e2c21e4381fa1e3bbf519b2dffcd5d57c01087c6b71bcefa23a61",
                "md5": "82f201066f026d8dc62853936a707923",
                "sha256": "2915f5907ea0270f195133034211e24259a1193141a9a40279978515fe1c2ae7"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "82f201066f026d8dc62853936a707923",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 168324,
            "upload_time": "2023-10-02T22:52:15",
            "upload_time_iso_8601": "2023-10-02T22:52:15.729953Z",
            "url": "https://files.pythonhosted.org/packages/e4/c9/cc504d8e2c21e4381fa1e3bbf519b2dffcd5d57c01087c6b71bcefa23a61/stringmatch-0.14.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9e977306fbf473551f823aa3c5c813106df478bf25ea758bd0d34977fda1eeb1",
                "md5": "f7a665b44a2a5735c76fb2623952d6b4",
                "sha256": "92211c22552414de49514652be386d43915dce46ad4e50d3d934d6e0c2a3abb9"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp38-cp38-musllinux_1_1_aarch64.whl",
            "has_sig": false,
            "md5_digest": "f7a665b44a2a5735c76fb2623952d6b4",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 159547,
            "upload_time": "2023-10-02T22:52:17",
            "upload_time_iso_8601": "2023-10-02T22:52:17.146448Z",
            "url": "https://files.pythonhosted.org/packages/9e/97/7306fbf473551f823aa3c5c813106df478bf25ea758bd0d34977fda1eeb1/stringmatch-0.14.3-cp38-cp38-musllinux_1_1_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d38e134020322ce2ff3334b4d3a92b1acaa2a79650f06b2d7279297617362939",
                "md5": "74ba6305bc7867ffcb7cf5a1283a36bc",
                "sha256": "dde651e684a1af589912e9ac0ac9ca195f5d5feddb9db1c70d7c09cb31ac65c7"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp38-cp38-musllinux_1_1_i686.whl",
            "has_sig": false,
            "md5_digest": "74ba6305bc7867ffcb7cf5a1283a36bc",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 165137,
            "upload_time": "2023-10-02T22:52:18",
            "upload_time_iso_8601": "2023-10-02T22:52:18.567284Z",
            "url": "https://files.pythonhosted.org/packages/d3/8e/134020322ce2ff3334b4d3a92b1acaa2a79650f06b2d7279297617362939/stringmatch-0.14.3-cp38-cp38-musllinux_1_1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a9a483651b15fe793bb28f17ac7bc129122519cfe9966b83da89a7a69e413553",
                "md5": "f1a546b46ea8f69856b23f8ddf5bb9c6",
                "sha256": "a1d17486208cf0e801f02860fd18656c874fec2b1fd91c73952b2d20e1103661"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp38-cp38-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f1a546b46ea8f69856b23f8ddf5bb9c6",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 163029,
            "upload_time": "2023-10-02T22:52:19",
            "upload_time_iso_8601": "2023-10-02T22:52:19.955111Z",
            "url": "https://files.pythonhosted.org/packages/a9/a4/83651b15fe793bb28f17ac7bc129122519cfe9966b83da89a7a69e413553/stringmatch-0.14.3-cp38-cp38-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c27935d39ac5750c2e91a6521dc156c83a151e263e9b09ecb0f84361284ff37f",
                "md5": "97381c2402ae5911d0916003b32bea36",
                "sha256": "6cc7500b4a0ad57f45340c10b5e312b004a7238b6cc881611bf88d27ab661ae6"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp38-cp38-win32.whl",
            "has_sig": false,
            "md5_digest": "97381c2402ae5911d0916003b32bea36",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 76631,
            "upload_time": "2023-10-02T22:52:21",
            "upload_time_iso_8601": "2023-10-02T22:52:21.287658Z",
            "url": "https://files.pythonhosted.org/packages/c2/79/35d39ac5750c2e91a6521dc156c83a151e263e9b09ecb0f84361284ff37f/stringmatch-0.14.3-cp38-cp38-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "92219cfcc31bb8a945bf7c112dee0cf2f0d527080803059daa3025433f90e6af",
                "md5": "a0777067305848afbbf12ff76550b124",
                "sha256": "09b427bd34dd73be63b7955807eba8997ef9d0477b13b93ee6db933cfc9a885f"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp38-cp38-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "a0777067305848afbbf12ff76550b124",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 84394,
            "upload_time": "2023-10-02T22:52:22",
            "upload_time_iso_8601": "2023-10-02T22:52:22.717946Z",
            "url": "https://files.pythonhosted.org/packages/92/21/9cfcc31bb8a945bf7c112dee0cf2f0d527080803059daa3025433f90e6af/stringmatch-0.14.3-cp38-cp38-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "70ca9da5c180ef015672108ad036e476529c8d30bc2b47a7e2632c55b9731558",
                "md5": "fc9b4d468414c7240108794c3378bc98",
                "sha256": "9a25ded35a246897fa0c6defa06d97fe8108bdb16991198f8c9a4fabca354bcb"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp39-cp39-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "fc9b4d468414c7240108794c3378bc98",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 97130,
            "upload_time": "2023-10-02T22:52:24",
            "upload_time_iso_8601": "2023-10-02T22:52:24.212725Z",
            "url": "https://files.pythonhosted.org/packages/70/ca/9da5c180ef015672108ad036e476529c8d30bc2b47a7e2632c55b9731558/stringmatch-0.14.3-cp39-cp39-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5bffc7e3f2125113f865d54b9566954a38d35a1f3e45cc4c184fb6d6471b78dc",
                "md5": "a005fed5bc642600294f21f1f492a455",
                "sha256": "1f67573a05972fc5f5d6a676820314ecb671b01a3e8900d5bc226b0e08bc2665"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "a005fed5bc642600294f21f1f492a455",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 168674,
            "upload_time": "2023-10-02T22:52:25",
            "upload_time_iso_8601": "2023-10-02T22:52:25.815605Z",
            "url": "https://files.pythonhosted.org/packages/5b/ff/c7e3f2125113f865d54b9566954a38d35a1f3e45cc4c184fb6d6471b78dc/stringmatch-0.14.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4557020c799dbfcbf449db5f41d701bda7f6240250d9f26702c1d0782609dbd2",
                "md5": "d4f5725175fadb39b5d2b2300688da97",
                "sha256": "b69ed44e60c9d5346afe03b8d83aa9ff0dea7f39ab9757ae09d3ed7cffb0c342"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d4f5725175fadb39b5d2b2300688da97",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 169347,
            "upload_time": "2023-10-02T22:52:27",
            "upload_time_iso_8601": "2023-10-02T22:52:27.159180Z",
            "url": "https://files.pythonhosted.org/packages/45/57/020c799dbfcbf449db5f41d701bda7f6240250d9f26702c1d0782609dbd2/stringmatch-0.14.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1da32b457ab995e3b657364feb631265bc9c72f7ab07c9f1983906f9700bdfb7",
                "md5": "10d1f4733bb0c8a708bda2dbf2f012e8",
                "sha256": "b90d5bf46d24f54fd2e0c2c1963667cc3d3b1740a0930be5f39d5378d8223f51"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "10d1f4733bb0c8a708bda2dbf2f012e8",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 171203,
            "upload_time": "2023-10-02T22:52:28",
            "upload_time_iso_8601": "2023-10-02T22:52:28.550392Z",
            "url": "https://files.pythonhosted.org/packages/1d/a3/2b457ab995e3b657364feb631265bc9c72f7ab07c9f1983906f9700bdfb7/stringmatch-0.14.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "131aec76ff375dd16513eaca9aaf1735d443816dbbc71884c7b736fc244e02be",
                "md5": "5afbf924a8a031d579d00f56f04c3449",
                "sha256": "3d224afaf40bc48c803502c38a7653cc231bc676d38fb1077e79c582eeceb6a9"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp39-cp39-musllinux_1_1_aarch64.whl",
            "has_sig": false,
            "md5_digest": "5afbf924a8a031d579d00f56f04c3449",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 163474,
            "upload_time": "2023-10-02T22:52:30",
            "upload_time_iso_8601": "2023-10-02T22:52:30.167705Z",
            "url": "https://files.pythonhosted.org/packages/13/1a/ec76ff375dd16513eaca9aaf1735d443816dbbc71884c7b736fc244e02be/stringmatch-0.14.3-cp39-cp39-musllinux_1_1_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5d1c617c1e21d89ebf805bc0527110bfb997e2afbd6ec499e98908e801f335e8",
                "md5": "24670c59bfaa24debf5da6f8ca54064f",
                "sha256": "01444fe68a6e3564bd563b711830e69507b144cd7a2f129ae64df99ef5e43480"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp39-cp39-musllinux_1_1_i686.whl",
            "has_sig": false,
            "md5_digest": "24670c59bfaa24debf5da6f8ca54064f",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 166561,
            "upload_time": "2023-10-02T22:52:31",
            "upload_time_iso_8601": "2023-10-02T22:52:31.915138Z",
            "url": "https://files.pythonhosted.org/packages/5d/1c/617c1e21d89ebf805bc0527110bfb997e2afbd6ec499e98908e801f335e8/stringmatch-0.14.3-cp39-cp39-musllinux_1_1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f33d84df51ae069c0307af8524b7ea3bce13a5327057e099784192fc6836c6a4",
                "md5": "37d1f62d03165b4a9634539bfc80dbbd",
                "sha256": "b7d0b593ccfcd56d87297b493091bf65531904949ecfdd1f91f24fb58463d481"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp39-cp39-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "37d1f62d03165b4a9634539bfc80dbbd",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 164101,
            "upload_time": "2023-10-02T22:52:33",
            "upload_time_iso_8601": "2023-10-02T22:52:33.456554Z",
            "url": "https://files.pythonhosted.org/packages/f3/3d/84df51ae069c0307af8524b7ea3bce13a5327057e099784192fc6836c6a4/stringmatch-0.14.3-cp39-cp39-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0292a4e17006bf6c6dfc82a655eeb564bba1cf37e2836f7c80fe67eb349784ee",
                "md5": "5a63a892b09c727dd6380bd3858cdd0d",
                "sha256": "15ce13962d5e7b30c673f724e384514588fd2dae3cbed7ec2bfd5ae608456350"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp39-cp39-win32.whl",
            "has_sig": false,
            "md5_digest": "5a63a892b09c727dd6380bd3858cdd0d",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 76602,
            "upload_time": "2023-10-02T22:52:34",
            "upload_time_iso_8601": "2023-10-02T22:52:34.816866Z",
            "url": "https://files.pythonhosted.org/packages/02/92/a4e17006bf6c6dfc82a655eeb564bba1cf37e2836f7c80fe67eb349784ee/stringmatch-0.14.3-cp39-cp39-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c1745ea86e2975a507493619f741146f705b0a8e1a4db1a2b1cf3c53326d01a4",
                "md5": "945923e5b49d9b27282fba20522447ee",
                "sha256": "ab382444b336146ca1a59af2538183d811c7c1a43ec686c7d4f2f131b48516df"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "945923e5b49d9b27282fba20522447ee",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 84498,
            "upload_time": "2023-10-02T22:52:35",
            "upload_time_iso_8601": "2023-10-02T22:52:35.994993Z",
            "url": "https://files.pythonhosted.org/packages/c1/74/5ea86e2975a507493619f741146f705b0a8e1a4db1a2b1cf3c53326d01a4/stringmatch-0.14.3-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0f3b32c88a20184f2cf0b57db7571bd564f7044c43b2b3652b5ca06db778e628",
                "md5": "534454a03a3d64b98c9b3101013283e4",
                "sha256": "45bfa06d54e24077c8811dc92d49239075e9f738aba4633efd4f71ac412c773b"
            },
            "downloads": -1,
            "filename": "stringmatch-0.14.3.tar.gz",
            "has_sig": false,
            "md5_digest": "534454a03a3d64b98c9b3101013283e4",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 18331,
            "upload_time": "2023-10-02T22:52:37",
            "upload_time_iso_8601": "2023-10-02T22:52:37.613253Z",
            "url": "https://files.pythonhosted.org/packages/0f/3b/32c88a20184f2cf0b57db7571bd564f7044c43b2b3652b5ca06db778e628/stringmatch-0.14.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-10-02 22:52:37",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "atomflunder",
    "github_project": "stringmatch",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "lcname": "stringmatch"
}
        
Elapsed time: 0.12496s