This is a major release with a number of new features and lots of tidying up. It has been released in time for PyConUK, where we will be sprinting on recipy and hopefully developing even more new features and fixing more bugs.
The major new features are:
- A hash is now computed for all input and output files, and this is used for searching for files. Practically, this means that you can create
graph.png, send it to a colleague, and even if they send back a file called
RobinsGraph.pngyou can still look up how it was created, as the hash will be the same even if the filename isn't.
- Hashes are computed by default, rather than hashing having to be switched on in the config file (Note: this is a change from the pre-release versions, as hashing is now working effectively).
recipy searchhas gained a new option:
-p) which forces searching based on the file and path rather than the hash.
- There is now a beta-quality
recipy.openfunction that can be used instead of Python's standard
openfunction to log files that are opened. (The reason why the standard Python
opencommand can't be wrapped by recipy is a topic for a blog post, I think). There are some known issues with this function, but it should work for many use cases.
- Versions of the libraries that are patched by recipy are now stored with the run
- There is now a
recipy annotatecommand that can be used to add notes to a 'recipy run'.
- There is a new tab in the GUI that lists all of modules and functions that are patched by this version of recipy.
- The terminal output from the
recipycommand is now far more easy to read, as it uses different font styles for headers and the actual content
- The GUI has been updated to handle and display all of the new information we're storing.
- Lots of bugs have been fixed (far more than listed in the issues below, as not all were recorded officially via issues) and the
recipy searchcommand is far more robust now.
Huge thanks must also go to mikej888 who has been working on recipy through the Software Sustainability Institute and has reported many bugs and give lots of ideas for improvements. He is currently working on a test suite that should make the whole package far more robust.
- Store hash for input/output files #25
- Hook into standard
openetc in pure python #44
- Store data diffs #107
- Format terminal output nicely #102
- How should GUI display hashes? #100
- Store versions of libraries used #87
- Use colours in terminal output of CLI #86
- Add 'annotate' functionality #69
- Output to JSON with no results found fails with IndexError #142
- recipy command fails on Windows due to blessings use #141
- Issues with searching by ID #124
- latest_run throws an error if there are no runs in the database #118
- tinydb error #92
- Recipy not able to find a file #89
- Add blessings to setup.py #140
- Diffs can't be applied as patches because no filename info is included #133
- matplotlib isn't a dependency #115
- TypeError: 'Query' object is not callable when searching for runs in GUI #112
- Split the GUI into a separate PyPI package? #117
- Use with R via doit? #114
- Source code not PEP-8 #110
- Python 3 compatibility: deprecated modules #109
Merged pull requests:
- adds check for $EDITOR for the annotate command #97 (cash)
- updated readme to be consistent about location of recipy console script #96 (cash)
- add test_requirements.txt for installing unit test dependencies #94 (cash)
- adds tinydb-serialization to requirements.txt for manually installing deps #93 (cash)
This is a very small release to fix recipy to work with the latest version of TinyDB (v3.0.0).
- TinyDB import error #92
Minor bug-fix release.
- Patching of Pillow does not work due to #52, which caused matplotlib imports to fail. Fixed by removing Pillow support for the moment
This is the first new release of recipy since its debut at EuroSciPy 2015. Sorry for the delay in getting this out, life has been rather chaotic for all of the members of the recipy team. We want to say a huge thank you to all of the people who have submitted issues and pull requests: we couldn't have done this without you!
Full details are below, but the major new features include logging command-line arguments, exporting runs to JSON, adding more configuration options, and adding more commands to the GUI. A number of bugs have also been fixed.
- Add export option to the GUI #68
- Add 'latest' option to CLI #59
- Make DB path configurable #57
- Configuration option not to track input or output files #56
- Add search by id #49
- Configuration file should be ~/.recipy/recipyrc #46
- Add 'quiet' option to config file to stop display of 'recipy run inserted xyz' message #43
- Add export of individual runs, or the whole database #50
- Log command-line arguments #47
- Loading a numpy file gives error message, only after recipy import. #83
- Config file reading doesn't work as specified in the docs #64
- recipyCommon is not a package #62
- GUI port number consistency #80
- README.md example is inconsistent #78
- Make UTC explicit in interfaces #75
- Tidy up inputs/outputs lists when there are none of them #74
- Add release notes #67
- Make proper documentation about config file options #60
- GUI Internal Server Error when viewing run with no git metadata #42
- keeping track of in- and outfile versions #41
- Logging of parameters #40
- Convert to use TinyDB #39
- Add 'command' functionality to recipy-cmd #37
- Create text index on all fields in database #35
- Upload to PyPI #23
- Add recipy-cmd function to create DB and set text index #10
Merged pull requests:
- GUI port number #81 (sjdenny)
- Add python highlighting in the README.md #79 (musically-ut)
- fixed typo in modulename of PatchPillow #73 (MichielCottaar)
- Command args #71 (oew1v07)
- Allow running recipy as a module (python -m recipy) #66 (kynan)
- Nibabel support #51 (MichielCottaar)
This is the first public release of recipy. The changes listed below are compared to early pre-release versions.
- Not all pandas output methods are wrapped #11
- Make compatible with Python 3 (and still with Python 2) #34
- Add configuration file support #33
- Add working setup.py #31
- Deal with git status of multiple files #29
- Use PyMongo v3? #28
- Add fuzzy searching option to recipy-cmd #27
- Make recipy-cmd work to search for full paths when given file in current directory #26
- Store diffs between script as executed and latest git commit #24
- Add hooks for scikit-learn #16
- Add hooks for scikit-image #15
- Add hooks for scikit-image #14
- Add hooks for PIL and Pillow #13
- Get more details on the environment and store in the DB #9
- Add a way to share entries from the DB #8
- Add interfaces from more languages and other tools #7
- Keep track of git commit version of script #6
- Add automatic installation for various OS's #5
- Add proper setup.py file #4
- Add hooks for more commonly-used Python modules #3
- Store full paths to files #2
- Make recipy-cmd search with fuzzy matches #1