Statistics
| Branch: | Tag: | Revision:

root / astakosclient / setup.py @ 26498848

History | View | Annotate | Download (6.4 kB)

1 99165736 Christos Stavrakakis
# Copyright 2012, 2013 GRNET S.A. All rights reserved.
2 99165736 Christos Stavrakakis
#
3 99165736 Christos Stavrakakis
# Redistribution and use in source and binary forms, with or
4 99165736 Christos Stavrakakis
# without modification, are permitted provided that the following
5 99165736 Christos Stavrakakis
# conditions are met:
6 99165736 Christos Stavrakakis
#
7 99165736 Christos Stavrakakis
#   1. Redistributions of source code must retain the above
8 99165736 Christos Stavrakakis
#      copyright notice, this list of conditions and the following
9 99165736 Christos Stavrakakis
#      disclaimer.
10 99165736 Christos Stavrakakis
#
11 99165736 Christos Stavrakakis
#   2. Redistributions in binary form must reproduce the above
12 99165736 Christos Stavrakakis
#      copyright notice, this list of conditions and the following
13 99165736 Christos Stavrakakis
#      disclaimer in the documentation and/or other materials
14 99165736 Christos Stavrakakis
#      provided with the distribution.
15 99165736 Christos Stavrakakis
#
16 99165736 Christos Stavrakakis
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 99165736 Christos Stavrakakis
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 99165736 Christos Stavrakakis
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 99165736 Christos Stavrakakis
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 99165736 Christos Stavrakakis
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 99165736 Christos Stavrakakis
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 99165736 Christos Stavrakakis
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 99165736 Christos Stavrakakis
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 99165736 Christos Stavrakakis
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 99165736 Christos Stavrakakis
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 99165736 Christos Stavrakakis
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 99165736 Christos Stavrakakis
# POSSIBILITY OF SUCH DAMAGE.
28 99165736 Christos Stavrakakis
#
29 99165736 Christos Stavrakakis
# The views and conclusions contained in the software and
30 99165736 Christos Stavrakakis
# documentation are those of the authors and should not be
31 99165736 Christos Stavrakakis
# interpreted as representing official policies, either expressed
32 99165736 Christos Stavrakakis
# or implied, of GRNET S.A.
33 99165736 Christos Stavrakakis
#
34 99165736 Christos Stavrakakis
import distribute_setup
35 99165736 Christos Stavrakakis
distribute_setup.use_setuptools()
36 99165736 Christos Stavrakakis
37 99165736 Christos Stavrakakis
import os
38 99165736 Christos Stavrakakis
import sys
39 99165736 Christos Stavrakakis
40 99165736 Christos Stavrakakis
from distutils.util import convert_path
41 99165736 Christos Stavrakakis
from fnmatch import fnmatchcase
42 99165736 Christos Stavrakakis
from setuptools import setup, find_packages
43 99165736 Christos Stavrakakis
44 99165736 Christos Stavrakakis
HERE = os.path.abspath(os.path.normpath(os.path.dirname(__file__)))
45 99165736 Christos Stavrakakis
46 5790b031 Ilias Tsitsimpis
# Add astakosclient to sys.path and load version module
47 5790b031 Ilias Tsitsimpis
sys.path.append("astakosclient")
48 5790b031 Ilias Tsitsimpis
from version import __version__
49 99165736 Christos Stavrakakis
50 99165736 Christos Stavrakakis
# Package info
51 99165736 Christos Stavrakakis
VERSION = __version__
52 f8958a97 Ilias Tsitsimpis
SHORT_DESCRIPTION = 'A client for the astakos authentication service.'
53 99165736 Christos Stavrakakis
54 99165736 Christos Stavrakakis
PACKAGES_ROOT = '.'
55 99165736 Christos Stavrakakis
PACKAGES = find_packages(PACKAGES_ROOT)
56 99165736 Christos Stavrakakis
57 99165736 Christos Stavrakakis
# Package meta
58 99165736 Christos Stavrakakis
CLASSIFIERS = []
59 99165736 Christos Stavrakakis
60 99165736 Christos Stavrakakis
# Package requirements
61 99165736 Christos Stavrakakis
INSTALL_REQUIRES = [
62 6837f014 Ilias Tsitsimpis
    "objpool >= 0.2",
63 cbc0b438 Ilias Tsitsimpis
    "simplejson"
64 99165736 Christos Stavrakakis
]
65 99165736 Christos Stavrakakis
66 99165736 Christos Stavrakakis
# Provided as an attribute, so you can append to these instead
67 99165736 Christos Stavrakakis
# of replicating them:
68 99165736 Christos Stavrakakis
standard_exclude = ["*.py", "*.pyc", "*$py.class", "*~", ".*", "*.bak"]
69 99165736 Christos Stavrakakis
standard_exclude_directories = [".*", "CVS", "_darcs", "./build", "./dist",
70 99165736 Christos Stavrakakis
                                "EGG-INFO", "*.egg-info"]
71 99165736 Christos Stavrakakis
72 83325b42 Ilias Tsitsimpis
73 83325b42 Ilias Tsitsimpis
# (c) 2005 Ian Bicking and contributors;
74 83325b42 Ilias Tsitsimpis
#     written for Paste (http://pythonpaste.org)
75 83325b42 Ilias Tsitsimpis
# Licensed under the MIT license:
76 83325b42 Ilias Tsitsimpis
#     http://www.opensource.org/licenses/mit-license.php
77 99165736 Christos Stavrakakis
# Note: you may want to copy this into your setup.py file verbatim, as
78 99165736 Christos Stavrakakis
# you can't import this from another package, when you don't know if
79 99165736 Christos Stavrakakis
# that package is installed yet.
80 99165736 Christos Stavrakakis
def find_package_data(
81 83325b42 Ilias Tsitsimpis
        where=".",
82 83325b42 Ilias Tsitsimpis
        package="",
83 83325b42 Ilias Tsitsimpis
        exclude=standard_exclude,
84 83325b42 Ilias Tsitsimpis
        exclude_directories=standard_exclude_directories,
85 83325b42 Ilias Tsitsimpis
        only_in_packages=True,
86 83325b42 Ilias Tsitsimpis
        show_ignored=False):
87 99165736 Christos Stavrakakis
    """
88 99165736 Christos Stavrakakis
    Return a dictionary suitable for use in ``package_data``
89 99165736 Christos Stavrakakis
    in a distutils ``setup.py`` file.
90 99165736 Christos Stavrakakis

91 99165736 Christos Stavrakakis
    The dictionary looks like::
92 99165736 Christos Stavrakakis

93 99165736 Christos Stavrakakis
        {"package": [files]}
94 99165736 Christos Stavrakakis

95 99165736 Christos Stavrakakis
    Where ``files`` is a list of all the files in that package that
96 99165736 Christos Stavrakakis
    don"t match anything in ``exclude``.
97 99165736 Christos Stavrakakis

98 99165736 Christos Stavrakakis
    If ``only_in_packages`` is true, then top-level directories that
99 99165736 Christos Stavrakakis
    are not packages won"t be included (but directories under packages
100 99165736 Christos Stavrakakis
    will).
101 99165736 Christos Stavrakakis

102 99165736 Christos Stavrakakis
    Directories matching any pattern in ``exclude_directories`` will
103 99165736 Christos Stavrakakis
    be ignored; by default directories with leading ``.``, ``CVS``,
104 99165736 Christos Stavrakakis
    and ``_darcs`` will be ignored.
105 99165736 Christos Stavrakakis

106 99165736 Christos Stavrakakis
    If ``show_ignored`` is true, then all the files that aren"t
107 99165736 Christos Stavrakakis
    included in package data are shown on stderr (for debugging
108 99165736 Christos Stavrakakis
    purposes).
109 99165736 Christos Stavrakakis

110 99165736 Christos Stavrakakis
    Note patterns use wildcards, or can be exact paths (including
111 99165736 Christos Stavrakakis
    leading ``./``), and all searching is case-insensitive.
112 99165736 Christos Stavrakakis
    """
113 99165736 Christos Stavrakakis
    out = {}
114 99165736 Christos Stavrakakis
    stack = [(convert_path(where), "", package, only_in_packages)]
115 99165736 Christos Stavrakakis
    while stack:
116 99165736 Christos Stavrakakis
        where, prefix, package, only_in_packages = stack.pop(0)
117 99165736 Christos Stavrakakis
        for name in os.listdir(where):
118 99165736 Christos Stavrakakis
            fn = os.path.join(where, name)
119 99165736 Christos Stavrakakis
            if os.path.isdir(fn):
120 99165736 Christos Stavrakakis
                bad_name = False
121 99165736 Christos Stavrakakis
                for pattern in exclude_directories:
122 83325b42 Ilias Tsitsimpis
                    if (fnmatchcase(name, pattern) or
123 83325b42 Ilias Tsitsimpis
                            fn.lower() == pattern.lower()):
124 99165736 Christos Stavrakakis
                        bad_name = True
125 99165736 Christos Stavrakakis
                        if show_ignored:
126 99165736 Christos Stavrakakis
                            print >> sys.stderr, (
127 99165736 Christos Stavrakakis
                                "Directory %s ignored by pattern %s"
128 99165736 Christos Stavrakakis
                                % (fn, pattern))
129 99165736 Christos Stavrakakis
                        break
130 99165736 Christos Stavrakakis
                if bad_name:
131 99165736 Christos Stavrakakis
                    continue
132 99165736 Christos Stavrakakis
                if (os.path.isfile(os.path.join(fn, "__init__.py"))
133 83325b42 Ilias Tsitsimpis
                        and not prefix):
134 99165736 Christos Stavrakakis
                    if not package:
135 99165736 Christos Stavrakakis
                        new_package = name
136 99165736 Christos Stavrakakis
                    else:
137 99165736 Christos Stavrakakis
                        new_package = package + "." + name
138 99165736 Christos Stavrakakis
                    stack.append((fn, "", new_package, False))
139 99165736 Christos Stavrakakis
                else:
140 99165736 Christos Stavrakakis
                    stack.append((fn, prefix + name + "/", package,
141 99165736 Christos Stavrakakis
                                  only_in_packages))
142 99165736 Christos Stavrakakis
            elif package or not only_in_packages:
143 99165736 Christos Stavrakakis
                # is a file
144 99165736 Christos Stavrakakis
                bad_name = False
145 99165736 Christos Stavrakakis
                for pattern in exclude:
146 83325b42 Ilias Tsitsimpis
                    if (fnmatchcase(name, pattern) or
147 83325b42 Ilias Tsitsimpis
                            fn.lower() == pattern.lower()):
148 99165736 Christos Stavrakakis
                        bad_name = True
149 99165736 Christos Stavrakakis
                        if show_ignored:
150 99165736 Christos Stavrakakis
                            print >> sys.stderr, (
151 99165736 Christos Stavrakakis
                                "File %s ignored by pattern %s"
152 99165736 Christos Stavrakakis
                                % (fn, pattern))
153 99165736 Christos Stavrakakis
                        break
154 99165736 Christos Stavrakakis
                if bad_name:
155 99165736 Christos Stavrakakis
                    continue
156 99165736 Christos Stavrakakis
                out.setdefault(package, []).append(prefix + name)
157 99165736 Christos Stavrakakis
    return out
158 99165736 Christos Stavrakakis
159 99165736 Christos Stavrakakis
setup(
160 99165736 Christos Stavrakakis
    name='astakosclient',
161 99165736 Christos Stavrakakis
    version=VERSION,
162 99165736 Christos Stavrakakis
    license='BSD',
163 99165736 Christos Stavrakakis
    url='http://www.synnefo.org/',
164 99165736 Christos Stavrakakis
    description=SHORT_DESCRIPTION,
165 99165736 Christos Stavrakakis
    classifiers=CLASSIFIERS,
166 99165736 Christos Stavrakakis
167 99165736 Christos Stavrakakis
    author='Synnefo development team',
168 99165736 Christos Stavrakakis
    author_email='synnefo-devel@googlegroups.com',
169 99165736 Christos Stavrakakis
    maintainer='Synnefo development team',
170 99165736 Christos Stavrakakis
    maintainer_email='synnefo-devel@googlegroups.com',
171 99165736 Christos Stavrakakis
172 99165736 Christos Stavrakakis
    packages=PACKAGES,
173 99165736 Christos Stavrakakis
    package_dir={'': PACKAGES_ROOT},
174 99165736 Christos Stavrakakis
    include_package_data=True,
175 99165736 Christos Stavrakakis
    package_data=find_package_data('.'),
176 99165736 Christos Stavrakakis
    zip_safe=False,
177 99165736 Christos Stavrakakis
178 99165736 Christos Stavrakakis
    install_requires=INSTALL_REQUIRES,
179 99165736 Christos Stavrakakis
180 83325b42 Ilias Tsitsimpis
    entry_points={},
181 99165736 Christos Stavrakakis
)