From 7a57a8625239cbf15bfe4c344aaf466583ef7e8a Mon Sep 17 00:00:00 2001 From: Andre Anjos Date: Fri, 19 Aug 2016 13:36:47 +0200 Subject: [PATCH] Standardise --- .gitlab-ci.yml | 267 +++++++++++++++++++++++++++++++++++++++--- README.rst | 146 ++++------------------- bootstrap-buildout.py | 4 +- buildout.cfg | 25 ++-- develop.cfg | 56 +++++++++ doc/conf.py | 122 ++++++++----------- doc/img/CMC.png | Bin 21361 -> 0 bytes doc/img/DET.png | Bin 30937 -> 0 bytes doc/img/ROC.png | Bin 36852 -> 0 bytes doc/img/logo.png | Bin 11280 -> 6266 bytes requirements.txt | 4 +- setup.py | 10 +- 12 files changed, 399 insertions(+), 235 deletions(-) create mode 100644 develop.cfg delete mode 100644 doc/img/CMC.png delete mode 100644 doc/img/DET.png delete mode 100644 doc/img/ROC.png diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0c75141..f26a01e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,17 +1,254 @@ -py27-conda-idiap: - script: - - source /idiap/group/torch5spro/conda/bin/activate bob-2.3.4-py27_0 +# This build file is defined in two parts: 1) a generic set of instructions you +# probably **don't** need to change and 2) a part you may have to tune to your +# project. It heavily uses template features from YAML to help you in only +# changing a minimal part of it and avoid code duplication to a maximum while +# still providing a nice pipeline display on your package. + + +# 1) Generic instructions (only change if you know what you're doing) +# ------------------------------------------------------------------- + +# Definition of our build pipeline +stages: + - build + - test + - docs + - wheels + + +# Global variables +variables: + CONDA_PREFIX: env + + +# Template for the build stage +# Needs to run on all supported architectures, platforms and python versions +.build_template: &build_job + stage: build + before_script: - git clean -ffdx - - export TMPDIR=/var/tmp - - python bootstrap-buildout.py + - curl --silent https://gitlab.idiap.ch/bob/bob/snippets/7/raw | tr -d '\r' > bootstrap-conda.sh + - chmod 755 ./bootstrap-conda.sh + - ./bootstrap-conda.sh ${CONDA_FOLDER} ${PYTHON_VER} ${CONDA_PREFIX} + variables: &build_variables + BOB_DOCUMENTATION_SERVER: "http://www.idiap.ch/software/bob/docs/latest/bob/%s/master/" + script: - ./bin/buildout - - unset TMPDIR - - ./bin/python --version - - export NOSE_WITH_COVERAGE=1 - - export NOSE_COVER_PACKAGE=bob.bio.vein - - ./bin/bob_dbmanage.py vera download - - ./bin/nosetests -sv bob.bio.vein - - ./bin/sphinx-build doc html - - ./bin/resources.py -d --packages=bob.bio.vein - tags: - - lidiap2015 + - if [ -x ./bin/bob_dbmanage.py ]; then ./bin/bob_dbmanage.py all download --force; fi + - ./bin/sphinx-build doc sphinx + - ./bin/python setup.py bdist_wheel --python-tag ${WHEEL_TAG} + after_script: + - rm -rf ${CONDA_PREFIX} + artifacts: + expire_in: 1 day + paths: + - bootstrap-conda.sh + - dist/ + - sphinx/ + + +# Template for building on a Linux machine +.build_linux_template: &linux_build_job + <<: *build_job + variables: &linux_build_variables + <<: *build_variables + CONDA_FOLDER: "/local/conda" + CFLAGS: "-D_GLIBCXX_USE_CXX11_ABI=0 -coverage" + CXXFLAGS: "-D_GLIBCXX_USE_CXX11_ABI=0 -coverage" + + +# Template for building on a Mac OSX machine +.build_mac_template: &macosx_build_job + <<: *build_job + variables: &macosx_build_variables + <<: *build_variables + CONDA_FOLDER: "/opt/conda" + MACOSX_DEPLOYMENT_TARGET: "10.9" + CFLAGS: "-pthread -coverage" + CXXFLAGS: "-pthread -coverage" + LDFLAGS: "-lpthread" + + +# Template for the test stage - re-install from uploaded wheels +# Needs to run on all supported architectures, platforms and python versions +.test_template: &test_job + stage: test + before_script: + - ./bootstrap-conda.sh ${CONDA_FOLDER} ${PYTHON_VER} ${CONDA_PREFIX} + - source ${CONDA_FOLDER}/bin/activate ${CONDA_PREFIX} + - pip install --use-wheel --no-index --pre dist/*.whl + script: + - cd ${CONDA_PREFIX} + - python -c "from ${CI_PROJECT_NAME} import get_config; print(get_config())" + - coverage run --source=${CI_PROJECT_NAME} ./bin/nosetests -sv ${CI_PROJECT_NAME} + - coverage report + - sphinx-build -b doctest ../doc ../sphinx + after_script: + - rm -rf ${CONDA_PREFIX} + + +# Template for the wheel uploading stage +# Needs to run against one combination of python 2.x and 3.x if it is a python +# only package, otherwise, needs to run in both pythons to all supported +# architectures (Linux and Mac OSX 64-bit) +.wheels_template: &wheels_job + stage: wheels + only: + - master + - tags + before_script: + - curl --silent https://gitlab.idiap.ch/bob/bob/snippets/8/raw | tr -d '\r' > upload-wheel.sh + - chmod 755 upload-wheel.sh + script: + - ./upload-wheel.sh + + +# Template for (latest) documentation upload stage +# Only one real job needs to do this +.docs_template: &docs_job + stage: docs + only: + - master + before_script: + - curl --silent https://gitlab.idiap.ch/bob/bob/snippets/9/raw | tr -d '\r' > upload-sphinx.sh + - chmod 755 upload-sphinx.sh + script: + - ./upload-sphinx.sh + + +# 2) Package specific instructions (you may tune this if needed) +# -------------------------------------------------------------- + +# Linux + Python 2.7: Builds, tests, uploads wheel +build_linux_27: + <<: *linux_build_job + variables: &linux_27_build_variables + <<: *linux_build_variables + PYTHON_VER: "2.7" + WHEEL_TAG: "py27" + tags: + - conda-linux + +test_linux_27: + <<: *test_job + variables: *linux_27_build_variables + dependencies: + - build_linux_27 + tags: + - conda-linux + +wheels_linux_27: + <<: *wheels_job + dependencies: + - build_linux_27 + tags: + - conda-linux + + +# Linux + Python 3.4: Builds and tests +build_linux_34: + <<: *linux_build_job + variables: &linux_34_build_variables + <<: *linux_build_variables + PYTHON_VER: "3.4" + WHEEL_TAG: "py3" + tags: + - conda-linux + +test_linux_34: + <<: *test_job + variables: *linux_34_build_variables + dependencies: + - build_linux_34 + tags: + - conda-linux + + +# Linux + Python 3.5: Builds, tests, uploads wheel +build_linux_35: + <<: *linux_build_job + variables: &linux_35_build_variables + <<: *linux_build_variables + PYTHON_VER: "3.5" + WHEEL_TAG: "py3" + tags: + - conda-linux + +test_linux_35: + <<: *test_job + variables: *linux_35_build_variables + dependencies: + - build_linux_35 + tags: + - conda-linux + +wheels_linux_35: + <<: *wheels_job + dependencies: + - build_linux_35 + tags: + - conda-linux + +docs_linux_35: + <<: *docs_job + dependencies: + - build_linux_35 + tags: + - conda-linux + + +# Mac OSX + Python 2.7: Builds and tests +build_macosx_27: + <<: *macosx_build_job + variables: &macosx_27_build_variables + <<: *macosx_build_variables + PYTHON_VER: "2.7" + WHEEL_TAG: "py27" + tags: + - conda-macosx + +test_macosx_27: + <<: *test_job + variables: *macosx_27_build_variables + dependencies: + - build_macosx_27 + tags: + - conda-macosx + + +# Mac OSX + Python 3.4: Builds and tests +build_macosx_34: + <<: *macosx_build_job + variables: &macosx_34_build_variables + <<: *macosx_build_variables + PYTHON_VER: "3.4" + WHEEL_TAG: "py3" + tags: + - conda-macosx + +test_macosx_34: + <<: *test_job + variables: *macosx_34_build_variables + dependencies: + - build_macosx_34 + tags: + - conda-macosx + + +# Mac OSX + Python 3.5: Builds and tests +build_macosx_35: + <<: *macosx_build_job + variables: &macosx_35_build_variables + <<: *macosx_build_variables + PYTHON_VER: "3.5" + WHEEL_TAG: "py3" + tags: + - conda-macosx + +test_macosx_35: + <<: *test_job + variables: *macosx_35_build_variables + dependencies: + - build_macosx_35 + tags: + - conda-macosx \ No newline at end of file diff --git a/README.rst b/README.rst index 648ca3a..514b22b 100644 --- a/README.rst +++ b/README.rst @@ -1,149 +1,49 @@ .. vim: set fileencoding=utf-8 : -.. Fri 08 Jul 2016 15:38:56 CEST +.. Fri 19 Aug 2016 13:32:51 CEST .. image:: http://img.shields.io/badge/docs-stable-yellow.png :target: http://pythonhosted.org/bob.bio.vein/index.html .. image:: http://img.shields.io/badge/docs-latest-orange.png - :target: https://www.idiap.ch/software/bob/docs/latest/bioidiap/bob.bio.vein/master/index.html -.. image:: https://travis-ci.org/bioidiap/bob.bio.vein.svg?branch=master - :target: https://travis-ci.org/bioidiap/bob.bio.vein -.. image:: https://coveralls.io/repos/bioidiap/bob.bio.vein/badge.png - :target: https://coveralls.io/r/bioidiap/bob.bio.vein -.. image:: https://img.shields.io/badge/github-master-0000c0.png - :target: https://github.com/bioidiap/bob.bio.vein/tree/master + :target: https://www.idiap.ch/software/bob/docs/latest/bob/bob.bio.vein/master/index.html +.. image:: https://gitlab.idiap.ch/bob/bob.bio.vein/badges/master/build.svg + :target: https://gitlab.idiap.ch/bob/bob.bio.vein/commits/master +.. image:: https://img.shields.io/badge/gitlab-project-0000c0.svg + :target: https://gitlab.idiap.ch/bob/bob.bio.vein .. image:: http://img.shields.io/pypi/v/bob.bio.vein.png :target: https://pypi.python.org/pypi/bob.bio.vein .. image:: http://img.shields.io/pypi/dm/bob.bio.vein.png :target: https://pypi.python.org/pypi/bob.bio.vein -========================================= - The Biometrics Vein Recognition Library -========================================= +========================== + Vein Recognition Library +========================== -Welcome to this Vein Recognition Library based on Bob. This library is designed -to perform a fair comparison of vein recognition algorithms. It contains -scripts to execute various of vein recognition experiments on a variety -of vein image databases, and running the help is as easy as going to the -command line and typing:: - $ bin/verify.py --help - - -About ------ - -This library is currently developed at the `Biometrics group -`_ -at the `Idiap Research Institute `_. The vein recognition -library is designed to run vein recognition experiments in a comparable and -reproducible manner. - - -Databases ---------- - -To achieve this goal, interfaces to some publicly available vein image -databases are contained, and default evaluation protocols are defined, e.g.: - -- UTFVP - University of Twente Finger Vein Database [http://www.sas.ewi.utwente.nl/] -- VERA - Finger vein Database [http://www.idiap.ch/scientific-research/resources] -- PUT - The PUT biometric vein (palm and wrist) recognition dataset [http://biometrics.put.poznan.pl/vein-dataset/] - - -Algorithms ----------- - -Together with that, implementations of a variety of traditional and -state-of-the-art vein recognition algorithms are provided: - -* Maximum Curvature [MNM05]_ -* Repeated Line Tracking [MNM04]_ -* Wide Line Detector [HDLTL10]_ - -Tools to evaluate the results can easily be used to create scientific plots. We -also provide handles to run experiments using parallel processes or an SGE -grid. - - -Extensions ----------- - -On top of these already pre-coded algorithms, the vein recognition library -provides an easy Python interface for implementing new image preprocessors, -feature types, vein recognition algorithms or database interfaces, which -directly integrate into the vein recognition experiment. Hence, after a short -period of coding, researchers can compare new ideas directly with already -existing algorithms in a fair manner. - - -References ----------- - -.. [MNM05] *N. Miura, A. Nagasaka, and T. Miyatake*. **Extraction of Finger-Vein Pattern Using Maximum Curvature Points in Image Profiles**. Proceedings on IAPR conference on machine vision applications, 9, pp. 347--350, 2005. - -.. [MNM04] *N. Miura, A. Nagasaka, and T. Miyatake*. **Feature extraction of finger vein patterns based on repeated line tracking and its application to personal identification**. Machine Vision and Applications, Vol. 15, Num. 4, pp. 194--203, 2004. - -.. [HDLTL10] *B. Huang, Y. Dai, R. Li, D. Tang and W. Li*. **Finger-vein authentication based on wide line detector and pattern normalization**. Proceedings of the 20th International Conference on Pattern Recognition (ICPR), 2010. +This package is part of the signal-processing and machine learning toolbox +Bob_. It contains resources for finger, palm and wrist vein recognition as +`bob.bio.base`_ plugins. Installation ------------ -The latest version of the vein recognition library can be installed with our -`Conda-based builds`_. Once you have installed Bob_, just go on and install -this package using the same installation mechanism. - - -Development ------------ - -In order to develop the latest version of this package, install Bob_ as -indicated above. Once that is done, do this:: +Follow our `installation`_ instructions. Then, using the Python interpreter +provided by the distribution, bootstrap and buildout this package:: - $ git clone https://gitlab.idiap.ch/biometrc/bob.bio.vein.git - $ cd bob.bio.vein $ python bootstrap-buildout.py $ ./bin/buildout -After those steps, you should have a functional **development** environment to -test the package. The python interpreter and base environment on line 3 above -should be pre-installed with all dependencies required for Bob_ to operate -correctly. For example, you may start from our `conda-based builds`_ and then -use the Python interpreter in there to bootstrap your local development -environment. - - -Running tests -------------- - -To verify that your installation worked as expected, you might want to run our -unit tests with:: - - $ ./bin/nosetests -sv - - - -Cite our paper --------------- -If you use this library in any of your experiments, please cite the following -paper:: +Contact +------- - @inproceedings{Tome_IEEEBIOSIG2014, - author = {Tome, Pedro and Vanoni, Matthias and Marcel, S{\'{e}}bastien}, - keywords = {Biometrics, Finger vein, Spoofing Attacks}, - projects = {Idiap, BEAT}, - month = sep, - title = {On the Vulnerability of Finger Vein Recognition to Spoofing}, - booktitle = {IEEE International Conference of the Biometrics Special Interest Group (BIOSIG)}, - volume = {230}, - year = {2014}, - ocation = {Darmstadt, Germay}, - pdf = {http://publications.idiap.ch/downloads/papers/2014/Tome_IEEEBIOSIG2014.pdf} - } +For questions or reporting issues to this software package, contact our +development `mailing list`_. -.. _bob: http://www.idiap.ch/software/bob -.. _idiap: http://www.idiap.ch -.. _conda-based builds: https://github.com/idiap/bob/wiki/Binary-Installation +.. Place your references here: +.. _bob: https://www.idiap.ch/software/bob +.. _installation: https://gitlab.idiap.ch/bob/bob/wikis/Installation +.. _mailing list: https://groups.google.com/forum/?fromgroups#!forum/bob-devel +.. _bob.bio.base: https://pythonhosted.org/bob.bio.base/ diff --git a/bootstrap-buildout.py b/bootstrap-buildout.py index 1f59b21..a459921 100644 --- a/bootstrap-buildout.py +++ b/bootstrap-buildout.py @@ -49,8 +49,8 @@ parser.add_option("--version", parser.add_option("-t", "--accept-buildout-test-releases", dest='accept_buildout_test_releases', action="store_true", default=False, - help=("Normally, if you do not specify a --buildout-version, " - "the bootstrap script and buildout gets the newest " + help=("Normally, if you do not specify a --version, the " + "bootstrap script and buildout gets the newest " "*final* versions of zc.buildout and its recipes and " "extensions for you. If you use this flag, " "bootstrap and buildout will get the newest releases " diff --git a/buildout.cfg b/buildout.cfg index 20c9a98..75911b8 100644 --- a/buildout.cfg +++ b/buildout.cfg @@ -1,24 +1,19 @@ ; vim: set fileencoding=utf-8 : +; Fri 19 Aug 2016 13:22:13 CEST [buildout] parts = scripts +eggs = bob.bio.vein + bob.bio.base + bob.measure + bob.extension + gridtk + extensions = bob.buildout - mr.developer -eggs = bob.bio.vein - bob.bio.base - bob.db.base - bob.measure - bob.extension - gridtk -develop = src/bob.db.vera - src/bob.db.putvein - . -auto-checkout = * -newest = false +develop = . -[sources] -bob.db.vera = git git@github.com:bioidiap/bob.db.vera -bob.db.putvein = git git@gitlab.idiap.ch:biometric/bob.db.putvein +newest = false +verbose = true [scripts] recipe = bob.buildout:scripts diff --git a/develop.cfg b/develop.cfg new file mode 100644 index 0000000..a558747 --- /dev/null +++ b/develop.cfg @@ -0,0 +1,56 @@ +; vim: set fileencoding=utf-8 : +; Fri 19 Aug 2016 13:14:15 CEST + +[buildout] +parts = scripts +eggs = bob.bio.vein + bob.bio.base + bob.measure + bob.extension + gridtk + +extensions = bob.buildout + mr.developer + +auto-checkout = * +develop = src/bob.extension + src/bob.blitz + src/bob.core + src/bob.math + src/bob.measure + src/bob.io.base + src/bob.io.image + src/bob.io.matlab + src/bob.ip.base + src/bob.db.base + src/bob.db.verafinger + src/bob.db.utfvp + src/bob.db.putvein + src/bob.bio.db + src/bob.bio.base + . + +; options for bob.buildout +debug = true +verbose = true +newest = false + +[sources] +bob.extension = git git@gitlab.idiap.ch:bob/bob.extension +bob.blitz = git git@gitlab.idiap.ch:bob/bob.blitz +bob.core = git git@gitlab.idiap.ch:bob/bob.core +bob.math = git git@gitlab.idiap.ch:bob/bob.math +bob.measure = git git@gitlab.idiap.ch:bob/bob.measure +bob.io.base = git git@gitlab.idiap.ch:bob/bob.io.base +bob.io.image = git git@gitlab.idiap.ch:bob/bob.io.image +bob.io.matlab = git git@gitlab.idiap.ch:bob/bob.io.matlab +bob.ip.base = git git@gitlab.idiap.ch:bob/bob.ip.base +bob.db.base = git git@gitlab.idiap.ch:bob/bob.db.base +bob.db.verafinger = git git@gitlab.idiap.ch:bob/bob.db.verafinger +bob.db.utfvp = git git@gitlab.idiap.ch:bob/bob.db.utfvp +bob.db.putvein = git git@gitlab.idiap.ch:bob.db.putvein +bob.bio.db = git git@gitlab.idiap.ch:bob/bob.bio.db +bob.bio.base = git git@gitlab.idiap.ch:bob/bob.bio.base + +[scripts] +recipe = bob.buildout:scripts diff --git a/doc/conf.py b/doc/conf.py index b14abe3..1bd8e04 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -7,11 +7,6 @@ import glob import pkg_resources -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -#sys.path.insert(0, os.path.abspath('.')) - # -- General configuration ----------------------------------------------------- # If your documentation needs a minimal Sphinx version, state it here. @@ -20,26 +15,33 @@ needs_sphinx = '1.3' # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = [ - 'sphinx.ext.todo', 'sphinx.ext.coverage', - 'sphinx.ext.pngmath', 'sphinx.ext.ifconfig', 'sphinx.ext.autodoc', 'sphinx.ext.autosummary', 'sphinx.ext.doctest', - 'sphinx.ext.intersphinx', 'sphinx.ext.graphviz', + 'sphinx.ext.intersphinx', 'sphinx.ext.napoleon', 'sphinx.ext.viewcode', ] +import sphinx +if sphinx.__version__ >= "1.4.1": + extensions.append('sphinx.ext.imgmath') +else: + extensions.append('sphinx.ext.pngmath') + # Always includes todos todo_include_todos = True # Generates auto-summary automatically autosummary_generate = True +# Create numbers on figures with captions +numfig = True + # If we are on OSX, the 'dvipng' path maybe different dvipng_osx = '/opt/local/libexec/texlive/binaries/dvipng' if os.path.exists(dvipng_osx): pngmath_dvipng = dvipng_osx @@ -57,12 +59,12 @@ source_suffix = '.rst' master_doc = 'index' # General information about the project. -project = u'Vein Biometrics Recognition Library (bob.bio.vein)' +project = u'bob.bio.vein' import time copyright = u'%s, Idiap Research Institute' % time.strftime('%Y') # Grab the setup entry -distribution = pkg_resources.require('bob.bio.vein')[0] +distribution = pkg_resources.require(project)[0] # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the @@ -107,8 +109,10 @@ pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] -# Included after all input documents -rst_epilog = '' +# Some variables which are useful for generated material +project_variable = project.replace('.', '_') +short_description = u'Vein Recognition Library' +owner = [u'Idiap Research Institute'] # -- Options for HTML output --------------------------------------------------- @@ -131,7 +135,7 @@ html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. -#html_short_title = None +#html_short_title = project_variable # The name of an image file (relative to this directory) to place at the top # of the sidebar. @@ -145,7 +149,7 @@ html_favicon = 'img/favicon.ico' # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". -# html_static_path = ['_static'] +#html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. @@ -189,70 +193,48 @@ html_favicon = 'img/favicon.ico' #html_file_suffix = None # Output file base name for HTML help builder. -htmlhelp_basename = 'bobbiovein_doc' - - -# -- Options for LaTeX output -------------------------------------------------- - -# The paper size ('letter' or 'a4'). -latex_paper_size = 'a4' - -# The font size ('10pt', '11pt' or '12pt'). -latex_font_size = '10pt' +htmlhelp_basename = project_variable + u'_doc' -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, author, documentclass [howto/manual]). -latex_documents = [ - ( - 'index', - 'bobbiovein.tex', - u'Vein Biometrics Recognition Library (bob.bio.vein)', - u'Biometrics Group, Idiap Research Institute', 'manual', - ), - ] - -# The name of an image file (relative to this directory) to place at the top of -# the title page. -#latex_logo = None - -# For "manual" documents, if this is true, then toplevel headings are parts, -# not chapters. -#latex_use_parts = False -# If true, show page references after internal links. -#latex_show_pagerefs = False +# -- Post configuration -------------------------------------------------------- -# If true, show URL addresses after external links. -#latex_show_urls = False - -# Documents to append as an appendix to all manuals. -#latex_appendices = [] - -# If false, no module index is generated. -#latex_domain_indices = True - - -# -- Options for manual page output -------------------------------------------- - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - ('index', 'bobbiovein', u'Vein Biometrics Recognition Library', [u'Idiap Research Institute'], 1) -] +# Included after all input documents +rst_epilog = """ +.. |project| replace:: Bob +.. |version| replace:: %s +.. |current-year| date:: %%Y +""" % (version,) # Default processing flags for sphinx -autoclass_content = 'both' +autoclass_content = 'class' autodoc_member_order = 'bysource' -autodoc_default_flags = ['members', 'undoc-members', 'inherited-members', 'show-inheritance'] +autodoc_default_flags = [ + 'members', + 'undoc-members', + 'inherited-members', + 'show-inheritance', + ] # For inter-documentation mapping: from bob.extension.utils import link_documentation -intersphinx_mapping = link_documentation([ - 'python', - 'numpy', - 'scipy', -]) - +intersphinx_mapping = link_documentation() + +# We want to remove all private (i.e. _. or __.__) members +# that are not in the list of accepted functions +accepted_private_functions = ['__array__'] + +def member_function_test(app, what, name, obj, skip, options): + # test if we have a private function + if len(name) > 1 and name[0] == '_': + # test if this private function should be allowed + if name not in accepted_private_functions: + # omit privat functions that are not in the list of accepted private functions + return skip + else: + # test if the method is documented + if not hasattr(obj, '__doc__') or not obj.__doc__: + return skip + return False def setup(app): - pass + app.connect('autodoc-skip-member', member_function_test) diff --git a/doc/img/CMC.png b/doc/img/CMC.png deleted file mode 100644 index 5a678cfaaeb5e71254970bfed8962bd21687ad9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21361 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 LtDnm{r-UW|C5fI4 diff --git a/doc/img/logo.png b/doc/img/logo.png index b9dd573a01019afd1af58a881996930e5212699d..b60858a7068bf45c1ed8e3da12fe244ccdcfe85d 100644 GIT binary patch literal 6266 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 literal 11280 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 diff --git a/requirements.txt b/requirements.txt index 8dbbc2f..28095bc 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,7 +9,7 @@ bob.io.matlab bob.io.image bob.ip.base bob.bio.base +bob.bio.db bob.db.utfvp -bob.db.vera +bob.db.verafinger bob.db.putvein -sphinx-rtd-theme diff --git a/setup.py b/setup.py index 02cae5e..6f7732f 100644 --- a/setup.py +++ b/setup.py @@ -11,9 +11,9 @@ setup( name='bob.bio.vein', version=open("version.txt").read().rstrip(), - description='Vein biometrics recognition based on Bob and the bob.bio framework', + description='Vein Recognition Library', - url='https://gitlab.idiap.ch/biometric/bob.bio.vein', + url='https://gitlab.idiap.ch/bob/bob.bio.vein', license='GPLv3', author='Andre Anjos,Pedro Tome', @@ -31,12 +31,6 @@ setup( entry_points={ - # registered database short cuts - 'bob.bio.database': [ - 'utfvp = bob.bio.vein.configurations.databases.utfvp:database', - 'vera = bob.bio.vein.configurations.databases.vera:database', - ], - # registered preprocessors 'bob.bio.preprocessor': [ 'nopp = bob.bio.vein.configurations.preprocessors:none', -- 2.21.0