diff options
-rw-r--r-- | debian/build.py | 88 | ||||
-rw-r--r-- | debian/changelog | 157 | ||||
-rw-r--r-- | debian/clean | 2 | ||||
-rw-r--r-- | debian/control | 42 | ||||
-rw-r--r-- | debian/copyright | 139 | ||||
-rw-r--r-- | debian/docs | 1 | ||||
-rw-r--r-- | debian/flit.lintian-overrides | 4 | ||||
-rw-r--r-- | debian/flit.manpages | 1 | ||||
-rw-r--r-- | debian/gbp.conf | 2 | ||||
-rw-r--r-- | debian/list_classifiers | 698 | ||||
-rw-r--r-- | debian/patches/0002-use-system-tomli.patch | 23 | ||||
-rw-r--r-- | debian/patches/build-with-local-flit_core.patch | 23 | ||||
-rw-r--r-- | debian/patches/debian_installer_allowed_root.patch | 28 | ||||
-rw-r--r-- | debian/patches/series | 3 | ||||
-rwxr-xr-x | debian/rules | 41 | ||||
-rw-r--r-- | debian/salsa-ci.yml | 4 | ||||
-rw-r--r-- | debian/source/format | 1 | ||||
-rw-r--r-- | debian/source/lintian-overrides | 2 | ||||
-rw-r--r-- | debian/tests/control | 10 | ||||
-rw-r--r-- | debian/tests/flit-user | 27 | ||||
-rw-r--r-- | debian/watch | 2 |
21 files changed, 1298 insertions, 0 deletions
diff --git a/debian/build.py b/debian/build.py new file mode 100644 index 0000000..8e0b0aa --- /dev/null +++ b/debian/build.py @@ -0,0 +1,88 @@ +#!/usr/bin/env python3 + +# Symlink install flit & flit_core for development. +# Most projects can do the same with 'flit install --symlink'. +# But that doesn't work until Flit is installed, so we need some bootstrapping. + +import argparse +import logging +import os +import os.path as osp +from pathlib import Path +import shutil +import sys + +my_dir = Path(__file__).parent +os.chdir(str(my_dir)) +sys.path.insert(0, 'flit_core') + +from flit.install import Installer + +logging.basicConfig(level=logging.INFO) +log = logging.getLogger(__name__) + +class DebianInstaller(Installer): + def install_directly(self): + """Install a module/package into package directory, and create its scripts. + """ + dirs = self._get_dirs(user=self.user) + dirs['purelib'] = 'debian/flit/' + dirs['stdlib'] + '/dist-packages' + dirs['scripts'] = 'debian/flit'+ dirs['scripts'] + os.makedirs(dirs['purelib'], exist_ok=True) + os.makedirs(dirs['scripts'], exist_ok=True) + + dst = osp.join(dirs['purelib'], osp.basename(self.module.path)) + if osp.lexists(dst): + if osp.isdir(dst) and not osp.islink(dst): + shutil.rmtree(dst) + else: + os.unlink(dst) + + # Install requirements to target environment + # self.install_requirements() + + # Install requirements to this environment if we need them to + # get docstring & version number. + #if self.python != sys.executable: + # self.install_reqs_my_python_if_needed() + + src = str(self.module.path) + if self.symlink: + log.info("Symlinking %s -> %s", src, dst) + os.symlink(osp.abspath(self.module.path), dst) + self.installed_files.append(dst) + elif self.pth: + # .pth points to the the folder containing the module (which is + # added to sys.path) + pth_target = osp.dirname(osp.abspath(self.module.path)) + pth_file = pathlib.Path(dst).with_suffix('.pth') + log.info("Adding .pth file %s for %s", pth_file, pth_target) + with pth_file.open("w") as f: + f.write(pth_target) + self.installed_files.append(pth_file) + elif self.module.is_package: + log.info("Copying directory %s -> %s", src, dst) + shutil.copytree(src, dst) + self._record_installed_directory(dst) + else: + log.info("Copying file %s -> %s", src, dst) + shutil.copy2(src, dst) + self.installed_files.append(dst) + + scripts = self.ini_info.entrypoints.get('console_scripts', {}) + self.install_scripts(scripts, dirs['scripts']) + + self.write_dist_info(dirs['purelib']) + +install_kwargs = {'user': False, 'symlink': False} +# Install flit_core +DebianInstaller.from_ini_path( + my_dir / 'flit_core' / 'pyproject.toml', **install_kwargs +).install_directly() +print("Linked flit_core into site-packages.") + +# Install flit +DebianInstaller.from_ini_path( + my_dir / 'pyproject.toml', **install_kwargs +).install_directly() +print("Linked flit into site-packages.") diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..20b4f99 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,157 @@ +flit (3.8.0-3) unstable; urgency=medium + + [ Stefano Rivera ] + * Replace the hacks in debian/rules to support multiple wheels with --name. + (Closes: #1026678) + + [ Scott Kitterman ] + * Bump standards-version to 4.6.2 without further change + + -- Scott Kitterman <scott@kitterman.com> Wed, 04 Jan 2023 18:12:03 -0500 + +flit (3.8.0-2) unstable; urgency=medium + + * Update Vcs-Git field in debian/control to new Debian Python Team Salsa + layout + * Add manual depends on python3-tomli (upstream relies on embedded copy not + used in Debian) + + -- Scott Kitterman <scott@kitterman.com> Sun, 20 Nov 2022 13:58:30 -0500 + +flit (3.8.0-1) unstable; urgency=medium + + * New upstream release + - Refresh patches + * Update lintian overrides, add d/s/lintian-overrides + + -- Scott Kitterman <scott@kitterman.com> Wed, 09 Nov 2022 17:00:43 -0500 + +flit (3.7.1-1) unstable; urgency=medium + + * Team upload. + * New upstream release. + * Refresh patches. + * Build with pybuild, fixing FTBFS. (Closes: #1009392) + * Patch: Build flit with the local flit_core. + * Bump Standards-Version to 4.6.1, no changes needed. + * Add myself to copyright. + + -- Stefano Rivera <stefanor@debian.org> Fri, 02 Sep 2022 18:58:37 +0200 + +flit (3.6.0-1) unstable; urgency=medium + + * New upstream release + * Move removal of build.py from install to clean + * Update debian/build.py for removal of build_thyself + * Add debian/patches/0002-use-system-tomli.patch since we will use the + system tomli + * Update debian/rules to remove the vendored tomli from the build + * Update autopkgtest depends + * Run package tests during build + * Clean up dist-info directory: + - Remove direct_url.json, not useful in Debian + - Update RECORD to reflect files installed by the package + + -- Scott Kitterman <scott@kitterman.com> Thu, 30 Dec 2021 11:50:05 -0500 + +flit (3.5.1-1) unstable; urgency=medium + + * New upstream release + - Refresh patches + * Replace build-depends on python3-toml with python3-tomli and + python3-tomli-w + * Remove build-depends on python3-pygments, not required + * Remove manually added binary depends, included in python3:Depends + * Update long description to mention PEP 621 support + * Correctly specify that build-deps not needed for clean are + Build-Depends-Indep + * Use sphinx-build instead of help2man to generate a more complete and + current man page + * Delete unneeded build-depends on python3-docutils and python3-requests + * Update lintian-overrides + * Set minimum dh-python version to 5.20211213 to avoid issues with depends + generation in earlier versions + + -- Scott Kitterman <scott@kitterman.com> Mon, 13 Dec 2021 20:31:59 -0500 + +flit (3.3.0-1) unstable; urgency=medium + + * Team upload + + [ Steffen Moeller ] + * New upstream version 3.3.0 (Closes: #994589) + * d/control: Bumped standard to 4.5.1 + * d/rules: removing __pycache__ folders from previous builds + + [ Michael R. Crusoe ] + * Standards-Version: 4.6.0 (routine-update) + * debhelper-compat 13 (routine-update) + * Respect DEB_BUILD_OPTIONS in override_dh_auto_test target (routine- + update) + * Add salsa-ci file (routine-update) + * Rules-Requires-Root: no (routine-update) + * watch file standard 4 (routine-update) + * {Build-,}Depends: switch to python3-toml from -pytoml + + [ Stefano Rivera ] + * Run autopkgtest against all supported Python 3 versions. + + -- Stefano Rivera <stefanor@debian.org> Thu, 25 Nov 2021 16:51:52 -0400 + +flit (3.0.0-1) unstable; urgency=medium + + * Team upload + + [ Scott Kitterman ] + * Replace failing automatic man page generation with manual process that at + least works (Closes: #977044) + + [ Ondřej Nový ] + * d/control: Update Maintainer field with new Debian Python Team + contact address. + * d/control: Update Vcs-* fields with new Debian Python Team Salsa + layout. + + [ Antonio Terceiro ] + * New upstream version 3.0.0 + - Makes RECORD deterministic (Closes: #968636) + - Builds reproducibly (Closes: #964440) + * debian/build.py: fix location of top level directory (Closes: #975796) + * debian/build.py: fix wrt the new upstream release + * autopkgtest: drop unnecessary breaks-testbed restriction + * autopkgtest: only test against Debian + * autopkgtest: ignore test that fails without `python` + + -- Antonio Terceiro <terceiro@debian.org> Thu, 10 Dec 2020 12:28:33 -0300 + +flit (2.3.0-3) unstable; urgency=medium + + * Add missing autopkgtest depends on tox + + -- Scott Kitterman <scott@kitterman.com> Mon, 13 Apr 2020 12:31:23 -0400 + +flit (2.3.0-2) unstable; urgency=medium + + * Add autopkgtest running upstream test suite with tox + * Patch install.Installer class not to error out when subclassed as + DebianInstaller from dh-python + + -- Scott Kitterman <scott@kitterman.com> Mon, 13 Apr 2020 02:15:02 -0400 + +flit (2.3.0-1) unstable; urgency=medium + + * New upstream release + + -- Scott Kitterman <scott@kitterman.com> Sat, 11 Apr 2020 23:00:36 -0400 + +flit (2.2.0-2) unstable; urgency=medium + + * Add missing license to debian/copyright + + -- Scott Kitterman <scott@kitterman.com> Mon, 06 Apr 2020 16:25:01 -0400 + +flit (2.2.0-1) unstable; urgency=medium + + * Initial release (Closes: #953992) + + -- Scott Kitterman <scott@kitterman.com> Mon, 23 Mar 2020 11:12:49 -0400 diff --git a/debian/clean b/debian/clean new file mode 100644 index 0000000..6e38511 --- /dev/null +++ b/debian/clean @@ -0,0 +1,2 @@ +debian/.doctrees/* +debian/flit.1 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..07ec7a7 --- /dev/null +++ b/debian/control @@ -0,0 +1,42 @@ +Source: flit +Section: python +Priority: optional +Maintainer: Debian Python Team <team+python@tracker.debian.org> +Uploaders: Scott Kitterman <scott@kitterman.com> +Build-Depends: debhelper-compat (= 13), + dh-sequence-python3, + pybuild-plugin-pyproject, + python3-all, +Build-Depends-Indep: + python3-tomli, + python3-tomli-w, + python3-sphinx, + python3-pytest, + python3-requests, + python3-responses, + python3-testpath, +Standards-Version: 4.6.2 +Homepage: https://flit.readthedocs.io/en/latest/ +Rules-Requires-Root: no +Vcs-Git: https://salsa.debian.org/python-team/packages/flit.git +Vcs-Browser: https://salsa.debian.org/python-team/packages/flit + +Package: flit +Architecture: all +Depends: ${misc:Depends}, + python3-tomli, + ${python3:Depends}, +Description: simple way to put Python packages and modules on PyPI (PEP 517) + Flit is a easy way to put Python packages and modules on PyPI. It tries to + require less thought about packaging and help you avoid common mistakes. + . + Flit supports PEP 517 Python packaging and PEP 621 project metadata. + . + Make the easy things easy and the hard things possible is an old motto from + the Perl community. Flit is entirely focused on the easy things part of that, + and leaves the hard things up to other tools. + . + Specifically, the easy things are pure Python packages with no build steps + (neither compiling C code, nor bundling Javascript, etc.). The vast majority + of packages on PyPI are like this: plain Python code, with maybe some static + data files like icons included. diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..18673a4 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,139 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: flit +Source: https://pypi.org/project/flit + + +Files: * +Copyright: (c) 2015, Thomas Kluyver and contributors +License: BSD-3-Clause + +Files: flit/upload.py +Copyright: (c) 2015, Thomas Kluyver and contributors +License: PSF-2.0 + +Files: flit/log.py +Copyright: 2012 Facebook +License: Apache-2.0 + +Files: flit/vendorized/readme/rst.py +Copyright: 2014 Donald Stufft +License: Apache-2.0 + +Files: flit_core/flit_core/versionno.py +Copyright: (c) Donald Stufft and individual contributors +License: BSD-2-Clause + +Files: debian/* +Copyright: 2020 Scott Kitterman <scott@kitterman.com> + 2022 Stefano Rivera <stefanor@debian.org> +License: BSD-3-Clause + +License: BSD-3-Clause + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + . + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + . + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. + . + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: PSF-2.0 + PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 + . + 1. This LICENSE AGREEMENT is between the Python Software Foundation ("PSF"), + and the Individual or Organization ("Licensee") accessing and otherwise using + this software ("Python") in source or binary form and its associated + documentation. + . + 2. Subject to the terms and conditions of this License Agreement, PSF hereby + grants Licensee a nonexclusive, royalty-free, world-wide license to + reproduce, analyze, test, perform and/or display publicly, prepare derivative + works, distribute, and otherwise use Python alone or in any derivative + version, provided, however, that PSF's License Agreement and PSF's notice of + copyright, i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Python + Software Foundation; All Rights Reserved" are retained in Python alone or in + any derivative version prepared by Licensee. + . + 3. In the event Licensee prepares a derivative work that is based on or + incorporates Python or any part thereof, and wants to make the derivative + work available to others as provided herein, then Licensee hereby agrees to + include in any such work a brief summary of the changes made to Python. + . + 4. PSF is making Python available to Licensee on an "AS IS" basis. PSF MAKES + NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT + NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF + MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF + PYTHON WILL NOT INFRINGE ANY THIRD PARTY RIGHTS. + . + 5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON FOR ANY + INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF + MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, OR ANY DERIVATIVE + THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + . + 6. This License Agreement will automatically terminate upon a material breach + of its terms and conditions. + . + 7. Nothing in this License Agreement shall be deemed to create any + relationship of agency, partnership, or joint venture between PSF and + Licensee. This License Agreement does not grant permission to use PSF + trademarks or trade name in a trademark sense to endorse or promote products + or services of Licensee, or any third party. + . + 8. By copying, installing or otherwise using Python, Licensee agrees to be + bound by the terms and conditions of this License Agreement. + +License: Apache-2.0 + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + . + http://www.apache.org/licenses/LICENSE-2.0 + . + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + . + On Debian systems, the complete text of the Apache License, Version 2.0 can + be found here: + /usr/share/common-licenses/Apache-2.0 + +License: BSD-2-Clause + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + . + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + . + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/debian/docs b/debian/docs new file mode 100644 index 0000000..a1320b1 --- /dev/null +++ b/debian/docs @@ -0,0 +1 @@ +README.rst diff --git a/debian/flit.lintian-overrides b/debian/flit.lintian-overrides new file mode 100644 index 0000000..3726daf --- /dev/null +++ b/debian/flit.lintian-overrides @@ -0,0 +1,4 @@ +# These are for flit templates and tests, lintian is (understandably) wrong. +flit binary: script-not-executable [usr/lib/python3/dist-packages/flit_core/tests/samples/package1/data_dir/foo.sh] +flit binary: extra-license-file +flit binary: package-contains-documentation-outside-usr-share-doc diff --git a/debian/flit.manpages b/debian/flit.manpages new file mode 100644 index 0000000..41f999f --- /dev/null +++ b/debian/flit.manpages @@ -0,0 +1 @@ +debian/flit.1 diff --git a/debian/gbp.conf b/debian/gbp.conf new file mode 100644 index 0000000..3879982 --- /dev/null +++ b/debian/gbp.conf @@ -0,0 +1,2 @@ +[DEFAULT] +debian-branch=debian/master diff --git a/debian/list_classifiers b/debian/list_classifiers new file mode 100644 index 0000000..fbc133f --- /dev/null +++ b/debian/list_classifiers @@ -0,0 +1,698 @@ +Development Status :: 1 - Planning +Development Status :: 2 - Pre-Alpha +Development Status :: 3 - Alpha +Development Status :: 4 - Beta +Development Status :: 5 - Production/Stable +Development Status :: 6 - Mature +Development Status :: 7 - Inactive +Environment :: Console +Environment :: Console :: Curses +Environment :: Console :: Framebuffer +Environment :: Console :: Newt +Environment :: Console :: svgalib +Environment :: Handhelds/PDA's +Environment :: MacOS X +Environment :: MacOS X :: Aqua +Environment :: MacOS X :: Carbon +Environment :: MacOS X :: Cocoa +Environment :: No Input/Output (Daemon) +Environment :: OpenStack +Environment :: Other Environment +Environment :: Plugins +Environment :: Web Environment +Environment :: Web Environment :: Buffet +Environment :: Web Environment :: Mozilla +Environment :: Web Environment :: ToscaWidgets +Environment :: Win32 (MS Windows) +Environment :: X11 Applications +Environment :: X11 Applications :: Gnome +Environment :: X11 Applications :: GTK +Environment :: X11 Applications :: KDE +Environment :: X11 Applications :: Qt +Framework :: AiiDA +Framework :: AsyncIO +Framework :: BEAT +Framework :: BFG +Framework :: Bob +Framework :: Bottle +Framework :: Buildout +Framework :: Buildout :: Extension +Framework :: Buildout :: Recipe +Framework :: CastleCMS +Framework :: CastleCMS :: Theme +Framework :: Chandler +Framework :: CherryPy +Framework :: CubicWeb +Framework :: Dash +Framework :: Django +Framework :: Django :: 1.10 +Framework :: Django :: 1.11 +Framework :: Django :: 1.4 +Framework :: Django :: 1.5 +Framework :: Django :: 1.6 +Framework :: Django :: 1.7 +Framework :: Django :: 1.8 +Framework :: Django :: 1.9 +Framework :: Django :: 2.0 +Framework :: Django :: 2.1 +Framework :: Django :: 2.2 +Framework :: Django :: 3.0 +Framework :: Django CMS +Framework :: Django CMS :: 3.4 +Framework :: Django CMS :: 3.5 +Framework :: Django CMS :: 3.6 +Framework :: Django CMS :: 3.7 +Framework :: Flake8 +Framework :: Flask +Framework :: Hypothesis +Framework :: IDLE +Framework :: IPython +Framework :: Jupyter +Framework :: Lektor +Framework :: Masonite +Framework :: Matplotlib +Framework :: Nengo +Framework :: Odoo +Framework :: Opps +Framework :: Paste +Framework :: Pelican +Framework :: Pelican :: Plugins +Framework :: Pelican :: Themes +Framework :: Plone +Framework :: Plone :: 3.2 +Framework :: Plone :: 3.3 +Framework :: Plone :: 4.0 +Framework :: Plone :: 4.1 +Framework :: Plone :: 4.2 +Framework :: Plone :: 4.3 +Framework :: Plone :: 5.0 +Framework :: Plone :: 5.1 +Framework :: Plone :: 5.2 +Framework :: Plone :: 5.3 +Framework :: Plone :: 6.0 +Framework :: Plone :: Addon +Framework :: Plone :: Core +Framework :: Plone :: Theme +Framework :: Pylons +Framework :: Pyramid +Framework :: Pytest +Framework :: Review Board +Framework :: Robot Framework +Framework :: Robot Framework :: Library +Framework :: Robot Framework :: Tool +Framework :: Scrapy +Framework :: Setuptools Plugin +Framework :: Sphinx +Framework :: Sphinx :: Extension +Framework :: Sphinx :: Theme +Framework :: tox +Framework :: Trac +Framework :: Trio +Framework :: Tryton +Framework :: TurboGears +Framework :: TurboGears :: Applications +Framework :: TurboGears :: Widgets +Framework :: Twisted +Framework :: Wagtail +Framework :: Wagtail :: 1 +Framework :: Wagtail :: 2 +Framework :: ZODB +Framework :: Zope +Framework :: Zope2 +Framework :: Zope :: 2 +Framework :: Zope3 +Framework :: Zope :: 3 +Framework :: Zope :: 4 +Framework :: Zope :: 5 +Intended Audience :: Customer Service +Intended Audience :: Developers +Intended Audience :: Education +Intended Audience :: End Users/Desktop +Intended Audience :: Financial and Insurance Industry +Intended Audience :: Healthcare Industry +Intended Audience :: Information Technology +Intended Audience :: Legal Industry +Intended Audience :: Manufacturing +Intended Audience :: Other Audience +Intended Audience :: Religion +Intended Audience :: Science/Research +Intended Audience :: System Administrators +Intended Audience :: Telecommunications Industry +License :: Aladdin Free Public License (AFPL) +License :: CC0 1.0 Universal (CC0 1.0) Public Domain Dedication +License :: CeCILL-B Free Software License Agreement (CECILL-B) +License :: CeCILL-C Free Software License Agreement (CECILL-C) +License :: DFSG approved +License :: Eiffel Forum License (EFL) +License :: Free For Educational Use +License :: Free For Home Use +License :: Free for non-commercial use +License :: Freely Distributable +License :: Free To Use But Restricted +License :: Freeware +License :: GUST Font License 1.0 +License :: GUST Font License 2006-09-30 +License :: Netscape Public License (NPL) +License :: Nokia Open Source License (NOKOS) +License :: OSI Approved +License :: OSI Approved :: Academic Free License (AFL) +License :: OSI Approved :: Apache Software License +License :: OSI Approved :: Apple Public Source License +License :: OSI Approved :: Artistic License +License :: OSI Approved :: Attribution Assurance License +License :: OSI Approved :: Boost Software License 1.0 (BSL-1.0) +License :: OSI Approved :: BSD License +License :: OSI Approved :: CEA CNRS Inria Logiciel Libre License, version 2.1 (CeCILL-2.1) +License :: OSI Approved :: Common Development and Distribution License 1.0 (CDDL-1.0) +License :: OSI Approved :: Common Public License +License :: OSI Approved :: Eclipse Public License 1.0 (EPL-1.0) +License :: OSI Approved :: Eclipse Public License 2.0 (EPL-2.0) +License :: OSI Approved :: Eiffel Forum License +License :: OSI Approved :: European Union Public Licence 1.0 (EUPL 1.0) +License :: OSI Approved :: European Union Public Licence 1.1 (EUPL 1.1) +License :: OSI Approved :: European Union Public Licence 1.2 (EUPL 1.2) +License :: OSI Approved :: GNU Affero General Public License v3 +License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+) +License :: OSI Approved :: GNU Free Documentation License (FDL) +License :: OSI Approved :: GNU General Public License (GPL) +License :: OSI Approved :: GNU General Public License v2 (GPLv2) +License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+) +License :: OSI Approved :: GNU General Public License v3 (GPLv3) +License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+) +License :: OSI Approved :: GNU Lesser General Public License v2 (LGPLv2) +License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+) +License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3) +License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+) +License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL) +License :: OSI Approved :: Historical Permission Notice and Disclaimer (HPND) +License :: OSI Approved :: IBM Public License +License :: OSI Approved :: Intel Open Source License +License :: OSI Approved :: ISC License (ISCL) +License :: OSI Approved :: Jabber Open Source License +License :: OSI Approved :: MirOS License (MirOS) +License :: OSI Approved :: MIT License +License :: OSI Approved :: MITRE Collaborative Virtual Workspace License (CVW) +License :: OSI Approved :: Motosoto License +License :: OSI Approved :: Mozilla Public License 1.0 (MPL) +License :: OSI Approved :: Mozilla Public License 1.1 (MPL 1.1) +License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0) +License :: OSI Approved :: Nethack General Public License +License :: OSI Approved :: Nokia Open Source License +License :: OSI Approved :: Open Group Test Suite License +License :: OSI Approved :: Open Software License 3.0 (OSL-3.0) +License :: OSI Approved :: PostgreSQL License +License :: OSI Approved :: Python License (CNRI Python License) +License :: OSI Approved :: Python Software Foundation License +License :: OSI Approved :: Qt Public License (QPL) +License :: OSI Approved :: Ricoh Source Code Public License +License :: OSI Approved :: SIL Open Font License 1.1 (OFL-1.1) +License :: OSI Approved :: Sleepycat License +License :: OSI Approved :: Sun Industry Standards Source License (SISSL) +License :: OSI Approved :: Sun Public License +License :: OSI Approved :: Universal Permissive License (UPL) +License :: OSI Approved :: University of Illinois/NCSA Open Source License +License :: OSI Approved :: Vovida Software License 1.0 +License :: OSI Approved :: W3C License +License :: OSI Approved :: X.Net License +License :: OSI Approved :: zlib/libpng License +License :: OSI Approved :: Zope Public License +License :: Other/Proprietary License +License :: Public Domain +License :: Repoze Public License +Natural Language :: Afrikaans +Natural Language :: Arabic +Natural Language :: Basque +Natural Language :: Bengali +Natural Language :: Bosnian +Natural Language :: Bulgarian +Natural Language :: Cantonese +Natural Language :: Catalan +Natural Language :: Chinese (Simplified) +Natural Language :: Chinese (Traditional) +Natural Language :: Croatian +Natural Language :: Czech +Natural Language :: Danish +Natural Language :: Dutch +Natural Language :: English +Natural Language :: Esperanto +Natural Language :: Finnish +Natural Language :: French +Natural Language :: Galician +Natural Language :: German +Natural Language :: Greek +Natural Language :: Hebrew +Natural Language :: Hindi +Natural Language :: Hungarian +Natural Language :: Icelandic +Natural Language :: Indonesian +Natural Language :: Irish +Natural Language :: Italian +Natural Language :: Japanese +Natural Language :: Javanese +Natural Language :: Korean +Natural Language :: Latin +Natural Language :: Latvian +Natural Language :: Lithuanian +Natural Language :: Macedonian +Natural Language :: Malay +Natural Language :: Marathi +Natural Language :: Nepali +Natural Language :: Norwegian +Natural Language :: Panjabi +Natural Language :: Persian +Natural Language :: Polish +Natural Language :: Portuguese +Natural Language :: Portuguese (Brazilian) +Natural Language :: Romanian +Natural Language :: Russian +Natural Language :: Serbian +Natural Language :: Slovak +Natural Language :: Slovenian +Natural Language :: Spanish +Natural Language :: Swedish +Natural Language :: Tamil +Natural Language :: Telugu +Natural Language :: Thai +Natural Language :: Tibetan +Natural Language :: Turkish +Natural Language :: Ukrainian +Natural Language :: Urdu +Natural Language :: Vietnamese +Operating System :: Android +Operating System :: BeOS +Operating System :: iOS +Operating System :: MacOS +Operating System :: MacOS :: MacOS 9 +Operating System :: MacOS :: MacOS X +Operating System :: Microsoft +Operating System :: Microsoft :: MS-DOS +Operating System :: Microsoft :: Windows +Operating System :: Microsoft :: Windows :: Windows 10 +Operating System :: Microsoft :: Windows :: Windows 3.1 or Earlier +Operating System :: Microsoft :: Windows :: Windows 7 +Operating System :: Microsoft :: Windows :: Windows 8 +Operating System :: Microsoft :: Windows :: Windows 8.1 +Operating System :: Microsoft :: Windows :: Windows 95/98/2000 +Operating System :: Microsoft :: Windows :: Windows CE +Operating System :: Microsoft :: Windows :: Windows NT/2000 +Operating System :: Microsoft :: Windows :: Windows Server 2003 +Operating System :: Microsoft :: Windows :: Windows Server 2008 +Operating System :: Microsoft :: Windows :: Windows Vista +Operating System :: Microsoft :: Windows :: Windows XP +Operating System :: OS/2 +Operating System :: OS Independent +Operating System :: Other OS +Operating System :: PalmOS +Operating System :: PDA Systems +Operating System :: POSIX +Operating System :: POSIX :: AIX +Operating System :: POSIX :: BSD +Operating System :: POSIX :: BSD :: BSD/OS +Operating System :: POSIX :: BSD :: FreeBSD +Operating System :: POSIX :: BSD :: NetBSD +Operating System :: POSIX :: BSD :: OpenBSD +Operating System :: POSIX :: GNU Hurd +Operating System :: POSIX :: HP-UX +Operating System :: POSIX :: IRIX +Operating System :: POSIX :: Linux +Operating System :: POSIX :: Other +Operating System :: POSIX :: SCO +Operating System :: POSIX :: SunOS/Solaris +Operating System :: Unix +Programming Language :: Ada +Programming Language :: APL +Programming Language :: ASP +Programming Language :: Assembly +Programming Language :: Awk +Programming Language :: Basic +Programming Language :: C +Programming Language :: C# +Programming Language :: C++ +Programming Language :: Cold Fusion +Programming Language :: Cython +Programming Language :: Delphi/Kylix +Programming Language :: Dylan +Programming Language :: Eiffel +Programming Language :: Emacs-Lisp +Programming Language :: Erlang +Programming Language :: Euler +Programming Language :: Euphoria +Programming Language :: F# +Programming Language :: Forth +Programming Language :: Fortran +Programming Language :: Haskell +Programming Language :: Java +Programming Language :: JavaScript +Programming Language :: Lisp +Programming Language :: Logo +Programming Language :: ML +Programming Language :: Modula +Programming Language :: Objective C +Programming Language :: Object Pascal +Programming Language :: OCaml +Programming Language :: Other +Programming Language :: Other Scripting Engines +Programming Language :: Pascal +Programming Language :: Perl +Programming Language :: PHP +Programming Language :: Pike +Programming Language :: Pliant +Programming Language :: PL/SQL +Programming Language :: PROGRESS +Programming Language :: Prolog +Programming Language :: Python +Programming Language :: Python :: 2 +Programming Language :: Python :: 2.3 +Programming Language :: Python :: 2.4 +Programming Language :: Python :: 2.5 +Programming Language :: Python :: 2.6 +Programming Language :: Python :: 2.7 +Programming Language :: Python :: 2 :: Only +Programming Language :: Python :: 3 +Programming Language :: Python :: 3.0 +Programming Language :: Python :: 3.1 +Programming Language :: Python :: 3.2 +Programming Language :: Python :: 3.3 +Programming Language :: Python :: 3.4 +Programming Language :: Python :: 3.5 +Programming Language :: Python :: 3.6 +Programming Language :: Python :: 3.7 +Programming Language :: Python :: 3.8 +Programming Language :: Python :: 3.9 +Programming Language :: Python :: 3 :: Only +Programming Language :: Python :: Implementation +Programming Language :: Python :: Implementation :: CPython +Programming Language :: Python :: Implementation :: IronPython +Programming Language :: Python :: Implementation :: Jython +Programming Language :: Python :: Implementation :: MicroPython +Programming Language :: Python :: Implementation :: PyPy +Programming Language :: Python :: Implementation :: Stackless +Programming Language :: R +Programming Language :: REBOL +Programming Language :: Rexx +Programming Language :: Ruby +Programming Language :: Rust +Programming Language :: Scheme +Programming Language :: Simula +Programming Language :: Smalltalk +Programming Language :: SQL +Programming Language :: Tcl +Programming Language :: Unix Shell +Programming Language :: Visual Basic +Programming Language :: XBasic +Programming Language :: YACC +Programming Language :: Zope +Topic :: Adaptive Technologies +Topic :: Artistic Software +Topic :: Communications +Topic :: Communications :: BBS +Topic :: Communications :: Chat +Topic :: Communications :: Chat :: ICQ +Topic :: Communications :: Chat :: Internet Relay Chat +Topic :: Communications :: Chat :: Unix Talk +Topic :: Communications :: Conferencing +Topic :: Communications :: Email +Topic :: Communications :: Email :: Address Book +Topic :: Communications :: Email :: Email Clients (MUA) +Topic :: Communications :: Email :: Filters +Topic :: Communications :: Email :: Mailing List Servers +Topic :: Communications :: Email :: Mail Transport Agents +Topic :: Communications :: Email :: Post-Office +Topic :: Communications :: Email :: Post-Office :: IMAP +Topic :: Communications :: Email :: Post-Office :: POP3 +Topic :: Communications :: Fax +Topic :: Communications :: FIDO +Topic :: Communications :: File Sharing +Topic :: Communications :: File Sharing :: Gnutella +Topic :: Communications :: File Sharing :: Napster +Topic :: Communications :: Ham Radio +Topic :: Communications :: Internet Phone +Topic :: Communications :: Telephony +Topic :: Communications :: Usenet News +Topic :: Database +Topic :: Database :: Database Engines/Servers +Topic :: Database :: Front-Ends +Topic :: Desktop Environment +Topic :: Desktop Environment :: File Managers +Topic :: Desktop Environment :: Gnome +Topic :: Desktop Environment :: GNUstep +Topic :: Desktop Environment :: K Desktop Environment (KDE) +Topic :: Desktop Environment :: K Desktop Environment (KDE) :: Themes +Topic :: Desktop Environment :: PicoGUI +Topic :: Desktop Environment :: PicoGUI :: Applications +Topic :: Desktop Environment :: PicoGUI :: Themes +Topic :: Desktop Environment :: Screen Savers +Topic :: Desktop Environment :: Window Managers +Topic :: Desktop Environment :: Window Managers :: Afterstep +Topic :: Desktop Environment :: Window Managers :: Afterstep :: Themes +Topic :: Desktop Environment :: Window Managers :: Applets +Topic :: Desktop Environment :: Window Managers :: Blackbox +Topic :: Desktop Environment :: Window Managers :: Blackbox :: Themes +Topic :: Desktop Environment :: Window Managers :: CTWM +Topic :: Desktop Environment :: Window Managers :: CTWM :: Themes +Topic :: Desktop Environment :: Window Managers :: Enlightenment +Topic :: Desktop Environment :: Window Managers :: Enlightenment :: Epplets +Topic :: Desktop Environment :: Window Managers :: Enlightenment :: Themes DR15 +Topic :: Desktop Environment :: Window Managers :: Enlightenment :: Themes DR16 +Topic :: Desktop Environment :: Window Managers :: Enlightenment :: Themes DR17 +Topic :: Desktop Environment :: Window Managers :: Fluxbox +Topic :: Desktop Environment :: Window Managers :: Fluxbox :: Themes +Topic :: Desktop Environment :: Window Managers :: FVWM +Topic :: Desktop Environment :: Window Managers :: FVWM :: Themes +Topic :: Desktop Environment :: Window Managers :: IceWM +Topic :: Desktop Environment :: Window Managers :: IceWM :: Themes +Topic :: Desktop Environment :: Window Managers :: MetaCity +Topic :: Desktop Environment :: Window Managers :: MetaCity :: Themes +Topic :: Desktop Environment :: Window Managers :: Oroborus +Topic :: Desktop Environment :: Window Managers :: Oroborus :: Themes +Topic :: Desktop Environment :: Window Managers :: Sawfish +Topic :: Desktop Environment :: Window Managers :: Sawfish :: Themes 0.30 +Topic :: Desktop Environment :: Window Managers :: Sawfish :: Themes pre-0.30 +Topic :: Desktop Environment :: Window Managers :: Waimea +Topic :: Desktop Environment :: Window Managers :: Waimea :: Themes +Topic :: Desktop Environment :: Window Managers :: Window Maker +Topic :: Desktop Environment :: Window Managers :: Window Maker :: Applets +Topic :: Desktop Environment :: Window Managers :: Window Maker :: Themes +Topic :: Desktop Environment :: Window Managers :: XFCE +Topic :: Desktop Environment :: Window Managers :: XFCE :: Themes +Topic :: Documentation +Topic :: Documentation :: Sphinx +Topic :: Education +Topic :: Education :: Computer Aided Instruction (CAI) +Topic :: Education :: Testing +Topic :: Games/Entertainment +Topic :: Games/Entertainment :: Arcade +Topic :: Games/Entertainment :: Board Games +Topic :: Games/Entertainment :: First Person Shooters +Topic :: Games/Entertainment :: Fortune Cookies +Topic :: Games/Entertainment :: Multi-User Dungeons (MUD) +Topic :: Games/Entertainment :: Puzzle Games +Topic :: Games/Entertainment :: Real Time Strategy +Topic :: Games/Entertainment :: Role-Playing +Topic :: Games/Entertainment :: Side-Scrolling/Arcade Games +Topic :: Games/Entertainment :: Simulation +Topic :: Games/Entertainment :: Turn Based Strategy +Topic :: Home Automation +Topic :: Internet +Topic :: Internet :: File Transfer Protocol (FTP) +Topic :: Internet :: Finger +Topic :: Internet :: Log Analysis +Topic :: Internet :: Name Service (DNS) +Topic :: Internet :: Proxy Servers +Topic :: Internet :: WAP +Topic :: Internet :: WWW/HTTP +Topic :: Internet :: WWW/HTTP :: Browsers +Topic :: Internet :: WWW/HTTP :: Dynamic Content +Topic :: Internet :: WWW/HTTP :: Dynamic Content :: CGI Tools/Libraries +Topic :: Internet :: WWW/HTTP :: Dynamic Content :: Content Management System +Topic :: Internet :: WWW/HTTP :: Dynamic Content :: Message Boards +Topic :: Internet :: WWW/HTTP :: Dynamic Content :: News/Diary +Topic :: Internet :: WWW/HTTP :: Dynamic Content :: Page Counters +Topic :: Internet :: WWW/HTTP :: Dynamic Content :: Wiki +Topic :: Internet :: WWW/HTTP :: HTTP Servers +Topic :: Internet :: WWW/HTTP :: Indexing/Search +Topic :: Internet :: WWW/HTTP :: Session +Topic :: Internet :: WWW/HTTP :: Site Management +Topic :: Internet :: WWW/HTTP :: Site Management :: Link Checking +Topic :: Internet :: WWW/HTTP :: WSGI +Topic :: Internet :: WWW/HTTP :: WSGI :: Application +Topic :: Internet :: WWW/HTTP :: WSGI :: Middleware +Topic :: Internet :: WWW/HTTP :: WSGI :: Server +Topic :: Internet :: XMPP +Topic :: Internet :: Z39.50 +Topic :: Multimedia +Topic :: Multimedia :: Graphics +Topic :: Multimedia :: Graphics :: 3D Modeling +Topic :: Multimedia :: Graphics :: 3D Rendering +Topic :: Multimedia :: Graphics :: Capture +Topic :: Multimedia :: Graphics :: Capture :: Digital Camera +Topic :: Multimedia :: Graphics :: Capture :: Scanners +Topic :: Multimedia :: Graphics :: Capture :: Screen Capture +Topic :: Multimedia :: Graphics :: Editors +Topic :: Multimedia :: Graphics :: Editors :: Raster-Based +Topic :: Multimedia :: Graphics :: Editors :: Vector-Based +Topic :: Multimedia :: Graphics :: Graphics Conversion +Topic :: Multimedia :: Graphics :: Presentation +Topic :: Multimedia :: Graphics :: Viewers +Topic :: Multimedia :: Sound/Audio +Topic :: Multimedia :: Sound/Audio :: Analysis +Topic :: Multimedia :: Sound/Audio :: Capture/Recording +Topic :: Multimedia :: Sound/Audio :: CD Audio +Topic :: Multimedia :: Sound/Audio :: CD Audio :: CD Playing +Topic :: Multimedia :: Sound/Audio :: CD Audio :: CD Ripping +Topic :: Multimedia :: Sound/Audio :: CD Audio :: CD Writing +Topic :: Multimedia :: Sound/Audio :: Conversion +Topic :: Multimedia :: Sound/Audio :: Editors +Topic :: Multimedia :: Sound/Audio :: MIDI +Topic :: Multimedia :: Sound/Audio :: Mixers +Topic :: Multimedia :: Sound/Audio :: Players +Topic :: Multimedia :: Sound/Audio :: Players :: MP3 +Topic :: Multimedia :: Sound/Audio :: Sound Synthesis +Topic :: Multimedia :: Sound/Audio :: Speech +Topic :: Multimedia :: Video +Topic :: Multimedia :: Video :: Capture +Topic :: Multimedia :: Video :: Conversion +Topic :: Multimedia :: Video :: Display +Topic :: Multimedia :: Video :: Non-Linear Editor +Topic :: Office/Business +Topic :: Office/Business :: Financial +Topic :: Office/Business :: Financial :: Accounting +Topic :: Office/Business :: Financial :: Investment +Topic :: Office/Business :: Financial :: Point-Of-Sale +Topic :: Office/Business :: Financial :: Spreadsheet +Topic :: Office/Business :: Groupware +Topic :: Office/Business :: News/Diary +Topic :: Office/Business :: Office Suites +Topic :: Office/Business :: Scheduling +Topic :: Other/Nonlisted Topic +Topic :: Printing +Topic :: Religion +Topic :: Scientific/Engineering +Topic :: Scientific/Engineering :: Artificial Intelligence +Topic :: Scientific/Engineering :: Artificial Life +Topic :: Scientific/Engineering :: Astronomy +Topic :: Scientific/Engineering :: Atmospheric Science +Topic :: Scientific/Engineering :: Bio-Informatics +Topic :: Scientific/Engineering :: Chemistry +Topic :: Scientific/Engineering :: Electronic Design Automation (EDA) +Topic :: Scientific/Engineering :: GIS +Topic :: Scientific/Engineering :: Human Machine Interfaces +Topic :: Scientific/Engineering :: Hydrology +Topic :: Scientific/Engineering :: Image Recognition +Topic :: Scientific/Engineering :: Information Analysis +Topic :: Scientific/Engineering :: Interface Engine/Protocol Translator +Topic :: Scientific/Engineering :: Mathematics +Topic :: Scientific/Engineering :: Medical Science Apps. +Topic :: Scientific/Engineering :: Physics +Topic :: Scientific/Engineering :: Visualization +Topic :: Security +Topic :: Security :: Cryptography +Topic :: Sociology +Topic :: Sociology :: Genealogy +Topic :: Sociology :: History +Topic :: Software Development +Topic :: Software Development :: Assemblers +Topic :: Software Development :: Bug Tracking +Topic :: Software Development :: Build Tools +Topic :: Software Development :: Code Generators +Topic :: Software Development :: Compilers +Topic :: Software Development :: Debuggers +Topic :: Software Development :: Disassemblers +Topic :: Software Development :: Documentation +Topic :: Software Development :: Embedded Systems +Topic :: Software Development :: Internationalization +Topic :: Software Development :: Interpreters +Topic :: Software Development :: Libraries +Topic :: Software Development :: Libraries :: Application Frameworks +Topic :: Software Development :: Libraries :: Java Libraries +Topic :: Software Development :: Libraries :: Perl Modules +Topic :: Software Development :: Libraries :: PHP Classes +Topic :: Software Development :: Libraries :: Pike Modules +Topic :: Software Development :: Libraries :: pygame +Topic :: Software Development :: Libraries :: Python Modules +Topic :: Software Development :: Libraries :: Ruby Modules +Topic :: Software Development :: Libraries :: Tcl Extensions +Topic :: Software Development :: Localization +Topic :: Software Development :: Object Brokering +Topic :: Software Development :: Object Brokering :: CORBA +Topic :: Software Development :: Pre-processors +Topic :: Software Development :: Quality Assurance +Topic :: Software Development :: Testing +Topic :: Software Development :: Testing :: Acceptance +Topic :: Software Development :: Testing :: BDD +Topic :: Software Development :: Testing :: Mocking +Topic :: Software Development :: Testing :: Traffic Generation +Topic :: Software Development :: Testing :: Unit +Topic :: Software Development :: User Interfaces +Topic :: Software Development :: Version Control +Topic :: Software Development :: Version Control :: Bazaar +Topic :: Software Development :: Version Control :: CVS +Topic :: Software Development :: Version Control :: Git +Topic :: Software Development :: Version Control :: Mercurial +Topic :: Software Development :: Version Control :: RCS +Topic :: Software Development :: Version Control :: SCCS +Topic :: Software Development :: Widget Sets +Topic :: System +Topic :: System :: Archiving +Topic :: System :: Archiving :: Backup +Topic :: System :: Archiving :: Compression +Topic :: System :: Archiving :: Mirroring +Topic :: System :: Archiving :: Packaging +Topic :: System :: Benchmark +Topic :: System :: Boot +Topic :: System :: Boot :: Init +Topic :: System :: Clustering +Topic :: System :: Console Fonts +Topic :: System :: Distributed Computing +Topic :: System :: Emulators +Topic :: System :: Filesystems +Topic :: System :: Hardware +Topic :: System :: Hardware :: Hardware Drivers +Topic :: System :: Hardware :: Mainframes +Topic :: System :: Hardware :: Symmetric Multi-processing +Topic :: System :: Installation/Setup +Topic :: System :: Logging +Topic :: System :: Monitoring +Topic :: System :: Networking +Topic :: System :: Networking :: Firewalls +Topic :: System :: Networking :: Monitoring +Topic :: System :: Networking :: Monitoring :: Hardware Watchdog +Topic :: System :: Networking :: Time Synchronization +Topic :: System :: Operating System +Topic :: System :: Operating System Kernels +Topic :: System :: Operating System Kernels :: BSD +Topic :: System :: Operating System Kernels :: GNU Hurd +Topic :: System :: Operating System Kernels :: Linux +Topic :: System :: Power (UPS) +Topic :: System :: Recovery Tools +Topic :: System :: Shells +Topic :: System :: Software Distribution +Topic :: System :: Systems Administration +Topic :: System :: Systems Administration :: Authentication/Directory +Topic :: System :: Systems Administration :: Authentication/Directory :: LDAP +Topic :: System :: Systems Administration :: Authentication/Directory :: NIS +Topic :: System :: System Shells +Topic :: Terminals +Topic :: Terminals :: Serial +Topic :: Terminals :: Telnet +Topic :: Terminals :: Terminal Emulators/X Terminals +Topic :: Text Editors +Topic :: Text Editors :: Documentation +Topic :: Text Editors :: Emacs +Topic :: Text Editors :: Integrated Development Environments (IDE) +Topic :: Text Editors :: Text Processing +Topic :: Text Editors :: Word Processors +Topic :: Text Processing +Topic :: Text Processing :: Filters +Topic :: Text Processing :: Fonts +Topic :: Text Processing :: General +Topic :: Text Processing :: Indexing +Topic :: Text Processing :: Linguistic +Topic :: Text Processing :: Markup +Topic :: Text Processing :: Markup :: HTML +Topic :: Text Processing :: Markup :: LaTeX +Topic :: Text Processing :: Markup :: SGML +Topic :: Text Processing :: Markup :: VRML +Topic :: Text Processing :: Markup :: XML +Topic :: Utilities +Typing :: Typed
\ No newline at end of file diff --git a/debian/patches/0002-use-system-tomli.patch b/debian/patches/0002-use-system-tomli.patch new file mode 100644 index 0000000..5d9fa65 --- /dev/null +++ b/debian/patches/0002-use-system-tomli.patch @@ -0,0 +1,23 @@ +From: Scott Kitterman <scott@kitterman.com> +Date: Thu, 30 Dec 2021 09:10:52 -0500 +Subject: use system tomli in python lt 3_11 + +Origin: vendor +Forwarded: not-needed +--- + flit_core/flit_core/config.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/flit_core/flit_core/config.py b/flit_core/flit_core/config.py +index 1292956..3fd0bd5 100644 +--- a/flit_core/flit_core/config.py ++++ b/flit_core/flit_core/config.py +@@ -11,7 +11,7 @@ try: + import tomllib + except ImportError: + try: +- from .vendor import tomli as tomllib ++ import tomli as tomllib + # Some downstream distributors remove the vendored tomli. + # When that is removed, import tomli from the regular location. + except ImportError: diff --git a/debian/patches/build-with-local-flit_core.patch b/debian/patches/build-with-local-flit_core.patch new file mode 100644 index 0000000..c87a541 --- /dev/null +++ b/debian/patches/build-with-local-flit_core.patch @@ -0,0 +1,23 @@ +From: Stefano Rivera <stefanor@debian.org> +Date: Fri, 2 Sep 2022 13:20:45 +0200 +Subject: Build flit with the local flit_core + +Origin: vendor +Forwarded: not-needed +--- + pyproject.toml | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/pyproject.toml b/pyproject.toml +index caeefcd..e1ec281 100644 +--- a/pyproject.toml ++++ b/pyproject.toml +@@ -1,6 +1,7 @@ + [build-system] +-requires = ["flit_core >=3.8.0,<4"] ++requires = [] + build-backend = "flit_core.buildapi" ++backend-path = ["flit_core"] + + [project] + name = "flit" diff --git a/debian/patches/debian_installer_allowed_root.patch b/debian/patches/debian_installer_allowed_root.patch new file mode 100644 index 0000000..f0257c8 --- /dev/null +++ b/debian/patches/debian_installer_allowed_root.patch @@ -0,0 +1,28 @@ +From: Scott Kitterman <scott@kitterman.com> +Date: Tue, 7 Dec 2021 20:08:04 -0500 +Subject: Short circuit root test for building Debian packages + +Origin: vendor +Forwarded: not-needed +Last-Update: 2020-04-13 + + * Patch install.Installer class not to error out when subclassed as + DebianInstaller from dh-python +--- + flit/install.py | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/flit/install.py b/flit/install.py +index 3ea9a4b..f29326c 100644 +--- a/flit/install.py ++++ b/flit/install.py +@@ -109,7 +109,8 @@ class Installer(object): + + if (hasattr(os, 'getuid') and (os.getuid() == 0) and + (not os.environ.get('FLIT_ROOT_INSTALL'))): +- raise RootInstallError ++ if type(self).__name__ != 'DebianInstaller': ++ raise RootInstallError + + if user is None: + self.user = self._auto_user(python) diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 0000000..dde7e6e --- /dev/null +++ b/debian/patches/series @@ -0,0 +1,3 @@ +debian_installer_allowed_root.patch +0002-use-system-tomli.patch +build-with-local-flit_core.patch diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..5b90c9f --- /dev/null +++ b/debian/rules @@ -0,0 +1,41 @@ +#!/usr/bin/make -f +# -*- makefile -*- + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 +export FLIT_NO_NETWORK=True +export FLIT_ROOT_INSTALL=1 +include /usr/share/dpkg/pkg-info.mk + +%: + dh $@ --with python3 --buildsystem=pybuild + +override_dh_auto_clean: + set -e; \ + if [ -e _removed ]; then \ + mv _removed/vendor flit_core/flit_core/; \ + rmdir _removed; \ + fi + dh_auto_clean --name flit + dh_auto_clean -d flit_core --name flit_core + +override_dh_auto_configure: + set -e; \ + if [ -e flit_core/flit_core/vendor ]; then \ + mkdir -p _removed; \ + mv flit_core/flit_core/vendor _removed/; \ + fi + pybuild --configure --name flit + pybuild --configure -d flit_core --name flit_core + +override_dh_auto_build: + pybuild --build --name flit + pybuild --build -d flit_core --name flit_core + +override_dh_auto_install: + pybuild --install --dest-dir debian/flit --name flit + pybuild --install --dest-dir debian/flit -d flit_core --name flit_core + sphinx-build -b man -D extensions='sphinx.ext.ifconfig' -D man_show_urls=True doc/ debian/ + +override_dh_auto_test: + pybuild --test -d flit_core --name flit_core --test-pytest --test-args="-k 'not test_find_in_path'" diff --git a/debian/salsa-ci.yml b/debian/salsa-ci.yml new file mode 100644 index 0000000..33c3a64 --- /dev/null +++ b/debian/salsa-ci.yml @@ -0,0 +1,4 @@ +--- +include: + - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml + - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 0000000..163aaf8 --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/debian/source/lintian-overrides b/debian/source/lintian-overrides new file mode 100644 index 0000000..9938ef3 --- /dev/null +++ b/debian/source/lintian-overrides @@ -0,0 +1,2 @@ +# Flit is self-building and does not need the pyproject plugin +flit source: missing-prerequisite-for-pyproject-backend diff --git a/debian/tests/control b/debian/tests/control new file mode 100644 index 0000000..abb280a --- /dev/null +++ b/debian/tests/control @@ -0,0 +1,10 @@ +Tests: flit-user +Depends: + python3-all, + python3-docutils, + python3-pytest, + python3-requests, + python3-responses, + python3-testpath, + @ +Restrictions: allow-stderr diff --git a/debian/tests/flit-user b/debian/tests/flit-user new file mode 100644 index 0000000..3aeb71f --- /dev/null +++ b/debian/tests/flit-user @@ -0,0 +1,27 @@ +#!/bin/sh +set -e + +user=testing + +if [ "$AUTOPKGTEST_TMP" = "" ] ; then + AUTOPKGTEST_TMP=$(mktemp -d /tmp/${pkg}-test.XXXXXX) +fi +cd "$AUTOPKGTEST_TMP" + +if [ $(id -u) = 0 ] +then + adduser --quiet --system --group --no-create-home $user + chown -R $user . + runuser="runuser -p -u $user --" +else + runuser="" +fi + +for py in $(py3versions -s); do + $runuser $py -m pytest -k 'not test_find_in_path' --pyargs flit_core +done + +if [ $(id -u) = 0 ] +then + deluser --quiet $user +fi diff --git a/debian/watch b/debian/watch new file mode 100644 index 0000000..2c8816a --- /dev/null +++ b/debian/watch @@ -0,0 +1,2 @@ +version=4 +https://pypi.debian.net/flit/flit-([0-9][0-9t\.\-]*).tar.gz |