openlp/setup.py

183 lines
6.5 KiB
Python
Raw Normal View History

#!/usr/bin/env python3
2010-03-21 23:58:01 +00:00
# -*- coding: utf-8 -*-
2013-07-18 19:28:35 +00:00
# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4
2010-03-21 23:58:01 +00:00
2019-04-13 13:00:22 +00:00
##########################################################################
# OpenLP - Open Source Lyrics Projection #
# ---------------------------------------------------------------------- #
# Copyright (c) 2008-2019 OpenLP Developers #
# ---------------------------------------------------------------------- #
# 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 <https://www.gnu.org/licenses/>. #
##########################################################################
2010-02-23 15:45:26 +00:00
import re
2019-09-17 20:23:35 +00:00
from subprocess import run
2018-10-02 04:39:42 +00:00
2018-10-24 21:02:06 +00:00
from setuptools import setup, find_packages
2013-04-16 17:56:06 +00:00
VERSION_FILE = 'openlp/.version'
SPLIT_ALPHA_DIGITS = re.compile(r'(\d+|\D+)')
2013-04-16 17:56:06 +00:00
def try_int(s):
"""
Convert string s to an integer if possible. Fail silently and return
the string as-is if it isn't an integer.
2014-03-17 19:05:55 +00:00
:param s: The string to try to convert.
"""
try:
return int(s)
except (TypeError, ValueError):
return s
2013-04-16 17:56:06 +00:00
def natural_sort_key(s):
"""
Return a tuple by which s is sorted.
2014-03-17 19:05:55 +00:00
:param s: A string value from the list we want to sort.
"""
2013-08-31 18:17:38 +00:00
return list(map(try_int, SPLIT_ALPHA_DIGITS.findall(s)))
2013-04-16 17:56:06 +00:00
def natural_sort(seq):
"""
Returns a copy of seq, sorted by natural string sort.
:param seq: The sequence to sort.
:param compare: The comparison method to use
:return: The sorted sequence
"""
import copy
temp = copy.copy(seq)
temp.sort(key=natural_sort_key)
return temp
ver_file = None
try:
2013-06-06 06:40:10 +00:00
# Get the revision of this tree.
2019-09-17 20:23:35 +00:00
git_version = run(['git', 'describe', '--tags'], capture_output=True, check=True, universal_newlines=True).stdout
version_string = '+'.join(git_version.strip().rsplit('-g', 1))
version_string = '.dev'.join(version_string.rsplit('-', 1))
2013-08-31 18:17:38 +00:00
ver_file = open(VERSION_FILE, 'w')
2013-06-06 06:40:10 +00:00
ver_file.write(version_string)
except Exception:
2013-08-31 18:17:38 +00:00
ver_file = open(VERSION_FILE, 'r')
2013-06-06 06:40:10 +00:00
version_string = ver_file.read().strip()
finally:
ver_file.close()
2009-08-27 14:02:00 +00:00
2019-03-26 16:55:02 +00:00
2009-08-27 14:02:00 +00:00
setup(
name='OpenLP',
2013-06-06 06:40:10 +00:00
version=version_string,
description="Open source Church presentation and lyrics projection application.",
long_description="""\
2014-04-02 18:51:21 +00:00
OpenLP (previously openlp.org) is free church presentation software, or lyrics projection software, used to display
slides of songs, Bible verses, videos, images, and even presentations (if PowerPoint is installed) for church worship
using a computer and a data projector.""",
classifiers=[
'Development Status :: 4 - Beta',
'Environment :: MacOS X',
'Environment :: Win32 (MS Windows)',
'Environment :: X11 Applications',
'Environment :: X11 Applications :: Qt',
'Intended Audience :: End Users/Desktop',
'Intended Audience :: Religion',
2019-04-13 13:00:22 +00:00
'License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)',
'Natural Language :: Afrikaans',
'Natural Language :: Dutch',
'Natural Language :: English',
'Natural Language :: French',
'Natural Language :: German',
'Natural Language :: Hungarian',
'Natural Language :: Indonesian',
'Natural Language :: Japanese',
'Natural Language :: Norwegian',
'Natural Language :: Portuguese (Brazilian)',
'Natural Language :: Russian',
'Natural Language :: Swedish',
'Operating System :: MacOS :: MacOS X',
'Operating System :: Microsoft :: Windows',
'Operating System :: POSIX :: BSD :: FreeBSD',
'Operating System :: POSIX :: Linux',
'Programming Language :: Python',
2014-07-01 21:10:26 +00:00
'Programming Language :: Python :: 3',
'Topic :: Desktop Environment :: Gnome',
'Topic :: Desktop Environment :: K Desktop Environment (KDE)',
'Topic :: Multimedia',
'Topic :: Multimedia :: Graphics :: Presentation',
'Topic :: Multimedia :: Sound/Audio',
'Topic :: Multimedia :: Video',
'Topic :: Religion'
2014-04-02 18:51:21 +00:00
], # Get strings from http://pypi.python.org/pypi?%3Aaction=list_classifiers
keywords='open source church presentation lyrics projection song bible display project',
author='Raoul Snyman',
author_email='raoulsnyman@openlp.org',
url='https://openlp.org/',
2019-04-13 13:00:22 +00:00
license='GPL-3.0-or-later',
2018-10-27 21:31:14 +00:00
packages=find_packages(exclude=['ez_setup', 'tests*']),
include_package_data=True,
zip_safe=False,
2018-10-05 07:24:47 +00:00
python_requires='>=3.6',
2019-04-01 23:34:53 +00:00
install_requires=[
'alembic',
'appdirs',
'beautifulsoup4',
'chardet',
'dbus-python; platform_system=="Linux"',
'lxml',
'Mako',
'pymediainfo >= 2.2',
'pyobjc; platform_system=="Darwin"',
'pyobjc-framework-Cocoa; platform_system=="Darwin"',
'PyQt5 >= 5.12',
'PyQtWebEngine',
'python-vlc',
2019-04-01 23:34:53 +00:00
'pywin32; platform_system=="Windows"',
'QtAwesome',
'requests',
'SQLAlchemy >= 0.5',
'waitress',
'WebOb',
'websockets',
'zeroconf'
2019-04-01 23:34:53 +00:00
],
extras_require={
'agpl-pdf': ['PyMuPDF'],
2019-04-01 22:44:08 +00:00
'darkstyle': ['QDarkStyle'],
'mysql': ['pymysql'],
'odbc': ['pyodbc'],
'postgresql': ['psycopg2'],
'spellcheck': ['pyenchant >= 1.6'],
2018-10-12 22:11:04 +00:00
'sword-bibles': ['pysword'],
# Required for scripts/*.py:
'jenkins': ['python-jenkins'],
2019-09-18 16:44:39 +00:00
'launchpad': ['launchpadlib'],
'test': [
'PyMuPDF',
'pyodbc',
'pysword',
'pytest',
'python-xlib; platform_system=="Linux"',
'flake8',
]
},
2019-05-25 14:43:43 +00:00
setup_requires=['pytest-runner'],
entry_points={'gui_scripts': ['openlp = openlp.__main__:start']}
)