[med-svn] [Git][med-team/q2-demux][upstream] New upstream version 2022.8.0+dfsg

Nilesh Patra (@nilesh) gitlab at salsa.debian.org
Mon Sep 5 18:29:28 BST 2022



Nilesh Patra pushed to branch upstream at Debian Med / q2-demux


Commits:
f9fda92c by Nilesh Patra at 2022-09-05T22:49:24+05:30
New upstream version 2022.8.0+dfsg
- - - - -


18 changed files:

- − .github/CONTRIBUTING.md
- − .github/ISSUE_TEMPLATE/1-user-need-help.md
- − .github/ISSUE_TEMPLATE/2-dev-need-help.md
- − .github/ISSUE_TEMPLATE/3-found-bug.md
- − .github/ISSUE_TEMPLATE/4-make-better.md
- − .github/ISSUE_TEMPLATE/5-make-new.md
- − .github/ISSUE_TEMPLATE/6-where-to-go.md
- − .github/SUPPORT.md
- − .github/pull_request_template.md
- − .github/rubric.png
- − .github/workflows/ci.yml
- ci/recipe/meta.yaml
- q2_demux/_demux.py
- q2_demux/_ecc.py
- q2_demux/_format.py
- q2_demux/_version.py
- q2_demux/tests/test_demux.py
- q2_demux/tests/test_ecc.py


Changes:

=====================================
.github/CONTRIBUTING.md deleted
=====================================
@@ -1,23 +0,0 @@
-# Contributing to this project
-
-Thanks for thinking of us :heart: :tada: - we would love a helping hand!
-
-## I just have a question
-
-> Note: Please don't file an issue to ask a question. You'll get faster results
-> by using the resources below.
-
-### QIIME 2 Users
-
-Check out the [User Docs](https://docs.qiime2.org) - there are many tutorials,
-walkthroughs, and guides available. If you still need help, please visit us at
-the [QIIME 2 Forum](https://forum.qiime2.org/c/user-support).
-
-### QIIME 2 Developers
-
-Check out the [Developer Docs](https://dev.qiime2.org) - there are many
-tutorials, walkthroughs, and guides available. If you still need help, please
-visit us at the [QIIME 2 Forum](https://forum.qiime2.org/c/dev-discussion).
-
-This document is based heavily on the following:
-https://github.com/atom/atom/blob/master/CONTRIBUTING.md


=====================================
.github/ISSUE_TEMPLATE/1-user-need-help.md deleted
=====================================
@@ -1,14 +0,0 @@
----
-name: I am a user and I need help with QIIME 2...
-about: I am using QIIME 2 and have a question or am experiencing a problem
-
----
-
-Have you had a chance to check out the docs?
-https://docs.qiime2.org
-There are many tutorials, walkthroughs, and guides available.
-
-If you still need help, please visit:
-https://forum.qiime2.org/c/user-support
-
-Help requests filed here will not be answered.


=====================================
.github/ISSUE_TEMPLATE/2-dev-need-help.md deleted
=====================================
@@ -1,12 +0,0 @@
----
-name: I am a developer and I need help with QIIME 2...
-about: I am developing a QIIME 2 plugin or interface and have a question or a problem
-
----
-
-Have you had a chance to check out the developer docs?
-https://dev.qiime2.org
-There are many tutorials, walkthroughs, and guides available.
-
-If you still need help, please visit:
-https://forum.qiime2.org/c/dev-discussion


=====================================
.github/ISSUE_TEMPLATE/3-found-bug.md deleted
=====================================
@@ -1,36 +0,0 @@
----
-name: I am a developer and I found a bug...
-about: I am a developer and I found a bug that I can describe
-
----
-
-**Bug Description**
-A clear and concise description of what the bug is.
-
-**Steps to reproduce the behavior**
-1. Go to '...'
-2. Click on '....'
-3. Scroll down to '....'
-4. See error
-
-**Expected behavior**
-A clear and concise description of what you expected to happen.
-
-**Screenshots**
-If applicable, add screenshots to help explain your problem.
-
-**Computation Environment**
-- OS: [e.g. macOS High Sierra]
-- QIIME 2 Release [e.g. 2018.6]
-
-**Questions**
-1. An enumerated list with any questions about the problem here.
-2. If not applicable, please delete this section.
-
-**Comments**
-1. An enumerated list with any other context or comments about the problem here.
-2. If not applicable, please delete this section.
-
-**References**
-1. An enumerated list of links to relevant references, including forum posts, stack overflow, etc.
-2. If not applicable, please delete this section.


=====================================
.github/ISSUE_TEMPLATE/4-make-better.md deleted
=====================================
@@ -1,26 +0,0 @@
----
-name: I am a developer and I have an idea for an improvement...
-about: I am a developer and I have an idea for an improvement to existing functionality
-
----
-
-**Improvement Description**
-A clear and concise description of what the improvement is.
-
-**Current Behavior**
-Please provide a brief description of the current behavior.
-
-**Proposed Behavior**
-Please provide a brief description of the proposed behavior.
-
-**Questions**
-1. An enumerated list of questions related to the proposal.
-2. If not applicable, please delete this section.
-
-**Comments**
-1. An enumerated list of comments related to the proposal that don't fit anywhere else.
-2. If not applicable, please delete this section.
-
-**References**
-1. An enumerated list of links to relevant references, including forum posts, stack overflow, etc.
-2. If not applicable, please delete this section.


=====================================
.github/ISSUE_TEMPLATE/5-make-new.md deleted
=====================================
@@ -1,26 +0,0 @@
----
-name: I am a developer and I have an idea for a new feature...
-about: I am a developer and I have an idea for new functionality
-
----
-
-**Addition Description**
-A clear and concise description of what the addition is.
-
-**Current Behavior**
-Please provide a brief description of the current behavior, if applicable.
-
-**Proposed Behavior**
-Please provide a brief description of the proposed behavior.
-
-**Questions**
-1. An enumerated list of questions related to the proposal.
-2. If not applicable, please delete this section.
-
-**Comments**
-1. An enumerated list of comments related to the proposal that don't fit anywhere else.
-2. If not applicable, please delete this section.
-
-**References**
-1. An enumerated list of links to relevant references, including forum posts, stack overflow, etc.
-2. If not applicable, please delete this section.


=====================================
.github/ISSUE_TEMPLATE/6-where-to-go.md deleted
=====================================
@@ -1,147 +0,0 @@
----
-name: I don't know where to file my issue...
-about: I am a developer and I don't know which repo to file this in
-
----
-
-The repos within the QIIME 2 GitHub Organization are listed below, with a brief description about the repo.
-
-Sorted alphabetically by repo name.
-
-- The CI automation engine that builds and distributes QIIME 2
-  https://github.com/qiime2/busywork/issues
-
-- A Concourse resource for working with conda
-  https://github.com/qiime2/conda-channel-resource/issues
-
-- Web app for vanity URLs for QIIME 2 data assets
-  https://github.com/qiime2/data.qiime2.org/issues
-
-- The Developer Documentation
-  https://github.com/qiime2/dev-docs/issues
-
-- A discourse plugin for handling queued/unqueued topics
-  https://github.com/qiime2/discourse-unhandled-tagger/issues
-
-- The User Documentation
-  https://github.com/qiime2/docs/issues
-
-- Rendered QIIME 2 environment files for conda
-  https://github.com/qiime2/environment-files/issues
-
-- Google Sheets Add-On for validating tabular data
-  https://github.com/qiime2/Keemei/issues
-
-- A docker image for linux-based busywork workers
-  https://github.com/qiime2/linux-worker-docker/issues
-
-- Official project logos
-  https://github.com/qiime2/logos/issues
-
-- The q2-alignment plugin
-  https://github.com/qiime2/q2-alignment/issues
-
-- The q2-composition plugin
-  https://github.com/qiime2/q2-composition/issues
-
-- The q2-cutadapt plugin
-  https://github.com/qiime2/q2-cutadapt/issues
-
-- The q2-dada2 plugin
-  https://github.com/qiime2/q2-dada2/issues
-
-- The q2-deblur plugin
-  https://github.com/qiime2/q2-deblur/issues
-
-- The q2-demux plugin
-  https://github.com/qiime2/q2-demux/issues
-
-- The q2-diversity plugin
-  https://github.com/qiime2/q2-diversity/issues
-
-- The q2-diversity-lib plugin
-  https://github.com/qiime2/q2-diversity-lib/issues
-
-- The q2-emperor plugin
-  https://github.com/qiime2/q2-emperor/issues
-
-- The q2-feature-classifier plugin
-  https://github.com/qiime2/q2-feature-classifier/issues
-
-- The q2-feature-table plugin
-  https://github.com/qiime2/q2-feature-table/issues
-
-- The q2-fragment-insertion plugin
-  https://github.com/qiime2/q2-fragment-insertion/issues
-
-- The q2-gneiss plugin
-  https://github.com/qiime2/q2-gneiss/issues
-
-- The q2-longitudinal plugin
-  https://github.com/qiime2/q2-longitudinal/issues
-
-- The q2-metadata plugin
-  https://github.com/qiime2/q2-metadata/issues
-
-- The q2-phylogeny plugin
-  https://github.com/qiime2/q2-phylogeny/issues
-
-- The q2-quality-control plugin
-  https://github.com/qiime2/q2-quality-control/issues
-
-- The q2-quality-filter plugin
-  https://github.com/qiime2/q2-quality-filter/issues
-
-- The q2-sample-classifier plugin
-  https://github.com/qiime2/q2-sample-classifier/issues
-
-- The q2-shogun plugin
-  https://github.com/qiime2/q2-shogun/issues
-
-- The q2-taxa plugin
-  https://github.com/qiime2/q2-taxa/issues
-
-- The q2-types plugin
-  https://github.com/qiime2/q2-types/issues
-
-- The q2-vsearch plugin
-  https://github.com/qiime2/q2-vsearch/issues
-
-- The CLI interface
-  https://github.com/qiime2/q2cli/issues
-
-- The prototype CWL interface
-  https://github.com/qiime2/q2cwl/issues
-
-- The prototype Galaxy interface
-  https://github.com/qiime2/q2galaxy/issues
-
-- An internal tool for ensuring header text and copyrights are present
-  https://github.com/qiime2/q2lint/issues
-
-- The prototype GUI interface
-  https://github.com/qiime2/q2studio/issues
-
-- A base template for use in official QIIME 2 plugins
-  https://github.com/qiime2/q2templates/issues
-
-- The read-only web interface at view.qiime2.org
-  https://github.com/qiime2/q2view/issues
-
-- The QIIME 2 homepage at qiime2.org
-  https://github.com/qiime2/qiime2.github.io/issues
-
-- The QIIME 2 framework
-  https://github.com/qiime2/qiime2/issues
-
-- Centralized templates for repo assets
-  https://github.com/qiime2/template-repo/issues
-
-- Scripts for building QIIME 2 VMs
-  https://github.com/qiime2/vm-playbooks/issues
-
-- Scripts for building QIIME 2 workshop clusters
-  https://github.com/qiime2/workshop-playbooks/issues
-
-- The web app that runs workshops.qiime2.org
-  https://github.com/qiime2/workshops.qiime2.org/issues


=====================================
.github/SUPPORT.md deleted
=====================================
@@ -1,112 +0,0 @@
-# QIIME 2 Users
-
-Check out the [User Docs](https://docs.qiime2.org) - there are many tutorials,
-walkthroughs, and guides available. If you still need help, please visit us at
-the [QIIME 2 Forum](https://forum.qiime2.org/c/user-support).
-
-# QIIME 2 Developers
-
-Check out the [Developer Docs](https://dev.qiime2.org) - there are many
-tutorials, walkthroughs, and guides available. If you still need help, please
-visit us at the [QIIME 2 Forum](https://forum.qiime2.org/c/dev-discussion).
-
-# General Bug/Issue Triage Discussion
-
-![rubric](./rubric.png?raw=true)
-
-# Projects/Repositories in the QIIME 2 GitHub Organization
-
-Sorted alphabetically by repo name.
-
-- [busywork](https://github.com/qiime2/busywork/issues)
-  | The CI automation engine that builds and distributes QIIME 2
-- [conda-channel-resource](https://github.com/qiime2/conda-channel-resource/issues)
-  | A Concourse resource for working with conda
-- [data.qiime2.org](https://github.com/qiime2/data.qiime2.org/issues)
-  | Web app for vanity URLs for QIIME 2 data assets
-- [dev-docs](https://github.com/qiime2/dev-docs/issues)
-  | The Developer Documentation
-- [discourse-unhandled-tagger](https://github.com/qiime2/discourse-unhandled-tagger/issues)
-  | A discourse plugin for handling queued/unqueued topics
-- [docs](https://github.com/qiime2/docs/issues)
-  | The User Documentation
-- [environment-files](https://github.com/qiime2/environment-files/issues)
-  | Rendered QIIME 2 environment files for conda
-- [Keemei](https://github.com/qiime2/Keemei/issues)
-  | Google Sheets Add-On for validating tabular data
-- [linux-worker-docker](https://github.com/qiime2/linux-worker-docker/issues)
-  | A docker image for linux-based busywork workers
-- [logos](https://github.com/qiime2/logos/issues)
-  | Official project logos
-- [q2-alignment](https://github.com/qiime2/q2-alignment/issues)
-  | The q2-alignment plugin
-- [q2-composition](https://github.com/qiime2/q2-composition/issues)
-  | The q2-composition plugin
-- [q2-cutadapt](https://github.com/qiime2/q2-cutadapt/issues)
-  | The q2-cutadapt plugin
-- [q2-dada2](https://github.com/qiime2/q2-dada2/issues)
-  | The q2-dada2 plugin
-- [q2-deblur](https://github.com/qiime2/q2-deblur/issues)
-  | The q2-deblur plugin
-- [q2-demux](https://github.com/qiime2/q2-demux/issues)
-  | The q2-demux plugin
-- [q2-diversity](https://github.com/qiime2/q2-diversity/issues)
-  | The q2-diversity plugin
-- [q2-diversity-lib](https://github.com/qiime2/q2-diversity-lib/issues)
-  | The q2-diversity-lib plugin
-- [q2-emperor](https://github.com/qiime2/q2-emperor/issues)
-  | The q2-emperor plugin
-- [q2-feature-classifier](https://github.com/qiime2/q2-feature-classifier/issues)
-  | The q2-feature-classifier plugin
-- [q2-feature-table](https://github.com/qiime2/q2-feature-table/issues)
-  | The q2-feature-table plugin
-- [q2-fragment-insertion](https://github.com/qiime2/q2-fragment-insertion/issues)
-  | The q2-fragment-insertion plugin
-- [q2-gneiss](https://github.com/qiime2/q2-gneiss/issues)
-  | The q2-gneiss plugin
-- [q2-longitudinal](https://github.com/qiime2/q2-longitudinal/issues)
-  | The q2-longitudinal plugin
-- [q2-metadata](https://github.com/qiime2/q2-metadata/issues)
-  | The q2-metadata plugin
-- [q2-phylogeny](https://github.com/qiime2/q2-phylogeny/issues)
-  | The q2-phylogeny plugin
-- [q2-quality-control](https://github.com/qiime2/q2-quality-control/issues)
-  | The q2-quality-control plugin
-- [q2-quality-filter](https://github.com/qiime2/q2-quality-filter/issues)
-  | The q2-quality-filter plugin
-- [q2-sample-classifier](https://github.com/qiime2/q2-sample-classifier/issues)
-  | The q2-sample-classifier plugin
-- [q2-shogun](https://github.com/qiime2/q2-shogun/issues)
-  | The q2-shogun plugin
-- [q2-taxa](https://github.com/qiime2/q2-taxa/issues)
-  | The q2-taxa plugin
-- [q2-types](https://github.com/qiime2/q2-types/issues)
-  | The q2-types plugin
-- [q2-vsearch](https://github.com/qiime2/q2-vsearch/issues)
-  | The q2-vsearch plugin
-- [q2cli](https://github.com/qiime2/q2cli/issues)
-  | The CLI interface
-- [q2cwl](https://github.com/qiime2/q2cwl/issues)
-  | The prototype CWL interface
-- [q2galaxy](https://github.com/qiime2/q2galaxy/issues)
-  | The prototype Galaxy interface
-- [q2lint](https://github.com/qiime2/q2lint/issues)
-  | An internal tool for ensuring header text and copyrights are present
-- [q2studio](https://github.com/qiime2/q2studio/issues)
-  | The prototype GUI interface
-- [q2templates](https://github.com/qiime2/q2templates/issues)
-  | A base template for use in official QIIME 2 plugins
-- [q2view](https://github.com/qiime2/q2view/issues)
-  | The read-only web interface at view.qiime2.org
-- [qiime2.github.io](https://github.com/qiime2/qiime2.github.io/issues)
-  | The QIIME 2 homepage at qiime2.org
-- [qiime2](https://github.com/qiime2/qiime2/issues)
-  | The QIIME 2 framework
-- [template-repo](https://github.com/qiime2/template-repo/issues)
-  | Centralized templates for repo assets
-- [vm-playbooks](https://github.com/qiime2/vm-playbooks/issues)
-  | Scripts for building QIIME 2 VMs
-- [workshop-playbooks](https://github.com/qiime2/workshop-playbooks/issues)
-  | Scripts for building QIIME 2 workshop clusters
-- [workshops.qiime2.org](https://github.com/qiime2/workshops.qiime2.org/issues)
-  | The web app that runs workshops.qiime2.org


=====================================
.github/pull_request_template.md deleted
=====================================
@@ -1,11 +0,0 @@
-Brief summary of the Pull Request, including any issues it may fix using the GitHub closing syntax:
-
-https://help.github.com/articles/closing-issues-using-keywords/
-
-Also, include any co-authors or contributors using the GitHub coauthor tag:
-
-https://help.github.com/articles/creating-a-commit-with-multiple-authors/
-
----
-
-Include any questions for reviewers, screenshots, sample outputs, etc.


=====================================
.github/rubric.png deleted
=====================================
Binary files a/.github/rubric.png and /dev/null differ


=====================================
.github/workflows/ci.yml deleted
=====================================
@@ -1,55 +0,0 @@
-# This file is automatically generated by busywork.qiime2.org and
-# template-repos - any manual edits made to this file will be erased when
-# busywork performs maintenance updates.
-
-name: ci
-
-on:
-  pull_request:
-  push:
-    branches:
-      - master
-
-jobs:
-  lint:
-    runs-on: ubuntu-latest
-    steps:
-    - name: checkout source
-      uses: actions/checkout at v2
-
-    - name: set up python 3.8
-      uses: actions/setup-python at v1
-      with:
-        python-version: 3.8
-
-    - name: install dependencies
-      run: python -m pip install --upgrade pip
-
-    - name: lint
-      run: |
-        pip install -q https://github.com/qiime2/q2lint/archive/master.zip
-        q2lint
-        pip install -q flake8
-        flake8
-
-  build-and-test:
-    needs: lint
-    strategy:
-      matrix:
-        os: [ubuntu-latest, macos-latest]
-    runs-on: ${{ matrix.os }}
-    steps:
-    - name: checkout source
-      uses: actions/checkout at v2
-      with:
-        fetch-depth: 0
-
-    - name: set up git repo for versioneer
-      run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*
-
-    - uses: qiime2/action-library-packaging at alpha1
-      with:
-        package-name: q2-demux
-        build-target: dev
-        additional-tests: py.test --pyargs q2_demux
-        library-token: ${{ secrets.LIBRARY_TOKEN }}


=====================================
ci/recipe/meta.yaml
=====================================
@@ -23,9 +23,9 @@ requirements:
 
   run:
     - python {{ python }}
-    - pandas
+    - pandas {{ pandas }}
     - numpy
-    - scikit-bio
+    - scikit-bio {{ scikit_bio }}
     - seaborn >=0.8.1
     - pyyaml
     - psutil


=====================================
q2_demux/_demux.py
=====================================
@@ -13,6 +13,7 @@ import collections
 import collections.abc
 import random
 import resource
+import re
 
 import skbio
 import psutil
@@ -250,8 +251,23 @@ def _make_barcode_map(barcodes, rev_comp_mapping_barcodes):
             raise ValueError('Barcodes of different lengths were detected: '
                              '%d != %d. Variable length barcodes are not '
                              'supported.' % (len(barcode), barcode_len))
+        try:
+            skbio.DNA(barcode)
+        except ValueError as ve:
+            if re.match(r'^ValueError\("Invalid characters in sequence[.,'
+                        ' \n]*',
+                        ve.__repr__()):
+                raise ValueError("Invalid characters found in specified "
+                                 "barcodes column within metadata file. "
+                                 "Please confirm that the column: '%s' "
+                                 "contains your per-sample barcodes."
+                                 % (barcodes.name))
+            else:
+                raise
+
         if rev_comp_mapping_barcodes:
             barcode = str(skbio.DNA(barcode).reverse_complement())
+
         if barcode in barcode_map:
             raise ValueError('A duplicate barcode was detected. The barcode '
                              '%s was observed for samples %s and %s.'


=====================================
q2_demux/_ecc.py
=====================================
@@ -120,7 +120,7 @@ class GolayDecoder(object):
     # reasonably over estimate the cache. Overhead is small anyway.
     @functools.lru_cache(maxsize=8192)
     def decode(self, seq):
-        """Decodes a nucleotide string of 12 bases, using bitwise error checking
+        """Decode a nucleotide string of 12 bases, using bitwise error checking
 
         Parameters
         ----------


=====================================
q2_demux/_format.py
=====================================
@@ -70,7 +70,9 @@ class ErrorCorrectionDetailsFmt(model.TextFileFormat):
     }
 
     def _validate_(self, level):
-        line = open(str(self)).readline()
+        with open(str(self)) as fh:
+            line = fh.readline()
+
         if len(line.strip()) == 0:
             raise ValidationError("Failed to locate header.")
 


=====================================
q2_demux/_version.py
=====================================
@@ -23,9 +23,9 @@ def get_keywords():
     # setup.py/versioneer.py will grep for the variable names, so they must
     # each be defined on a line of their own. _version.py will just call
     # get_keywords().
-    git_refnames = " (tag: 2022.2.0)"
-    git_full = "1ae11e79bdf2199c230c59d8425476f84e941c48"
-    git_date = "2022-02-18 19:08:10 +0000"
+    git_refnames = " (tag: 2022.8.0)"
+    git_full = "d5a13a4137d2f7c358d7fa992f7ca504f29620fe"
+    git_date = "2022-08-23 17:11:46 +0000"
     keywords = {"refnames": git_refnames, "full": git_full, "date": git_date}
     return keywords
 


=====================================
q2_demux/tests/test_demux.py
=====================================
@@ -579,6 +579,18 @@ class EmpSingleTests(unittest.TestCase, EmpTestingUtils):
                         'sample4,sample4_5_L001_R1_001.fastq.gz,forward\n']
         self._compare_manifests(act_manifest, exp_manifest)
 
+    def test_raise_error_invalid_sequence_column_characters(self):
+        bad_barcode_column = pd.Series(
+            ['HPillTS1F43', 'HPillTS1F44'], name='barcode-id',
+            index=pd.Index(['sample1', 'sample2'], name='sample-id'))
+
+        with self.assertRaisesRegex(ValueError, r"Invalid characters"):
+            emp_single(
+                self.bsi,
+                qiime2.CategoricalMetadataColumn(bad_barcode_column),
+                golay_error_correction=False,
+            )
+
 
 class EmpPairedTests(unittest.TestCase, EmpTestingUtils):
     def setUp(self):


=====================================
q2_demux/tests/test_ecc.py
=====================================
@@ -17,7 +17,7 @@ golay = GolayDecoder()
 
 class ECCTests(unittest.TestCase):
     def test_golay_module1(self):
-        """switching the last base, decode() should recover the original barcode
+        """switch the last base, decode() should recover the original barcode
         """
         sent = golay.encode([0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0])
         rec = sent[:-1] + 'C'  # possible error here
@@ -74,7 +74,7 @@ class ECCTests(unittest.TestCase):
         self.assertEqual(golay.decode('XYZXYZXYZXYZ'), (None, 4))
 
     def test_G_H(self):
-        """ generator and parity check matrices should be s.t. G dot H.T = zeros
+        """generator and parity check matrices should be s.t. G dot H.T = zeros
         """
         chkmtx = (np.dot(golay.DEFAULT_G, golay.DEFAULT_H.T) % 2)
         self.assertTrue((chkmtx == 0).all())



View it on GitLab: https://salsa.debian.org/med-team/q2-demux/-/commit/f9fda92c053a2f1b872a51cf1ff425754c08e8c2

-- 
View it on GitLab: https://salsa.debian.org/med-team/q2-demux/-/commit/f9fda92c053a2f1b872a51cf1ff425754c08e8c2
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/debian-med-commit/attachments/20220905/6becb616/attachment-0001.htm>


More information about the debian-med-commit mailing list