#!/usr/bin/env python3 # SPDX-FileCopyrightText: Florian Bruhin (The Compiler) # # SPDX-License-Identifier: GPL-3.0-or-later """setuptools installer script for qutebrowser.""" import re import ast import os import sys import pathlib # Add repo root to path so we can import scripts. Prior to PEP517 support this # was the default behavior for setuptools. # https://github.com/pypa/setuptools/issues/3939#issuecomment-1573619382 # > If users want to import local modules they are recommended to explicitly add # > the current directory to sys.path at the top of setup.py. sys.path.append(".") from scripts import setupcommon as common import setuptools try: BASEDIR = pathlib.Path(__file__).resolve().parent except NameError: BASEDIR = None def read_file(name): """Get the string contained in the file named name.""" with common.open_file(name, 'r', encoding='utf-8') as f: return f.read() def _get_constant(name): """Read a __magic__ constant from qutebrowser/__init__.py. We don't import qutebrowser here because it can go wrong for multiple reasons. Instead we use re/ast to get the value directly from the source file. Args: name: The name of the argument to get. Return: The value of the argument. """ field_re = re.compile(r'__{}__\s+=\s+(.*)'.format(re.escape(name))) init_path = BASEDIR / 'qutebrowser' / '__init__.py' line = field_re.search(read_file(init_path)).group(1) value = ast.literal_eval(line) return value try: common.write_git_file() setuptools.setup( packages=setuptools.find_namespace_packages(include=['qutebrowser', 'qutebrowser.*']), include_package_data=True, entry_points={'gui_scripts': ['qutebrowser = qutebrowser.qutebrowser:main']}, zip_safe=True, install_requires=['jinja2', 'PyYAML'], python_requires='>=3.9', name='qutebrowser', version=_get_constant('version'), description=_get_constant('description'), long_description=read_file('README.asciidoc'), long_description_content_type='text/plain', url='https://www.qutebrowser.org/', author=_get_constant('author'), author_email=_get_constant('email'), license=_get_constant('license'), classifiers=[ 'Development Status :: 5 - Production/Stable', 'Environment :: X11 Applications :: Qt', 'Intended Audience :: End Users/Desktop', 'Natural Language :: English', 'Operating System :: Microsoft :: Windows', 'Operating System :: POSIX :: Linux', 'Operating System :: MacOS', 'Operating System :: POSIX :: BSD', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: 3.10', 'Programming Language :: Python :: 3.11', 'Programming Language :: Python :: 3.12', 'Programming Language :: Python :: 3.13', 'Topic :: Internet', 'Topic :: Internet :: WWW/HTTP', 'Topic :: Internet :: WWW/HTTP :: Browsers', ], keywords='pyqt browser web qt webkit qtwebkit qtwebengine', ) finally: if BASEDIR is not None: git_commit_id_path = BASEDIR / 'qutebrowser' / 'git-commit-id' if git_commit_id_path.exists(): git_commit_id_path.unlink()