It's going to be quite a challenge to compose this on mobile, but I hope it comes out correctly. One draft already got trashed by Android so I had to type this again (on mobile again as I'm not available yet on desktop)
Hello NotATether,
I tried to test your software, but I had some problems. I will give you a few suggestions:
1- I think you should make an ANN thread for it.
2- This link is broken (documentation)
https://bip39validator.readthedocs.io/3 - I was not able to install it, saw this message:
pip install bip39validator
ERROR: Could not find a version that satisfies the requirement bip39validator (from versions: none)
ERROR: No matching distribution found for bip39validator
First of all thank you for taking the time to try to run this, I really appreciate it especially since it's difficult to find collaborators for small projects.
Yes there are a ton of things which are currently broken, I need to get around testing the library sometime tonight.
Testing has been constantly delayed by continuous power outages etc. so I'm in the final stages of leasing a dedicated server for staging my development on so I don't have to reopen my applications each time.
I have not pushed bip39validator to PyPI or Readthedocs yet, The Readthedocs listing I hope I can do that tonight, as for the PyPI release I am waiting until I publish a stable release before I publish it. I don't want to expose development versions of libraries to PyPI, because people expect them to just work. For now the only way to get the source is to download the source code from the Releases page on Github, or by cloning the release-1.0.0rc1 branch (the other branches are subject to breaking changes).
Then you'd run the main.py script with arguments as I'm not sure if my setup.py script from setuptools works yet. Do not install it using pip, it won't work until I push it to PyPI.
There was no clear message about what are the requirements which are not installed. Personally, I don't like to install too many python libraries because they can mess up with my environments. However, I tried to create in both my testing env and my base env, same error.
bip39validator only has three dependencies: jellyfish to compute Levenshtein distances, requests to support downloading wordlists from URLs, and rich for formatting console output. The list of dependencies can also be viewed in the requirements.txt file (it's meant to be read by pip to automatically install dependencies).
I always test libraries in virtualvenvs and not on the base python installation because the setup.py logic might be broken and need tobbe debugged. No one wants to deal with a broken library that won't install in their main env, when they can simply delete a virtualenv, create a new one and start over.
I think Python lacks a good way to share software. I would be nice if you could create a standalone version of your program, or even an online web version (you just send your wordlist.txt file to a server and it returns your python output). I don't know if it can be done, but i think it can be done with Ruby.
Setuptools can make a standalone program out of python programs, if you give it the file that's supposed to represent the main script. Then you can just run it like a shell command. I just haven't got around implementing that yet.
Maybe I'll develop a GUI version as well, which primarily benefits Windows users who don't want to run programs from Command Prompt. But no more features will be added to this version, so that will have to wait until 1.1.0.
I could also add self-hosting support using Django so people can subit wordlists to a server that does the validation for them, that'll allow me to advertise this to wordlist drafters who don't want to install Python. It will have to wait until the next major version though, because of it's complexity. Thank you for this suggestion, @bitmover (
and I even figured this out only after writing this a second time! Some things stick to your head much later.)
For now though, I will host a Jupyter notebook out of my own pocket so at least you guys can experience a demo version without installing it.
I put several man-hours in this project already so it's too late to change languages and frameworks.
You are also supposing that people who create lists have anaconda installed, which is a 400mb software and not newbie-friendly. In my group of the 10 people who created the portuguese wordlist, only I (afaik) use python.
There are also some libraries which allow you to create a standalone version of your code.However they do not work very well, AFAIK. Once I created one of those standalones which had nearly 300mb (basically all anaconda package)
This project does not use Anaconda and you don't need it to install this. It only requires the three dependencies I mentioned above, jellyfish, requests and rich.
Urgent TODO list:
- Finish setup.py, so people can at least install it sanely.
- Run main.py and make sure there are no basic runtime errors
-
Push documentation to Readthedocs Done, please go to
https://bip39validator.readthedocs.io (though it's missing all the docstrings, I need to fix that)
- Create unit tests and test wordlists to find bugs in edge cases
Then we can talk about releasing rc2.
I'm not making another post just to announce this, but you all can view progress of this at
https://github.com/ZenulAbidin/bip39validator/projects/1and
https://github.com/ZenulAbidin/bip39validator/milestone/1(Github project and milestone dashboards respectively)
There are only three bugs/enhancements I need to attend to before I mark another release candidate.