15
0

- Fix failing tests:

- typing_extensions.patch (post Python 3.8 we don't need
    typing_extensions package at all)
  - syntaxerror_failing_test.patch (This is actually fixed in the
    post-0.22.1 development, but waiting on it.)

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-bpython?expand=0&rev=20
This commit is contained in:
2022-02-02 20:06:04 +00:00
committed by Git OBS Bridge
parent 7bcc6ab633
commit 252b74865b
4 changed files with 175 additions and 8 deletions

View File

@@ -1,3 +1,12 @@
-------------------------------------------------------------------
Wed Feb 2 20:04:24 UTC 2022 - Matej Cepl <mcepl@suse.com>
- Fix failing tests:
- typing_extensions.patch (post Python 3.8 we don't need
typing_extensions package at all)
- syntaxerror_failing_test.patch (This is actually fixed in the
post-0.22.1 development, but waiting on it.)
-------------------------------------------------------------------
Sun Jan 23 17:31:17 UTC 2022 - Arun Persaud <arun@gmx.de>

View File

@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define skip_python2 1
%bcond_with test
%bcond_without test
Name: python-bpython
Version: 0.22.1
Release: 0
@@ -26,9 +26,17 @@ Summary: Fancy Interface to the Python Interpreter
License: MIT
URL: https://www.bpython-interpreter.org/
Source: https://files.pythonhosted.org/packages/source/b/bpython/bpython-%{version}.tar.gz
# PATCH-FIX-UPSTREAM typing_extensions.patch gh#bpython/bpython#940 mcepl@suse.com
# We actually don't need typing_extensions (all objects are in 3.8+)
Patch0: typing_extensions.patch
# PATCH-FIX-UPSTREAM syntaxerror_failing_test.patch gh#bpython/bpython#952 mcepl@suse.com
# This is actually fixed in the post-0.22.1 development, but waiting on it.
Patch1: syntaxerror_failing_test.patch
BuildRequires: %{python_module Babel}
BuildRequires: %{python_module Sphinx}
BuildRequires: %{python_module pip}
BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module wheel}
BuildRequires: fdupes
BuildRequires: hicolor-icon-theme
BuildRequires: python-rpm-macros
@@ -54,10 +62,10 @@ BuildArch: noarch
BuildRequires: %{python_module curtsies >= 0.3.5}
BuildRequires: %{python_module greenlet}
BuildRequires: %{python_module pygments}
BuildRequires: %{python_module pyxdg}
BuildRequires: %{python_module requests}
BuildRequires: %{python_module six >= 1.5}
BuildRequires: %{python_module wcwidth}
BuildRequires: python-mock
%endif
%ifpython2
Provides: bpython = %{version}
@@ -90,14 +98,14 @@ Provides: %{python_module bpython-doc = %{version}}
Documentation and help files for %{name}.
%prep
%setup -q -n bpython-%{version}
%autosetup -p1 -n bpython-%{version}
%build
%python_build
%pyproject_wheel
%python_exec setup.py build_sphinx && rm build/sphinx/html/.buildinfo # HTML documentation
%install
%python_install
%pyproject_install
install -m 644 build/man/bpython.1 %{buildroot}%{_mandir}/man1/bpython.1
install -m 644 build/man/bpython-config.5 %{buildroot}%{_mandir}/man5/bpython-config.5
@@ -134,7 +142,7 @@ rm %{buildroot}%{_datadir}/applications/org.bpython-interpreter.bpython.desktop
%if %{with test}
%check
%python_exec setup.py test
%pyunittest discover -v
%endif
%post
@@ -150,8 +158,8 @@ rm %{buildroot}%{_datadir}/applications/org.bpython-interpreter.bpython.desktop
%{python_sitelib}/bpython/*
%dir %{python_sitelib}/bpdb
%{python_sitelib}/bpdb/*
%dir %{python_sitelib}/bpython-%{version}-py*.egg-info
%{python_sitelib}/bpython-%{version}-py*.egg-info/*
%dir %{python_sitelib}/bpython-%{version}-*-info
%{python_sitelib}/bpython-%{version}-*-info/*
%python_alternative %{_bindir}/bpython
%python_alternative %{_bindir}/bpython-curses
%python_alternative %{_bindir}/bpython-urwid

View File

@@ -0,0 +1,19 @@
---
bpython/test/test_interpreter.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/bpython/test/test_interpreter.py
+++ b/bpython/test/test_interpreter.py
@@ -41,10 +41,10 @@ class TestInterpreter(unittest.TestCase)
+ green('"<bpython-input-148>"')
+ ", line "
+ bold(magenta("1"))
- + "\n 1.1.1.1\n ^^^^^\n"
+ + "\n 1.1.1.1\n ^^\n"
+ bold(red("SyntaxError"))
+ ": "
- + cyan("invalid syntax. Perhaps you forgot a comma?")
+ + cyan("invalid syntax")
+ "\n"
)
elif (3, 8) <= sys.version_info[:2] <= (3, 9):

131
typing_extensions.patch Normal file
View File

@@ -0,0 +1,131 @@
From 51ebc86070c7a49abe78ba87a0e8268a09f141a6 Mon Sep 17 00:00:00 2001
From: Sebastian Ramacher <sebastian@ramacher.at>
Date: Wed, 8 Dec 2021 18:18:17 +0100
Subject: [PATCH] Add a typing compat module to avoid a dependency on
typing-extensions for Py >= 3.8
---
bpython/_typing_compat.py | 33 +++++++++++++++++++++++++++++++++
bpython/curtsies.py | 2 +-
bpython/curtsiesfrontend/_internal.py | 2 +-
bpython/curtsiesfrontend/repl.py | 2 +-
bpython/filelock.py | 2 +-
bpython/inspection.py | 2 +-
bpython/repl.py | 2 +-
setup.cfg | 2 +-
8 files changed, 40 insertions(+), 7 deletions(-)
create mode 100644 bpython/_typing_compat.py
--- /dev/null
+++ b/bpython/_typing_compat.py
@@ -0,0 +1,33 @@
+# The MIT License
+#
+# Copyright (c) 2021 Sebastian Ramacher
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+try:
+ # introduced in Python 3.8
+ from typing import Literal
+except ImportError:
+ from typing_extensions import Literal # type: ignore
+
+try:
+ # introduced in Python 3.8
+ from typing import Protocol
+except ImportError:
+ from typing_extensions import Protocol # type: ignore
--- a/bpython/curtsies.py
+++ b/bpython/curtsies.py
@@ -33,7 +33,7 @@ from typing import (
Optional,
Generator,
)
-from typing_extensions import Literal, Protocol
+from ._typing_compat import Protocol
logger = logging.getLogger(__name__)
--- a/bpython/curtsiesfrontend/_internal.py
+++ b/bpython/curtsiesfrontend/_internal.py
@@ -23,7 +23,7 @@
import pydoc
from types import TracebackType
from typing import Optional, Type
-from typing_extensions import Literal
+from .._typing_compat import Literal
from .. import _internal
--- a/bpython/curtsiesfrontend/repl.py
+++ b/bpython/curtsiesfrontend/repl.py
@@ -14,7 +14,7 @@ import unicodedata
from enum import Enum
from types import TracebackType
from typing import Dict, Any, List, Optional, Tuple, Union, cast, Type
-from typing_extensions import Literal
+from .._typing_compat import Literal
import blessings
import greenlet
--- a/bpython/filelock.py
+++ b/bpython/filelock.py
@@ -21,7 +21,7 @@
# THE SOFTWARE.
from typing import Optional, Type, IO
-from typing_extensions import Literal
+from ._typing_compat import Literal
from types import TracebackType
has_fcntl = True
--- a/bpython/inspection.py
+++ b/bpython/inspection.py
@@ -28,7 +28,7 @@ import re
from collections import namedtuple
from typing import Any, Optional, Type
from types import MemberDescriptorType, TracebackType
-from typing_extensions import Literal
+from ._typing_compat import Literal
from pygments.token import Token
from pygments.lexers import Python3Lexer
--- a/bpython/repl.py
+++ b/bpython/repl.py
@@ -38,7 +38,7 @@ from itertools import takewhile
from pathlib import Path
from types import ModuleType, TracebackType
from typing import cast, Tuple, Any, Optional, Type
-from typing_extensions import Literal
+from ._typing_compat import Literal
from pygments.lexers import Python3Lexer
from pygments.token import Token
--- a/setup.cfg
+++ b/setup.cfg
@@ -28,7 +28,7 @@ install_requires =
pygments
pyxdg
requests
- typing-extensions
+ typing-extensions; python_version < "3.8"
[options.extras_require]
clipboard = pyperclip