[Git][debian-gis-team/fiona][master] 6 commits: Update branch in gbp.conf & Vcs-Git URL.
Bas Couwenberg (@sebastic)
gitlab at salsa.debian.org
Sun Aug 10 10:13:00 BST 2025
Bas Couwenberg pushed to branch master at Debian GIS Project / fiona
Commits:
2250334b by Bas Couwenberg at 2025-06-29T08:23:50+02:00
Update branch in gbp.conf & Vcs-Git URL.
- - - - -
5cdd370b by Bas Couwenberg at 2025-06-29T08:26:53+02:00
Drop python3-click-plugins (build) dependency.
- - - - -
f5d1cce4 by Bas Couwenberg at 2025-06-29T08:27:18+02:00
Set distribution to experimental.
- - - - -
b0dac6f1 by Bas Couwenberg at 2025-06-29T09:14:04+02:00
Set distribution to experimental.
- - - - -
15b431a4 by Bas Couwenberg at 2025-08-10T11:01:45+02:00
Revert "Update branch in gbp.conf & Vcs-Git URL."
This reverts commit 2250334b3e871d71f9671f7d58bf4460925f144a.
- - - - -
c2533325 by Bas Couwenberg at 2025-08-10T11:02:26+02:00
Move from experimental to unstable.
- - - - -
4 changed files:
- debian/changelog
- debian/control
- + debian/patches/pr1498-click-plugins.patch
- debian/patches/series
Changes:
=====================================
debian/changelog
=====================================
@@ -1,9 +1,17 @@
-fiona (1.10.1-3) UNRELEASED; urgency=medium
+fiona (1.10.1-3) unstable; urgency=medium
+
+ * Team upload.
+ * Move from experimental to unstable.
+
+ -- Bas Couwenberg <sebastic at debian.org> Sun, 10 Aug 2025 11:01:55 +0200
+
+fiona (1.10.1-3~exp1) experimental; urgency=medium
* Team upload.
* Bump Standards-Version to 4.7.2, no changes.
+ * Drop python3-click-plugins (build) dependency.
- -- Bas Couwenberg <sebastic at debian.org> Thu, 20 Mar 2025 06:04:06 +0100
+ -- Bas Couwenberg <sebastic at debian.org> Sun, 29 Jun 2025 08:26:57 +0200
fiona (1.10.1-2) unstable; urgency=medium
=====================================
debian/control
=====================================
@@ -16,7 +16,6 @@ Build-Depends: debhelper-compat (= 13),
python3-attr,
python3-boto3,
python3-certifi,
- python3-click-plugins,
python3-cligj,
python3-fsspec <!nocheck>,
python3-pyparsing,
@@ -53,7 +52,6 @@ Package: fiona
Architecture: any
Section: science
Depends: python3-fiona (= ${binary:Version}),
- python3-click-plugins,
${python3:Depends},
${misc:Depends}
Description: Command line tool for reading/writing vector geospatial data
=====================================
debian/patches/pr1498-click-plugins.patch
=====================================
@@ -0,0 +1,291 @@
+Description: Vendor click-plugins, PyPI package no longer maintained.
+Author: Bas Couwenberg <sebastic at xs4all.nl>
+Bug: https://github.com/Toblerity/Fiona/pull/1498
+
+--- /dev/null
++++ b/fiona/_vendor/click_plugins.py
+@@ -0,0 +1,247 @@
++# This file is part of 'click-plugins': https://github.com/click-contrib/click-plugins
++#
++# New BSD License
++#
++# Copyright (c) 2015-2025, Kevin D. Wurster, Sean C. Gillies
++# All rights reserved.
++#
++# Redistribution and use in source and binary forms, with or without
++# modification, are permitted provided that the following conditions are met:
++#
++# * Redistributions of source code must retain the above copyright notice, this
++# list of conditions and the following disclaimer.
++#
++# * 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.
++#
++# * Neither click-plugins nor the names of its contributors may not 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.
++
++
++"""Support CLI plugins with click and entry points.
++
++See :func:`with_plugins`.
++"""
++
++
++import importlib.metadata
++import os
++import sys
++import traceback
++
++import click
++
++
++__version__ = '2.0'
++
++
++def with_plugins(entry_points):
++
++ """Decorator for loading and attaching plugins to a ``click.Group()``.
++
++ Plugins are loaded from an ``importlib.metadata.EntryPoint()``. Each entry
++ point must point to a ``click.Command()``. An entry point that fails to
++ load will be wrapped in a ``BrokenCommand()`` to allow the CLI user to
++ discover and potentially debug the problem.
++
++ >>> from importlib.metadata import entry_points
++ >>>
++ >>> import click
++ >>> from click_plugins import with_plugins
++ >>>
++ >>> @with_plugins('group_name')
++ >>> @click.group()
++ >>> def group():
++ ... '''Group'''
++ >>>
++ >>> @with_plugins(entry_points('group_name'))
++ >>> @click.group()
++ >>> def group():
++ ... '''Group'''
++ >>>
++ >>> @with_plugins(importlib.metadata.EntryPoint(...))
++ >>> @click.group()
++ >>> def group():
++ ... '''Group'''
++ >>>
++ >>> @with_plugins("group1")
++ >>> @with_plugins("group2")
++ >>> def group():
++ ... '''Group'''
++
++ :param str or EntryPoint or sequence[EntryPoint] entry_points:
++ Entry point group name, a single ``importlib.metadata.EntryPoint()``,
++ or a sequence of ``EntryPoint()``s.
++
++ :rtype function:
++ """
++
++ # Note that the explicit full path reference to:
++ #
++ # importlib.metadata.entry_points()
++ #
++ # in this function allows the call to be mocked in the tests. Replacing
++ # with:
++ #
++ # from importlib.metadata import entry_points
++ #
++ # breaks this ability.
++
++ def decorator(group):
++ if not isinstance(group, click.Group):
++ raise TypeError(
++ f"plugins can only be attached to an instance of"
++ f" 'click.Group()' not: {repr(group)}")
++
++ # Load 'EntryPoint()' objects.
++ if isinstance(entry_points, str):
++
++ # Older versions of Python do not support filtering.
++ if sys.version_info >= (3, 10):
++ all_entry_points = importlib.metadata.entry_points(
++ group=entry_points)
++
++ else:
++ all_entry_points = importlib.metadata.entry_points()
++ all_entry_points = all_entry_points[entry_points]
++
++ # A single 'importlib.metadata.EntryPoint()'
++ elif isinstance(entry_points, importlib.metadata.EntryPoint):
++ all_entry_points = [entry_points]
++
++ # Sequence of 'EntryPoints()'.
++ else:
++ all_entry_points = entry_points
++
++ for ep in all_entry_points:
++
++ try:
++ group.add_command(ep.load())
++
++ # Catch all exceptions (technically not 'BaseException') and
++ # instead register a special 'BrokenCommand()'. Otherwise, a single
++ # plugin that fails to load and/or register will make the CLI
++ # inoperable. 'BrokenCommand()' explains the situation to users.
++ except Exception as e:
++ group.add_command(BrokenCommand(ep, e))
++
++ return group
++
++ return decorator
++
++
++class BrokenCommand(click.Command):
++
++ """Represents a plugin ``click.Command()`` that failed to load.
++
++ Can be executed just like a ``click.Command()``, but prints information
++ for debugging and exits with an error code.
++ """
++
++ def __init__(self, entry_point, exception):
++
++ """
++ :param importlib.metadata.EntryPoint entry_point:
++ Entry point that failed to load.
++ :param Exception exception:
++ Raised when attempting to load the entry point associated with
++ this instance.
++ """
++
++ super().__init__(entry_point.name)
++
++ # There are several ways to get a traceback from an exception, but
++ # 'TracebackException()' seems to be the most portable across actively
++ # supported versions of Python.
++ tbe = traceback.TracebackException.from_exception(exception)
++
++ # A message for '$ cli command --help'. Contains full traceback and a
++ # helpful note. The intention is to nudge users to figure out which
++ # project should get a bug report since users are likely to report the
++ # issue to the developers of the CLI utility they are directly
++ # interacting with. These are not necessarily the right developers.
++ self.help = (
++ "{ls}ERROR: entry point '{module}:{name}' could not be loaded."
++ " Contact its author for help.{ls}{ls}{tb}").format(
++ module=_module(entry_point),
++ name=entry_point.name,
++ ls=os.linesep,
++ tb=''.join(tbe.format())
++ )
++
++ # Replace the broken command's summary with a warning about how it
++ # was not loaded successfully. The idea is that '$ cli --help' should
++ # include a clear indicator that a subcommand is not functional, and
++ # a little hint for what to do about it. U+2020 is a "dagger", whose
++ # modern use typically indicates a footnote.
++ self.short_help = (
++ f"\u2020 Warning: could not load plugin. Invoke command with"
++ f" '--help' for traceback."
++ )
++
++ def invoke(self, ctx):
++
++ """Print traceback and debugging message.
++
++ :param click.Context ctx:
++ Active context.
++ """
++
++ click.echo(self.help, color=ctx.color, err=True)
++ ctx.exit(1)
++
++ def parse_args(self, ctx, args):
++
++ """Pass arguments along without parsing.
++
++ :param click.Context ctx:
++ Active context.
++ :param list args:
++ List of command line arguments.
++ """
++
++ # Do not attempt to parse these arguments. We do not know why the
++ # entry point failed to load, but it is reasonable to assume that
++ # argument parsing will not work. Ultimately the goal is to get the
++ # 'Command.invoke()' method (overloaded in this class) to execute
++ # and provide the user with a bit of debugging information.
++
++ return args
++
++
++def _module(ep):
++
++ """Module name for a given entry point.
++
++ Parameters
++ ----------
++ ep : importlib.metadata.EntryPoint
++ Determine parent module for this entry point.
++
++ Returns
++ -------
++ str
++ """
++
++ if sys.version_info >= (3, 10):
++ module = ep.module
++
++ else:
++ # From 'importlib.metadata.EntryPoint.module'.
++ match = ep.pattern.match(ep.value)
++ module = match.group('module')
++
++ return module
+--- a/fiona/fio/main.py
++++ b/fiona/fio/main.py
+@@ -8,7 +8,6 @@ import logging
+ import sys
+
+ import click
+-from click_plugins import with_plugins
+ from cligj import verbose_opt, quiet_opt
+
+ if sys.version_info < (3, 10):
+@@ -31,6 +30,7 @@ from fiona.fio.insp import insp
+ from fiona.fio.load import load
+ from fiona.fio.ls import ls
+ from fiona.fio.rm import rm
++from fiona._vendor.click_plugins import with_plugins
+
+ # The "calc" extras require pyparsing and shapely.
+ try:
+--- a/pyproject.toml
++++ b/pyproject.toml
+@@ -32,7 +32,6 @@ dependencies = [
+ "attrs>=19.2.0",
+ "certifi",
+ "click~=8.0",
+- "click-plugins>=1.0",
+ "cligj>=0.5",
+ 'importlib-metadata;python_version<"3.10"',
+ ]
+--- a/requirements.txt
++++ b/requirements.txt
+@@ -1,6 +1,5 @@
+ attrs>=19.2.0
+ click~=8.0
+-click-plugins
+ cligj>=0.5.0
+ importlib-metadata;python_version<"3.10"
+ certifi
=====================================
debian/patches/series
=====================================
@@ -1,3 +1,4 @@
0001-Rename-fio-command-to-fiona-to-avoid-name-clash.patch
test_drvsupport.patch
tzdata.patch
+pr1498-click-plugins.patch
View it on GitLab: https://salsa.debian.org/debian-gis-team/fiona/-/compare/f052f459bb0c13a0cf8eb1d6ebd352b42b9e15bf...c2533325b1c057e3a9044ae8c81c3e59c6a20567
--
View it on GitLab: https://salsa.debian.org/debian-gis-team/fiona/-/compare/f052f459bb0c13a0cf8eb1d6ebd352b42b9e15bf...c2533325b1c057e3a9044ae8c81c3e59c6a20567
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-grass-devel/attachments/20250810/14f0f8ef/attachment-0001.htm>
More information about the Pkg-grass-devel
mailing list