diff --git a/SecretStorage-2.3.1.tar.gz b/SecretStorage-2.3.1.tar.gz
deleted file mode 100644
index af6d73a..0000000
--- a/SecretStorage-2.3.1.tar.gz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:3af65c87765323e6f64c83575b05393f9e003431959c9395d1791d51497f29b6
-size 16073
diff --git a/SecretStorage-3.3.3.tar.gz b/SecretStorage-3.3.3.tar.gz
new file mode 100644
index 0000000..3527833
--- /dev/null
+++ b/SecretStorage-3.3.3.tar.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77
+size 19739
diff --git a/_multibuild b/_multibuild
new file mode 100644
index 0000000..fcc7b97
--- /dev/null
+++ b/_multibuild
@@ -0,0 +1,3 @@
+
+ test
+
diff --git a/python-SecretStorage.changes b/python-SecretStorage.changes
index 31116a4..08b5906 100644
--- a/python-SecretStorage.changes
+++ b/python-SecretStorage.changes
@@ -1,3 +1,126 @@
+-------------------------------------------------------------------
+Mon Sep 19 09:51:32 UTC 2022 - Dirk Müller
+
+- fix build of tests
+
+-------------------------------------------------------------------
+Mon Sep 12 02:43:19 UTC 2022 - Steve Kowalik
+
+- update to 3.3.3:
+ * Handle case when CreateItem method returns a prompt [`#39`_].
+ * Reformatted code in accordance with :PEP:`8` standard.
+ * _`#39`: https://github.com/mitya57/secretstorage/issues/39
+- Add missing file to enable multibuild
+
+-------------------------------------------------------------------
+Mon Aug 29 03:53:10 UTC 2022 - Steve Kowalik
+
+- Inject multibuild to prevent a build cycle
+
+-------------------------------------------------------------------
+Wed May 11 10:32:48 UTC 2022 - Dirk Müller
+
+- update to 3.3.2:
+ * Fixed a deprecation warning with jeepney 0.8.
+ Thanks to Sam McKelvie for the pull request!
+
+-------------------------------------------------------------------
+Tue Mar 2 00:28:57 UTC 2021 - Dirk Müller
+
+- update to 3.3.1:
+ * Fixed a deprecation warning from cryptography module.
+ * Added a :PEP:`561` ``py.typed`` file to declare typing support.
+
+-------------------------------------------------------------------
+Mon Feb 1 20:55:07 UTC 2021 - Dirk Müller
+
+- update to 3.3.0:
+ * Use new-style Jeepney blocking I/O API.
+ * Python ≥ 3.6 and Jeepney ≥ 0.6 are now required.
+
+-------------------------------------------------------------------
+Thu Nov 26 09:15:35 UTC 2020 - Dirk Mueller
+
+- update to 3.2.0:
+ * Added helper function ``check_service_availability`` for checking if the
+ Secret Service daemon is available without using it.
+
+-------------------------------------------------------------------
+Thu Apr 16 09:00:03 UTC 2020 - pgajdos@suse.com
+
+- version update to 3.1.2
+ SecretStorage 3.1.2, 2020-01-08
+ ===============================
+ * Updated the docs to describe how to close the D-Bus connection after use.
+ * For secrets of wrong type, a TypeError is now raised [`#20`_].
+ SecretStorage 3.1.1, 2019-01-24
+ ===============================
+ * Fixes TypeError with cryptography 2.5.
+ Thanks Zach Hoffman for the pull request!
+ SecretStorage 3.1.0, 2018-09-02
+ ===============================
+ * The ``dbus_init`` function no longer accepts any arguments.
+ * The ``dbus_init`` function now converts ``ConnectionError`` and
+ ``ValueError`` to ``SecretServiceNotAvailableException``.
+ * New exception class: ``PromptDismissedException``.
+ * Switched to declarative setup configuration. Build now requires
+ setuptools 30.3 or newer.
+ * Added support for prompts when deleting collections and items.
+ * Added type annotations to all methods.
+ SecretStorage 3.0.1, 2018-04-24
+ ===============================
+ * When ``DBUS_SESSION_BUS_ADDRESS`` environment variable is unset, and
+ Jeepney raises a ``KeyError`` because of that, SecretStorage now intercepts
+ that error and re-raises it as ``SecretServiceNotAvailableException``.
+ * Uploaded to PyPI with fixed meta-data.
+ SecretStorage 3.0.0, 2018-04-23
+ ===============================
+ .. warning::
+ This release is backwards incompatible with the previous versions.
+ * Python 3.5 or newer is now required.
+ * SecretStorage has been ported from dbus-python to Jeepney_, a
+ pure Python D-Bus client.
+ * The asynchronous API has been removed. If you need it, please
+ file a bug and describe your use case.
+ * The ``bus`` argument is now called ``connection`` in all functions
+ that accept it.
+
+-------------------------------------------------------------------
+Thu Nov 7 15:47:19 UTC 2019 - Matej Cepl
+
+- Run through spec-cleaner
+
+-------------------------------------------------------------------
+Tue Dec 4 12:54:04 UTC 2018 - Matej Cepl
+
+- Remove superfluous devel dependency for noarch package
+
+-------------------------------------------------------------------
+Wed Jan 24 10:17:37 UTC 2018 - tchvatal@suse.com
+
+- Fix dbus-python deps to ease the logic and allow python2less build
+
+-------------------------------------------------------------------
+Mon May 1 19:13:10 UTC 2017 - toddrme2178@gmail.com
+
+- Fix source URL.
+
+-------------------------------------------------------------------
+Mon May 1 17:22:53 UTC 2017 - toddrme2178@gmail.com
+
+- Implement single-spec version.
+- Fix source URL.
+
+-------------------------------------------------------------------
+Thu Jan 19 10:21:21 UTC 2017 - bwiedemann@suse.com
+
+- fix building outside OBS
+
+-------------------------------------------------------------------
+Tue Nov 22 12:37:40 UTC 2016 - hpj@urpla.net
+
+- add test section
+
-------------------------------------------------------------------
Thu Sep 1 05:28:50 UTC 2016 - tbechtold@suse.com
diff --git a/python-SecretStorage.spec b/python-SecretStorage.spec
index d9ca348..ad521b2 100644
--- a/python-SecretStorage.spec
+++ b/python-SecretStorage.spec
@@ -1,7 +1,7 @@
#
-# spec file for package python-SecretStorage
+# spec file
#
-# Copyright (c) 2016 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
@@ -12,31 +12,41 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
-Name: python-SecretStorage
-Version: 2.3.1
+%{?!python_module:%define python_module() python-%{**} python3-%{**}}
+%define skip_python2 1
+%global flavor @BUILD_FLAVOR@%{nil}
+%if "%{flavor}" == "test"
+%define psuffix -test
+%bcond_without test
+%else
+%define psuffix %{nil}
+%bcond_with test
+%endif
+Name: python-SecretStorage%{psuffix}
+Version: 3.3.3
Release: 0
Summary: Python bindings to FreeDesktoporg Secret Service API
License: BSD-3-Clause
-Group: Development/Languages/Python
-Url: https://github.com/mitya57/secretstorage
-# NOTE(toabctl): For whatever reason, the pypi.io url is not working...
-#Source: https://pypi.io/packages/source/s/SecretStorage/SecretStorage-%{version}.tar.gz
-Source: https://pypi.python.org/packages/a5/a5/0830cfe34a4cfd0d1c3c8b614ede1edb2aaf999091ac8548dd19cb352e79/SecretStorage-2.3.1.tar.gz
-BuildRequires: python-cryptography
-BuildRequires: python-devel
-BuildRequires: python-setuptools
-Requires: dbus-1-python
+URL: https://github.com/mitya57/secretstorage
+Source: https://files.pythonhosted.org/packages/source/S/SecretStorage/SecretStorage-%{version}.tar.gz
+BuildRequires: %{python_module setuptools}
+BuildRequires: fdupes
+BuildRequires: python-rpm-macros
Requires: python-cryptography
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
-%if 0%{?suse_version} && 0%{?suse_version} <= 1110
-%{!?python_sitelib: %global python_sitelib %(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
-%else
+Requires: python-jeepney >= 0.6
BuildArch: noarch
+%if %{with test}
+BuildRequires: %{python_module SecretStorage = %{version}}
+BuildRequires: %{python_module cryptography}
+BuildRequires: %{python_module jeepney >= 0.6}
+BuildRequires: dbus-1-daemon
+BuildRequires: gnome-keyring
%endif
+%python_subpackages
%description
This module provides a way for securely storing passwords and other secrets.
@@ -61,14 +71,26 @@ The documentation can be found on `pythonhosted.org`_.
%setup -q -n SecretStorage-%{version}
%build
-python setup.py build
+%python_build
%install
-python setup.py install --prefix=%{_prefix} --root=%{buildroot}
+%if !%{with test}
+%python_install
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
+%endif
-%files
-%defattr(-,root,root,-)
-%doc changelog README.rst LICENSE
+%if %{with test}
+%check
+# gnome-keyring "forgets" to create this directory under certain conditions
+mkdir -p $HOME/.cache
+%python_expand dbus-run-session -- $python -m unittest discover -s tests
+%endif
+
+%if !%{with test}
+%files %{python_files}
+%license LICENSE
+%doc changelog README.rst
%{python_sitelib}/*
+%endif
%changelog