diff --git a/release/README.md b/release/README.md index 3a0f4620a780d241b9f6ccabe21fff6f18710cb4..1d187774374803749e6b4239e69e0aac7ee46f8a 100644 --- a/release/README.md +++ b/release/README.md @@ -1,3 +1,43 @@ + +Generate changelog +------------------ + +To generate a changelog that shows changes (tags and commits) in all packages since last release, please run the following script: + + $ python generate_changelog.py <Gitlab Private Access Token> > changelog_since_last_release.txt + +The script will go through all packages listed in https://gitlab.idiap.ch/bob/bob.nightlies/blob/master/order.txt file. The date of the latest tag of `bob` package, will be taken as the last release date. All changes including tags and commits will be logged for each package. The resulted log file should be manually updated, so the changes descriptions become more concise. Once updated, the changelog should be put in https://gitlab.idiap.ch/bob/bob/tags. + +Manually update changelog +------------------------- + +The changelog since the last release can be found in `changelog_since_last_release.txt`. The structure is the following: + + * package name + * tag1 name (date of the tag). + * tag description. Each line of the tag description starts with `*` character. + - commits (from earliest to latest). Each line of the commit starts with `-` character. + * tag2 name (date of the tag). + * tag description. Each line of the tag description starts with `*` character. + - commits (from earliest to latest). Each line of the commit starts with `-` character. + * patch + - leftover not-tagged commits (from earliest to latest) + +To manually update the changelog, follow these steps: + + 1. For each tag, summarize the commits into several descriptive lines. These summaries become + tag descriptions and they should extend/update the existing tag description. Therefore, each line + of the summary should also start with `*` character like the tag descriptions. + 2. The last tag name is called `patch`. This indicates that a patch version of this package will + be automatically updated during the next tag/release. You can change `patch` to `minor` or `major`, + and the package will be then tagged/released with either minor or major version bump. + 3. Once all commits were changed to corresponding tag descriptions (no more lines start with `-` characters), + this package is ready for release and you can continue to another package in the changelog. + + +Release Bob +----------- + Here are some instructions to do a massive Bob release and scripts to help you release Bob: @@ -141,8 +181,7 @@ Run the pipeline for master of bob.conda once and fix till every conda package is released. -Release `bob`. Here is some code to get the changelog generated automatically -for bob: +Release `bob`. import gitlab @@ -189,51 +228,3 @@ for bob: if max_version != version: print(pkg, versions) -Generate the changelog: - - import gitlab - import distutils.version - import datetime - from collections import OrderedDict - gl = gitlab.Gitlab.from_config() - bob_group = gl.groups.search('bob')[0] - path = '.../git/bobs/bob/requirements.txt' - pkgs = OrderedDict() - for line in open(path): - pkg, version = line.split('==') - pkgs[pkg.strip()] = version.strip() - - # release date of last Bob release + 1 day - last_release = datetime.datetime(2017, 2, 10) - - def get_datetime_from_tag(tag): - return datetime.datetime.strptime(tag.commit.committed_date[:-6], '%Y-%m-%dT%H:%M:%S.%f') - - def sort_tags(tags): - return sorted(tags, key=lambda x: get_datetime_from_tag(x)) - - def get_tag_changelog(tag): - try: - return tag.release.description - except Exception: - return '' - - for pkg, version in pkgs.items(): - projects = bob_group.projects.search(pkg) - project = [p for p in projects if p.name == pkg][0] - tags = project.tags.list(all=True) - # sort tags by date - tags = filter(lambda x: get_datetime_from_tag(x) >= last_release, tags) - tags = sort_tags(tags) - print('* ' + pkg) - for tag in tags: - print(' * ' + tag.name) - for line in get_tag_changelog(tag).split('\r\n'): - line = line.strip() - line = line.replace('!', pkg+'!') - line = line.replace('#', pkg+'#') - if not line: - continue - print(' '*5 + '* ' + line) - -Put this awesome changelog in https://gitlab.idiap.ch/bob/bob/tags diff --git a/release/changelog_environment.yml b/release/changelog_environment.yml new file mode 100644 index 0000000000000000000000000000000000000000..b38166d5e6267da6916006b0d6a7d97e63638730 --- /dev/null +++ b/release/changelog_environment.yml @@ -0,0 +1,8 @@ +# run: conda env create --file environment.yml +name: changelog +dependencies: +- python>=3.5 +- docopt +- pip +- pip: + - python-gitlab diff --git a/release/changelog_since_last_release.txt b/release/changelog_since_last_release.txt new file mode 100644 index 0000000000000000000000000000000000000000..41e7a7994295e5b892725c8c6b2a2a45597fa29f --- /dev/null +++ b/release/changelog_since_last_release.txt @@ -0,0 +1,893 @@ +* bob.buildout + * v2.1.3 (Sep 22, 2017 10:37) + * v2.1.4 (Sep 22, 2017 11:34) + * v2.1.5 (Sep 22, 2017 13:58) + * no changes + * v2.1.6 (Feb 27, 2018 16:29) + * Enables built-in conda packaging + * Provides user/development guides + * Provides an alternative for gdb (based on lldb) for MacOS + - [docs] remove latex stuff + - Test + - Test + - Test + - test + - Add after_script to the build stage + - Get the install script from the clean branch too + - Update CI + - Update conda recipe + - remove bob-devel since that depends on a stable version of this + - Implement C/C++ debugging with lldb + - Try a fix for issue 24 + - Bump version to avoid using stable version during beta builds + - Add a ref to the package name + - Add missing whitespace + - Create proper documentation for this project (closes bob.buildout#25) + - Doc improvements + * patch +* bob.extension + * patch +* bob.blitz + * patch + - Migrate to conda based CI +* bob.core + * patch + - Migrate to conda based CI + - Fix test values (closes bob.core#8) + - Use log modules from bob.extension + - improve tests +* bob.io.base + * patch + - Migrate to conda based CI +* bob.math + * patch + - Migrate to conda based CI + - Add blas features + - trust numpy in finding blas/lapack. Fixes bob.math#14 +* bob.measure + * patch + - Fixed curve to show values between [0,1] + - Fixed issue with FAR and FRR values being exactly 1 or 0, respectively + - Update apply_threshold.py + - Provide a test case for negative thresholds + - remove extra import + - Added a warning before returning NaN + - Changed test case for different corner cases + - Add some obvious test cases + - Correct the threshold calculation implementation in far_threshold and… + - rename check_index to index + - Add more tests + - implement the tests correctly + - Never return NaNs for {far,frr}_threshold functions anymore + - Change the version too + - Compute roc using roc_for_far internally + - Iterate only once in the sorted negatives to keep the implementation in O(N) + - Use epsilon (2^-52) instead of 1e-12 + - use nexttoward instead of epsilon since epsilon is too small sometimes + - use C nexttoward + - Migrate to conda based CI + - use std::nextafter instead of nexttoward + - Add an option to capture the output in a log file + - Add the expected output file for tests + - remove left-over docs + - recompute far values in roc_for_far + - Fix the test values +* bob.io.image + * patch + - Quick fix for the issue bob.io.image#29. I still don't know why this artefact is not visible. + - Migrate to conda based CI + - Add tests to detect the problem reported on this issue + - Allow garbage at the end of PNM iaimages not affect readout (closes bob.io.image#30) +* bob.db.base + * patch +* bob.io.video + * patch + - Migrate to conda based CI + - adjust test values to openh264 + - increase acceptable noise + - adjust test values + - Revamped code for ffmpeg-3.1+ baseline + - Fixed readout; No more warnings + - Fixes bob.io.video#10 +* bob.io.matlab + * patch + - Migrate to conda based CI +* bob.io.audio + * patch + - Migrate to conda based CI +* bob.sp + * patch + - Migrate to conda based CI +* bob.ap + * patch + - Migrate to conda based CI +* bob.ip.base + * patch + - Improved compatibility for non-C++-11 compilers + - Migrate to conda based CI + - [setup] Fix matplotlib requirement +* bob.ip.color + * patch + - Migrate to conda based CI +* bob.ip.draw + * patch + - Migrate to conda based CI +* bob.ip.gabor + * patch + - Migrate to conda based CI +* bob.learn.activation + * patch + - Migrate to conda based CI +* bob.learn.libsvm + * patch + - Migrate to conda based CI + - increase tolerance + - Makes sure we can load/save files with arbitrary extensions +* bob.learn.linear + * patch + - Migrate to conda based CI +* bob.learn.mlp + * patch + - Migrate to conda based CI +* bob.learn.boosting + * patch + - Migrate to conda based CI +* bob.db.iris + * patch + - Migrate to conda based CI + - remove unnecessary command +* bob.learn.em + * patch + - Migrate to conda based CI + - Add test time dependencies + - temporary remove unused ref 5. please see bob.learn.em#27 + - remove unused references + - remove unused references + - Added reference [Bishop1999] issue bob.learn.em#27 + - remove ununsed references + - Revert "remove unused references" + - Revert "Added reference [Bishop1999] issue bob.learn.em#27" +* bob.db.wine + * patch + - Migrate to conda based CI +* bob.db.mnist + * patch + - Migrate to conda based CI + - Download metadata during build +* bob.db.atnt + * patch + - Migrate to conda based CI + - remove --missing option +* bob.ip.facedetect + * patch + - Migrate to conda based CI +* bob.ip.optflow.hornschunck + * patch + - Migrate to conda based CI +* bob.ip.optflow.liu + * patch +* bob.ip.flandmark + * patch + - Migrate to conda based CI +* bob + * patch + - Initial commit +* gridtk + * v1.5.0 (Nov 20, 2017 09:07) + * Implemented the option `--repeat <n>` in jman submit. Now we can submit the same job `n` times in a serial manner -- Merge gridtk!10 + * Appended the idiap gpu short queue in our queue list + * Improved python 3 compatibility (Merge gridtk!7) + * Created the `jgen` tool (https://www.idiap.ch/software/bob/docs/bob/gridtk/master/generate.html) -- Merge gridtk!8 + - Add sgpu to the list of the queues + - Submit extactly the same job several times + - Removed overwriting job ID when stopping jobs + * patch + - Add an option to make the aggregate output unique + - keep the whitespace + - Add tests for jgen --unique-aggregate + - make sure log_dir is directory is a directory + - improve the error message + - Migrate to conda based CI + - SGE scripts cannot be tested on the CI + - Fix sort errors that happen in Python 3 + - Add a test for when groupby is used in templates + - Make the tests less relaxed +* bob.ip.qualitymeasure + * patch + - added ci config file + - added conda yaml config + - updated README + - removed ref to bootstrapbuildout + - updated doc conf + - removed docopt requirement + - small fixes + - Added an optional reference image to Galbally IQM +* bob.ip.skincolorfilter + * patch + - Migrate to conda based CI +* bob.ip.facelandmarks + * patch + - Migrate to conda based CI +* bob.ip.dlib + * v1.0.2 (Oct 19, 2017 10:18) + * Fixed issue with possible negative coordinates + - Fix for the empty image issue - when image is an array of zeros + - Fixed possible negative coordinates in face bbx retirned by FaceDetector + - Added the unit test for negative coordinates case + * patch + - Worked in the documentation + - [conda] Added conda recipe + - [conda] Trying to fix dlib dependency + - [conda] Added opencv as dependency + - update tests to dlib 19.7 + - adding develop config + - fixing documentation to dlib 19.7 + - [conda] Removed Bob deps from requirements/run and added Jinja variables for opencv and dlib + - Fix conda recipe + - Bump into beta version (closes bob.ip.dlib#4) + - Fixed the index.rst to match joint docs requirements + - Removed some spaces in index.rst + - [conda] Downgrading to the version 1.0.3b0 in order to fix conda issue. +* bob.db.arface + * v2.1.4 (Sep 22, 2017 14:17) + * patch + - Migrate to conda based CI +* bob.db.asvspoof + * v1.0.3 (Sep 22, 2017 14:20) + * patch + - added conda recipe and removed redundant debug_asvspoof2017 script +* bob.db.asvspoof2017 + * v1.0.3 (Sep 22, 2017 14:20) + * patch + - added conda recipe and removed redundant debug_asvspoof2017 script +* bob.db.atvskeystroke + * v2.1.5 (Sep 22, 2017 14:21) + * patch + - Port to new CI + - Fix build deps + - Add a ref to the package name + - Add missing whitespace +* bob.db.avspoof + * patch +* bob.db.banca + * v2.1.5 (Sep 22, 2017 14:22) + * patch + - Migrate to conda based CI +* bob.db.biosecure + * v2.1.5 (Sep 22, 2017 14:22) + * patch + - Migrate to conda based CI +* bob.db.biosecurid.face + * v2.1.8 (Sep 22, 2017 14:22) + * patch + - Migrate to conda based CI + - Update index.rst +* bob.db.casme2 + * v2.1.5 (Sep 22, 2017 14:23) + * patch + - Migrate to conda based CI +* bob.db.caspeal + * v2.1.5 (Sep 22, 2017 14:23) + * patch + - Migrate to conda based CI +* bob.db.cohface + * v1.0.4 (Sep 22, 2017 14:24) + * patch + - Migrate to conda based CI + - Add a ref to the package name + - Add missing whitespace +* bob.db.frgc + * v2.1.3 (Sep 22, 2017 14:24) + * patch + - Migrate to conda based CI + - [conda] This package has no download command +* bob.db.gbu + * v2.1.4 (Sep 22, 2017 14:24) + * patch + - Migrate to conda based CI +* bob.db.hci_tagging + * v1.0.4 (Sep 22, 2017 14:28) + * patch + - Migrate to conda based CI + - Add a ref to the package name + - Add missing whitespace +* bob.db.ijba + * v2.0.3 (Sep 22, 2017 14:28) + * patch + - Added missing dependency to bob.io.image (from bob.db.base) + - Migrate to conda based CI + - Added bob.measure as requirement + - This functionality was moved to bob.bio.face + - [conda] Removed bob.measure from the test requirements +* bob.db.kboc16 + * v2.0.11 (Sep 22, 2017 14:28) + * patch + - Migrate to conda based CI + - Add a ref to the package name + - Add missing whitespace +* bob.db.lfw + * v2.1.5 (Sep 22, 2017 14:28) + * patch + - Migrate to conda based CI +* bob.db.livdet2013 + * v2.0.6 (Sep 22, 2017 14:29) + * patch + - Migrate to conda based CI + - This package does not download metadata (closes bob.db.livdet2013#1) + - Add a ref to the package name + - Add missing whitespace +* bob.db.mobio + * v2.1.5 (Sep 22, 2017 14:29) + * patch + - Update README.rst + - Migrate to conda based CI + - [conda] Fixing dependency with six +* bob.db.msu_mfsd_mod + * v2.2.3 (Sep 22, 2017 14:29) + * patch + - Migrate to conda based CI +* bob.db.multipie + * v2.1.4 (Sep 22, 2017 14:29) + * patch + - Migrate to conda based CI +* bob.db.nist_sre12 + * v3.0.3 (Sep 22, 2017 14:30) + * patch + - Migrate to conda based CI + - fixing recipe + - fixing recipe + - Fix recipe + - remove dependency on six +* bob.db.putvein + * v1.2.1 (Sep 22, 2017 14:30) + * patch + - Fix packaging warnings + - Migrate to conda based CI + - This package does not download metadata (closes bob.db.putvein#2) +* bob.db.replay + * v3.0.3 (Sep 22, 2017 14:31) + * patch + - Migrate to conda based CI +* bob.db.replaymobile + * v1.1.3 (Sep 22, 2017 14:31) + * patch + - Migrate to conda based CI +* bob.db.scface + * v2.1.5 (Sep 22, 2017 14:31) + * patch + - Migrate to conda based CI +* bob.db.utfvp + * v2.4.1 (Sep 22, 2017 14:32) + * patch +* bob.db.verafinger + * v1.0.0 (Oct 11, 2017 14:24) + - Upload all metadata to our server + - Fix pkg_resources import + - Delete metadata (ship with db files) + - Update badges + - Reset initial version + - Reset authorship of package [ci skip] + * patch + - Update ignore file +* bob.db.fv3d + * v1.0.0 (Oct 11, 2017 15:42) + - Update badges + - Remove extra import + - Distribute metadata from webserver + * patch +* bob.db.hkpu + * patch + - Initial commit + - Incorporate model-id on File class + - Remove unique finger name attribute as that does not match model-id + - Fix tests + - Remove tests for finger-name (removed) + - Add explanation for returning just one single plane from original image + - Fix comment + - Set private URLs for docs [ci skip] + - Fix docs + - Add functions to detect and load RoI annotations + - Change protocol A to have multiple models instead of multiple samples per model + - Update filelist + - Update HKPU filelist with new annotations + - Add test for annotations + - Fix function comment + - Add information on the annotations + - Fix typo in guide + - Port to new CI (closes bob.db.hkpu#1) + - Fix build deps +* bob.db.thufvdt + * patch + - Initial commit + - Add protocol files + - Set protocol p3 to match paper descriptions + - List protocol files + - Fix sql3 file creation + - Finalize tests + - Import correct module on docs + - Fix short descr + - Centralize links + - Add functions to detect and load RoI annotations + - Change db name to thufvdt (simpler) + - Updated ignore file + - Update metadata contents + - Add symlinks to metadata + - Add annotation check tests + - Add annotation section + - Fix typo in func doc + - Port to new CI (closes bob.db.thufvdt#1) + - Fix build deps + - Fix build deps + - Pin compatible pillow versions + - Fix use of pin_compatible +* bob.db.mmcbnu6k + * patch + - Initial commit + - Add protocols; Fix creation + - Fix tests + - Implement roi-based protocol; improve testing + - Rectify score count analysis + - Avoid creation of unused Finger entries on SQL database + - Fix comment + - Use model name for scoring + - Fixes to model.id -> model.name as model identifier + - Return any finger name (all are the same) given the first found model + - Fix finger name look-up + - Fix function comment + - Add information on the annotations + - Update file listing to include annotations + - Add annotation tests + - Add warning about annotations + - Include annotations with metadata + - Test annotations + - Port to new CI (closes bob.db.mmcbnu6k#1) +* bob.db.hmtvein + * patch + - Initial commit + - Correct database creation + - Fix test + - Fix references in documentation + - Use model name for scoring + - Fixes to model.id -> model.name as model identifier + - Return any finger name (all are the same) given the first found model + - Fix finger name look-up + - Add annotations + - Add information on the annotations + - Fix function comment + - Port to new CI (closes bob.db.hmtvein#1) +* bob.db.voicepa + * v1.0.2 (Sep 22, 2017 14:34) + * patch + - Migrate to conda based CI + - removed redundant debug_voicepa.py, fixing issue bob.db.voicepa#1 +* bob.db.xm2vts + * v2.1.4 (Sep 22, 2017 14:36) + * patch + - Migrate to conda based CI +* bob.db.youtube + * v2.1.4 (Sep 22, 2017 14:37) + * patch + - Migrate to conda based CI +* bob.db.pericrosseye + * patch + - Migrate to conda based CI + - [conda] Added bob.io.base as requirement +* bob.db.cuhk_cufs + * patch + - Created methods modality_separator and modalities + - Included test case for objects.modality +* bob.bio.base + * v3.2.0 (Sep 22, 2017 10:55) + * v3.2.1 (Sep 26, 2017 15:04) + - Switched to 'pdf' backend instead of 'agg' + * patch + - Update experiments.rst to fix the link to gridtk + - execute_only flag is now evaluated from the config file + - Testing single config file +* bob.bio.gmm + * v3.1.0 (Sep 22, 2017 14:05) + - Adeded an author for the package + * patch +* bob.bio.face + * patch + - First commit + - Added ignore + - Added ignore + - IJBA + - Updated experiments + - Updated environment + - [ci] Added the project in the ci + - Updated some baselines + - Updated some tables + - UPdate results + - Updated baselines + - Updated some baselines + - Updated baselines + - Updated baselines + - Reformulated the package + - Reformulated the package + - Updated baseline script + - Updated baselines + - Updated baselines + - Updated baselines + - Updated some paths + - Tensorflow hack + - Fixed issues with baseline script + - Added IJBB + - Cleaning up + - fixed IJBB + - Cleaning up the module + - [sphinx] Updated docs + - Merging + - [sphinx] Updates in the documentation + - Appended more baselines + - Appended more baselines + - New baselines + - Update MSCELEB baseline + - Updated baselines + - Updated baselines + - Updated CASIA + - Updated CASIA + - Updated baselines + - Updated MSCeleb + - Updated MSCeleb + - Updated MSCeleb + - Updated MSCeleb + - Added inceptionv1 + - Added inceptionv1 + - Updated baselines + - Inception v1 + - Inception v1 + - Inception v1 + - Inception v1 + - Inception v1 + - Updated baselines + - Updated baselines + - updated batchnorm + - Added new baseline + - BAselines + - New center loss + - Update + - Update + - New baseline mechanism + - [ci] Removed mac builds + - [ci] Update conda +* bob.bio.spear + * v3.1.1 (Sep 22, 2017 14:48) + - reverted patch version + * patch +* bob.bio.video + * v3.3.0 (Sep 22, 2017 13:41) + * bob.bio.video!20 Docs url fix + * bob.bio.video!19 Python36 & docs fixes + * bob.bio.video!18 Removed`Algorithm.read_probe` + * patch + - Add as_array to frame containers + - Fixed tuple indexing bug in youtube db load function + - Added unit test for the load method of youtube database + - Updated manifest to use jpg files for tests + - Fixed the unit test connecting it with low level db interface] + - Fixed the unit test of youtube load method + - Make the original_directory and annotation_directory a property + - move the _db initialization before calling super + - pass kwargs in the base file class + - Migrate to conda based CI + - [conda] Added test requirements + - Fixed the index.rst to match joint docs requirements + - Added quality_assessment_function to preprocessor Wrapper + - Fixed the typo + - Addressing missing frame annotations + - Fixed dict.has_key issue for Python 3 + - Reverted quality assessment function + - Changed missing annotations conditional check + unit tests + - Moved condition to one line, removed empty dictionary check + - Fixes bob.bio.video#11 + - Returning none insted of empty FrCont in preproc Wrapper + - Make missing annotations None instead of empty dict + - Add a failsafevideo wrapper + - use ordered dict + - Add a video annotator + - Finalize video annotators and add docs and tests + - Fix import order + - use six to check for string types + - Account for empty frame containers too + - Account for failed extractor + - remove unused import thanks to my linter and the way I imported it + - mention min_face_size_validator for a possible input + - Validators should handle empty annotations too + - Fix sphinx warning +* bob.bio.vein + * v1.0.0 (Oct 20, 2017 13:29) + * Initial release + - Add bob.db.fv3d requirement + - Minor fix to logging setup + - Implement no-cropping option + - Improve sample viewing script + - Add blame script + - Implement empty annotations() method to satisfy bob.bio.base + - Add support for 3D Fingervein Database + - Re-estructured Preprocessor to simplify experimentation and configuration + - Add matlab reference generation and readme + - Remove trailing spaces + - Improve comments + - Add test for 3D fingervein database + - More preprocessor changes + - Use scipy directly where possible + - Fixes to Maximum Curvature implementation; Improved references & documentation + - Update manifest + - Speeds-up the evaluation of vein probabilities + - Missing import + - Avoid warnings + - Ensures input image has dtype==float64 before anything else + - Fix loading of fv3d fingers + - Use 'crop' instead of 'cropper' + - Improve inheritance; Fix FixedMask implementation + - If sample does not have roi, then returns only image + - Add grid resources and explanation on how to run + - Implement optional pre-cropping stage on preprocessor + - Test cropping with annotated images + - Use cropped images on next stages + - More tests for preprocessor specific stages + - Reflected changes from copper->crop renaming + - Don't need to do poly_to_mask() anymore + - Improve comments on TomesLeeMask + - Use padder by default on stock configurations + - Fix missing transposition on port + - Implemented normalized-cross-correlation algorithm + - Remove ipdb break point + - Fix doc error + - Add mlp trainer for watershed masker + - Add mlp trainer for watershed masker + - Add watershed mask detector + - Remove useless mask(); Update comments + - Fix score splitting + - Fix indentation + - Allow to view sample using a database name + - Fixes to marker detector + - Add ON's miura-match with rotation support + - Load only what is annotated (allow flexibility) + - Support view mode w/o extracted veins + - Add watershed preprocessing debug-aid script + - Printout metrics as they are evaluated + - Allow separate thresholds for foreground and background markers; Allow external… + - Use simpler validation + - Add script to help debugging watershedding + - Fix spelling + - Add watershedding link + - Simplify baseline, Add watershed NN training + - Fix link + - Update comment + - Set better defaults and use them on stock configuration + - Added the HLDI for the putvein database + - Added the HLDI for the putvein database + - Update documentation to include 3D-fingervein pointers + - Fix installation directives + - Remove database interfaces from runtime + - Added the HLDI for the putvein database + - Added the doc and tests and config for the putvein database + - Fixed the HLDI of the putvein db - conversion of group names + - Added bob.ip.color to requirements.txt + - Fix loading of binarised images + - Option to save figures discretely + - Include databases on bulidout configurations + - Fix Hamming Distance module + - Make HammingDistance class plus add test + - Improve documentation in HammingDistance class + - Update baseline results for rlt, mc, and wld + - Remove Oleg's implementation of rotation-invariant matching (before release,… + - Update README links [ci skip] + - Complete design and doc of HammingDistance + - Add missing dev packages + - Reset preliminary version to 1.0.0a0 + - update the table for verafinger/nom. + - Minor typo fix [ci skip] + * v1.0.1 (Oct 20, 2017 16:04) + * Update `MANIFEST.in` to include necessary package files + - Update MANIFEST to include essential files + * patch + - updated the whole table. The numbers are very different for the new algorithms. + - Port to new CI (closes bob.bio.vein#16) + - Try a fix for the scikit image dep + - Try another fix for the scikit image dep + - Update utfvp interface + - Remove uncited ref + - Remove uncited ref + - Removes more uncited references + - Enable compilation of docs w/o latex + - Adds bob.bio.vein sphinx ref + - Fixed the index.rst to match joint docs requirements + - Adaptations to allow vulnerability analysis + - Catch-up with changes to verafinger +* bob.db.voxforge + * v2.2.0 (Sep 24, 2017 11:39) + * patch +* bob.pad.base + * patch + - allow missing files projector + - allow missing files projector + - allow missing files scoring + - allow missing files scoring + - allow missing files scoring + - Don't rebuild bob.bio.base documentation here. Point to it instead + - Do not use pretty prininting with kwargs + - Use super + - inherit from object + - Add an option to return a flat list + - Add tests for flat=True + - Fix the sphinx warnings + - Fix sphinx warnings + - filelist-based db for bio and pad exper. Added docs + - Migrate to conda based CI + - Add padfile to label. Useful for deeplearning + - moved SVM algorithm from bob.pad.face + - moved SVM algorithm from bob.pad.face + - make tests passing + - Moved one class GMM from bob.pad.face + - Moved LR algo from bob.pad.face + - wrong name for scikit-learn package + - small correction of imports + - Moved SVM Cascade from bob.pad.face + - adding missing bob.learn.linear + - fixing builds + - Fixed the index.rst to match joint docs requirements + - Removed some spaces in index.rst + - Replace the old pad iso metrics class with a script + - improve logging message of projection training + - Added missing indirect dependencies + - improve requirements.txt and develop.cfg + - Update meta.yaml + - Update meta.yaml + - Update requirements.txt + - score computation is not a parallel job + - Allow for missing files in the projection step + - raise runtimeerror exception instead + - [helper] corrected one of the convert frames ... function to work with numpy arrays + - [SVM] made return score working for 1d + - [test] added test for helper functions converting array to FrameContainer and vice versa + - [test] corrected the np vs numpy in the test from frame container to array + - [test] another correction to test if array is numpy.array + - [test] yet another correction (previous one was sloppy) to test if array is numpy.array + - [test] test if array is numpy.ndarray and not numpy.array ... + - [utils] corrected an indentation error causing troubles during conversion… + - [doc] fixed some references + - added clients option to filelistdb driver + - Avoids feature blow-up when std==0. + - Fixed convert_frame_cont_to_array addressing missing annotations + - Add a predictions algorithm useful for deeplearning +* bob.pad.face + * patch + - Added MIFS database + - bugfix: array indices fixed + - Added face bounding boxes to tree and cleaned database path + - Updated documentation + - documentation fix + - documentation fix + - Fixed documentation + - bugfix: array indices fixed + - documentation fix + - documentation fix + - Updated documentation + - Added face bounding boxes to tree and cleaned database path + - Fixed documentation + - Cleaning + - Merge + - Fixed merge errors + - Updated documentation + - Updated documentation + - Updated the MANIFEST.in to make annotations available for MIFS db + - Added entry point for VideoSparseCoding preprocessor amd initial version of… + - Addded conversion of sparse codes to Frame Container + - Added sparse encoding part to VideoSparseCoding preprocessor + - Added a part of VideoSparseCoding preprocessor + - Moved histogram extraction to preprocessor VideoSparseCoding + - Added entry points for VideoHistOfSparseCodes extractor + - Fixed an indentation issue in the doc of VideoSparseCoding + - Updated the main doc on anomaly detection PAD for Aggregated Db, some doc for… + - Optimized the VideoSparseCoding for memory useage + - Added the reconstruction error option to VideoSparseCoding preprocessor + - Removed temp stuff from setup.py, cleaning of sporse coding algorithms + - Fixed the path bug in the video_sparse_coding config file + - Added a local face detection option to the VideoFaceCrop class + - Updated requirements.txt with dlib facedetector + - Added unit tests for classes used in the IQM-GMM pad algorithm + - Fixed the None case in face detection utils + - Fixed no face detected issue in VideoFaceCrop + - Modified the grid config requesting less memory + - Added optional face detectors, also empty files will not be saved in the preprocessor + - Fixes unit tests after update of bob.ip.dlib + - Fixed the unit test to match the latets updates in bob.ip.dlib + - Removed a dependency from bob.ip.mtcnn in face detection utils + - Added facelandmark detection in utilsbob.pad.face! + - unit tests + - test + - Added mtcnn along with dlib. + - Added mtcnn/dlib detectors + - Changed function name + some minor modifications + - adapt svm algorithm to other modalities, like voice + - adapt one class gmm to other modalities + - Added a grandtest-train-eval protocol to the aggregated db + - Added grandtest-mobio protocol to the aggregated db + - Minor typo fix in the doc of Aggregated db + - pep8 formatting done by yapf -ri . + - Accept frame_selector in load methods + - remove bootstrap-buildout.py + - Add a base pad file for all face pad databases + - Use all frames. Improve docs + - The inital version of grandtest-train-eval-<num_train_samples> protocol for Aggregated db + - Fixed the None issue in grandtest-train-eval-<num_train_samples> protocol + - Add frame processing functionality + - MethodType in Python 3 takes 2 arguments only + - Make the original_directory and annotation_directory a property + - db not _db + - Implement frame by frame loading in replay and replay-mobile + - use bob.extension.rc instead of None + - Migrate to conda based CI + - Moved algos to bob.pad.base and renamed them + - updating conda recipe + - removing console scripts entry point, since there are no scripts + - removing console scripts entry point, since there are no scripts + - updating conda recipe + - updating conda recipe + - fixing test_video_face_crop and conda recipe + - Changes in conda recipe according to Anirs comments + - Added mobio db to conda recipe, fixed unit tests + - Print the assertion value + - Fixed the nose tests for VideoFaceCrop + - Fixed the pointer to Algos documentation, now in bob.pad.base + - Changed host/run requirements + - Fixed the index.rst to match joint docs requirements + - Removed duplicating db configs, issue bob.pad.face#18 + - Removed VideoQualityMeasure, replaced with Wraper + - removed VideoLBPHistogram, replaced with Wrapper + - Removed unused class VideoDataLoader, closes bob.pad.face#20 + - Added alignment option to normalize_image_size_in_grayscale in ImageFaceCrop + - Changed hard-coded constants into face size relative in FaceEyesNorm call + - Moved some class methods to functions, WIP + - Minor modifications in ImageFaceCrop, WIP + - Added initial version of FaceCropAlign, which is refactor of ImageFaceCrop + - Fixed the bug in min_face_size check + - Removed VideFaceCrop and ImageFaceCrop, replaced with FaceCropAlign+Wrapper + - Removed face_detection_utils, updated unit tests + - Added underscore to preproc configs to resolve warning when running baselines + - Removed deleted utils from docs + - Added a FrameSelector to the load() in Aggregated Db HLDI + - Changed the default FrameSelector in preproc configs to select all frames + - Add a low-intensive grid option named small + - Use our common right eye and left eye names instead + - Fix the tests too +* bob.db.oulunpu + * patch + - Initial commit + - Implement frames + - add ci + - update license + - Improve readme + - Add a config file + - Correct frame size in docs + - include list files in the package as well + - Make sure all_files is working + - models depends on protocol + - Add frame_size methods + - Adopt to the new database + - Use bob.pad instead of bob.dap + - fixes + - fixes + - Fix entry point + - Use bob.extension.rc + - Add bob.bio.config entry point + - Fix the config file + - Add conda packaging + - Updates CI file + - Add annotation support and reorganize frame reading + - fix sphinx warnings +* bob.db.uvad + * patch + - Initial commit + - Fix entry point + - Use bob.extension.rc + - Adopt the tests as well + - improve tests + - Fix cropping + - Add bob.bio.config entry point + - Add conda packaging + - Updates CI file diff --git a/release/generate_changelog.py b/release/generate_changelog.py new file mode 100755 index 0000000000000000000000000000000000000000..888b4565bf8d439a234c05b623d807022af86eb7 --- /dev/null +++ b/release/generate_changelog.py @@ -0,0 +1,157 @@ +#!/usr/bin/env python + +""" +Generate changelog file for all packages before release. This script uses python-gitlab package for access to Gitlab's API. + +Usage: + {0} <private_token> + {0} -h | --help + {0} --version + +Arguments: + <private_token> Private token used to access GitLab. + +Options: + -h --help Show this screen. + --version Show version. + +""" + +import sys +from docopt import docopt +import gitlab +import datetime + + +def get_packages_list(gl): + nightlies = gl.projects.list(search='bob.nightlies')[0] + nightlies_order = nightlies.files.get(file_path='order.txt', ref='master') + pkg_list_ordered = nightlies_order.decode().decode().split('\n') + pkg_list_ordered = [line for line in pkg_list_ordered if (line.strip() and not line.startswith('#'))] + return pkg_list_ordered + + +# release date of last Bob release + 1 day +def bob_last_release(gl): + bobpkg = gl.projects.get(id=1535) # 1535 is id of 'bob' meta-package + last_bob_tag = bobpkg.tags.list()[0] # get the last tag + return last_bob_tag.commit['committed_date'] + + +def get_datetime_from_gitdate(gitdate): + # import ipdb; ipdb.set_trace() + return datetime.datetime.strptime(gitdate[:-6], '%Y-%m-%dT%H:%M:%S.%f') + + +def sort_commits(commits): + return sorted(commits, key=lambda x: get_datetime_from_gitdate(x.committed_date)) + + +def sort_tags(tags): + return sorted(tags, key=lambda x: get_datetime_from_gitdate(x.commit['committed_date'])) + + +def get_tag_changelog(tag): + try: + return tag.release['description'] + except Exception: + return '' + + +def print_tags(pkg_name, gitpkg, since='2017-01-01T00:00:00Z'): + since = get_datetime_from_gitdate(since) + tags = gitpkg.tags.list() + # sort tags by date + tags = filter(lambda x: get_datetime_from_gitdate(x.commit['committed_date']) >= since, tags) + tags = sort_tags(tags) + print('* ' + pkg_name) + for tag in tags: + print_one_tag(pkg_name, tag) + + +def print_one_tag(pkg_name, tag): + print(' * ' + tag.name + ' (' + get_datetime_from_gitdate(tag.commit['committed_date']).strftime( + '%b %d, %Y %H:%M') + ')') + for line in get_tag_changelog(tag).split('\r\n'): + line = line.strip() + if line.startswith('* ') or line.startswith('- '): + line = line[2:] + line = line.replace('!', pkg_name + '!') + line = line.replace('#', pkg_name + '#') + if not line: + continue + print(' ' * 5 + '* ' + line) + + +def print_commits(pkg_name, gitpkg, since='2017-01-01T00:00:00Z'): + # import ipdb; ipdb.set_trace() + commits = gitpkg.commits.list(since=since, all=True) + # sort commits by date + commits = sort_commits(commits) + print('* ' + pkg_name) + print_commits_range(pkg_name, commits) + + +def print_commits_range(pkg_name, commits): + for commit in commits: + commit_title = commit.title + # skip commits that do not carry much useful information + if '[skip ci]' in commit_title or \ + 'Merge branch' in commit_title or \ + 'Increased stable' in commit_title: + continue + commit_title = commit_title.strip() + commit_title = commit_title.replace('!', pkg_name + '!') + commit_title = commit_title.replace('#', pkg_name + '#') + # print(' - ' + get_datetime_from_gitdate(x.committed_date).strftime('%Y-%m-%d %H:%M:%S') + ":" + commit_title) + print(' ' * 5 + '- ' + commit_title) + + +def print_tags_with_commits(pkg_name, gitpkg, since='2017-01-01T00:00:00Z'): + # get tags since release and sort them + datetime_since = get_datetime_from_gitdate(since) + tags = gitpkg.tags.list() + # sort tags by date + tags = filter(lambda x: get_datetime_from_gitdate(x.commit['committed_date']) >= datetime_since, tags) + tags = sort_tags(tags) + # get commits since release date and sort them too + commits = gitpkg.commits.list(since=since, all=True) + # sort commits by date + commits = sort_commits(commits) + print('* ' + pkg_name) + # go through tags and print each with its message and corresponding commits + start_date = datetime_since + for tag in tags: + # print tag name and its text + print_one_tag(pkg_name, tag) + # print commits from the previous tag up to this one + end_date = get_datetime_from_gitdate(tag.commit['committed_date']) + commits4tag = filter(lambda x: ( + get_datetime_from_gitdate(x.committed_date) > start_date and get_datetime_from_gitdate( + x.committed_date) <= end_date), commits) + print_commits_range(pkg_name, commits4tag) + start_date = end_date + # print the tentative patch version bump for the future tag + print(' * patch') + # print leftover commits that were not tagged yet + leftover_commits = filter(lambda x: get_datetime_from_gitdate(x.committed_date) > start_date, commits) + print_commits_range(pkg_name, leftover_commits) + + +def main(private_token): + gl = gitlab.Gitlab('https://gitlab.idiap.ch', private_token=private_token, api_version=4) + pkg_list_ordered = get_packages_list(gl) + # print(pkg_list_ordered) + last_release_date = bob_last_release(gl) + # print(last_release_date) + # print name of the package, its version and tags + for pkg_name in pkg_list_ordered: + gitpkg = gl.projects.list(search=pkg_name)[0] + # print_tags(pkg_name, gitpkg, since=last_release_date)) + # print_commits(pkg_name, gitpkg, since=last_release_date) + print_tags_with_commits(pkg_name, gitpkg, since=last_release_date) + + +if __name__ == '__main__': + arguments = docopt(__doc__.format(sys.argv[0]), version='Changelog 0.0.1') + main(arguments['<private_token>'])