setup.py 7.85 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#!/usr/bin/env python
# vim: set fileencoding=utf-8 :
# Andre Anjos <andre.anjos@idiap.ch>
# Mon 16 Apr 08:18:08 2012 CEST
#
# Copyright (C) Idiap Research Institute, Martigny, Switzerland
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, version 3 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.

# This file contains the python (distutils/setuptools) instructions so your
# package can be installed on **any** host system. It defines some basic
# information like the package name for instance, or its homepage.
#
# It also defines which other packages this python package depends on and that
# are required for this package's operation. The python subsystem will make
# sure all dependent packages are installed or will install them for you upon
# the installation of this package.
#
# The 'buildout' system we use here will go further and wrap this package in
# such a way to create an isolated python working environment. Buildout will
# make sure that dependencies which are not yet installed do get installed, but
# **without** requiring administrative privileges on the host system. This
# allows you to test your package with new python dependencies w/o requiring
# administrative interventions.

from setuptools import setup, dist

dist.Distribution(dict(setup_requires=['bob.extension']))

from bob.extension.utils import load_requirements, find_packages

install_requires = load_requirements()

# The only thing we do in this file is to call the setup() function with all
# parameters that define our package.
setup(

    # This is the basic information about your project. Modify all this
    # information before releasing code publicly.
    name='bob.pad.base',
    version=open("version.txt").read().rstrip(),
    description='A framework for executing the chain of presentation attack detection (PAD) experiments',

54
    url='https://gitlab.idiap.ch/bob/bob.pad.base',
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
    license='GPLv3',
    author='Pavel Korshunov',
    author_email='pavel.korshunov@idiap.ch',
    keywords="PAD framework, grid support, pipeline organization",

    # If you have a better, long description of your package, place it on the
    # 'doc' directory and then hook it here
    long_description=open('README.rst').read(),

    # This line is required for any distutils based packaging.
    packages=find_packages(),
    include_package_data=True,

    # This line defines which packages should be installed when you "install"
    # this package. All packages that are mentioned here, but are not installed
    # on the current system will be installed locally and only visible to the
    # scripts of this package. Don't worry - You won't need administrative
    # privileges when using buildout.
    install_requires=install_requires,

    # Your project should be called something like 'bob.<foo>' or
    # 'bob.<foo>.<bar>'. To implement this correctly and still get all your
    # packages to be imported w/o problems, you need to implement namespaces
    # on the various levels of the package and declare them here. See more
    # about this here:
    # http://peak.telecommunity.com/DevCenter/setuptools#namespace-packages
    #
    # Our database packages are good examples of namespace implementations
    # using several layers. You can check them out here:
    # https://github.com/idiap/bob/wiki/Satellite-Packages


    # This entry defines which scripts you will have inside the 'bin' directory
    # once you install the package (or run 'bin/buildout'). The order of each
    # entry under 'console_scripts' is like this:
    #   script-name-at-bin-directory = module.at.your.library:function
    #
    # The module.at.your.library is the python file within your library, using
    # the python syntax for directories (i.e., a '.' instead of '/' or '\').
    # This syntax also omits the '.py' extension of the filename. So, a file
    # installed under 'example/foo.py' that contains a function which
    # implements the 'main()' function of particular script you want to have
    # should be referred as 'example.foo:main'.
    #
    # In this simple example we will create a single program that will print
    # the version of bob.
    entry_points={

        # scripts should be declared using this entry:
        'console_scripts': [
            'grid_search.py    = bob.pad.base.script.grid_search:main',
            'spoof.py         = bob.pad.base.script.spoof:main',
        ],

        # bob database declaration
        'bob.db': [
            'dummy = bob.pad.base.test.dummy.database:Interface', # driver for bobdb_manage
112
            'pad_filelist = bob.pad.base.database.filelist.driver:Interface',
113
114
115
116
        ],

        'bob.pad.database': [
            'dummy             = bob.pad.base.test.dummy.database:database',  # for test purposes only
117
            'dummysql             = bob.pad.base.test.dummy.database_sql:database',  # for test purposes only
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
        ],

        'bob.pad.preprocessor': [
            'test             = bob.pad.base.test.dummy.preprocessor:preprocessor',  # for test purposes only
        ],

        'bob.pad.extractor': [
            'test             = bob.pad.base.test.dummy.extractor:extractor',  # for test purposes only
        ],

        'bob.pad.algorithm': [
            'test             = bob.pad.base.test.dummy.algorithm:algorithm',  # for test purposes only
        ],
        'bob.pad.grid': [
            'demanding         = bob.pad.base.config.grid.demanding:grid',
        ],
134
135
136
137

        # main entry for bob pad cli
        'bob.cli': [
            'pad               = bob.pad.base.script.pad:pad',
138
            'vuln              = bob.pad.base.script.vuln:vuln',
139
140
141
142
        ],

        # bob pad scripts
        'bob.pad.cli': [
143
144
145
146
            'metrics          = bob.pad.base.script.pad_commands:metrics',
            'hist             = bob.pad.base.script.pad_commands:hist',
            'det              = bob.pad.base.script.pad_commands:det',
            'roc              = bob.pad.base.script.pad_commands:roc',
147
            'epc              = bob.pad.base.script.pad_commands:epc',
148
149
            'gen              = bob.pad.base.script.pad_commands:gen',
            'evaluate         = bob.pad.base.script.pad_commands:evaluate',
150
        ],
151
152
153
154
155
156

        # bob vuln scripts
        'bob.vuln.cli': [
            'metrics          = bob.pad.base.script.vuln_commands:metrics',
            'hist             = bob.pad.base.script.vuln_commands:hist',
            'det              = bob.pad.base.script.vuln_commands:det',
157
            'roc              = bob.pad.base.script.vuln_commands:roc',
158
159
160
161
162
163
164
            'epc              = bob.pad.base.script.vuln_commands:epc',
            'epsc             = bob.pad.base.script.vuln_commands:epsc',
            'gen              = bob.pad.base.script.vuln_commands:gen',
            'fmr_iapmr        = bob.pad.base.script.vuln_commands:fmr_iapmr',
            'evaluate         = bob.pad.base.script.vuln_commands:evaluate',
        ],

165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
    },

    # Classifiers are important if you plan to distribute this package through
    # PyPI. You can find the complete list of classifiers that are valid and
    # useful here (http://pypi.python.org/pypi?%3Aaction=list_classifiers).
    classifiers=[
        'Framework :: Bob',
        'Development Status :: 3 - Alpha',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: GNU General Public License v3 (GPLv3)',
        'Natural Language :: English',
        'Programming Language :: Python',
        'Topic :: Scientific/Engineering :: Artificial Intelligence',
    ],
)