Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-queuelib for openSUSE:Factory
checked in at 2026-03-23 17:12:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-queuelib (Old)
and /work/SRC/openSUSE:Factory/.python-queuelib.new.8177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-queuelib"
Mon Mar 23 17:12:10 2026 rev:8 rq:1341870 version:1.9.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-queuelib/python-queuelib.changes
2025-05-30 17:26:27.058045983 +0200
+++
/work/SRC/openSUSE:Factory/.python-queuelib.new.8177/python-queuelib.changes
2026-03-23 17:12:43.904088173 +0100
@@ -1,0 +2,8 @@
+Sun Mar 22 16:53:01 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 1.9.0:
+ * Added support for Python 3.14
+ * Removed support for Python 3.9 and PyPy 3.10
+ * Improved linting and CI configuration
+
+-------------------------------------------------------------------
Old:
----
queuelib-1.8.0.tar.gz
New:
----
queuelib-1.9.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-queuelib.spec ++++++
--- /var/tmp/diff_new_pack.41wYvG/_old 2026-03-23 17:12:44.700121327 +0100
+++ /var/tmp/diff_new_pack.41wYvG/_new 2026-03-23 17:12:44.700121327 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-queuelib
#
-# 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
@@ -18,15 +18,14 @@
%{?sle15_python_module_pythons}
Name: python-queuelib
-Version: 1.8.0
+Version: 1.9.0
Release: 0
Summary: Collection of Persistent (Disk-Based) Queues
-License: BSD-2-Clause
+License: BSD-3-Clause
URL: https://github.com/scrapy/queuelib
Source:
https://files.pythonhosted.org/packages/source/q/queuelib/queuelib-%{version}.tar.gz
BuildRequires: %{python_module hatchling}
BuildRequires: %{python_module pip}
-BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module wheel}
BuildRequires: %{pythons}
BuildRequires: fdupes
@@ -55,7 +54,7 @@
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%check
-%pyunittest discover -v
+%pytest
%files %{python_files}
%doc README.rst NEWS
++++++ queuelib-1.8.0.tar.gz -> queuelib-1.9.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/queuelib-1.8.0/LICENSE new/queuelib-1.9.0/LICENSE
--- old/queuelib-1.8.0/LICENSE 2020-02-02 01:00:00.000000000 +0100
+++ new/queuelib-1.9.0/LICENSE 2020-02-02 01:00:00.000000000 +0100
@@ -4,10 +4,10 @@
Redistribution and use in source and binary forms, with or without
modification,
are permitted provided that the following conditions are met:
- 1. Redistributions of source code must retain the above copyright notice,
+ 1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright
+
+ 2. 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.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/queuelib-1.8.0/NEWS new/queuelib-1.9.0/NEWS
--- old/queuelib-1.8.0/NEWS 2020-02-02 01:00:00.000000000 +0100
+++ new/queuelib-1.9.0/NEWS 2020-02-02 01:00:00.000000000 +0100
@@ -1,9 +1,17 @@
Queuelib release notes
======================
+Version 1.9.0
+-------------
+(released on 2026-01-29)
+
+* Added support for Python 3.14
+* Removed support for Python 3.9 and PyPy 3.10
+* Improved linting and CI configuration
+
Version 1.8.0
-------------
-(released on March 31st, 2025)
+(released on 2025-03-31)
* Added support for Python 3.13 and PyPy 3.11
* Removed support for Python 3.8
@@ -15,7 +23,7 @@
Version 1.7.0
-------------
-(released on May 4th, 2024)
+(released on 2024-05-04)
No functionality changes with respect to 1.6.2
@@ -28,7 +36,7 @@
Version 1.6.2
-------------
-(released on August 26th, 2021)
+(released on 2021-08-26)
No functionality changes with respect to 1.6.1
@@ -40,7 +48,7 @@
Version 1.6.1
-------------
-(released on April 21st, 2021)
+(released on 2021-04-21)
No code changes with respect to 1.6
@@ -50,7 +58,7 @@
Version 1.6
-----------
-(released on April 21st, 2021)
+(released on 2021-04-21)
* Add peek support
* Remove py2 support
@@ -59,6 +67,6 @@
Version 1.0
-----------
-(released on April 23rd, 2013)
+(released on 2013-04-23)
First release of Queuelib.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/queuelib-1.8.0/PKG-INFO new/queuelib-1.9.0/PKG-INFO
--- old/queuelib-1.8.0/PKG-INFO 2020-02-02 01:00:00.000000000 +0100
+++ new/queuelib-1.9.0/PKG-INFO 2020-02-02 01:00:00.000000000 +0100
@@ -1,13 +1,12 @@
Metadata-Version: 2.4
Name: queuelib
-Version: 1.8.0
+Version: 1.9.0
Summary: Collection of persistent (disk-based) and non-persistent
(memory-based) queues
Project-URL: Homepage, https://github.com/scrapy/queuelib
Project-URL: Source, https://github.com/scrapy/queuelib
Project-URL: Issues, https://github.com/scrapy/queuelib/issues
Project-URL: Docs, https://github.com/scrapy/queuelib/blob/master/README.rst
-Project-URL: ReleaseNotes, https://github.com/scrapy/queuelib/blob/master/NEWS
-Project-URL: Changelog, https://github.com/scrapy/queuelib/commits/master/
+Project-URL: Release notes, https://github.com/scrapy/queuelib/blob/master/NEWS
Author-email: Scrapy project <[email protected]>
License-Expression: BSD-3-Clause
License-File: LICENSE
@@ -15,14 +14,14 @@
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
+Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
-Requires-Python: >=3.9
+Requires-Python: >=3.10
Description-Content-Type: text/x-rst
========
@@ -51,7 +50,7 @@
.. note:: Queuelib collections are not thread-safe.
-Queuelib supports Python 3.9+ and has no dependencies.
+Queuelib supports Python 3.10+ and has no dependencies.
.. _queues: https://en.wikipedia.org/wiki/FIFO_(computing_and_electronics)
.. _round-robin: https://en.wikipedia.org/wiki/Round-robin_scheduling
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/queuelib-1.8.0/README.rst
new/queuelib-1.9.0/README.rst
--- old/queuelib-1.8.0/README.rst 2020-02-02 01:00:00.000000000 +0100
+++ new/queuelib-1.9.0/README.rst 2020-02-02 01:00:00.000000000 +0100
@@ -24,7 +24,7 @@
.. note:: Queuelib collections are not thread-safe.
-Queuelib supports Python 3.9+ and has no dependencies.
+Queuelib supports Python 3.10+ and has no dependencies.
.. _queues: https://en.wikipedia.org/wiki/FIFO_(computing_and_electronics)
.. _round-robin: https://en.wikipedia.org/wiki/Round-robin_scheduling
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/queuelib-1.8.0/pyproject.toml
new/queuelib-1.9.0/pyproject.toml
--- old/queuelib-1.8.0/pyproject.toml 2020-02-02 01:00:00.000000000 +0100
+++ new/queuelib-1.9.0/pyproject.toml 2020-02-02 01:00:00.000000000 +0100
@@ -14,15 +14,15 @@
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
- "Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
+ "Programming Language :: Python :: 3.14",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
]
-requires-python = ">=3.9"
+requires-python = ">=3.10"
dynamic = ["version"]
[project.urls]
@@ -30,8 +30,7 @@
Source = "https://github.com/scrapy/queuelib"
Issues = "https://github.com/scrapy/queuelib/issues"
Docs = "https://github.com/scrapy/queuelib/blob/master/README.rst"
-ReleaseNotes = "https://github.com/scrapy/queuelib/blob/master/NEWS"
-Changelog = "https://github.com/scrapy/queuelib/commits/master/"
+"Release notes" = "https://github.com/scrapy/queuelib/blob/master/NEWS"
[tool.hatch.version]
path = "queuelib/__init__.py"
@@ -43,7 +42,7 @@
]
[tool.bumpversion]
-current_version = "1.8.0"
+current_version = "1.9.0"
commit = true
tag = true
tag_name = "v{new_version}"
@@ -51,16 +50,20 @@
[[tool.bumpversion.files]]
filename = "queuelib/__init__.py"
+[[tool.bumpversion.files]]
+filename = "NEWS"
+search = "^\\(unreleased\\)$"
+replace = "(released on {now:%Y-%m-%d})"
+regex = true
+
[tool.coverage.run]
branch = true
omit = [
"queuelib/tests/*",
]
-[tool.coverage.report]
-exclude_also = [
- "if TYPE_CHECKING:",
-]
+[tool.mypy]
+strict = true
[[tool.mypy.overrides]]
module = "queuelib.tests.*"
@@ -88,10 +91,16 @@
[tool.ruff.lint]
extend-select = [
+ # flake8-builtins
+ "A",
+ # flake8-async
+ "ASYNC",
# flake8-bugbear
"B",
# flake8-comprehensions
"C4",
+ # flake8-commas
+ "COM",
# pydocstyle
"D",
# flake8-future-annotations
@@ -114,6 +123,8 @@
"PIE",
# pylint
"PL",
+ # flake8-pytest-style
+ "PT",
# flake8-use-pathlib
"PTH",
# flake8-pyi
@@ -144,6 +155,8 @@
"YTT",
]
ignore = [
+ # Trailing comma missing
+ "COM812",
# Missing docstring in public module
"D100",
# Missing docstring in public class
@@ -198,5 +211,8 @@
"S101",
]
+[tool.ruff.lint.isort]
+split-on-trailing-comma = false
+
[tool.ruff.lint.pydocstyle]
convention = "pep257"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/queuelib-1.8.0/queuelib/__init__.py
new/queuelib-1.9.0/queuelib/__init__.py
--- old/queuelib-1.8.0/queuelib/__init__.py 2020-02-02 01:00:00.000000000
+0100
+++ new/queuelib-1.9.0/queuelib/__init__.py 2020-02-02 01:00:00.000000000
+0100
@@ -1,4 +1,4 @@
-__version__ = "1.8.0"
+__version__ = "1.9.0"
from queuelib.pqueue import PriorityQueue
from queuelib.queue import FifoDiskQueue, LifoDiskQueue
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/queuelib-1.8.0/queuelib/pqueue.py
new/queuelib-1.9.0/queuelib/pqueue.py
--- old/queuelib-1.8.0/queuelib/pqueue.py 2020-02-02 01:00:00.000000000
+0100
+++ new/queuelib-1.9.0/queuelib/pqueue.py 2020-02-02 01:00:00.000000000
+0100
@@ -1,9 +1,9 @@
from __future__ import annotations
-from typing import TYPE_CHECKING, Any, Callable
+from typing import TYPE_CHECKING, Any
if TYPE_CHECKING:
- from collections.abc import Iterable
+ from collections.abc import Callable, Iterable
from queuelib.queue import BaseQueue
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/queuelib-1.8.0/queuelib/queue.py
new/queuelib-1.9.0/queuelib/queue.py
--- old/queuelib-1.8.0/queuelib/queue.py 2020-02-02 01:00:00.000000000
+0100
+++ new/queuelib-1.9.0/queuelib/queue.py 2020-02-02 01:00:00.000000000
+0100
@@ -167,12 +167,12 @@
self._cleanup()
def __len__(self) -> int:
- return cast(int, self.info["size"])
+ return cast("int", self.info["size"])
def _loadinfo(self, chunksize: int) -> dict[str, Any]:
infopath = self._infopath()
if infopath.exists():
- info = cast(dict[str, Any], json.loads(infopath.read_text()))
+ info = cast("dict[str, Any]", json.loads(infopath.read_text()))
else:
info = {
"chunksize": chunksize,
@@ -279,13 +279,13 @@
with self._db as conn:
for id_, item in conn.execute(self._sql_pop):
conn.execute(self._sql_del, (id_,))
- return cast(bytes, item)
+ return cast("bytes", item)
return None
def peek(self) -> bytes | None:
with self._db as conn:
for _, item in conn.execute(self._sql_pop):
- return cast(bytes, item)
+ return cast("bytes", item)
return None
def close(self) -> None:
@@ -296,7 +296,7 @@
def __len__(self) -> int:
with self._db as conn:
- return cast(int, next(conn.execute(self._sql_size))[0])
+ return cast("int", next(conn.execute(self._sql_size))[0])
class LifoSQLiteQueue(FifoSQLiteQueue):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/queuelib-1.8.0/queuelib/rrqueue.py
new/queuelib-1.9.0/queuelib/rrqueue.py
--- old/queuelib-1.8.0/queuelib/rrqueue.py 2020-02-02 01:00:00.000000000
+0100
+++ new/queuelib-1.9.0/queuelib/rrqueue.py 2020-02-02 01:00:00.000000000
+0100
@@ -1,10 +1,10 @@
from __future__ import annotations
from collections import deque
-from typing import TYPE_CHECKING, Any, Callable
+from typing import TYPE_CHECKING, Any
if TYPE_CHECKING:
- from collections.abc import Hashable, Iterable
+ from collections.abc import Callable, Hashable, Iterable
from queuelib.queue import BaseQueue
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/queuelib-1.8.0/queuelib/tests/test_pqueue.py
new/queuelib-1.9.0/queuelib/tests/test_pqueue.py
--- old/queuelib-1.8.0/queuelib/tests/test_pqueue.py 2020-02-02
01:00:00.000000000 +0100
+++ new/queuelib-1.9.0/queuelib/tests/test_pqueue.py 2020-02-02
01:00:00.000000000 +0100
@@ -1,5 +1,7 @@
from pathlib import Path
+import pytest
+
from queuelib.pqueue import PriorityQueue
from queuelib.queue import (
FifoDiskQueue,
@@ -22,19 +24,19 @@
def test_len_nonzero(self):
assert not self.q
- self.assertEqual(len(self.q), 0)
+ assert len(self.q) == 0
self.q.push(b"a", 3)
assert self.q
self.q.push(b"b", 1)
self.q.push(b"c", 2)
self.q.push(b"d", 1)
- self.assertEqual(len(self.q), 4)
+ assert len(self.q) == 4
self.q.pop()
self.q.pop()
self.q.pop()
self.q.pop()
assert not self.q
- self.assertEqual(len(self.q), 0)
+ assert len(self.q) == 0
def test_close(self):
self.q.push(b"a", 3)
@@ -42,7 +44,7 @@
self.q.push(b"c", 2)
self.q.push(b"d", 1)
iqueues = self.q.queues.values()
- self.assertEqual(sorted(self.q.close()), [1, 2, 3])
+ assert sorted(self.q.close()) == [1, 2, 3]
assert all(q.closed for q in iqueues)
def test_close_return_active(self):
@@ -50,82 +52,82 @@
self.q.push(b"c", 2)
self.q.push(b"a", 3)
self.q.pop()
- self.assertEqual(sorted(self.q.close()), [2, 3])
+ assert sorted(self.q.close()) == [2, 3]
def test_popped_internal_queues_closed(self):
self.q.push(b"a", 3)
self.q.push(b"b", 1)
self.q.push(b"c", 2)
p1queue = self.q.queues[1]
- self.assertEqual(self.q.pop(), b"b")
+ assert self.q.pop() == b"b"
self.q.close()
assert p1queue.closed
class FifoTestMixin:
def test_push_pop_peek_noprio(self):
- self.assertEqual(self.q.peek(), None)
+ assert self.q.peek() is None
self.q.push(b"a")
self.q.push(b"b")
self.q.push(b"c")
- self.assertEqual(self.q.peek(), b"a")
- self.assertEqual(self.q.pop(), b"a")
- self.assertEqual(self.q.peek(), b"b")
- self.assertEqual(self.q.pop(), b"b")
- self.assertEqual(self.q.peek(), b"c")
- self.assertEqual(self.q.pop(), b"c")
- self.assertEqual(self.q.peek(), None)
- self.assertEqual(self.q.pop(), None)
+ assert self.q.peek() == b"a"
+ assert self.q.pop() == b"a"
+ assert self.q.peek() == b"b"
+ assert self.q.pop() == b"b"
+ assert self.q.peek() == b"c"
+ assert self.q.pop() == b"c"
+ assert self.q.peek() is None
+ assert self.q.pop() is None
def test_push_pop_peek_prio(self):
- self.assertEqual(self.q.peek(), None)
+ assert self.q.peek() is None
self.q.push(b"a", 3)
self.q.push(b"b", 1)
self.q.push(b"c", 2)
self.q.push(b"d", 1)
- self.assertEqual(self.q.peek(), b"b")
- self.assertEqual(self.q.pop(), b"b")
- self.assertEqual(self.q.peek(), b"d")
- self.assertEqual(self.q.pop(), b"d")
- self.assertEqual(self.q.peek(), b"c")
- self.assertEqual(self.q.pop(), b"c")
- self.assertEqual(self.q.peek(), b"a")
- self.assertEqual(self.q.pop(), b"a")
- self.assertEqual(self.q.peek(), None)
- self.assertEqual(self.q.pop(), None)
+ assert self.q.peek() == b"b"
+ assert self.q.pop() == b"b"
+ assert self.q.peek() == b"d"
+ assert self.q.pop() == b"d"
+ assert self.q.peek() == b"c"
+ assert self.q.pop() == b"c"
+ assert self.q.peek() == b"a"
+ assert self.q.pop() == b"a"
+ assert self.q.peek() is None
+ assert self.q.pop() is None
class LifoTestMixin:
def test_push_pop_peek_noprio(self):
- self.assertEqual(self.q.peek(), None)
+ assert self.q.peek() is None
self.q.push(b"a")
self.q.push(b"b")
self.q.push(b"c")
- self.assertEqual(self.q.peek(), b"c")
- self.assertEqual(self.q.pop(), b"c")
- self.assertEqual(self.q.peek(), b"b")
- self.assertEqual(self.q.pop(), b"b")
- self.assertEqual(self.q.peek(), b"a")
- self.assertEqual(self.q.pop(), b"a")
- self.assertEqual(self.q.peek(), None)
- self.assertEqual(self.q.pop(), None)
+ assert self.q.peek() == b"c"
+ assert self.q.pop() == b"c"
+ assert self.q.peek() == b"b"
+ assert self.q.pop() == b"b"
+ assert self.q.peek() == b"a"
+ assert self.q.pop() == b"a"
+ assert self.q.peek() is None
+ assert self.q.pop() is None
def test_push_pop_peek_prio(self):
- self.assertEqual(self.q.peek(), None)
+ assert self.q.peek() is None
self.q.push(b"a", 3)
self.q.push(b"b", 1)
self.q.push(b"c", 2)
self.q.push(b"d", 1)
- self.assertEqual(self.q.peek(), b"d")
- self.assertEqual(self.q.pop(), b"d")
- self.assertEqual(self.q.peek(), b"b")
- self.assertEqual(self.q.pop(), b"b")
- self.assertEqual(self.q.peek(), b"c")
- self.assertEqual(self.q.pop(), b"c")
- self.assertEqual(self.q.peek(), b"a")
- self.assertEqual(self.q.pop(), b"a")
- self.assertEqual(self.q.peek(), None)
- self.assertEqual(self.q.pop(), None)
+ assert self.q.peek() == b"d"
+ assert self.q.pop() == b"d"
+ assert self.q.peek() == b"b"
+ assert self.q.pop() == b"b"
+ assert self.q.peek() == b"c"
+ assert self.q.pop() == b"c"
+ assert self.q.peek() == b"a"
+ assert self.q.pop() == b"a"
+ assert self.q.peek() is None
+ assert self.q.pop() is None
class FifoMemoryPriorityQueueTest(PQueueTestMixin, FifoTestMixin,
QueuelibTestCase):
@@ -140,27 +142,30 @@
class DiskTestMixin:
def test_nonserializable_object_one(self):
- self.assertRaises(TypeError, self.q.push, lambda x: x, 0)
- self.assertEqual(self.q.close(), [])
+ with pytest.raises(TypeError):
+ self.q.push(lambda x: x, 0)
+ assert self.q.close() == []
def test_nonserializable_object_many_close(self):
self.q.push(b"a", 3)
self.q.push(b"b", 1)
- self.assertRaises(TypeError, self.q.push, lambda x: x, 0)
+ with pytest.raises(TypeError):
+ self.q.push(lambda x: x, 0)
self.q.push(b"c", 2)
- self.assertEqual(self.q.pop(), b"b")
- self.assertEqual(sorted(self.q.close()), [2, 3])
+ assert self.q.pop() == b"b"
+ assert sorted(self.q.close()) == [2, 3]
def test_nonserializable_object_many_pop(self):
self.q.push(b"a", 3)
self.q.push(b"b", 1)
- self.assertRaises(TypeError, self.q.push, lambda x: x, 0)
+ with pytest.raises(TypeError):
+ self.q.push(lambda x: x, 0)
self.q.push(b"c", 2)
- self.assertEqual(self.q.pop(), b"b")
- self.assertEqual(self.q.pop(), b"c")
- self.assertEqual(self.q.pop(), b"a")
- self.assertEqual(self.q.pop(), None)
- self.assertEqual(self.q.close(), [])
+ assert self.q.pop() == b"b"
+ assert self.q.pop() == b"c"
+ assert self.q.pop() == b"a"
+ assert self.q.pop() is None
+ assert self.q.close() == []
def test_reopen_with_prio(self):
q1 = PriorityQueue(self.qfactory)
@@ -169,10 +174,10 @@
q1.push(b"c", 2)
active = q1.close()
q2 = PriorityQueue(self.qfactory, startprios=active)
- self.assertEqual(q2.pop(), b"b")
- self.assertEqual(q2.pop(), b"c")
- self.assertEqual(q2.pop(), b"a")
- self.assertEqual(q2.close(), [])
+ assert q2.pop() == b"b"
+ assert q2.pop() == b"c"
+ assert q2.pop() == b"a"
+ assert not q2.close()
class FifoDiskPriorityQueueTest(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/queuelib-1.8.0/queuelib/tests/test_queue.py
new/queuelib-1.9.0/queuelib/tests/test_queue.py
--- old/queuelib-1.8.0/queuelib/tests/test_queue.py 2020-02-02
01:00:00.000000000 +0100
+++ new/queuelib-1.9.0/queuelib/tests/test_queue.py 2020-02-02
01:00:00.000000000 +0100
@@ -41,13 +41,13 @@
class InterfaceTest(QueuelibTestCase):
def test_queue(self):
queue = BaseQueue()
- with self.assertRaises(NotImplementedError):
+ with pytest.raises(NotImplementedError):
queue.push(b"")
- with self.assertRaises(NotImplementedError):
+ with pytest.raises(NotImplementedError):
queue.peek()
- with self.assertRaises(NotImplementedError):
+ with pytest.raises(NotImplementedError):
queue.pop()
- with self.assertRaises(NotImplementedError):
+ with pytest.raises(NotImplementedError):
len(queue)
queue.close()
@@ -107,25 +107,25 @@
def test_len(self):
q = self.queue()
- self.assertEqual(len(q), 0)
+ assert len(q) == 0
q.push(b"a")
- self.assertEqual(len(q), 1)
+ assert len(q) == 1
q.push(b"b")
q.push(b"c")
- self.assertEqual(len(q), 3)
+ assert len(q) == 3
q.pop()
q.pop()
q.pop()
- self.assertEqual(len(q), 0)
+ assert len(q) == 0
q.close()
def test_peek_one_element(self):
q = self.queue()
- self.assertIsNone(q.peek())
+ assert q.peek() is None
q.push(b"a")
- self.assertEqual(q.peek(), b"a")
- self.assertEqual(q.pop(), b"a")
- self.assertIsNone(q.peek())
+ assert q.peek() == b"a"
+ assert q.pop() == b"a"
+ assert q.peek() is None
q.close()
@@ -136,10 +136,10 @@
q.push(b"a")
q.push(b"b")
q.push(b"c")
- self.assertEqual(q.pop(), b"a")
- self.assertEqual(q.pop(), b"b")
- self.assertEqual(q.pop(), b"c")
- self.assertEqual(q.pop(), None)
+ assert q.pop() == b"a"
+ assert q.pop() == b"b"
+ assert q.pop() == b"c"
+ assert q.pop() is None
q.close()
def test_push_pop2(self):
@@ -149,30 +149,30 @@
q.push(b"b")
q.push(b"c")
q.push(b"d")
- self.assertEqual(q.pop(), b"a")
- self.assertEqual(q.pop(), b"b")
+ assert q.pop() == b"a"
+ assert q.pop() == b"b"
q.push(b"e")
- self.assertEqual(q.pop(), b"c")
- self.assertEqual(q.pop(), b"d")
- self.assertEqual(q.pop(), b"e")
+ assert q.pop() == b"c"
+ assert q.pop() == b"d"
+ assert q.pop() == b"e"
q.close()
def test_peek_fifo(self):
q = self.queue()
- self.assertIsNone(q.peek())
+ assert q.peek() is None
q.push(b"a")
q.push(b"b")
q.push(b"c")
- self.assertEqual(q.peek(), b"a")
- self.assertEqual(q.peek(), b"a")
- self.assertEqual(q.pop(), b"a")
- self.assertEqual(q.peek(), b"b")
- self.assertEqual(q.peek(), b"b")
- self.assertEqual(q.pop(), b"b")
- self.assertEqual(q.peek(), b"c")
- self.assertEqual(q.peek(), b"c")
- self.assertEqual(q.pop(), b"c")
- self.assertIsNone(q.peek())
+ assert q.peek() == b"a"
+ assert q.peek() == b"a"
+ assert q.pop() == b"a"
+ assert q.peek() == b"b"
+ assert q.peek() == b"b"
+ assert q.pop() == b"b"
+ assert q.peek() == b"c"
+ assert q.peek() == b"c"
+ assert q.pop() == b"c"
+ assert q.peek() is None
q.close()
@@ -183,10 +183,10 @@
q.push(b"a")
q.push(b"b")
q.push(b"c")
- self.assertEqual(q.pop(), b"c")
- self.assertEqual(q.pop(), b"b")
- self.assertEqual(q.pop(), b"a")
- self.assertEqual(q.pop(), None)
+ assert q.pop() == b"c"
+ assert q.pop() == b"b"
+ assert q.pop() == b"a"
+ assert q.pop() is None
q.close()
def test_push_pop2(self):
@@ -196,30 +196,30 @@
q.push(b"b")
q.push(b"c")
q.push(b"d")
- self.assertEqual(q.pop(), b"d")
- self.assertEqual(q.pop(), b"c")
+ assert q.pop() == b"d"
+ assert q.pop() == b"c"
q.push(b"e")
- self.assertEqual(q.pop(), b"e")
- self.assertEqual(q.pop(), b"b")
- self.assertEqual(q.pop(), b"a")
+ assert q.pop() == b"e"
+ assert q.pop() == b"b"
+ assert q.pop() == b"a"
q.close()
def test_peek_lifo(self):
q = self.queue()
- self.assertIsNone(q.peek())
+ assert q.peek() is None
q.push(b"a")
q.push(b"b")
q.push(b"c")
- self.assertEqual(q.peek(), b"c")
- self.assertEqual(q.peek(), b"c")
- self.assertEqual(q.pop(), b"c")
- self.assertEqual(q.peek(), b"b")
- self.assertEqual(q.peek(), b"b")
- self.assertEqual(q.pop(), b"b")
- self.assertEqual(q.peek(), b"a")
- self.assertEqual(q.peek(), b"a")
- self.assertEqual(q.pop(), b"a")
- self.assertIsNone(q.peek())
+ assert q.peek() == b"c"
+ assert q.peek() == b"c"
+ assert q.pop() == b"c"
+ assert q.peek() == b"b"
+ assert q.peek() == b"b"
+ assert q.pop() == b"b"
+ assert q.peek() == b"a"
+ assert q.peek() == b"a"
+ assert q.pop() == b"a"
+ assert q.peek() is None
q.close()
@@ -231,10 +231,14 @@
)
def test_non_bytes_raises_typeerror(self):
q = self.queue()
- self.assertRaises(TypeError, q.push, 0)
- self.assertRaises(TypeError, q.push, "")
- self.assertRaises(TypeError, q.push, None)
- self.assertRaises(TypeError, q.push, lambda x: x)
+ with pytest.raises(TypeError):
+ q.push(0)
+ with pytest.raises(TypeError):
+ q.push("")
+ with pytest.raises(TypeError):
+ q.push(None)
+ with pytest.raises(TypeError):
+ q.push(lambda x: x)
q.close()
def test_text_in_windows(self):
@@ -244,7 +248,7 @@
q.close()
q = self.queue()
e2 = q.pop()
- self.assertEqual(e1, e2)
+ assert e1 == e2
q.close()
def test_close_open(self):
@@ -260,7 +264,7 @@
del q
q = self.queue()
- self.assertEqual(len(q), 2)
+ assert len(q) == 2
q.push(b"e")
q.pop()
q.pop()
@@ -269,7 +273,7 @@
q = self.queue()
assert q.pop() is not None
- self.assertEqual(len(q), 0)
+ assert len(q) == 0
q.close()
def test_cleanup(self):
@@ -321,12 +325,12 @@
q.push(x)
chunks = list(self.qpath.glob("q*"))
- self.assertEqual(len(chunks), 5 // self.chunksize + 1)
+ assert len(chunks) == 5 // self.chunksize + 1
for _ in values:
q.pop()
chunks = list(self.qpath.glob("q*"))
- self.assertEqual(len(chunks), 1)
+ assert len(chunks) == 1
q.close()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/queuelib-1.8.0/queuelib/tests/test_rrqueue.py
new/queuelib-1.9.0/queuelib/tests/test_rrqueue.py
--- old/queuelib-1.8.0/queuelib/tests/test_rrqueue.py 2020-02-02
01:00:00.000000000 +0100
+++ new/queuelib-1.9.0/queuelib/tests/test_rrqueue.py 2020-02-02
01:00:00.000000000 +0100
@@ -1,5 +1,7 @@
from pathlib import Path
+import pytest
+
from queuelib.queue import (
FifoDiskQueue,
FifoMemoryQueue,
@@ -22,19 +24,19 @@
def test_len_nonzero(self):
assert not self.q
- self.assertEqual(len(self.q), 0)
+ assert len(self.q) == 0
self.q.push(b"a", "3")
assert self.q
self.q.push(b"b", "1")
self.q.push(b"c", "2")
self.q.push(b"d", "1")
- self.assertEqual(len(self.q), 4)
+ assert len(self.q) == 4
self.q.pop()
self.q.pop()
self.q.pop()
self.q.pop()
assert not self.q
- self.assertEqual(len(self.q), 0)
+ assert len(self.q) == 0
def test_close(self):
self.q.push(b"a", "3")
@@ -42,7 +44,7 @@
self.q.push(b"c", "2")
self.q.push(b"d", "1")
iqueues = self.q.queues.values()
- self.assertEqual(sorted(self.q.close()), ["1", "2", "3"])
+ assert sorted(self.q.close()) == ["1", "2", "3"]
assert all(q.closed for q in iqueues)
def test_close_return_active(self):
@@ -50,45 +52,45 @@
self.q.push(b"c", "2")
self.q.push(b"a", "3")
self.q.pop()
- self.assertEqual(sorted(self.q.close()), ["2", "3"])
+ assert sorted(self.q.close()) == ["2", "3"]
class FifoTestMixin:
def test_push_pop_peek_key(self):
- self.assertEqual(self.q.peek(), None)
+ assert self.q.peek() is None
self.q.push(b"a", "1")
self.q.push(b"b", "1")
self.q.push(b"c", "2")
self.q.push(b"d", "2")
- self.assertEqual(self.q.peek(), b"a")
- self.assertEqual(self.q.pop(), b"a")
- self.assertEqual(self.q.peek(), b"c")
- self.assertEqual(self.q.pop(), b"c")
- self.assertEqual(self.q.peek(), b"b")
- self.assertEqual(self.q.pop(), b"b")
- self.assertEqual(self.q.peek(), b"d")
- self.assertEqual(self.q.pop(), b"d")
- self.assertEqual(self.q.peek(), None)
- self.assertEqual(self.q.pop(), None)
+ assert self.q.peek() == b"a"
+ assert self.q.pop() == b"a"
+ assert self.q.peek() == b"c"
+ assert self.q.pop() == b"c"
+ assert self.q.peek() == b"b"
+ assert self.q.pop() == b"b"
+ assert self.q.peek() == b"d"
+ assert self.q.pop() == b"d"
+ assert self.q.peek() is None
+ assert self.q.pop() is None
class LifoTestMixin:
def test_push_pop_peek_key(self):
- self.assertEqual(self.q.peek(), None)
+ assert self.q.peek() is None
self.q.push(b"a", "1")
self.q.push(b"b", "1")
self.q.push(b"c", "2")
self.q.push(b"d", "2")
- self.assertEqual(self.q.peek(), b"b")
- self.assertEqual(self.q.pop(), b"b")
- self.assertEqual(self.q.peek(), b"d")
- self.assertEqual(self.q.pop(), b"d")
- self.assertEqual(self.q.peek(), b"a")
- self.assertEqual(self.q.pop(), b"a")
- self.assertEqual(self.q.peek(), b"c")
- self.assertEqual(self.q.pop(), b"c")
- self.assertEqual(self.q.peek(), None)
- self.assertEqual(self.q.pop(), None)
+ assert self.q.peek() == b"b"
+ assert self.q.pop() == b"b"
+ assert self.q.peek() == b"d"
+ assert self.q.pop() == b"d"
+ assert self.q.peek() == b"a"
+ assert self.q.pop() == b"a"
+ assert self.q.peek() == b"c"
+ assert self.q.pop() == b"c"
+ assert self.q.peek() is None
+ assert self.q.pop() is None
class FifoMemoryRRQueueTest(RRQueueTestMixin, FifoTestMixin, QueuelibTestCase):
@@ -103,27 +105,30 @@
class DiskTestMixin:
def test_nonserializable_object_one(self):
- self.assertRaises(TypeError, self.q.push, lambda x: x, "0")
- self.assertEqual(self.q.close(), [])
+ with pytest.raises(TypeError):
+ self.q.push(lambda x: x, "0")
+ assert self.q.close() == []
def test_nonserializable_object_many_close(self):
self.q.push(b"a", "3")
self.q.push(b"b", "1")
- self.assertRaises(TypeError, self.q.push, lambda x: x, "0")
+ with pytest.raises(TypeError):
+ self.q.push(lambda x: x, "0")
self.q.push(b"c", "2")
- self.assertEqual(self.q.pop(), b"a")
- self.assertEqual(sorted(self.q.close()), ["1", "2"])
+ assert self.q.pop() == b"a"
+ assert sorted(self.q.close()) == ["1", "2"]
def test_nonserializable_object_many_pop(self):
self.q.push(b"a", "3")
self.q.push(b"b", "1")
- self.assertRaises(TypeError, self.q.push, lambda x: x, "0")
+ with pytest.raises(TypeError):
+ self.q.push(lambda x: x, "0")
self.q.push(b"c", "2")
- self.assertEqual(self.q.pop(), b"a")
- self.assertEqual(self.q.pop(), b"b")
- self.assertEqual(self.q.pop(), b"c")
- self.assertEqual(self.q.pop(), None)
- self.assertEqual(self.q.close(), [])
+ assert self.q.pop() == b"a"
+ assert self.q.pop() == b"b"
+ assert self.q.pop() == b"c"
+ assert self.q.pop() is None
+ assert self.q.close() == []
class FifoDiskRRQueueTest(
@@ -169,22 +174,22 @@
def test_push_pop_peek_key(self):
self.q.push(b"c", "1")
self.q.push(b"d", "2")
- self.assertEqual(self.q.peek(), b"d")
- self.assertEqual(self.q.pop(), b"d")
- self.assertEqual(self.q.peek(), b"c")
- self.assertEqual(self.q.pop(), b"c")
- self.assertEqual(self.q.peek(), None)
- self.assertEqual(self.q.pop(), None)
+ assert self.q.peek() == b"d"
+ assert self.q.pop() == b"d"
+ assert self.q.peek() == b"c"
+ assert self.q.pop() == b"c"
+ assert self.q.peek() is None
+ assert self.q.pop() is None
def test_push_pop_peek_key_reversed(self):
self.q.push(b"d", "2")
self.q.push(b"c", "1")
- self.assertEqual(self.q.peek(), b"d")
- self.assertEqual(self.q.pop(), b"d")
- self.assertEqual(self.q.peek(), b"c")
- self.assertEqual(self.q.pop(), b"c")
- self.assertEqual(self.q.peek(), None)
- self.assertEqual(self.q.pop(), None)
+ assert self.q.peek() == b"d"
+ assert self.q.pop() == b"d"
+ assert self.q.peek() == b"c"
+ assert self.q.pop() == b"c"
+ assert self.q.peek() is None
+ assert self.q.pop() is None
class FifoMemoryRRQueueStartDomainsTest(RRQueueStartDomainsTestMixin,
QueuelibTestCase):