# Copyright (C) 2015 GRNET S.A. # # 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, either version 3 of the License, or # (at your option) any later version. # # 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/>. # import os import sys from distutils.util import convert_path from fnmatch import fnmatchcase from setuptools import setup, find_packages from agkyra import __version__ # Package info PACKAGE_NAME = "agkyra" VERSION = __version__ SHORT_DESCRIPTION = 'Agkyra File Syncer' PACKAGES_ROOT = '.' PACKAGES = find_packages(PACKAGES_ROOT) # Package meta CLASSIFIERS = [] # Package requirements INSTALL_REQUIRES = [ 'kamaki>=0.13.4', 'watchdog', 'psutil', 'ws4py', 'certifi', 'mock', ] EXTRAS_REQUIRES = { } TESTS_REQUIRES = [ 'mock', ] # Provided as an attribute, so you can append to these instead # of replicating them: standard_exclude = ["*.py", "*.pyc", "*$py.class", "*~", ".*", "*.bak"] standard_exclude_directories = [ ".*", "CVS", "_darcs", "./build", "./dist", "EGG-INFO", "*.egg-info", ] # (c) 2005 Ian Bicking and contributors; written for Paste (http://pythonpaste.org) # Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php # Note: you may want to copy this into your setup.py file verbatim, as # you can't import this from another package, when you don't know if # that package is installed yet. def find_package_data( where=".", package="", exclude=standard_exclude, exclude_directories=standard_exclude_directories, only_in_packages=True, show_ignored=False): """ Return a dictionary suitable for use in ``package_data`` in a distutils ``setup.py`` file. The dictionary looks like:: {"package": [files]} Where ``files`` is a list of all the files in that package that don"t match anything in ``exclude``. If ``only_in_packages`` is true, then top-level directories that are not packages won"t be included (but directories under packages will). Directories matching any pattern in ``exclude_directories`` will be ignored; by default directories with leading ``.``, ``CVS``, and ``_darcs`` will be ignored. If ``show_ignored`` is true, then all the files that aren"t included in package data are shown on stderr (for debugging purposes). Note patterns use wildcards, or can be exact paths (including leading ``./``), and all searching is case-insensitive. """ out = {} stack = [(convert_path(where), "", package, only_in_packages)] while stack: where, prefix, package, only_in_packages = stack.pop(0) for name in os.listdir(where): fn = os.path.join(where, name) if os.path.isdir(fn): bad_name = False for pattern in exclude_directories: if (fnmatchcase(name, pattern) or fn.lower() == pattern.lower()): bad_name = True if show_ignored: print >> sys.stderr, ( "Directory %s ignored by pattern %s" % (fn, pattern)) break if bad_name: continue if (os.path.isfile(os.path.join(fn, "__init__.py")) and not prefix): if not package: new_package = name else: new_package = package + "." + name stack.append((fn, "", new_package, False)) else: stack.append((fn, prefix + name + "/", package, only_in_packages)) elif package or not only_in_packages: # is a file bad_name = False for pattern in exclude: if (fnmatchcase(name, pattern) or fn.lower() == pattern.lower()): bad_name = True if show_ignored: print >> sys.stderr, ( "File %s ignored by pattern %s" % (fn, pattern)) break if bad_name: continue out.setdefault(package, []).append(prefix+name) return out setup( name=PACKAGE_NAME, version=VERSION, license='GNU GPLv3', url='http://www.synnefo.org/', description=SHORT_DESCRIPTION, classifiers=CLASSIFIERS, author='Synnefo development team', author_email='synnefo-devel@googlegroups.com', maintainer='Synnefo development team', maintainer_email='synnefo-devel@googlegroups.com', packages=PACKAGES, package_dir={'': PACKAGES_ROOT}, include_package_data=True, package_data=find_package_data('.'), zip_safe=False, install_requires=INSTALL_REQUIRES, extras_require=EXTRAS_REQUIRES, tests_require=TESTS_REQUIRES, dependency_links=['http://www.synnefo.org/packages/pypi'], scripts=['agkyra/scripts/agkyra'], )