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
|
||||
# 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/>.
|
||||
# Guix's python-build-system uses setup.py by default.
|
||||
|
||||
import setuptools
|
||||
|
||||
from setuptools import setup, find_packages
|
||||
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)
|
||||
setuptools.setup()
|
||||
|
Loading…
x
Reference in New Issue
Block a user