-
Notifications
You must be signed in to change notification settings - Fork 286
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add itertools recipes to more-itertools #8
Comments
And let's have tests for them. Even just sanity-check, do-they-run-without-crashing tests. iterutils exists, but it has no tests. |
Started hacking on this. Progress is here: https://github.com/Lonnen/more-itertools/compare/add-itertools-recipes As functions get tests I add them to |
For the random functions, you can just call |
Or you could mock things into |
Looks great so far! I'm so glad you dove into this. A couple thoughts:
Tests look great—even more comprehensive than I envisioned. |
What about mocking random? I've tried using seed, but the same seed produces different results in py2* and py3* |
Sure. Mock away. |
After a little investigation, Thought about this for a while, and decided against mocking. Instead I avoid trying to test whether the results are truly random (and the associated philosophical rabbit hole), and instead wrote some tests to check that the results exhibit some expected properties. Some of these tests involve setting up and testing for highly likely events; the odds of which I've calculated and left in comments for now. I also tend to set the random seed in those examples, just to make sure things are not going to heisenfail. |
Sorry for the accidental close. Errant mouse click. The branch is updated, please take a look and let me know if you'd like more / less coverage somewhere, or if I went straight off the rails. I haven't addressed pep-257 and there are a few lines that aren't quite pep-8 compliant. I'll fix those next. |
Tests look great at first glance. I'd like to keep the recipes in a recipes.py, so I'd also like to do the tests in parallel, in a test_recipes.py. (We can make a tests folder.) And I'll want to rename Random_productTests to be CamelCasier. RandomProductTests is fine; people are smart enough to figure out what that means. Really looking forward to merging this in. :-) |
Ok. Check it out now. For the random docstring examples I use |
* Make the new and old routines peers, and import them both into __init__. * PEP 8 * Bump version to 2.1. * Add recipes to documentation.
http://docs.python.org/library/itertools.html#recipes has generically useful tools. Let's include them here.
The text was updated successfully, but these errors were encountered: