Small changes to fixing transcode percentage
[mediagoblin.git] / setup.py
CommitLineData
8e1e744d 1# GNU MediaGoblin -- federated, autonomous media hosting
7f4ebeed 2# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
e5572c60
ML
3#
4# This program is free software: you can redistribute it and/or modify
5# it under the terms of the GNU Affero General Public License as published by
6# the Free Software Foundation, either version 3 of the License, or
7# (at your option) any later version.
8#
9# This program is distributed in the hope that it will be useful,
10# but WITHOUT ANY WARRANTY; without even the implied warranty of
11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12# GNU Affero General Public License for more details.
13#
14# You should have received a copy of the GNU Affero General Public License
15# along with this program. If not, see <http://www.gnu.org/licenses/>.
16
897354e6
BP
17from __future__ import print_function
18
c1b342ba 19from setuptools import setup, find_packages
0c32c7fe 20from io import open
cf37fffc
WKG
21import os
22import re
23
897354e6
BP
24import sys
25
26PY2 = sys.version_info[0] == 2 # six is not installed yet
27
cf37fffc
WKG
28READMEFILE = "README"
29VERSIONFILE = os.path.join("mediagoblin", "_version.py")
30VSRE = r"^__version__ = ['\"]([^'\"]*)['\"]"
31
32
33def get_version():
897354e6
BP
34 with open(VERSIONFILE, "rt") as fobj:
35 verstrline = fobj.read()
cf37fffc
WKG
36 mo = re.search(VSRE, verstrline, re.M)
37 if mo:
38 return mo.group(1)
39 else:
243c3843
NY
40 raise RuntimeError("Unable to find version string in %s." %
41 VERSIONFILE)
cf37fffc 42
2e2a1aec 43pyversion_install_requires = []
897354e6 44if PY2:
7c1287b6 45 pyversion_install_requires.append('sqlalchemy-migrate>=0.9.6')
e340879d 46 pyversion_install_requires.append('mock==1.0.1') # mock is in the stdlib for 3.3+
ab46e89a 47 # PyPI version (1.4.2) does not have proper Python 3 support
2e2a1aec 48 pyversion_install_requires.append('ExifRead')
897354e6
BP
49
50install_requires = [
d61778a4 51 'waitress',
af6b89ea 52 'alembic>=0.7.5',
897354e6
BP
53 'python-dateutil',
54 'wtforms',
55 'py-bcrypt',
56 'pytest>=2.3.1',
57 'pytest-xdist',
58 'werkzeug>=0.7',
00d0bb71 59 'celery>=3.0',
897354e6 60 'jinja2',
173099ad 61 'Babel>=1.3',
6557bab6 62 'WebTest>=2.0.18',
897354e6
BP
63 'ConfigObj',
64 'Markdown',
0c9c5cab 65 'sqlalchemy',
897354e6
BP
66 'itsdangerous',
67 'pytz',
09e2db30 68 'sphinx',
cb718ba0 69 'six',
f6bad0eb 70 'oauthlib',
897354e6 71 'unidecode',
f6bad0eb 72 'jsonschema',
03ff865c 73 'PasteDeploy',
062e3789 74 'PasteScript',
3252f738 75 'requests>=2.6.0',
f6bad0eb 76 'pyld',
411ae185 77 'ExifRead>=2.0.0'
897354e6
BP
78 # This is optional:
79 # 'translitcodec',
80 # For now we're expecting that users will install this from
81 # their package managers.
82 # 'lxml',
173099ad 83 # 'Pillow',
2e2a1aec 84] + pyversion_install_requires
897354e6 85
ab46e89a
BP
86if not PY2:
87 # PyPI version (1.4.2) does not have proper Python 3 support
ab46e89a
BP
88 install_requires.append('ExifRead>=2.0.0')
89
9156ab68 90with open(READMEFILE, encoding="utf-8") as fobj:
897354e6
BP
91 long_description = fobj.read()
92
26990bc0
AL
93try:
94 setup(
243c3843
NY
95 name="mediagoblin",
96 version=get_version(),
c1b342ba 97 packages=find_packages(exclude=['ez_setup', 'examples', 'tests']),
31a8ff42 98 zip_safe=False,
d595374d 99 include_package_data = True,
0c04118b 100 # scripts and dependencies
897354e6 101 install_requires=install_requires,
4b5f4e87 102 test_suite='nose.collector',
243c3843 103 entry_points="""\
b7e57b1f
WKG
104 [console_scripts]
105 gmg = mediagoblin.gmg_commands:main_cli
029cad45 106
b7e57b1f
WKG
107 [paste.app_factory]
108 app = mediagoblin.app:paste_app_factory
df0953ce 109
227a81b5
CAW
110 [paste.server_runner]
111 paste_server_selector = mediagoblin.app:paste_server_selector
112
72ae87af
CAW
113 [paste.filter_app_factory]
114 errors = mediagoblin.errormiddleware:mgoblin_error_middleware
115
b7e57b1f
WKG
116 [zc.buildout]
117 make_user_dev_dirs = mediagoblin.buildout_recipes:MakeUserDevDirs
84d4f04e 118
b7e57b1f
WKG
119 [babel.extractors]
120 jinja2 = jinja2.ext:babel_extract
121 """,
b7e57b1f
WKG
122 license='AGPLv3',
123 author='Free Software Foundation and contributors',
124 author_email='cwebber@gnu.org',
125 url="http://mediagoblin.org/",
897354e6 126 long_description=long_description,
a6570fae 127 description='MediaGoblin is a web application for publishing all kinds of media',
b7e57b1f
WKG
128 classifiers=[
129 "Development Status :: 3 - Alpha",
130 "Environment :: Web Environment",
1ac1f00e 131 "License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)",
b7e57b1f
WKG
132 "Operating System :: OS Independent",
133 "Programming Language :: Python",
897354e6 134 'Programming Language :: Python :: 2',
3031764d 135 'Programming Language :: Python :: 2.7',
897354e6
BP
136 'Programming Language :: Python :: 3',
137 'Programming Language :: Python :: 3.3',
138 'Programming Language :: Python :: 3.4',
b7e57b1f
WKG
139 "Topic :: Internet :: WWW/HTTP :: Dynamic Content"
140 ],
31a8ff42 141 )
897354e6
BP
142except TypeError as e:
143 import sys
144
26990bc0
AL
145 # Check if the problem is caused by the sqlalchemy/setuptools conflict
146 msg_as_str = str(e)
147 if not (msg_as_str == 'dist must be a Distribution instance'):
148 raise
149
150 # If so, tell the user it is OK to just run the script again.
897354e6
BP
151 print("\n\n---------- NOTE ----------", file=sys.stderr)
152 print("The setup.py command you ran failed.\n", file=sys.stderr)
153 print("It is a known possible failure. Just run it again. It works the "
154 "second time.", file=sys.stderr)
26990bc0 155 sys.exit(1)