Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-unpaddedbase64 for
openSUSE:Factory checked in at 2022-02-17 00:31:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-unpaddedbase64 (Old)
and /work/SRC/openSUSE:Factory/.python-unpaddedbase64.new.1956 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-unpaddedbase64"
Thu Feb 17 00:31:11 2022 rev:3 rq:955433 version:2.1.0
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-unpaddedbase64/python-unpaddedbase64.changes
2018-12-07 14:36:17.611004739 +0100
+++
/work/SRC/openSUSE:Factory/.python-unpaddedbase64.new.1956/python-unpaddedbase64.changes
2022-02-17 00:32:32.089412572 +0100
@@ -1,0 +2,11 @@
+Wed Feb 16 16:15:17 UTC 2022 - Matej Cepl <[email protected]>
+
+- Update to 2.1.0:
+ - Includes PEP 561 marker file so modules depending on this one
+ can take advantage of its inline type hints.
+ - Including the `py.typed` marker file required rearranging
+ files in this repository, but the exposed API is identical to
+ prior releases.
+ - Removal of py2k code.
+
+-------------------------------------------------------------------
Old:
----
python-unpaddedbase64-1.1.0.tar.gz
New:
----
python-unpaddedbase64-2.1.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-unpaddedbase64.spec ++++++
--- /var/tmp/diff_new_pack.rL2Ybv/_old 2022-02-17 00:32:32.565412490 +0100
+++ /var/tmp/diff_new_pack.rL2Ybv/_new 2022-02-17 00:32:32.569412490 +0100
@@ -1,7 +1,7 @@
#
-# spec file for package python-unpaddedbase64
+# spec file
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2022 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,14 +19,17 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define short_name unpaddedbase64
Name: python-%{short_name}
-Version: 1.1.0
+Version: 2.1.0
Release: 0
Summary: Unpadded Base64
License: Apache-2.0
Group: Development/Languages/Python
URL: https://github.com/matrix-org/python-unpaddedbase64
Source:
https://github.com/matrix-org/%{name}/archive/v%{version}/%{name}-%{version}.tar.gz
+BuildRequires: %{python_module pip}
+BuildRequires: %{python_module poetry-core}
BuildRequires: %{python_module setuptools}
+BuildRequires: %{python_module wheel}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
BuildArch: noarch
@@ -40,13 +43,13 @@
Base64 without the "=" padding.
%prep
-%setup -q
+%autosetup -p1
%build
-%python_build
+%pyproject_wheel
%install
-%python_install
+%pyproject_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%check
++++++ python-unpaddedbase64-1.1.0.tar.gz -> python-unpaddedbase64-2.1.0.tar.gz
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-unpaddedbase64-1.1.0/.flake8
new/python-unpaddedbase64-2.1.0/.flake8
--- old/python-unpaddedbase64-1.1.0/.flake8 1970-01-01 01:00:00.000000000
+0100
+++ new/python-unpaddedbase64-2.1.0/.flake8 2021-03-08 21:50:51.000000000
+0100
@@ -0,0 +1,3 @@
+[flake8]
+max-line-length = 88
+extend-ignore = E203, W503
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-unpaddedbase64-1.1.0/.github/workflows/continuous-integration.yml
new/python-unpaddedbase64-2.1.0/.github/workflows/continuous-integration.yml
---
old/python-unpaddedbase64-1.1.0/.github/workflows/continuous-integration.yml
1970-01-01 01:00:00.000000000 +0100
+++
new/python-unpaddedbase64-2.1.0/.github/workflows/continuous-integration.yml
2021-03-08 21:50:51.000000000 +0100
@@ -0,0 +1,48 @@
+name: Continuous Integration
+
+on:
+ push:
+ branches: [ master ]
+ pull_request:
+ branches: [ master ]
+
+jobs:
+ lint:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up Python ${{ matrix.python-version }}
+ uses: actions/setup-python@v2
+ with:
+ python-version: '3.x'
+ - name: Install dependencies
+ run: |
+ python -m pip install --upgrade pip
+ python -m pip install flake8 black mypy
+ - name: Lint with flake8
+ run: |
+ flake8 unpaddedbase64/ tests/
+ - name: Lint with black
+ run: |
+ black --check --diff unpaddedbase64/ tests/
+ - name: Lint with mypy
+ run: |
+ mypy --strict unpaddedbase64/ tests/
+
+ test:
+ needs: lint
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ python-version: ['3.x', '3.6', 'pypy-3.6']
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up Python ${{ matrix.python-version }}
+ uses: actions/setup-python@v2
+ with:
+ python-version: ${{ matrix.python-version }}
+ - name: Test with unittest
+ run: |
+ python -m unittest --verbose
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-unpaddedbase64-1.1.0/.gitignore
new/python-unpaddedbase64-2.1.0/.gitignore
--- old/python-unpaddedbase64-1.1.0/.gitignore 2016-02-18 12:38:27.000000000
+0100
+++ new/python-unpaddedbase64-2.1.0/.gitignore 2021-03-08 21:50:51.000000000
+0100
@@ -1,7 +1,5 @@
.coverage
.tox/
__pycache__/
-unpaddedbase64.egg-info/
-unpaddedbase64.pyc
-build/
dist/
+poetry.lock
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-unpaddedbase64-1.1.0/.travis.yml
new/python-unpaddedbase64-2.1.0/.travis.yml
--- old/python-unpaddedbase64-1.1.0/.travis.yml 2016-02-18 12:38:27.000000000
+0100
+++ new/python-unpaddedbase64-2.1.0/.travis.yml 1970-01-01 01:00:00.000000000
+0100
@@ -1,15 +0,0 @@
-language: python
-env:
-- TOXENV=packaging
-- TOXENV=pep8
-- TOXENV=py3pep8
-- TOXENV=py27
-- TOXENV=py33
-- TOXENV=py34
-- TOXENV=pypy
-
-install:
-- pip install tox
-
-script:
-- tox
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-unpaddedbase64-1.1.0/MANIFEST.in
new/python-unpaddedbase64-2.1.0/MANIFEST.in
--- old/python-unpaddedbase64-1.1.0/MANIFEST.in 2016-02-18 12:38:27.000000000
+0100
+++ new/python-unpaddedbase64-2.1.0/MANIFEST.in 1970-01-01 01:00:00.000000000
+0100
@@ -1,4 +0,0 @@
-include *.in
-include *.py
-include LICENSE
-include tox.ini
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-unpaddedbase64-1.1.0/README.rst
new/python-unpaddedbase64-2.1.0/README.rst
--- old/python-unpaddedbase64-1.1.0/README.rst 2016-02-18 12:38:27.000000000
+0100
+++ new/python-unpaddedbase64-2.1.0/README.rst 2021-03-08 21:50:51.000000000
+0100
@@ -1,18 +1,10 @@
Unpadded Base64
===============
-.. image:: https://img.shields.io/pypi/v/unpaddedbase64.svg
- :target: https://pypi.python.org/pypi/unpaddedbase64/
- :alt: Latest Version
-
-.. image:: https://img.shields.io/travis/matrix-org/python-unpaddedbase64.svg
- :target: https://travis-ci.org/matrix-org/python-unpaddedbase64
-
Encode and decode Base64 without "=" padding.
`RFC 4648`_ specifies that Base64 should be padded to a multiple of 4 bytes
-using "=" characters. However this conveys no benefit so many protocols choose
-to use Base64 without the "=" padding.
+using "=" characters. However many protocols choose to omit the "=" padding.
.. _`RFC 4648`: https://tools.ietf.org/html/rfc4648
@@ -21,7 +13,7 @@
.. code:: bash
- pip install unpaddedbase64
+ python3 -m pip install unpaddedbase64
Using
-----
@@ -29,5 +21,5 @@
.. code:: python
import unpaddedbase64
- assert (unpaddedbase64.encode_base64(b'\x00')) == u'AA'
- assert (unpaddedbase64.decode_base64(u'AA')) == b'\x00'
+ assert (unpaddedbase64.encode_base64(b'\x00')) == 'AA'
+ assert (unpaddedbase64.decode_base64('AA')) == b'\x00'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-unpaddedbase64-1.1.0/pyproject.toml
new/python-unpaddedbase64-2.1.0/pyproject.toml
--- old/python-unpaddedbase64-1.1.0/pyproject.toml 1970-01-01
01:00:00.000000000 +0100
+++ new/python-unpaddedbase64-2.1.0/pyproject.toml 2021-03-08
21:50:51.000000000 +0100
@@ -0,0 +1,24 @@
+[build-system]
+requires = ["poetry_core>=1.0.0"]
+build-backend = "poetry.core.masonry.api"
+
+[tool.poetry]
+name = "unpaddedbase64"
+version = "2.1.0"
+description = 'Encode and decode Base64 without "=" padding'
+license = "Apache-2.0"
+authors = [ "The Matrix.org Foundation C.I.C." ]
+readme = "README.rst"
+homepage = "https://github.com/matrix-org/python-unpaddedbase64"
+keywords = ["base64"]
+
+[tool.poetry.urls]
+"Issue Tracker" = "https://github.com/matrix-org/python-unpaddedbase64/issues"
+
+[tool.poetry.dependencies]
+python = "^3.6"
+
+[tool.poetry.dev-dependencies]
+black = "*"
+flake8 = "*"
+mypy = "*"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-unpaddedbase64-1.1.0/setup.py
new/python-unpaddedbase64-2.1.0/setup.py
--- old/python-unpaddedbase64-1.1.0/setup.py 2016-02-18 12:38:27.000000000
+0100
+++ new/python-unpaddedbase64-2.1.0/setup.py 1970-01-01 01:00:00.000000000
+0100
@@ -1,49 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright 2015 OpenMarket Ltd
-#
-# 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.
-
-from setuptools import setup
-from codecs import open
-import os
-
-here = os.path.abspath(os.path.dirname(__file__))
-
-
-def read_file(path_segments):
- """Read a UTF-8 file from the package. Takes a list of strings to join to
- make the path"""
- file_path = os.path.join(here, *path_segments)
- with open(file_path, encoding="utf-8") as f:
- return f.read()
-
-
-def exec_file(path_segments, name):
- """Extract a constant from a python file by looking for a line defining
- the constant and executing it."""
- result = {}
- code = read_file(path_segments)
- lines = [line for line in code.split('\n') if line.startswith(name)]
- exec("\n".join(lines), result)
- return result[name]
-
-
-setup(
- name="unpaddedbase64",
- version=exec_file(("unpaddedbase64.py",), "__version__"),
- py_modules=["unpaddedbase64"],
- description="Unpadded Base64",
- long_description=read_file(("README.rst",)),
- keywords="base64",
-)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-unpaddedbase64-1.1.0/test_unpaddedbase64.py
new/python-unpaddedbase64-2.1.0/test_unpaddedbase64.py
--- old/python-unpaddedbase64-1.1.0/test_unpaddedbase64.py 2016-02-18
12:38:27.000000000 +0100
+++ new/python-unpaddedbase64-2.1.0/test_unpaddedbase64.py 1970-01-01
01:00:00.000000000 +0100
@@ -1,41 +0,0 @@
-# Copyright 2015 OpenMarket Ltd
-#
-# 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.
-
-from unpaddedbase64 import encode_base64, decode_base64
-import unittest
-
-
-class TestUnpaddedBase64(unittest.TestCase):
-
- def test_encode(self):
- self.assertEqual(encode_base64(b''), u'')
- self.assertEqual(encode_base64(b'\x00'), u'AA')
- self.assertEqual(encode_base64(b'\x00\x00'), u'AAA')
- self.assertEqual(encode_base64(b'\x00\x00\x00'), u'AAAA')
-
- def test_decode(self):
- self.assertEqual(decode_base64(u''), b'')
- self.assertEqual(decode_base64(u'AA'), b'\x00')
- self.assertEqual(decode_base64(u'AAA'), b'\x00\x00')
- self.assertEqual(decode_base64(u'AAAA'), b'\x00\x00\x00')
- with self.assertRaises(Exception):
- decode_base64(u'A')
-
- def test_encode_urlunsafe_chars(self):
- self.assertEqual(encode_base64(b'\xff\xe6\x9a'), u'/+aa')
- self.assertEqual(encode_base64(b'\xff\xe6\x9a', True), u'_-aa')
-
- def test_decode_urlunsafe_chars(self):
- self.assertEqual(decode_base64(u'/+aa'), b'\xff\xe6\x9a')
- self.assertEqual(decode_base64(u'_-aa'), b'\xff\xe6\x9a')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-unpaddedbase64-1.1.0/tests/test_unpaddedbase64.py
new/python-unpaddedbase64-2.1.0/tests/test_unpaddedbase64.py
--- old/python-unpaddedbase64-1.1.0/tests/test_unpaddedbase64.py
1970-01-01 01:00:00.000000000 +0100
+++ new/python-unpaddedbase64-2.1.0/tests/test_unpaddedbase64.py
2021-03-08 21:50:51.000000000 +0100
@@ -0,0 +1,41 @@
+# Copyright 2015 OpenMarket Ltd
+# Copyright 2021 The Matrix.org Foundation C.I.C.
+#
+# 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.
+
+from unpaddedbase64 import encode_base64, decode_base64
+import unittest
+
+
+class TestUnpaddedBase64(unittest.TestCase):
+ def test_encode(self) -> None:
+ self.assertEqual(encode_base64(b""), "")
+ self.assertEqual(encode_base64(b"\x00"), "AA")
+ self.assertEqual(encode_base64(b"\x00\x00"), "AAA")
+ self.assertEqual(encode_base64(b"\x00\x00\x00"), "AAAA")
+
+ def test_decode(self) -> None:
+ self.assertEqual(decode_base64(""), b"")
+ self.assertEqual(decode_base64("AA"), b"\x00")
+ self.assertEqual(decode_base64("AAA"), b"\x00\x00")
+ self.assertEqual(decode_base64("AAAA"), b"\x00\x00\x00")
+ with self.assertRaises(Exception):
+ decode_base64("A")
+
+ def test_encode_urlunsafe_chars(self) -> None:
+ self.assertEqual(encode_base64(b"\xff\xe6\x9a"), "/+aa")
+ self.assertEqual(encode_base64(b"\xff\xe6\x9a", True), "_-aa")
+
+ def test_decode_urlunsafe_chars(self) -> None:
+ self.assertEqual(decode_base64("/+aa"), b"\xff\xe6\x9a")
+ self.assertEqual(decode_base64("_-aa"), b"\xff\xe6\x9a")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-unpaddedbase64-1.1.0/tox.ini
new/python-unpaddedbase64-2.1.0/tox.ini
--- old/python-unpaddedbase64-1.1.0/tox.ini 2016-02-18 12:38:27.000000000
+0100
+++ new/python-unpaddedbase64-2.1.0/tox.ini 1970-01-01 01:00:00.000000000
+0100
@@ -1,27 +0,0 @@
-[tox]
-envlist = packaging, pep8, py3pep8, py27, py33, py34, pypy
-
-[testenv]
-deps =
- coverage
- pytest
-commands =
- coverage run --source unpaddedbase64 -m pytest
- coverage report -m --fail-under 100
-
-[testenv:packaging]
-deps =
- check-manifest
-commands = check-manifest
-
-[testenv:pep8]
-basepython = python2.7
-deps =
- flake8
-commands = flake8 .
-
-[testenv:py3pep8]
-basepython = python3.4
-deps =
- flake8
-commands = flake8 .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-unpaddedbase64-1.1.0/unpaddedbase64/__init__.py
new/python-unpaddedbase64-2.1.0/unpaddedbase64/__init__.py
--- old/python-unpaddedbase64-1.1.0/unpaddedbase64/__init__.py 1970-01-01
01:00:00.000000000 +0100
+++ new/python-unpaddedbase64-2.1.0/unpaddedbase64/__init__.py 2021-03-08
21:50:51.000000000 +0100
@@ -0,0 +1,41 @@
+# Copyright 2014, 2015 OpenMarket Ltd
+# Copyright 2021 The Matrix.org Foundation C.I.C.
+#
+# 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.
+
+import base64
+
+
+def encode_base64(input_bytes: bytes, urlsafe: bool = False) -> str:
+ """Encode bytes as an unpadded base64 string."""
+
+ if urlsafe:
+ encode = base64.urlsafe_b64encode
+ else:
+ encode = base64.b64encode
+
+ output_bytes = encode(input_bytes)
+ output_string = output_bytes.decode("ascii")
+ return output_string.rstrip("=")
+
+
+def decode_base64(input_string: str) -> bytes:
+ """Decode an unpadded standard or urlsafe base64 string to bytes."""
+
+ input_bytes = input_string.encode("ascii")
+ input_len = len(input_bytes)
+ padding = b"=" * (3 - ((input_len + 3) % 4))
+
+ # Passing altchars here allows decoding both standard and urlsafe base64
+ output_bytes = base64.b64decode(input_bytes + padding, altchars=b"-_")
+ return output_bytes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-unpaddedbase64-1.1.0/unpaddedbase64.py
new/python-unpaddedbase64-2.1.0/unpaddedbase64.py
--- old/python-unpaddedbase64-1.1.0/unpaddedbase64.py 2016-02-18
12:38:27.000000000 +0100
+++ new/python-unpaddedbase64-2.1.0/unpaddedbase64.py 1970-01-01
01:00:00.000000000 +0100
@@ -1,40 +0,0 @@
-# Copyright 2014, 2015 OpenMarket Ltd
-#
-# 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.
-
-import base64
-
-__version__ = "1.1.0"
-
-
-def encode_base64(input_bytes, urlsafe=False):
- """Encode bytes as a base64 string without any padding."""
-
- encode = base64.urlsafe_b64encode if urlsafe else base64.b64encode
- output_bytes = encode(input_bytes)
- output_string = output_bytes.decode("ascii")
- return output_string.rstrip(u"=")
-
-
-def decode_base64(input_string):
- """Decode a base64 string to bytes inferring padding from the length of the
- string."""
-
- input_bytes = input_string.encode("ascii")
- input_len = len(input_bytes)
- padding = b"=" * (3 - ((input_len + 3) % 4))
- decode = base64.b64decode
- if u'-' in input_string or u'_' in input_string:
- decode = base64.urlsafe_b64decode
- output_bytes = decode(input_bytes + padding)
- return output_bytes