forked from pool/python-loguru
		
	- Update to 0.6.0
  * Remove internal use of pickle.loads() considered as a security
    vulnerability referenced as CVE-2022-0329 (#563).
  * Modify coroutine sink to make it discard log messages when
    loop=None and no event loop is running (due to internally using
    asyncio.get_running_loop() in place of
    asyncio.get_event_loop()).
  * Remove the possibility to add a coroutine sink with
    enqueue=True if loop=None and no event loop is running.
  * Change default encoding of file sink to be utf8 instead of
    locale.getpreferredencoding() (#339).
  * Prevent non-ascii characters to be escaped while logging JSON
    message with serialize=True (#575, thanks @ponponon).
  * Fix flake8 errors and improve code readability (#353, thanks
    @AndrewYakimets).
- Drop merged patches:
  * loguru-exception-formatting-py39.patch
  * pytest-6.2-excepthooks.patch
- Add loguru-fix-repr-tests.patch
  * Fix "repr()" tests failing on Python 3.11 and Python 3.10.6
  * https://github.com/Delgan/loguru/commit/4fe21f66
OBS-URL: https://build.opensuse.org/request/show/993287
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-loguru?expand=0&rev=15
		
	
		
			
				
	
	
		
			141 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			141 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From 4fe21f66991abeb1905e24c3bc3c634543d959a2 Mon Sep 17 00:00:00 2001
 | 
						|
From: Delgan <delgan.py@gmail.com>
 | 
						|
Date: Sun, 17 Jul 2022 09:18:56 +0200
 | 
						|
Subject: [PATCH] Fix "repr()" tests failing on Python 3.11
 | 
						|
 | 
						|
---
 | 
						|
 tests/test_repr.py | 87 +++++++++++++++++++---------------------------
 | 
						|
 1 file changed, 36 insertions(+), 51 deletions(-)
 | 
						|
 | 
						|
diff --git a/tests/test_repr.py b/tests/test_repr.py
 | 
						|
index ba48839..76f413d 100644
 | 
						|
--- a/tests/test_repr.py
 | 
						|
+++ b/tests/test_repr.py
 | 
						|
@@ -1,34 +1,11 @@
 | 
						|
-import builtins
 | 
						|
 import logging
 | 
						|
 import pathlib
 | 
						|
 import re
 | 
						|
 import sys
 | 
						|
-from inspect import iscoroutinefunction
 | 
						|
 
 | 
						|
-import loguru
 | 
						|
 from loguru import logger
 | 
						|
 
 | 
						|
 
 | 
						|
-class Wrapper:
 | 
						|
-    def __init__(self, wrapped, *, repr, name):
 | 
						|
-        self._wrapped = wrapped
 | 
						|
-        self._repr = repr
 | 
						|
-        self._name = name
 | 
						|
-        self.raised = False
 | 
						|
-
 | 
						|
-    def __repr__(self):
 | 
						|
-        return self._repr
 | 
						|
-
 | 
						|
-    def __getattr__(self, name):
 | 
						|
-        if name == "__name__":
 | 
						|
-            if self._name is None:
 | 
						|
-                self.raised = True
 | 
						|
-                raise AttributeError
 | 
						|
-            else:
 | 
						|
-                return self._name
 | 
						|
-        return getattr(self._wrapped, name)
 | 
						|
-
 | 
						|
-
 | 
						|
 def test_no_handler():
 | 
						|
     assert repr(logger) == "<loguru.logger handlers=[]>"
 | 
						|
 
 | 
						|
@@ -112,22 +89,30 @@ def my_function(message):
 | 
						|
     assert repr(logger) == "<loguru.logger handlers=[(id=0, level=10, sink=my_function)]>"
 | 
						|
 
 | 
						|
 
 | 
						|
-def test_function_without_name(monkeypatch):
 | 
						|
-    function = Wrapper(lambda _: None, repr="<FunctionWithout>", name=None)
 | 
						|
-    monkeypatch.setattr(builtins, "callable", lambda x: x is function or callable(x))
 | 
						|
+def test_callable_without_name():
 | 
						|
+    class Function:
 | 
						|
+        def __call__(self):
 | 
						|
+            pass
 | 
						|
+
 | 
						|
+        def __repr__(self):
 | 
						|
+            return "<FunctionWithout>"
 | 
						|
 
 | 
						|
-    logger.add(function)
 | 
						|
+    logger.add(Function())
 | 
						|
     assert repr(logger) == "<loguru.logger handlers=[(id=0, level=10, sink=<FunctionWithout>)]>"
 | 
						|
-    assert function.raised
 | 
						|
 
 | 
						|
 
 | 
						|
-def test_function_with_empty_name(monkeypatch):
 | 
						|
-    function = Wrapper(lambda _: None, repr="<FunctionEmpty>", name="")
 | 
						|
-    monkeypatch.setattr(builtins, "callable", lambda x: x is function or callable(x))
 | 
						|
+def test_callable_with_empty_name():
 | 
						|
+    class Function:
 | 
						|
+        __name__ = ""
 | 
						|
+
 | 
						|
+        def __call__(self):
 | 
						|
+            pass
 | 
						|
+
 | 
						|
+        def __repr__(self):
 | 
						|
+            return "<FunctionEmpty>"
 | 
						|
 
 | 
						|
-    logger.add(function)
 | 
						|
+    logger.add(Function())
 | 
						|
     assert repr(logger) == "<loguru.logger handlers=[(id=0, level=10, sink=<FunctionEmpty>)]>"
 | 
						|
-    assert not function.raised
 | 
						|
 
 | 
						|
 
 | 
						|
 def test_coroutine_function():
 | 
						|
@@ -138,32 +123,32 @@ async def my_async_function(message):
 | 
						|
     assert repr(logger) == "<loguru.logger handlers=[(id=0, level=10, sink=my_async_function)]>"
 | 
						|
 
 | 
						|
 
 | 
						|
-def test_coroutine_function_without_name(monkeypatch):
 | 
						|
-    async_function = Wrapper(lambda _: None, repr="<AsyncFunctionWithout>", name=None)
 | 
						|
-    monkeypatch.setattr(
 | 
						|
-        loguru._logger,
 | 
						|
-        "iscoroutinefunction",
 | 
						|
-        lambda x: x is async_function or iscoroutinefunction(x),
 | 
						|
-    )
 | 
						|
+def test_coroutine_callable_without_name():
 | 
						|
+    class CoroutineFunction:
 | 
						|
+        async def __call__(self):
 | 
						|
+            pass
 | 
						|
+
 | 
						|
+        def __repr__(self):
 | 
						|
+            return "<AsyncFunctionWithout>"
 | 
						|
 
 | 
						|
-    logger.add(async_function)
 | 
						|
+    logger.add(CoroutineFunction())
 | 
						|
     assert (
 | 
						|
         repr(logger) == "<loguru.logger handlers=[(id=0, level=10, sink=<AsyncFunctionWithout>)]>"
 | 
						|
     )
 | 
						|
-    assert async_function.raised
 | 
						|
 
 | 
						|
 
 | 
						|
-def test_coroutine_function_with_empty_name(monkeypatch):
 | 
						|
-    async_function = Wrapper(lambda _: None, repr="<AsyncFunctionEmpty>", name="")
 | 
						|
-    monkeypatch.setattr(
 | 
						|
-        loguru._logger,
 | 
						|
-        "iscoroutinefunction",
 | 
						|
-        lambda x: x is async_function or iscoroutinefunction(x),
 | 
						|
-    )
 | 
						|
+def test_coroutine_function_with_empty_name():
 | 
						|
+    class CoroutineFunction:
 | 
						|
+        __name__ = ""
 | 
						|
+
 | 
						|
+        def __call__(self):
 | 
						|
+            pass
 | 
						|
+
 | 
						|
+        def __repr__(self):
 | 
						|
+            return "<AsyncFunctionEmpty>"
 | 
						|
 
 | 
						|
-    logger.add(async_function)
 | 
						|
+    logger.add(CoroutineFunction())
 | 
						|
     assert repr(logger) == "<loguru.logger handlers=[(id=0, level=10, sink=<AsyncFunctionEmpty>)]>"
 | 
						|
-    assert not async_function.raised
 | 
						|
 
 | 
						|
 
 | 
						|
 def test_standard_handler():
 |