Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-geolinks for openSUSE:Factory 
checked in at 2026-09-04 12:42:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-geolinks (Old)
 and      /work/SRC/openSUSE:Factory/.python-geolinks.new.1265 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-geolinks"

Fri Sep  4 12:42:45 2026 rev:3 rq:1375669 version:0.2.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-geolinks/python-geolinks.changes  
2025-07-10 22:11:31.082141931 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-geolinks.new.1265/python-geolinks.changes    
    2026-09-04 12:42:49.231663492 +0200
@@ -1,0 +2,17 @@
+Thu Sep  3 17:13:37 UTC 2026 - Martin Pluskal <[email protected]>
+
+- Update to 0.2.3:
+  * 0.2.1: drop Python 2 support, add type annotations and a
+    click-based geolinks command line tool
+  * 0.2.2: ship LICENSE.md in the sdist, fix the version and
+    dependency declarations in setup.py
+  * 0.2.3: ship requirements.txt in the sdist, without which the
+    0.2.2 sdist could not be built
+- Add python-click requirement, new upstream dependency of the
+  geolinks command line tool
+- Register the geolinks command through libalternatives
+- Follow upstream rename of LICENSE to LICENSE.md
+- Run the test suite via pytest
+- Modernise spec, drop Group tag
+
+-------------------------------------------------------------------

Old:
----
  geolinks-0.2.0.tar.gz

New:
----
  geolinks-0.2.3.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-geolinks.spec ++++++
--- /var/tmp/diff_new_pack.HLjNWW/_old  2026-09-04 12:42:49.864685723 +0200
+++ /var/tmp/diff_new_pack.HLjNWW/_new  2026-09-04 12:42:49.866685793 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-geolinks
 #
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -16,47 +16,53 @@
 #
 
 
+%bcond_without libalternatives
 Name:           python-geolinks
-Version:        0.2.0
+Version:        0.2.3
 Release:        0
-License:        MIT
 Summary:        Utilities to deal with geospatial links
+License:        MIT
 URL:            https://github.com/geopython/geolinks
-Group:          Development/Languages/Python
-# pypi source lack license and tests
+# The PyPI sdist ships no tests, hence the tag archive.
 Source:         
https://github.com/geopython/geolinks/archive/%{version}.tar.gz#/geolinks-%{version}.tar.gz
+BuildRequires:  %{python_module click}
 BuildRequires:  %{python_module pip}
+BuildRequires:  %{python_module pytest}
 BuildRequires:  %{python_module setuptools}
 BuildRequires:  %{python_module wheel}
+BuildRequires:  alts
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
+Requires:       alts
+Requires:       python-click
 BuildArch:      noarch
-
 %python_subpackages
 
 %description
 Python implementation of Cat-Interop utilities for geospatial links.
 
 %prep
-%setup -q -n geolinks-%{version}
+%autosetup -n geolinks-%{version}
 
 %build
 %pyproject_wheel
 
 %install
 %pyproject_install
+%python_clone -a %{buildroot}%{_bindir}/geolinks
+%python_group_libalternatives geolinks
 %python_expand %fdupes %{buildroot}%{$python_sitelib}
 
 %check
-pushd tests
-%{python_expand export PYTHONPATH=%{buildroot}%{$python_sitelib}
-$python -B run_tests.py
-}
-popd
+%pytest tests/run_tests.py
+
+%pre
+%python_libalternatives_reset_alternative geolinks
 
 %files %{python_files}
+%license LICENSE.md
 %doc README.md
-%license LICENSE
+%python_alternative %{_bindir}/geolinks
 %{python_sitelib}/geolinks
 %{python_sitelib}/geolinks-%{version}.dist-info
 

++++++ geolinks-0.2.0.tar.gz -> geolinks-0.2.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geolinks-0.2.0/.github/workflows/main.yml 
new/geolinks-0.2.3/.github/workflows/main.yml
--- old/geolinks-0.2.0/.github/workflows/main.yml       1970-01-01 
01:00:00.000000000 +0100
+++ new/geolinks-0.2.3/.github/workflows/main.yml       2023-09-07 
21:12:17.000000000 +0200
@@ -0,0 +1,34 @@
+name: build ⚙️
+
+on: [ push, pull_request ]
+
+jobs:
+  main:
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        python-version: [3.7, 3.8]
+    steps:
+    - uses: actions/checkout@v2
+    - uses: actions/setup-python@v2
+      name: Setup Python ${{ matrix.python-version }}
+      with:
+        python-version: ${{ matrix.python-version }}
+    - name: Install system dependencies 📦
+      run: sudo apt-get install -y dh-python devscripts fakeroot debhelper 
python3-all python3-setuptools
+    - name: Install requirements 📦
+      run: |
+        python3 -m pip install --upgrade pip
+        pip3 install -r requirements.txt
+        pip3 install -r requirements-dev.txt
+    - name: Install package 📦
+      run: python3 setup.py install
+    - name: run tests ⚙️
+      run: python3 setup.py test
+    - name: run flake8 ⚙️
+      run: flake8
+    - name: build Python package 🏗️
+      run: python3 setup.py sdist bdist_wheel --universal
+    - name: build Debian package 🏗️
+      run: sudo debuild -b -uc -us
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geolinks-0.2.0/.travis.yml 
new/geolinks-0.2.3/.travis.yml
--- old/geolinks-0.2.0/.travis.yml      2015-09-05 18:20:56.000000000 +0200
+++ new/geolinks-0.2.3/.travis.yml      1970-01-01 01:00:00.000000000 +0100
@@ -1,18 +0,0 @@
-language: python
-
-python:
-  - "2.6"
-  - "2.7"
-  - "3.3"
-  - "3.4"
-
-install:
-  - python setup.py install
-  - pip install -r requirements-dev.txt
-
-script:
-  - cd tests
-  - python run_tests.py
-  - pep8 run_tests.py
-  - cd ../geolinks
-  - pep8 __init__.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geolinks-0.2.0/CODE_OF_CONDUCT.md 
new/geolinks-0.2.3/CODE_OF_CONDUCT.md
--- old/geolinks-0.2.0/CODE_OF_CONDUCT.md       1970-01-01 01:00:00.000000000 
+0100
+++ new/geolinks-0.2.3/CODE_OF_CONDUCT.md       2023-09-07 21:12:17.000000000 
+0200
@@ -0,0 +1,76 @@
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+In the interest of fostering an open and welcoming environment, we as
+contributors and maintainers pledge to making participation in our project and
+our community a harassment-free experience for everyone, regardless of age, 
body
+size, disability, ethnicity, sex characteristics, gender identity and 
expression,
+level of experience, education, socio-economic status, nationality, personal
+appearance, race, religion, or sexual identity and orientation.
+
+## Our Standards
+
+Examples of behavior that contributes to creating a positive environment
+include:
+
+* Using welcoming and inclusive language
+* Being respectful of differing viewpoints and experiences
+* Gracefully accepting constructive criticism
+* Focusing on what is best for the community
+* Showing empathy towards other community members
+
+Examples of unacceptable behavior by participants include:
+
+* The use of sexualized language or imagery and unwelcome sexual attention or
+ advances
+* Trolling, insulting/derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or electronic
+ address, without explicit permission
+* Other conduct which could reasonably be considered inappropriate in a
+ professional setting
+
+## Our Responsibilities
+
+Project maintainers are responsible for clarifying the standards of acceptable
+behavior and are expected to take appropriate and fair corrective action in
+response to any instances of unacceptable behavior.
+
+Project maintainers have the right and responsibility to remove, edit, or
+reject comments, commits, code, wiki edits, issues, and other contributions
+that are not aligned to this Code of Conduct, or to ban temporarily or
+permanently any contributor for other behaviors that they deem inappropriate,
+threatening, offensive, or harmful.
+
+## Scope
+
+This Code of Conduct applies both within project spaces and in public spaces
+when an individual is representing the project or its community. Examples of
+representing a project or community include using an official project e-mail
+address, posting via an official social media account, or acting as an 
appointed
+representative at an online or offline event. Representation of a project may 
be
+further defined and clarified by project maintainers.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported by contacting the project team at [email protected]. All
+complaints will be reviewed and investigated and will result in a response that
+is deemed necessary and appropriate to the circumstances. The project team is
+obligated to maintain confidentiality with regard to the reporter of an 
incident.
+Further details of specific enforcement policies may be posted separately.
+
+Project maintainers who do not follow or enforce the Code of Conduct in good
+faith may face temporary or permanent repercussions as determined by other
+members of the project's leadership.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage], 
version 1.4,
+available at 
https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
+
+[homepage]: https://www.contributor-covenant.org
+
+For answers to common questions about this code of conduct, see
+https://www.contributor-covenant.org/faq
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geolinks-0.2.0/CONTRIBUTING.md 
new/geolinks-0.2.3/CONTRIBUTING.md
--- old/geolinks-0.2.0/CONTRIBUTING.md  1970-01-01 01:00:00.000000000 +0100
+++ new/geolinks-0.2.3/CONTRIBUTING.md  2023-09-07 21:12:17.000000000 +0200
@@ -0,0 +1,101 @@
+# Contributing to geolinks
+
+We welcome contributions to geolinks, in the form of issues, bug fixes, or
+suggestions for enhancements. This document sets out our guidelines and best
+practices for such contributions.
+
+It's based on the [Contributing to Open Source Projects
+Guide](https://contribution-guide-org.readthedocs.io/).
+
+geolinks has the following modes of contribution:
+
+- GitHub Commit Access
+- GitHub Pull Requests
+
+## Code of Conduct
+
+Contributors to this project are expected to act respectfully toward others in 
accordance with the [OSGeo Code of 
Conduct](https://www.osgeo.org/code_of_conduct).
+
+## Submitting Bugs
+
+### Due Diligence
+
+Before submitting a bug, please do the following:
+
+* Perform __basic troubleshooting__ steps:
+
+    * __Make sure you're on the latest version.__ If you're not on the most
+      recent version, your problem may have been solved already! Upgrading is
+      always the best first step.
+    * [__Search the issue
+      tracker__](https://github.com/geopython/geolinks/issues)
+      to make sure it's not a known issue.
+
+### What to put in your bug report
+
+Make sure your report gets the attention it deserves: bug reports with missing
+information may be ignored or punted back to you, delaying a fix.  The below
+constitutes a bare minimum; more info is almost always better:
+
+* __What version of Python are you using?__ For example, are you using Python
+  2.7, Python 3.7, PyPy 2.0?
+* __What operating system are you using?__ Windows (7, 8, 10, 32-bit, 64-bit),
+  Mac OS X,  (10.7.4, 10.9.0), GNU/Linux (which distribution, which version?)
+  Again, more detail is better.
+* __Which version or versions of the software are you using?__ Ideally, you've
+  followed the advice above and are on the latest version, but please confirm
+  this.
+* __How can the we recreate your problem?__ Imagine that we have never used
+  geolinks before and have downloaded it for the first time. Exactly what steps
+  do we need to take to reproduce your problem?
+
+## Contributions and Licensing
+
+### Contributor License Agreement
+
+Your contribution will be under our 
[license](https://github.com/geopython/geolinks/blob/master/LICENSE.md) as per 
[GitHub's terms of 
service](https://help.github.com/articles/github-terms-of-service/#6-contributions-under-repository-license).
+
+### GitHub Commit Access
+
+* Proposals to provide developers with GitHub commit access shall be emailed 
to the geolinks [mailing 
list](https://lists.osgeo.org/mailman/listinfo/geolinks). Proposals shall be 
approved by the geolinks development team.  Committers shall be added by the 
project admin.
+* Removal of commit access shall be handled in the same manner.
+
+### GitHub Pull Requests
+
+* Pull requests may include copyright in the source code header by the 
contributor if the contribution is significant or the contributor wants to 
claim copyright on their contribution.
+* All contributors shall be listed at 
https://github.com/geopython/geolinks/graphs/contributors
+* Unclaimed copyright, by default, is assigned to the main copyright holders 
as specified in https://github.com/geopython/geolinks/blob/master/LICENSE.md
+
+### Version Control Branching
+
+* Always __make a new branch__ for your work, no matter how small. This makes
+  it easy for others to take just that one set of changes from your repository,
+  in case you have multiple unrelated changes floating around.
+
+    * __Don't submit unrelated changes in the same branch/pull request!__ If it
+      is not possible to review your changes quickly and easily, we may reject
+      your request.
+
+* __Base your new branch off of the appropriate branch__ on the main 
repository:
+
+    * In general the released version of geolinks is based on the ``master``
+      (default) branch whereas development work is done under other non-default
+      branches. Unless you are sure that your issue affects a non-default
+      branch, __base your branch off the ``master`` one__.
+
+* Note that depending on how long it takes for the dev team to merge your
+  patch, the copy of ``master`` you worked off of may get out of date! 
+    * If you find yourself 'bumping' a pull request that's been sidelined for a
+      while, __make sure you rebase or merge to latest ``master``__ to ensure a
+        speedier resolution.
+
+### Code Formatting
+
+* __Please follow the coding conventions and style used in the geolinks 
repository.__ 
+* geolinks endeavours to follow the
+  [PEP-8](http://www.python.org/dev/peps/pep-0008/) guidelines.
+
+## Suggesting Enhancements
+
+We welcome suggestions for enhancements, but reserve the right to reject them
+if they do not follow future plans for geolinks.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geolinks-0.2.0/LICENSE new/geolinks-0.2.3/LICENSE
--- old/geolinks-0.2.0/LICENSE  2015-09-05 18:20:56.000000000 +0200
+++ new/geolinks-0.2.3/LICENSE  1970-01-01 01:00:00.000000000 +0100
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014 Tom Kralidis
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geolinks-0.2.0/LICENSE.md 
new/geolinks-0.2.3/LICENSE.md
--- old/geolinks-0.2.0/LICENSE.md       1970-01-01 01:00:00.000000000 +0100
+++ new/geolinks-0.2.3/LICENSE.md       2023-09-07 21:12:17.000000000 +0200
@@ -0,0 +1,23 @@
+# The MIT License (MIT)
+
+Copyright &copy; 2014-2022 Tom Kralidis
+
+* * *
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geolinks-0.2.0/MANIFEST.in 
new/geolinks-0.2.3/MANIFEST.in
--- old/geolinks-0.2.0/MANIFEST.in      2015-09-05 18:20:56.000000000 +0200
+++ new/geolinks-0.2.3/MANIFEST.in      2023-09-07 21:12:17.000000000 +0200
@@ -1 +1,3 @@
 include README.md
+include LICENSE.md
+include requirements.txt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geolinks-0.2.0/README.md new/geolinks-0.2.3/README.md
--- old/geolinks-0.2.0/README.md        2015-09-05 18:20:56.000000000 +0200
+++ new/geolinks-0.2.3/README.md        2023-09-07 21:12:17.000000000 +0200
@@ -1,20 +1,49 @@
-[![Build 
Status](https://travis-ci.org/geopython/geolinks.png)](https://travis-ci.org/geopython/geolinks)
+[![Build 
Status](https://github.com/geopython/geolinks/workflows/build%20%E2%9A%99%EF%B8%8F/badge.svg)](https://github.com/geopython/geolinks/actions)
 
-geolinks
-========
+# geolinks
 
 Utilities to deal with geospatial links.  Working implementation
 of the Cat-Interop work at https://github.com/OSGeo/Cat-Interop
 
-Install
--------
+## Installation
 
+geolinks is best installed and used within a Python virtualenv.
+
+### Requirements
+
+* Python 3 and above
+* Python [virtualenv](https://virtualenv.pypa.io/) package
+
+### Dependencies
+
+Dependencies are listed in [requirements.txt](requirements.txt). Dependencies
+are automatically installed during geolinks's installation.
+
+### Installing the Package
+
+from source:
+```bash
+python3 -m venv my-env
+cd my-env
+. bin/activate
+git clone https://github.com/geopython/geolinks.git
+cd geolinks
+python3 setup.py build
+python3 setup.py install
+```
+
+via pip:
 ```bash
-pip install geolinks
+pip3 install geolinks
 ```
 
-Use
----
+## Running
+
+```bash
+geolinks link sniff 'http://host/wms?service=WMS'
+```
+
+## Using the API from Python
 
 ```python
 >>> from geolinks import sniff_link
@@ -29,3 +58,52 @@
 >>> sniff_link('http://host/data/roads.kml')
 'OGC:KML'
 ```
+
+### Running Tests
+
+```bash
+# via setuptools
+python3 setup.py test
+# manually
+cd tests
+python3 run_tests.py
+```
+
+## Development
+
+### Setting up a Development Environment
+
+Same as installing a package.  Use a virtualenv.  Also install developer
+requirements:
+
+```bash
+pip3 install -r requirements-dev.txt
+```
+
+## Releasing
+
+```bash
+vi geolinks/__init__.py
+git commit -m 'update release version' geolinks/__init__.py
+vi debian/changelog  # add changelog entry and summary of updates
+# push changes
+git push origin master
+git tag -a x.y.z -m 'tagging release x.y.z'
+# push tag
+git push --tags
+rm -fr build dist *.egg-info
+python3 setup.py sdist bdist_wheel --universal
+twine upload dist/*
+```
+
+### Code Conventions
+
+* [PEP8](https://www.python.org/dev/peps/pep-0008)
+
+### Bugs and Issues
+
+All bugs, enhancements and issues are managed on 
[GitHub](https://github.com/geopython/geolinks/issues).
+
+## Contact
+
+* [Tom Kralidis](https://github.com/tomkralidis)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geolinks-0.2.0/SECURITY.md 
new/geolinks-0.2.3/SECURITY.md
--- old/geolinks-0.2.0/SECURITY.md      1970-01-01 01:00:00.000000000 +0100
+++ new/geolinks-0.2.3/SECURITY.md      2023-09-07 21:12:17.000000000 +0200
@@ -0,0 +1,15 @@
+# geolinks Security Policy
+
+## Reporting
+
+Security/vulnerability reports **should not** be submitted through GitHub 
issues or public discussions, but instead please send your report 
+to **geopython-security nospam @ lists.osgeo.org** - (remove the blanks and 
'nospam').  
+
+## Supported Versions
+
+geolinks developers will release patches for security vulnerabilities for the 
following versions:
+
+| Version | Supported          |
+| ------- | ------------------ |
+| latest stable version | :white_check_mark: |
+| previous versions | :x:                |
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geolinks-0.2.0/debian/changelog 
new/geolinks-0.2.3/debian/changelog
--- old/geolinks-0.2.0/debian/changelog 1970-01-01 01:00:00.000000000 +0100
+++ new/geolinks-0.2.3/debian/changelog 2023-09-07 21:12:17.000000000 +0200
@@ -0,0 +1,17 @@
+geolinks (0.2.3) focal; urgency=medium
+
+  * packaging fixes
+
+ -- Tom Kralidis <[email protected]>  Thu, 7 Sep 2023 19:11:34 +0000
+
+geolinks (0.2.2) focal; urgency=medium
+
+  * packaging fixes
+
+ -- Tom Kralidis <[email protected]>  Thu, 7 Sep 2023 00:52:43 +0000
+
+geolinks (0.2.1) focal; urgency=medium
+
+  * housekeeping release update
+
+ -- Tom Kralidis <[email protected]>  Sun, 26 Feb 2023 16:30:16 +0000
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geolinks-0.2.0/debian/compat 
new/geolinks-0.2.3/debian/compat
--- old/geolinks-0.2.0/debian/compat    1970-01-01 01:00:00.000000000 +0100
+++ new/geolinks-0.2.3/debian/compat    2023-09-07 21:12:17.000000000 +0200
@@ -0,0 +1 @@
+12
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geolinks-0.2.0/debian/control 
new/geolinks-0.2.3/debian/control
--- old/geolinks-0.2.0/debian/control   1970-01-01 01:00:00.000000000 +0100
+++ new/geolinks-0.2.3/debian/control   2023-09-07 21:12:17.000000000 +0200
@@ -0,0 +1,21 @@
+Source: geolinks
+Section: python
+Priority: optional
+Maintainer: Tom Kralidis <[email protected]>
+Uploaders: Angelos Tzotsos <[email protected]>
+           Johan Van de Wauw <[email protected]>
+Build-Depends: debhelper (>= 12),
+               dh-python,
+               python3-all,
+               python3-setuptools
+Standards-Version: 4.6.1
+Vcs-Git: https://github.com/geopython/geolinks.git
+Homepage: https://github.com/geopython/geolinks
+
+Package: python3-geolinks
+Architecture: all
+Depends: ${python3:Depends},
+         python3-click,
+         ${misc:Depends}
+Description: Utilities to deal with geospatial links. Working implementation
+ of the Cat-Interop work at https://github.com/OSGeo/Cat-Interop
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geolinks-0.2.0/debian/copyright 
new/geolinks-0.2.3/debian/copyright
--- old/geolinks-0.2.0/debian/copyright 1970-01-01 01:00:00.000000000 +0100
+++ new/geolinks-0.2.3/debian/copyright 2023-09-07 21:12:17.000000000 +0200
@@ -0,0 +1,26 @@
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Source: https://github.com/geopython/geolinks
+
+Files: *
+Copyright: Copyright 2022 Tom Kralidis
+License: MIT
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the "Software"), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or
+ sell copies of the Software, and to permit persons to whom
+ the Software is furnished to do so, subject to the following
+ conditions:
+ .
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ .
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geolinks-0.2.0/debian/rules 
new/geolinks-0.2.3/debian/rules
--- old/geolinks-0.2.0/debian/rules     1970-01-01 01:00:00.000000000 +0100
+++ new/geolinks-0.2.3/debian/rules     2023-09-07 21:12:17.000000000 +0200
@@ -0,0 +1,13 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+export PYBUILD_NAME=geolinks
+
+%:
+       dh $@ --with python3 --buildsystem pybuild
+
+override_dh_auto_test:
+       @echo "nocheck set, not running tests"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geolinks-0.2.0/debian/source/format 
new/geolinks-0.2.3/debian/source/format
--- old/geolinks-0.2.0/debian/source/format     1970-01-01 01:00:00.000000000 
+0100
+++ new/geolinks-0.2.3/debian/source/format     2023-09-07 21:12:17.000000000 
+0200
@@ -0,0 +1 @@
+3.0 (quilt)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geolinks-0.2.0/geolinks/__init__.py 
new/geolinks-0.2.3/geolinks/__init__.py
--- old/geolinks-0.2.0/geolinks/__init__.py     2015-09-05 18:20:56.000000000 
+0200
+++ new/geolinks-0.2.3/geolinks/__init__.py     2023-09-07 21:12:17.000000000 
+0200
@@ -2,7 +2,7 @@
 #
 # Authors: Tom Kralidis <[email protected]>
 #
-# Copyright (c) 2014 Tom Kralidis
+# Copyright (c) 2023 Tom Kralidis
 #
 # Permission is hereby granted, free of charge, to any person
 # obtaining a copy of this software and associated documentation
@@ -28,14 +28,40 @@
 # =================================================================
 
 import logging
+import sys
+from typing import Union
+
+import click
 
 LOGGER = logging.getLogger(__name__)
 
-__version__ = '0.2.0'
+__version__ = '0.2.3'
+
+
+def CLICK_OPTION_VERBOSITY(f):
+    logging_options = ['ERROR', 'WARNING', 'INFO', 'DEBUG']
+
+    def callback(ctx, param, value):
+        if value is not None:
+            logging.basicConfig(stream=sys.stdout,
+                                level=getattr(logging, value))
+        return True
+
+    return click.option('--verbosity', '-v',
+                        type=click.Choice(logging_options),
+                        help='Verbosity',
+                        callback=callback)(f)
 
 
-def inurl(needles, haystack, position='any'):
-    """convenience function to make string.find return bool"""
+def inurl(needles, haystack, position='any') -> bool:
+    """
+    convenience function to find a given value in a URL
+
+    :param needles: `list` of patterns to test
+    :param haystack: value to search / detect for patterns
+
+    returns: `bool` of assessment
+    """
 
     count = 0
 
@@ -60,8 +86,14 @@
     return False
 
 
-def sniff_link(url):
-    """performs basic heuristics to detect what the URL is"""
+def sniff_link(url) -> Union[str, None]:
+    """
+    performs basic heuristics to detect what the URL is
+
+    :param url: `str` of URL
+
+    :returns: possible link type or `None`
+    """
 
     protocol = None
     link = url.strip()
@@ -108,3 +140,32 @@
         LOGGER.info('No link type detected')
 
     return protocol
+
+
[email protected]()
[email protected]_option(version=__version__)
+def cli():
+    pass
+
+
[email protected]()
+def link():
+    """Link utilities"""
+    pass
+
+
[email protected]()
[email protected]('link')
+@CLICK_OPTION_VERBOSITY
+def sniff(link, verbosity):
+    """Sniff link"""
+
+    click.echo(f'Sniffing link: {link}')
+
+    link_type = sniff_link(link)
+
+    click.echo(f'Link type: {link_type}')
+
+
+link.add_command(sniff)
+cli.add_command(link)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geolinks-0.2.0/pyproject.toml 
new/geolinks-0.2.3/pyproject.toml
--- old/geolinks-0.2.0/pyproject.toml   1970-01-01 01:00:00.000000000 +0100
+++ new/geolinks-0.2.3/pyproject.toml   2023-09-07 21:12:17.000000000 +0200
@@ -0,0 +1,3 @@
+[build-system]
+requires = ["setuptools"]
+build-backend = "setuptools.build_meta"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geolinks-0.2.0/requirements-dev.txt 
new/geolinks-0.2.3/requirements-dev.txt
--- old/geolinks-0.2.0/requirements-dev.txt     2015-09-05 18:20:56.000000000 
+0200
+++ new/geolinks-0.2.3/requirements-dev.txt     2023-09-07 21:12:17.000000000 
+0200
@@ -1,2 +1,3 @@
-pep8
-pylint
+flake8
+twine
+wheel
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geolinks-0.2.0/requirements.txt 
new/geolinks-0.2.3/requirements.txt
--- old/geolinks-0.2.0/requirements.txt 1970-01-01 01:00:00.000000000 +0100
+++ new/geolinks-0.2.3/requirements.txt 2023-09-07 21:12:17.000000000 +0200
@@ -0,0 +1 @@
+click
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geolinks-0.2.0/setup.py new/geolinks-0.2.3/setup.py
--- old/geolinks-0.2.0/setup.py 2015-09-05 18:20:56.000000000 +0200
+++ new/geolinks-0.2.3/setup.py 2023-09-07 21:12:17.000000000 +0200
@@ -2,7 +2,7 @@
 #
 # Authors: Tom Kralidis <[email protected]>
 #
-# Copyright (c) 2014 Tom Kralidis
+# Copyright (c) 2022 Tom Kralidis
 #
 # Permission is hereby granted, free of charge, to any person
 # obtaining a copy of this software and associated documentation
@@ -27,14 +27,55 @@
 #
 # =================================================================
 
-from distutils.core import setup
-from geolinks import __version__ as version
+import io
+import os
+import re
+import sys
+
+from setuptools import Command, find_packages, setup
+
+
+class PyTest(Command):
+    user_options = []
+
+    def initialize_options(self):
+        pass
+
+    def finalize_options(self):
+        pass
+
+    def run(self):
+        import subprocess
+        errno = subprocess.call([sys.executable, 'tests/run_tests.py'])
+        raise SystemExit(errno)
+
+
+def read(filename, encoding='utf-8'):
+    """read file contents"""
+    full_path = os.path.join(os.path.dirname(__file__), filename)
+    with io.open(full_path, encoding=encoding) as fh:
+        return fh.read().strip()
+
+
+def get_package_version():
+    """get version from top-level package init"""
+    version_file = read('geolinks/__init__.py')
+    version_match = re.search(r"^__version__ = ['\"]([^'\"]*)['\"]",
+                              version_file, re.M)
+    if version_match:
+        return version_match.group(1)
+    raise RuntimeError("Unable to find version string.")
+
+
+LONG_DESCRIPTION = read('README.md')
+
 
 setup(
     name='geolinks',
-    version=version,
+    version=get_package_version(),
     description='Utilities to deal with geospatial links',
-    long_description=open('README.md').read(),
+    long_description=LONG_DESCRIPTION,
+    long_description_content_type='text/markdown',
     license='MIT',
     platforms='all',
     keywords='links geo protocol url href',
@@ -43,7 +84,13 @@
     maintainer='Tom Kralidis',
     maintainer_email='[email protected]',
     url='https://github.com/geopython/geolinks',
-    packages=['geolinks'],
+    install_requires=read('requirements.txt').splitlines(),
+    packages=find_packages(),
+    entry_points={
+        'console_scripts': [
+            'geolinks=geolinks:cli'
+        ]
+    },
     classifiers=[
         'Development Status :: 4 - Beta',
         'Environment :: Console',
@@ -52,12 +99,9 @@
         'License :: OSI Approved :: MIT License',
         'Operating System :: OS Independent',
         'Programming Language :: Python',
-        'Programming Language :: Python :: 2',
-        'Programming Language :: Python :: 2.6',
-        'Programming Language :: Python :: 2.7',
-        'Programming Language :: Python :: 3',
-        'Programming Language :: Python :: 3.3',
-        'Programming Language :: Python :: 3.4',
+        'Programming Language :: Python :: 3.5',
         'Topic :: Scientific/Engineering :: GIS',
-    ]
+    ],
+    cmdclass={'test': PyTest},
+    test_suite='tests.run_tests'
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geolinks-0.2.0/tests/run_tests.py 
new/geolinks-0.2.3/tests/run_tests.py
--- old/geolinks-0.2.0/tests/run_tests.py       2015-09-05 18:20:56.000000000 
+0200
+++ new/geolinks-0.2.3/tests/run_tests.py       2023-09-07 21:12:17.000000000 
+0200
@@ -2,7 +2,7 @@
 #
 # Authors: Tom Kralidis <[email protected]>
 #
-# Copyright (c) 2014 Tom Kralidis
+# Copyright (c) 2022 Tom Kralidis
 #
 # Permission is hereby granted, free of charge, to any person
 # obtaining a copy of this software and associated documentation
@@ -27,8 +27,10 @@
 #
 # =================================================================
 
-import unittest
 import json
+import os.path
+import unittest
+
 from geolinks import sniff_link
 
 
@@ -36,7 +38,17 @@
     """Test suite for package Foo"""
     def setUp(self):
         """setup test fixtures, etc."""
-        with open('test_data.json') as f:
+
+        test_data = None
+
+        if os.path.exists('test_data.json'):
+            test_data = 'test_data.json'
+        elif os.path.exists('tests/test_data.json'):
+            test_data = 'tests/test_data.json'
+        else:
+            raise FileNotFoundError()
+
+        with open(test_data) as f:
             self.test_data = json.load(f)
 
     def tearDown(self):
@@ -48,8 +60,8 @@
 
         for test in self.test_data['test_data']:
             self.assertEqual(sniff_link(test['link']), test['expected'],
-                             'Expected %s and %s to be equal' %
-                             (test['link'], test['expected']))
+                             f"Expected {test['link']} and {test['expected']} 
to be equal")  # noqa
+
 
 if __name__ == '__main__':
     unittest.main()

Reply via email to