This is a broad overview of the changes that have been made over the lifespan of this library.
- Dropped support for Python 3.9
- Add support for Python 3.14
- Update wheels & workflows
- Added support for Python 3.13
- Dropped support for Python 3.8
- Add Python 3.12 support
- Upgrade to rapidfuzz Version 3.x
- Add Python 3.11 support
- Added support for Python 3.8
- Support for 3.7 and below is unlikely since we make some use of the walrus operator
- 3.6 and below are EoL anyways and 3.7 is due to follow in 2023
- Removed Levenshtein as a dependency and replaced it with RapidFuzz
- Under the hood Levenshtein was basically only calling RapidFuzz functions anyways, so we save ourselves the overhead
- As a result stringmatch is now a tiny bit faster
- Custom Scorers now need to return a float between 0 and 100, instead of 0 and 1
- Removed Ratio Keyword Arguments Class
- Constructing the Ratio Class just manually now
- This should be a tiny bit faster, but not noticeable by any means
- Adding docs
- Added examples in docstrings
- Removed the specific rapidfuzz version from the list of installed packages
- The error encountered earlier seemed to have gone away
- Added mypy to the required packages, fixed installation
- Bumped Version to make installation process easier
- Fixed Custom Scorers being broken accidentally
- Using mypyc to compile (again)
- Various smaller changes to accomodate mypyc
- Roughly doubles speed of library
- Holding rapidfuzz to 2.0.15 for now, 2.1.0 and above will break the library.
- This is because editops are not implemented (yet), hopefully this will change soon.
- Improved performance further (more than 2x improvement)
- partial_ratio now returns 0 instead of an error when a non-string is present
- Renamed _Scorer class to BaseScorer
- Improved performance slightly
- Added py.typed file
- Added some examples in a new examples directory
- This includes a benchmark with thefuzz
- Set ignore_case kwarg by default to True
- Renamed only_letters kwarg to alphanumeric to better reflect what it actually does
- Adjusted sorting algorithm for functions that return multiple results
- Should yield a bit better results when ratios are tied
- Adjusted partial matching a tiny bit more
- Adjusted tests accordingly
- Preventing raising errors when passing in non-strings
- Just returning 0 in these cases
- Added scorer subclass example to Readme
- Adjusted partial matching a tiny bit more
- Added tests to verify
- Added type hints for kwargs
- Added some more tests
- Cleaned up some internal code
- Fixed indentation of score append in partial ratio function
- Fixed kwargs not being passed correctly by get_best_match function.
- Adjusted partial matching a tiny bit more
- Adjusted partial matching a tiny bit more
- Improved partial matching a lot
- Should now yield way better results
- Updated tests and docs to reflect the changes made
- Fixed score argument not being properly recognised
- You now need to pass in special keyword only arguments when initialising the class, not the functions
- This eliminates a lot of re-used code, and is more simple to use
- Deleted args module as a result
- Updated tests and docs to reflect those changes
- Added partial ratio function
- Added include_partial keyword to most matching functions
- These will both search for partial substrings within the strings for better results
- Updated docs to reflect those changes
- Added test cases to make sure everything works as intended
- Added numbers to only_letters keyword
- Might re-name that in the future
- Added args module for cleanup
- Moved scorer into its own module
- Clarified Readme section about scorers
- Reverting v0.7.0 changes with mypyc
- This was causing too many issues, sorry
- Fixed installation for pip
- Added link to Readme
- Added verbose flag
- Using mypyc now
- Should bring a significant speed boost
- Added mypy to requirements
- Added build-system section to pyproject.toml
- Added typehints for kwargs in preparation for using mypyc (maybe)
- Fixed kwargs not being passed from the ratio_list function
- Added tests to make sure it works now
- Added coverage workflow and badges
- Updated and clarified readme in some sections, added new examples
- Added tests to make sure these examples are correct
- Letting tests fail now when under 100% code coverage
- Fixed encoding in setup.py file
- Updated templates
- Fixed building of library including old unused files
- Fixed keyword arguments not being recognised still
- Fixed ranking of matches with keyword arguments
- Added distance functions
- These are: distance and distance_list
- Added new Class _Scorer with LevenshteinScorer, JaroScorer and JaroWinklerScorer subclasses
- You need to pass these in now instead of a string when initialising Match() and Ratio() with different scorers
- Removed scorer argument from functions, added it into
__init__in both Match() and Ratio() - Renamed __with_score functions to __with_ratio to be consistent with naming
- This affects the three functions added in v0.4.0
- Removed Exceptions
- Returning a score of 0 instead of raising EmptySearchException
- Using "levenshtein" as default instead of raising InvalidScorerException
- Setting no limit instead of raising InvalidLimitException, if a limit less than 1 is set
- Updated docstrings to reflect these changes
- Updated tests to reflect these changes
- Added proper Python Versions to setup classifiers
- Added match_with_score, get_best_match_with_score and get_best_matches_with_score functions
- Added tests for those functions
- Updated documentation a bit
- Fixed bug where matches are ordered by the default scorer and not the one chosen
- Made library installable via pip
- Rebranded library from searchlib to stringmatch
- Made library public and installable via git
- Added multiple scorers
- Added new kwargs to Match functions
- Added tests for those
- Improved various functions
- Added exception type
- Some documentation improvements
- Initial commit
- Added basic ratio, string manipulation and matching functions
- Added tests for those
- Added some custom exceptions