From 0f17fe32964705ef4493d2609f77bf9d55e0ac93b66bbdcebe5536b69a40cd54 Mon Sep 17 00:00:00 2001 From: Dirk Mueller Date: Wed, 3 Jul 2024 16:14:15 +0000 Subject: [PATCH] - update to 0.0.12: * Pin `ruff` version and prep for v0.0.12 release - update to 0.0.11: * Use `tb_lineno` to point to correct line in traceback * Fix deprecation warnings in Python 3.12 * Include tests in sdist * `ruff` now requires the `check` specification - drop ruff05.patch, fix-traceback.patch, support-python-312.patch, test-ruff-0.1.0.patch: upstream OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:pytest/python-pytest-examples?expand=0&rev=13 --- fix-traceback.patch | 223 --------------------------------- pytest-examples-0.0.10.tar.gz | 3 - pytest_examples-0.0.12.tar.gz | 3 + python-pytest-examples.changes | 14 +++ python-pytest-examples.spec | 13 +- ruff05.patch | 13 -- support-python-312.patch | 68 ---------- test-ruff-0.1.0.patch | 22 ---- 8 files changed, 20 insertions(+), 339 deletions(-) delete mode 100644 fix-traceback.patch delete mode 100644 pytest-examples-0.0.10.tar.gz create mode 100644 pytest_examples-0.0.12.tar.gz delete mode 100644 ruff05.patch delete mode 100644 support-python-312.patch delete mode 100644 test-ruff-0.1.0.patch diff --git a/fix-traceback.patch b/fix-traceback.patch deleted file mode 100644 index 9a7e35e..0000000 --- a/fix-traceback.patch +++ /dev/null @@ -1,223 +0,0 @@ -From 3fe64dc479d318fa58fd1952bd37ce9db2beb23f Mon Sep 17 00:00:00 2001 -From: Alex Hall -Date: Sun, 17 Sep 2023 17:35:21 +0200 -Subject: [PATCH 1/4] Use tb_lineno to point to correct line in traceback - ---- - pytest_examples/traceback.py | 14 +++++++------- - tests/test_run_examples.py | 9 ++++++--- - 2 files changed, 13 insertions(+), 10 deletions(-) - -diff --git a/pytest_examples/traceback.py b/pytest_examples/traceback.py -index 7dedfa1..591f995 100644 ---- a/pytest_examples/traceback.py -+++ b/pytest_examples/traceback.py -@@ -1,7 +1,6 @@ - from __future__ import annotations as _annotations - - import sys --import traceback - from types import CodeType, FrameType, TracebackType - from typing import TYPE_CHECKING - -@@ -21,16 +20,17 @@ def create_example_traceback(exc: Exception, module_path: str, example: CodeExam - # f_code.co_posonlyargcount was added in 3.8 - return None - frames = [] -- for frame, _ in traceback.walk_tb(exc.__traceback__): -+ tb = exc.__traceback__ -+ while tb is not None: -+ frame = tb.tb_frame - if frame.f_code.co_filename == module_path: -- frames.append(create_custom_frame(frame, example)) -+ frames.append((create_custom_frame(frame, example), tb.tb_lasti, tb.tb_lineno + example.start_line)) -+ tb = tb.tb_next - - frames.reverse() - new_tb = None -- for altered_frame in frames: -- new_tb = TracebackType( -- tb_next=new_tb, tb_frame=altered_frame, tb_lasti=altered_frame.f_lasti, tb_lineno=altered_frame.f_lineno -- ) -+ for altered_frame, lasti, lineno in frames: -+ new_tb = TracebackType(tb_next=new_tb, tb_frame=altered_frame, tb_lasti=lasti, tb_lineno=lineno) - return new_tb - - -diff --git a/tests/test_run_examples.py b/tests/test_run_examples.py -index 6943329..9f077d7 100644 ---- a/tests/test_run_examples.py -+++ b/tests/test_run_examples.py -@@ -224,7 +224,10 @@ def test_run_directly(tmp_path, eval_example): - x = 4 - - def div(y): -- return x / y -+ try: -+ return x / y -+ finally: -+ str(y) - - div(2) - div(0)""" -@@ -244,10 +247,10 @@ def div(y): - - # debug(exc_info.traceback) - assert exc_info.traceback[-1].frame.code.path == md_file -- assert exc_info.traceback[-1].lineno == 6 -+ assert exc_info.traceback[-1].lineno == 7 - - assert exc_info.traceback[-2].frame.code.path == md_file -- assert exc_info.traceback[-2].lineno == 9 -+ assert exc_info.traceback[-2].lineno == 12 - - - def test_print_sub(pytester: pytest.Pytester): - -From e07b1538df6eb662c2b92b9da9b768a2cc1f3ed3 Mon Sep 17 00:00:00 2001 -From: Alex Hall -Date: Sun, 17 Sep 2023 19:08:32 +0200 -Subject: [PATCH 2/4] Keep the original co_firstlineno - ---- - pytest_examples/traceback.py | 10 ++++------ - tests/test_run_examples.py | 2 +- - 2 files changed, 5 insertions(+), 7 deletions(-) - -diff --git a/pytest_examples/traceback.py b/pytest_examples/traceback.py -index 591f995..9e797ed 100644 ---- a/pytest_examples/traceback.py -+++ b/pytest_examples/traceback.py -@@ -36,12 +36,10 @@ def create_example_traceback(exc: Exception, module_path: str, example: CodeExam - - def create_custom_frame(frame: FrameType, example: CodeExample) -> FrameType: - """ -- Create a new frame that mostly matches `frame` but with a filename from `example` and line number -- altered to match the example. -+ Create a new frame that mostly matches `frame` but with a filename from `example`. - - Taken mostly from https://naleraphael.github.io/blog/posts/devlog_create_a_builtin_frame_object/ -- With the CodeType creation inspired by https://stackoverflow.com/a/16123158/949890. However, we use -- `frame.f_lineno` for the line number instead of `f_code.co_firstlineno` as that seems to work. -+ With the CodeType creation inspired by https://stackoverflow.com/a/16123158/949890. - """ - import ctypes - -@@ -77,7 +75,7 @@ def create_custom_frame(frame: FrameType, example: CodeExample) -> FrameType: - str(example.path), - f_code.co_name, - f_code.co_qualname, -- frame.f_lineno + example.start_line, -+ f_code.co_firstlineno, - f_code.co_lnotab, - f_code.co_exceptiontable, - ) -@@ -95,7 +93,7 @@ def create_custom_frame(frame: FrameType, example: CodeExample) -> FrameType: - f_code.co_varnames, - str(example.path), - f_code.co_name, -- frame.f_lineno + example.start_line, -+ f_code.co_firstlineno, - f_code.co_lnotab, - ) - -diff --git a/tests/test_run_examples.py b/tests/test_run_examples.py -index 9f077d7..9bf3dcc 100644 ---- a/tests/test_run_examples.py -+++ b/tests/test_run_examples.py -@@ -54,7 +54,7 @@ def test_find_run_examples(example: CodeExample, eval_example: EvalExample): - - # assert 'my_file_9_13.py:12: AssertionError' in '\n'.join(result.outlines) - assert result.outlines[-8:-3] == [ -- '', -+ ' b = 2', - '> assert a + b == 4', - 'E AssertionError', - '', - -From 089cf8a4f0a91a5b85108205d0f58cf603af3ac5 Mon Sep 17 00:00:00 2001 -From: Alex Hall -Date: Wed, 20 Sep 2023 15:46:34 +0200 -Subject: [PATCH 3/4] Adjust co_firstlineno so that the pytest includes the - correct context. - ---- - pytest_examples/traceback.py | 8 +++++--- - tests/test_run_examples.py | 6 ++++-- - 2 files changed, 9 insertions(+), 5 deletions(-) - -diff --git a/pytest_examples/traceback.py b/pytest_examples/traceback.py -index 9e797ed..94ede45 100644 ---- a/pytest_examples/traceback.py -+++ b/pytest_examples/traceback.py -@@ -36,7 +36,9 @@ def create_example_traceback(exc: Exception, module_path: str, example: CodeExam - - def create_custom_frame(frame: FrameType, example: CodeExample) -> FrameType: - """ -- Create a new frame that mostly matches `frame` but with a filename from `example`. -+ Create a new frame that mostly matches `frame` but with a code object that has -+ a filename from `example` and adjusted an adjusted first line number -+ so that pytest shows the correct code context in the traceback. - - Taken mostly from https://naleraphael.github.io/blog/posts/devlog_create_a_builtin_frame_object/ - With the CodeType creation inspired by https://stackoverflow.com/a/16123158/949890. -@@ -75,7 +77,7 @@ def create_custom_frame(frame: FrameType, example: CodeExample) -> FrameType: - str(example.path), - f_code.co_name, - f_code.co_qualname, -- f_code.co_firstlineno, -+ f_code.co_firstlineno + example.start_line, - f_code.co_lnotab, - f_code.co_exceptiontable, - ) -@@ -93,7 +95,7 @@ def create_custom_frame(frame: FrameType, example: CodeExample) -> FrameType: - f_code.co_varnames, - str(example.path), - f_code.co_name, -- f_code.co_firstlineno, -+ f_code.co_firstlineno + example.start_line, - f_code.co_lnotab, - ) - -diff --git a/tests/test_run_examples.py b/tests/test_run_examples.py -index 9bf3dcc..ad878ea 100644 ---- a/tests/test_run_examples.py -+++ b/tests/test_run_examples.py -@@ -52,8 +52,10 @@ def test_find_run_examples(example: CodeExample, eval_example: EvalExample): - result = pytester.runpytest('-p', 'no:pretty', '-v') - result.assert_outcomes(passed=1, failed=1) - -- # assert 'my_file_9_13.py:12: AssertionError' in '\n'.join(result.outlines) -- assert result.outlines[-8:-3] == [ -+ assert result.outlines[-11:-3] == [ -+ '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ', -+ '', -+ ' a = 1', - ' b = 2', - '> assert a + b == 4', - 'E AssertionError', - -From e07ec3de414c00afa11a94bd136b33f77608c767 Mon Sep 17 00:00:00 2001 -From: Alex Hall -Date: Sat, 23 Sep 2023 12:08:07 +0200 -Subject: [PATCH 4/4] Loosen testing result.outlines - ---- - tests/test_run_examples.py | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/tests/test_run_examples.py b/tests/test_run_examples.py -index ad878ea..1dcfba1 100644 ---- a/tests/test_run_examples.py -+++ b/tests/test_run_examples.py -@@ -52,8 +52,8 @@ def test_find_run_examples(example: CodeExample, eval_example: EvalExample): - result = pytester.runpytest('-p', 'no:pretty', '-v') - result.assert_outcomes(passed=1, failed=1) - -- assert result.outlines[-11:-3] == [ -- '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ', -+ assert result.outlines[-11].startswith('_ _ _ _ ') -+ assert result.outlines[-10:-3] == [ - '', - ' a = 1', - ' b = 2', diff --git a/pytest-examples-0.0.10.tar.gz b/pytest-examples-0.0.10.tar.gz deleted file mode 100644 index 8719b21..0000000 --- a/pytest-examples-0.0.10.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:dce3ca92ef6ac225387e9e38cac45cf81776f01a7b69fbacff4012b62984611f -size 22058 diff --git a/pytest_examples-0.0.12.tar.gz b/pytest_examples-0.0.12.tar.gz new file mode 100644 index 0000000..4eed509 --- /dev/null +++ b/pytest_examples-0.0.12.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:58da3a1d4d6b5efedbb1c0e4fc94472e44c6bb3e1e199822728d778d809c8ff7 +size 20429 diff --git a/python-pytest-examples.changes b/python-pytest-examples.changes index f318aed..e8d3fee 100644 --- a/python-pytest-examples.changes +++ b/python-pytest-examples.changes @@ -1,3 +1,17 @@ +------------------------------------------------------------------- +Wed Jul 3 16:13:14 UTC 2024 - Dirk Müller + +- update to 0.0.12: + * Pin `ruff` version and prep for v0.0.12 release +- update to 0.0.11: + * Use `tb_lineno` to point to correct line in traceback + * Fix deprecation warnings in Python 3.12 + * Include tests in sdist + * `ruff` now requires the `check` specification + +- drop ruff05.patch, fix-traceback.patch, + support-python-312.patch, test-ruff-0.1.0.patch: upstream + ------------------------------------------------------------------- Mon Jul 1 18:03:28 UTC 2024 - Dirk Müller diff --git a/python-pytest-examples.spec b/python-pytest-examples.spec index 66c6cd0..d7bbc65 100644 --- a/python-pytest-examples.spec +++ b/python-pytest-examples.spec @@ -18,20 +18,13 @@ %{?sle15_python_module_pythons} Name: python-pytest-examples -Version: 0.0.10 +Version: 0.0.12 Release: 0 Summary: Pytest plugin for testing examples in docstrings and markdown files License: MIT URL: https://github.com/pydantic/pytest-examples # sdist without tests -Source: https://github.com/pydantic/pytest-examples/archive/refs/tags/v%{version}.tar.gz#/pytest-examples-%{version}.tar.gz -# PATCH-FIX-UPSTREAM gh#pydantic/pytest-examples#17 -Patch0: fix-traceback.patch -# PATCH-FIX-UPSTREAM test-ruff-0.1.0.patch - fix tests for ruff-0.1.0 -Patch1: test-ruff-0.1.0.patch -# PATCH-FIX-UPSTREAM gh#pydantic/pytest-examples#22 -Patch2: support-python-312.patch -Patch3: ruff05.patch +Source: https://files.pythonhosted.org/packages/source/p/pytest-examples/pytest_examples-%{version}.tar.gz BuildRequires: %{python_module black} BuildRequires: %{python_module hatchling} BuildRequires: %{python_module pip} @@ -56,7 +49,7 @@ Pytest plugin for testing Python code examples in docstrings and markdown files. It can also update code examples in place to format them and insert or update print statements. %prep -%autosetup -p1 -n pytest-examples-%{version} +%autosetup -p1 -n pytest_examples-%{version} %build %pyproject_wheel diff --git a/ruff05.patch b/ruff05.patch deleted file mode 100644 index 72c5ba5..0000000 --- a/ruff05.patch +++ /dev/null @@ -1,13 +0,0 @@ -Index: pytest-examples-0.0.10/pytest_examples/lint.py -=================================================================== ---- pytest-examples-0.0.10.orig/pytest_examples/lint.py -+++ pytest-examples-0.0.10/pytest_examples/lint.py -@@ -47,7 +47,7 @@ def ruff_check( - *, - extra_ruff_args: tuple[str, ...] = (), - ) -> str: -- args = 'ruff', '-', *config.ruff_config(), *extra_ruff_args -+ args = 'ruff', 'check', '-', *config.ruff_config(), *extra_ruff_args - - p = Popen(args, stdin=PIPE, stdout=PIPE, stderr=PIPE, universal_newlines=True) - stdout, stderr = p.communicate(example.source, timeout=2) diff --git a/support-python-312.patch b/support-python-312.patch deleted file mode 100644 index 9df43fe..0000000 --- a/support-python-312.patch +++ /dev/null @@ -1,68 +0,0 @@ -From 35f93d668c8a4a337d1c9d477fa5732fa439b1b3 Mon Sep 17 00:00:00 2001 -From: Alex Hall -Date: Wed, 27 Sep 2023 17:47:51 +0200 -Subject: [PATCH 1/2] Fix deprecation warnings in Python 3.12 - ---- - .github/workflows/ci.yml | 2 +- - pytest_examples/traceback.py | 21 ++++++++++++++++++++- - requirements/testing.txt | 6 ++---- - 3 files changed, 23 insertions(+), 6 deletions(-) - -diff --git a/pytest_examples/traceback.py b/pytest_examples/traceback.py -index 94ede45..41880fe 100644 ---- a/pytest_examples/traceback.py -+++ b/pytest_examples/traceback.py -@@ -62,7 +62,26 @@ def create_custom_frame(frame: FrameType, example: CodeExample) -> FrameType: - ctypes.pythonapi.PyThreadState_Get.restype = P_MEM_TYPE - - f_code = frame.f_code -- if sys.version_info >= (3, 11): -+ if sys.version_info >= (3, 12): -+ code = CodeType( -+ f_code.co_argcount, -+ f_code.co_posonlyargcount, -+ f_code.co_kwonlyargcount, -+ f_code.co_nlocals, -+ f_code.co_stacksize, -+ f_code.co_flags, -+ f_code.co_code, -+ f_code.co_consts, -+ f_code.co_names, -+ f_code.co_varnames, -+ str(example.path), -+ f_code.co_name, -+ f_code.co_qualname, -+ f_code.co_firstlineno + example.start_line, -+ f_code.co_linetable, -+ f_code.co_exceptiontable, -+ ) -+ elif sys.version_info >= (3, 11): - code = CodeType( - f_code.co_argcount, - f_code.co_posonlyargcount, -diff --git a/requirements/testing.txt b/requirements/testing.txt -index 805175d..4b42722 100644 ---- a/requirements/testing.txt -+++ b/requirements/testing.txt -@@ -2,10 +2,8 @@ - # This file is autogenerated by pip-compile with Python 3.10 - # by the following command: - # --# pip-compile --output-file=requirements/testing.txt --resolver=backtracking requirements/testing.in -+# pip-compile --output-file=requirements/testing.txt requirements/testing.in - # --attrs==22.2.0 -- # via pytest - coverage==7.2.2 - # via -r requirements/testing.in - exceptiongroup==1.1.1 -@@ -22,7 +20,7 @@ pluggy==1.0.0 - # via pytest - pygments==2.14.0 - # via rich --pytest==7.2.2 -+pytest==7.4.2 - # via pytest-pretty - pytest-pretty==1.1.1 - # via -r requirements/testing.in diff --git a/test-ruff-0.1.0.patch b/test-ruff-0.1.0.patch deleted file mode 100644 index cca5fae..0000000 --- a/test-ruff-0.1.0.patch +++ /dev/null @@ -1,22 +0,0 @@ -From cade1306918e9984d0d45d5e274d01b734b5fd3a Mon Sep 17 00:00:00 2001 -From: Anton Zhukharev -Date: Wed, 18 Oct 2023 09:38:34 +0300 -Subject: [PATCH] update tests for ruff>=0.1.0 - ---- - tests/test_run_examples.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/tests/test_run_examples.py b/tests/test_run_examples.py -index 1dcfba1..4330d71 100644 ---- a/tests/test_run_examples.py -+++ b/tests/test_run_examples.py -@@ -114,7 +114,7 @@ def test_find_run_examples(example: CodeExample, eval_example: EvalExample): - ' my_file.md:2:8: F401 [*] `sys` imported but unused\n' - ' my_file.md:3:7: F821 Undefined name `missing`\n' - ' Found 2 errors.\n' -- ' [*] 1 potentially fixable with the --fix option.\n' -+ ' [*] 1 fixable with the `--fix` option.\n' - '=== short test summary info ===\n' - ) in output -