diff --git a/python-bpython.changes b/python-bpython.changes index ae1a929..39a1007 100644 --- a/python-bpython.changes +++ b/python-bpython.changes @@ -1,3 +1,17 @@ +------------------------------------------------------------------- +Sat Feb 5 21:57:02 UTC 2022 - Matej Cepl + +- This version actually installs manpages on its own. + +------------------------------------------------------------------- +Wed Feb 2 20:04:24 UTC 2022 - Matej Cepl + +- Fix failing tests: + - typing_extensions.patch (post Python 3.8 we don't need + typing_extensions package at all) + - syntaxerror_failing_test.patch (from + https://github.com/bpython/bpython/compare/fdd4ad9..4d33cc6). + ------------------------------------------------------------------- Sun Jan 23 17:31:17 UTC 2022 - Arun Persaud diff --git a/python-bpython.spec b/python-bpython.spec index d2c35c5..375f3b9 100644 --- a/python-bpython.spec +++ b/python-bpython.spec @@ -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,18 @@ 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. +# https://github.com/bpython/bpython/compare/fdd4ad9..4d33cc6.patch +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 +63,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,17 +99,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 - -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 +%pyproject_install %python_clone -a %{buildroot}%{_bindir}/bpython %python_clone -a %{buildroot}%{_bindir}/bpython-curses @@ -109,9 +115,6 @@ install -m 644 build/man/bpython-config.5 %{buildroot}%{_mandir}/man5/bpython-co %python_clone -a %{buildroot}%{_mandir}/man1/bpython.1 %python_clone -a %{buildroot}%{_mandir}/man5/bpython-config.5 -install -d %{buildroot}%{_mandir}/man1/ -install -d %{buildroot}%{_mandir}/man5/ - %{python_expand %fdupes %{buildroot}%{$python_sitelib} cp %{buildroot}%{_datadir}/metainfo/org.bpython-interpreter.bpython.metainfo.xml %{buildroot}%{_datadir}/metainfo/org.bpython-interpreter.bpython-%{$python_bin_suffix}.metainfo.xml @@ -134,7 +137,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 +153,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 diff --git a/syntaxerror_failing_test.patch b/syntaxerror_failing_test.patch new file mode 100644 index 0000000..00585d6 --- /dev/null +++ b/syntaxerror_failing_test.patch @@ -0,0 +1,65 @@ +From b46afa3bb1ab783c96dc80c5184090a171ab70d4 Mon Sep 17 00:00:00 2001 +From: Sebastian Ramacher +Date: Fri, 31 Dec 2021 14:00:46 +0100 +Subject: [PATCH 1/3] Apply black + +--- + bpython/autocomplete.py | 1 - + bpython/curtsiesfrontend/filewatch.py | 1 - + bpython/test/test_interpreter.py | 14 +++++++++++++- + bpython/urwid.py | 1 - + 4 files changed, 13 insertions(+), 4 deletions(-) + +--- a/bpython/autocomplete.py ++++ b/bpython/autocomplete.py +@@ -626,7 +626,6 @@ except ImportError: + def locate(self, cursor_offset: int, line: str) -> Optional[LinePart]: + return None + +- + else: + + class JediCompletion(BaseCompletionType): +--- a/bpython/curtsiesfrontend/filewatch.py ++++ b/bpython/curtsiesfrontend/filewatch.py +@@ -11,7 +11,6 @@ except ImportError: + def ModuleChangedEventHandler(*args): + return None + +- + else: + + class ModuleChangedEventHandler(FileSystemEventHandler): # type: ignore [no-redef] +--- a/bpython/test/test_interpreter.py ++++ b/bpython/test/test_interpreter.py +@@ -35,7 +35,19 @@ class TestInterpreter(unittest.TestCase) + + i.runsource("1.1.1.1") + +- if sys.version_info[:2] >= (3, 10): ++ if (3, 10, 1) <= sys.version_info[:3]: ++ expected = ( ++ " File " ++ + green('""') ++ + ", line " ++ + bold(magenta("1")) ++ + "\n 1.1.1.1\n ^^\n" ++ + bold(red("SyntaxError")) ++ + ": " ++ + cyan("invalid syntax") ++ + "\n" ++ ) ++ elif (3, 10) <= sys.version_info[:2]: + expected = ( + " File " + + green('""') +--- a/bpython/urwid.py ++++ b/bpython/urwid.py +@@ -128,7 +128,6 @@ if urwid.VERSION < (1, 0, 0) and hasattr + + return wrapper + +- + else: + TwistedEventLoop = getattr(urwid, "TwistedEventLoop", None) + diff --git a/typing_extensions.patch b/typing_extensions.patch new file mode 100644 index 0000000..647aae3 --- /dev/null +++ b/typing_extensions.patch @@ -0,0 +1,131 @@ +From 51ebc86070c7a49abe78ba87a0e8268a09f141a6 Mon Sep 17 00:00:00 2001 +From: Sebastian Ramacher +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