frozenpandaman / s3s

Successor to splatnet2statink. Takes battle data from the SplatNet 3 app and uploads it to stat.ink!
https://github.com/frozenpandaman/s3s/wiki
GNU General Public License v3.0
403 stars 72 forks source link

Eliminate mmh3 library dependencies #77

Closed niyari closed 1 year ago

niyari commented 1 year ago

To use mmh3 on Windows, the C++ code must be built. As an additional step, a build tool must also be installed. Generally, Windows does not come with build tools preinstalled. For this reason, attempts to install the mmh3 library from pip will fail. This library is used less frequently than play data and is used to export data to other tools. replacing mmh3 with an alternative code would have little impact.

(So I wrote the code to add it to utils.py, but I have no data to verify!)

frozenpandaman commented 1 year ago

Thank you for the report! I saw your tweet as well, just haven't had time to reply as I will be traveling through this weekend. Do you know why this module requires that on Windows? On Mac it can be installed easily with pip with no problems.

Unless there's a way around this, I can take it out of requirements.txt and make it so users have to manually install this module.

frozenpandaman commented 1 year ago

Maybe pymmh3 could be used instead? https://github.com/wc-duck/pymmh3

Would you mind trying it out for me? Perhaps you can run pip install pymmh3 and then change the import statement to import pymmh3 as mmh3, and let me know how it works on Windows.

niyari commented 1 year ago

Maybe pymmh3 could be used instead? https://github.com/wc-duck/pymmh3

Probably not a problem. The environment that can be tested immediately has the build tool already installed, so we have not verified it exactly.

And here is the pre-test code. https://gist.github.com/niyari/52169f00abe6445b1f6ea5950c81b16d

frozenpandaman commented 1 year ago

Makes sense, thank you! Rather than use our own implementation of the hashing function (lengthy), I think the pure Python implementation in the pymmh3 module should work well. I'll change the project from using mmh3 to pymmh3, which should avoid requiring C++ build tools (!) to be installed for some users.

frozenpandaman commented 1 year ago

Fixed/mitigated in c6e9694. ありがとう!

niyari commented 1 year ago

Additional testing confirmed no C++ build tools dependencies.