[style] pep8 fixes
[keymanager.git] / setup.py
1 # -*- coding: utf-8 -*-
2 # setup.py
3 # Copyright (C) 2013 LEAP
4 #
5 # This program is free software: you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation, either version 3 of the License, or
8 # (at your option) any later version.
9 #
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
14 #
15 # You should have received a copy of the GNU General Public License
16 # along with this program. If not, see <http://www.gnu.org/licenses/>.
17 """
18 setup file for leap.keymanager
19 """
20 import re
21 from setuptools import setup
22 from setuptools import find_packages
23 from setuptools import Command
24
25 from pkg import utils
26
27
28 import versioneer
29 versioneer.versionfile_source = 'src/leap/keymanager/_version.py'
30 versioneer.versionfile_build = 'leap/keymanager/_version.py'
31 versioneer.tag_prefix = ''  # tags are like 1.2.0
32 versioneer.parentdir_prefix = 'leap.keymanager-'
33
34 trove_classifiers = [
35     'Development Status :: 4 - Beta',
36     'Intended Audience :: Developers',
37     'License :: OSI Approved :: GNU General Public License v3 (GPLv3)',
38     'Operating System :: OS Independent',
39     'Programming Language :: Python',
40     'Programming Language :: Python :: 2.6',
41     'Programming Language :: Python :: 2.7',
42     'Topic :: Communications :: Email',
43     'Topic :: Internet',
44     'Topic :: Security :: Cryptography',
45     'Topic :: Software Development :: Libraries',
46 ]
47
48 DOWNLOAD_BASE = ('https://github.com/leapcode/keymanager/'
49                  'archive/%s.tar.gz')
50 _versions = versioneer.get_versions()
51 VERSION = _versions['version']
52 VERSION_FULL = _versions['full']
53 DOWNLOAD_URL = ""
54
55 # get the short version for the download url
56 _version_short = re.findall('\d+\.\d+\.\d+', VERSION)
57 if len(_version_short) > 0:
58     VERSION_SHORT = _version_short[0]
59     DOWNLOAD_URL = DOWNLOAD_BASE % VERSION_SHORT
60
61 cmdclass = versioneer.get_cmdclass()
62
63
64 class freeze_debianver(Command):
65     """
66     Freezes the version in a debian branch.
67     To be used after merging the development branch onto the debian one.
68     """
69     user_options = []
70
71     def initialize_options(self):
72         pass
73
74     def finalize_options(self):
75         pass
76
77     def run(self):
78         proceed = str(raw_input(
79             "This will overwrite the file _version.py. Continue? [y/N] "))
80         if proceed != "y":
81             print("He. You scared. Aborting.")
82             return
83         template = r"""
84 # This file was generated by the `freeze_debianver` command in setup.py
85 # Using 'versioneer.py' (0.7+) from
86 # revision-control system data, or from the parent directory name of an
87 # unpacked source archive. Distribution tarballs contain a pre-generated copy
88 # of this file.
89
90 version_version = '{version}'
91 version_full = '{version_full}'
92 """
93         templatefun = r"""
94
95 def get_versions(default={}, verbose=False):
96         return {'version': version_version, 'full': version_full}
97 """
98         subst_template = template.format(
99             version=VERSION_SHORT,
100             version_full=VERSION_FULL) + templatefun
101         with open(versioneer.versionfile_source, 'w') as f:
102             f.write(subst_template)
103
104
105 cmdclass["freeze_debianver"] = freeze_debianver
106
107 # XXX add ref to docs
108
109 requirements = utils.parse_requirements()
110
111 if utils.is_develop_mode():
112     print
113     print ("[WARNING] Skipping leap-specific dependencies "
114            "because development mode is detected.")
115     print ("[WARNING] You can install "
116            "the latest published versions with "
117            "'pip install -r pkg/requirements-leap.pip'")
118     print ("[WARNING] Or you can instead do 'python setup.py develop' "
119            "from the parent folder of each one of them.")
120     print
121 else:
122     requirements += utils.parse_requirements(
123         reqfiles=["pkg/requirements-leap.pip"])
124
125 setup(
126     name='leap.keymanager',
127     version=VERSION,
128     cmdclass=cmdclass,
129     url='https://leap.se/',
130     download_url=DOWNLOAD_URL,
131     license='GPLv3+',
132     description='LEAP\'s Key Manager',
133     author='The LEAP Encryption Access Project',
134     author_email='info@leap.se',
135     maintainer='Kali Kaneko',
136     maintainer_email='kali@leap.se',
137     long_description=(
138         "The Key Manager handles all types of keys to allow for "
139         "point-to-point encryption between parties communicating through "
140         "LEAP infrastructure."
141     ),
142     classifiers=trove_classifiers,
143     namespace_packages=["leap"],
144     packages=find_packages('src', exclude=['leap.keymanager.tests']),
145     package_dir={'': 'src'},
146     test_suite='leap.keymanager.tests',
147     install_requires=requirements,
148     tests_require=utils.parse_requirements(
149         reqfiles=['pkg/requirements-testing.pip']),
150 )