Add pyproject.toml and switch to setup.cfg with only a skeleton setup.py.
This commit is contained in:
parent
136efabd3b
commit
ecea680d67
6
pyproject.toml
Normal file
6
pyproject.toml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[build-system]
|
||||||
|
requires = [
|
||||||
|
"setuptools>=42",
|
||||||
|
"wheel"
|
||||||
|
]
|
||||||
|
build-backend = "setuptools.build_meta"
|
106
setup.cfg
Normal file
106
setup.cfg
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
# GNU MediaGoblin -- federated, autonomous media hosting
|
||||||
|
# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero 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 Affero General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
name = mediagoblin
|
||||||
|
version = attr: mediagoblin._version.__version__
|
||||||
|
author = MediaGoblin contributors
|
||||||
|
author_email = mediagoblin-devel@gnu.org
|
||||||
|
license = AGPLv3
|
||||||
|
description = MediaGoblin is a web application for publishing all kinds of media
|
||||||
|
long_description = file: README
|
||||||
|
url = https://mediagoblin.org/
|
||||||
|
project_urls =
|
||||||
|
Bug Tracker = https://issues.mediagoblin.org/report/1
|
||||||
|
classifiers=[
|
||||||
|
Development Status :: 3 - Alpha
|
||||||
|
Environment :: Web Environment
|
||||||
|
License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
|
||||||
|
Operating System :: OS Independent
|
||||||
|
Programming Language :: Python
|
||||||
|
Programming Language :: Python :: 3
|
||||||
|
Topic :: Internet :: WWW/HTTP :: Dynamic Content
|
||||||
|
|
||||||
|
[options]
|
||||||
|
package_dir =
|
||||||
|
= .
|
||||||
|
packages = find:
|
||||||
|
python_requires = >=3.6
|
||||||
|
zip_safe = False
|
||||||
|
include_package_data = True
|
||||||
|
install_requires =
|
||||||
|
alembic>=0.7.5
|
||||||
|
Babel>=1.3
|
||||||
|
celery>=3.0,<4.3.0 # Removed the "sqlite" transport alias in 4.3.0
|
||||||
|
# making tests fail.
|
||||||
|
certifi>=2017.4.17 # Required by requests on Fedora 33 (bin/gmg fails)
|
||||||
|
ConfigObj
|
||||||
|
email-validator
|
||||||
|
ExifRead>=2.0.0
|
||||||
|
feedgenerator
|
||||||
|
itsdangerous
|
||||||
|
jinja2<3.0.0 # 3.0.0 uses f-strings (Python >= 3.7) breaking Debian 9.
|
||||||
|
jsonschema
|
||||||
|
Markdown
|
||||||
|
oauthlib
|
||||||
|
PasteScript
|
||||||
|
py-bcrypt
|
||||||
|
PyLD<2.0.0 # Breaks a Python 3 test if >= 2.0.0.
|
||||||
|
python-dateutil
|
||||||
|
pytz
|
||||||
|
requests>=2.6.0
|
||||||
|
soundfile
|
||||||
|
sphinx
|
||||||
|
sqlalchemy<1.4.0
|
||||||
|
unidecode
|
||||||
|
waitress
|
||||||
|
werkzeug>=0.7,<2.0.0 # 2.0.0 breaks legacy API and submission tests.
|
||||||
|
wtforms>2.1,<3.0 # Removed the "ext" module in 3.0.
|
||||||
|
|
||||||
|
# This is optional:
|
||||||
|
# 'translitcodec',
|
||||||
|
# For now we're expecting that users will install this from
|
||||||
|
# their package managers.
|
||||||
|
# 'lxml',
|
||||||
|
# 'Pillow',
|
||||||
|
|
||||||
|
[options.extras_require]
|
||||||
|
test =
|
||||||
|
pytest>=2.3.1
|
||||||
|
pytest-xdist
|
||||||
|
WebTest>=2.0.18
|
||||||
|
|
||||||
|
[options.packages.find]
|
||||||
|
where = .
|
||||||
|
|
||||||
|
[options.entry_points]
|
||||||
|
console_scripts =
|
||||||
|
gmg = mediagoblin.gmg_commands:main_cli
|
||||||
|
paste.app_factory =
|
||||||
|
app = mediagoblin.app:paste_app_factory
|
||||||
|
paste.server_runner =
|
||||||
|
paste_server_selector = mediagoblin.app:paste_server_selector
|
||||||
|
paste.filter_app_factory =
|
||||||
|
errors = mediagoblin.errormiddleware:mgoblin_error_middleware
|
||||||
|
zc.buildout =
|
||||||
|
make_user_dev_dirs = mediagoblin.buildout_recipes:MakeUserDevDirs
|
||||||
|
babel.extractors =
|
||||||
|
jinja2 = jinja2.ext:babel_extract
|
||||||
|
|
||||||
|
[options.data_files]
|
||||||
|
# Running gmg dbupdate fails with missing env.py because env.py isn't
|
||||||
|
# being included in the Python package (no __init__.py).
|
||||||
|
mediagoblin = mediagoblin/db/migrations/env.py
|
150
setup.py
150
setup.py
@ -1,149 +1,5 @@
|
|||||||
# GNU MediaGoblin -- federated, autonomous media hosting
|
# Guix's python-build-system uses setup.py by default.
|
||||||
# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero 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 Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
|
import setuptools
|
||||||
|
|
||||||
from setuptools import setup, find_packages
|
setuptools.setup()
|
||||||
import os
|
|
||||||
import re
|
|
||||||
|
|
||||||
import sys
|
|
||||||
|
|
||||||
READMEFILE = "README"
|
|
||||||
VERSIONFILE = os.path.join("mediagoblin", "_version.py")
|
|
||||||
VSRE = r"^__version__ = ['\"]([^'\"]*)['\"]"
|
|
||||||
|
|
||||||
|
|
||||||
def get_version():
|
|
||||||
with open(VERSIONFILE) as fobj:
|
|
||||||
verstrline = fobj.read()
|
|
||||||
mo = re.search(VSRE, verstrline, re.M)
|
|
||||||
if mo:
|
|
||||||
return mo.group(1)
|
|
||||||
else:
|
|
||||||
raise RuntimeError("Unable to find version string in %s." %
|
|
||||||
VERSIONFILE)
|
|
||||||
|
|
||||||
install_requires = [
|
|
||||||
'alembic>=0.7.5',
|
|
||||||
'Babel>=1.3',
|
|
||||||
'celery>=3.0,<4.3.0', # Removed the "sqlite" transport alias in 4.3.0 making tests fail.
|
|
||||||
'certifi>=2017.4.17', # Required by requests on Fedora 33 (bin/gmg fails)
|
|
||||||
'ConfigObj',
|
|
||||||
'email-validator',
|
|
||||||
'ExifRead>=2.0.0',
|
|
||||||
'feedgenerator',
|
|
||||||
'itsdangerous',
|
|
||||||
'jinja2<3.0.0', # 3.0.0 uses f-strings (Python >= 3.7) breaking Debian 9.
|
|
||||||
'jsonschema',
|
|
||||||
'Markdown',
|
|
||||||
'oauthlib',
|
|
||||||
'PasteScript',
|
|
||||||
'py-bcrypt',
|
|
||||||
'PyLD<2.0.0', # Breaks a Python 3 test if >= 2.0.0.
|
|
||||||
'python-dateutil',
|
|
||||||
'pytz',
|
|
||||||
'requests>=2.6.0',
|
|
||||||
'soundfile',
|
|
||||||
'sphinx',
|
|
||||||
'sqlalchemy<1.4.0',
|
|
||||||
'unidecode',
|
|
||||||
'waitress',
|
|
||||||
'werkzeug>=0.7,<2.0.0', # 2.0.0 breaks legacy API and submission tests.
|
|
||||||
'wtforms>2.1,<3.0', # Removed the "ext" module in 3.0.
|
|
||||||
|
|
||||||
# This is optional:
|
|
||||||
# 'translitcodec',
|
|
||||||
# For now we're expecting that users will install this from
|
|
||||||
# their package managers.
|
|
||||||
# 'lxml',
|
|
||||||
# 'Pillow',
|
|
||||||
]
|
|
||||||
|
|
||||||
test_requirements = [
|
|
||||||
'pytest>=2.3.1',
|
|
||||||
'pytest-xdist',
|
|
||||||
'WebTest>=2.0.18',
|
|
||||||
]
|
|
||||||
|
|
||||||
with open(READMEFILE, encoding="utf-8") as fobj:
|
|
||||||
long_description = fobj.read()
|
|
||||||
|
|
||||||
try:
|
|
||||||
setup(
|
|
||||||
name="mediagoblin",
|
|
||||||
version=get_version(),
|
|
||||||
packages=find_packages('.'),
|
|
||||||
zip_safe=False,
|
|
||||||
include_package_data = True,
|
|
||||||
# scripts and dependencies
|
|
||||||
install_requires=install_requires,
|
|
||||||
extras_require={
|
|
||||||
'test': test_requirements,
|
|
||||||
},
|
|
||||||
test_suite='nose.collector',
|
|
||||||
entry_points="""\
|
|
||||||
[console_scripts]
|
|
||||||
gmg = mediagoblin.gmg_commands:main_cli
|
|
||||||
|
|
||||||
[paste.app_factory]
|
|
||||||
app = mediagoblin.app:paste_app_factory
|
|
||||||
|
|
||||||
[paste.server_runner]
|
|
||||||
paste_server_selector = mediagoblin.app:paste_server_selector
|
|
||||||
|
|
||||||
[paste.filter_app_factory]
|
|
||||||
errors = mediagoblin.errormiddleware:mgoblin_error_middleware
|
|
||||||
|
|
||||||
[zc.buildout]
|
|
||||||
make_user_dev_dirs = mediagoblin.buildout_recipes:MakeUserDevDirs
|
|
||||||
|
|
||||||
[babel.extractors]
|
|
||||||
jinja2 = jinja2.ext:babel_extract
|
|
||||||
""",
|
|
||||||
license='AGPLv3',
|
|
||||||
author='Free Software Foundation and contributors',
|
|
||||||
author_email='mediagoblin-devel@gnu.org',
|
|
||||||
url='https://mediagoblin.org/',
|
|
||||||
long_description=long_description,
|
|
||||||
description='MediaGoblin is a web application for publishing all kinds of media',
|
|
||||||
classifiers=[
|
|
||||||
"Development Status :: 3 - Alpha",
|
|
||||||
"Environment :: Web Environment",
|
|
||||||
"License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)",
|
|
||||||
"Operating System :: OS Independent",
|
|
||||||
"Programming Language :: Python",
|
|
||||||
'Programming Language :: Python :: 2',
|
|
||||||
'Programming Language :: Python :: 2.7',
|
|
||||||
'Programming Language :: Python :: 3',
|
|
||||||
'Programming Language :: Python :: 3.3',
|
|
||||||
'Programming Language :: Python :: 3.4',
|
|
||||||
"Topic :: Internet :: WWW/HTTP :: Dynamic Content"
|
|
||||||
],
|
|
||||||
)
|
|
||||||
except TypeError as e:
|
|
||||||
import sys
|
|
||||||
|
|
||||||
# Check if the problem is caused by the sqlalchemy/setuptools conflict
|
|
||||||
msg_as_str = str(e)
|
|
||||||
if not (msg_as_str == 'dist must be a Distribution instance'):
|
|
||||||
raise
|
|
||||||
|
|
||||||
# If so, tell the user it is OK to just run the script again.
|
|
||||||
print("\n\n---------- NOTE ----------", file=sys.stderr)
|
|
||||||
print("The setup.py command you ran failed.\n", file=sys.stderr)
|
|
||||||
print("It is a known possible failure. Just run it again. It works the "
|
|
||||||
"second time.", file=sys.stderr)
|
|
||||||
sys.exit(1)
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user