Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-ipython for openSUSE:Factory checked in at 2022-12-28 10:54:13 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-ipython (Old) and /work/SRC/openSUSE:Factory/.python-ipython.new.1563 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-ipython" Wed Dec 28 10:54:13 2022 rev:35 rq:1045320 version:8.7.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-ipython/python-ipython.changes 2022-11-07 13:51:26.055714802 +0100 +++ /work/SRC/openSUSE:Factory/.python-ipython.new.1563/python-ipython.changes 2022-12-28 10:54:13.932016569 +0100 @@ -1,0 +2,10 @@ +Sun Dec 25 19:08:47 UTC 2022 - Ben Greiner <c...@bnavigator.de> + +- Update to 8.7.0 + * PR #13834 bump the minimum prompt toolkit to 3.0.11. + * IPython shipped with the py.typed marker now, and we are + progressively adding more types. PR #13831 + * PR #13817 add configuration of code blacks formatting. +- Move to PEP517 build + +------------------------------------------------------------------- Old: ---- ipython-8.6.0.tar.gz New: ---- ipython-8.7.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-ipython.spec ++++++ --- /var/tmp/diff_new_pack.9x1Ac6/_old 2022-12-28 10:54:14.464019331 +0100 +++ /var/tmp/diff_new_pack.9x1Ac6/_new 2022-12-28 10:54:14.472019372 +0100 @@ -32,7 +32,7 @@ # extra tests are skipped automatically, don't require these packages for Ring1 %bcond_with localtest Name: python-ipython%{psuffix} -Version: 8.6.0 +Version: 8.7.0 Release: 0 Summary: Rich architecture for interactive computing with Python License: BSD-3-Clause @@ -41,15 +41,16 @@ Source: https://files.pythonhosted.org/packages/source/i/ipython/ipython-%{version}.tar.gz Source1: https://raw.githubusercontent.com/jupyter/qtconsole/4.0.0/qtconsole/resources/icon/JupyterConsole.svg BuildRequires: %{python_module base >= 3.8} +BuildRequires: %{python_module pip} BuildRequires: %{python_module setuptools >= 51.0.0} +BuildRequires: %{python_module wheel} BuildRequires: %{pythons} BuildRequires: fdupes BuildRequires: python-rpm-macros >= 20210929 -Requires: (python-prompt_toolkit > 3.0.1 with python-prompt_toolkit < 3.1) +Requires: (python-prompt_toolkit >= 3.0.11 with python-prompt_toolkit < 3.1) # requires the full stdlib including sqlite3 Requires: python >= 3.8 Requires: python-backcall -Requires: python-black Requires: python-decorator Requires: python-jedi >= 0.16 Requires: python-matplotlib-inline @@ -84,7 +85,6 @@ BuildRequires: %{python_module matplotlib} BuildRequires: %{python_module numpy >= 1.20} BuildRequires: %{python_module pandas} -BuildRequires: %{python_module pygments >= 2.4.0} BuildRequires: %{python_module pytest-asyncio} BuildRequires: %{python_module pytest} BuildRequires: %{python_module testpath} @@ -144,7 +144,7 @@ %autosetup -p1 -n ipython-%{version} %build -%python_build +%pyproject_wheel %if !%{with test} %if %{with ico} @@ -157,10 +157,12 @@ %install %if !%{with test} -%python_install +%pyproject_install %python_clone -a %{buildroot}%{_bindir}/ipython %python_clone -a %{buildroot}%{_bindir}/ipython3 +# gh#ipython/ipython#13815 +%python_expand cp %{buildroot}%{_bindir}/ipython{-%{$python_bin_suffix },%{$python_bin_suffix}} # must clone after copy cp %{buildroot}%{_mandir}/man1/ipython{,3}.1 @@ -203,6 +205,8 @@ %if %{with test} %check +# check our fix for https://github.com/ipython/ipython/issues/13815 +%python_expand ipython%{$python_bin_suffix} --show-config | grep "Python %{$python_version}" export PYTHONPATH=$(pwd) %pytest %endif @@ -229,10 +233,11 @@ %doc README.rst docs/source/about/license_and_copyright.rst %python_alternative %{_bindir}/ipython %python_alternative %{_bindir}/ipython3 +%{_bindir}/ipython%{python_bin_suffix} %python_alternative %{_mandir}/man1/ipython.1.gz %python_alternative %{_mandir}/man1/ipython3.1.gz %{python_sitelib}/IPython/ -%{python_sitelib}/ipython-%{version}-py*.egg-info +%{python_sitelib}/ipython-%{version}.dist-info %{_datadir}/applications/ipython-%{python_bin_suffix}.desktop %{_datadir}/icons/hicolor/scalable/apps/IPython-%{python_bin_suffix}.svg %if %{with ico} ++++++ ipython-8.6.0.tar.gz -> ipython-8.7.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/IPython/core/compilerop.py new/ipython-8.7.0/IPython/core/compilerop.py --- old/ipython-8.6.0/IPython/core/compilerop.py 2022-10-30 08:09:10.000000000 +0100 +++ new/ipython-8.7.0/IPython/core/compilerop.py 2022-11-28 09:58:47.000000000 +0100 @@ -116,6 +116,21 @@ """ return code_name(transformed_code, number) + def format_code_name(self, name): + """Return a user-friendly label and name for a code block. + + Parameters + ---------- + name : str + The name for the code block returned from get_code_name + + Returns + ------- + A (label, name) pair that can be used in tracebacks, or None if the default formatting should be used. + """ + if name in self._filename_map: + return "Cell", "In[%s]" % self._filename_map[name] + def cache(self, transformed_code, number=0, raw_code=None): """Make a name for a block of code, and cache the code. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/IPython/core/completer.py new/ipython-8.7.0/IPython/core/completer.py --- old/ipython-8.6.0/IPython/core/completer.py 2022-10-29 13:43:50.000000000 +0200 +++ new/ipython-8.7.0/IPython/core/completer.py 2022-11-28 09:58:47.000000000 +0100 @@ -671,6 +671,19 @@ Matcher: TypeAlias = Union[MatcherAPIv1, MatcherAPIv2] +def has_any_completions(result: MatcherResult) -> bool: + """Check if any result includes any completions.""" + if hasattr(result["completions"], "__len__"): + return len(result["completions"]) != 0 + try: + old_iterator = result["completions"] + first = next(old_iterator) + result["completions"] = itertools.chain([first], old_iterator) + return True + except StopIteration: + return False + + def completion_matcher( *, priority: float = None, identifier: str = None, api_version: int = 1 ): @@ -684,7 +697,10 @@ identifier : Optional[str] identifier of the matcher allowing users to modify the behaviour via traitlets, and also used to for debugging (will be passed as ``origin`` with the completions). - Defaults to matcher function ``__qualname__``. + + Defaults to matcher function's ``__qualname__`` (for example, + ``IPCompleter.file_matcher`` for the built-in matched defined + as a ``file_matcher`` method of the ``IPCompleter`` class). api_version: Optional[int] version of the Matcher API used by this matcher. Currently supported values are 1 and 2. @@ -1447,14 +1463,18 @@ If False, only the completion results from the first non-empty completer will be returned. - + As of version 8.6.0, setting the value to ``False`` is an alias for: ``IPCompleter.suppress_competing_matchers = True.``. """, ).tag(config=True) disable_matchers = ListTrait( - Unicode(), help="""List of matchers to disable.""" + Unicode(), + help="""List of matchers to disable. + + The list should contain matcher identifiers (see :any:`completion_matcher`). + """, ).tag(config=True) omit__names = Enum( @@ -1952,7 +1972,7 @@ else: return [] - def python_matches(self, text:str)->List[str]: + def python_matches(self, text: str) -> Iterable[str]: """Match attributes or global python names""" if "." in text: try: @@ -2807,7 +2827,7 @@ should_suppress = ( (suppression_config is True) or (suppression_recommended and (suppression_config is not False)) - ) and len(result["completions"]) + ) and has_any_completions(result) if should_suppress: suppression_exceptions = result.get("do_not_suppress", set()) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/IPython/core/magics/basic.py new/ipython-8.7.0/IPython/core/magics/basic.py --- old/ipython-8.6.0/IPython/core/magics/basic.py 2022-10-29 13:02:00.000000000 +0200 +++ new/ipython-8.7.0/IPython/core/magics/basic.py 2022-11-28 09:58:47.000000000 +0100 @@ -297,7 +297,10 @@ oname = args and args or '_' info = self.shell._ofind(oname) if info['found']: - txt = (raw and str or pformat)( info['obj'] ) + if raw: + txt = str(info["obj"]) + else: + txt = pformat(info["obj"]) page.page(txt) else: print('Object `%s` not found' % oname) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/IPython/core/magics/config.py new/ipython-8.7.0/IPython/core/magics/config.py --- old/ipython-8.6.0/IPython/core/magics/config.py 2022-10-29 13:43:50.000000000 +0200 +++ new/ipython-8.7.0/IPython/core/magics/config.py 2022-11-28 09:58:47.000000000 +0100 @@ -82,6 +82,8 @@ Current: False IPCompleter.disable_matchers=<list-item-1>... List of matchers to disable. + The list should contain matcher identifiers (see + :any:`completion_matcher`). Current: [] IPCompleter.greedy=<Bool> Activate greedy completion diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/IPython/core/release.py new/ipython-8.7.0/IPython/core/release.py --- old/ipython-8.6.0/IPython/core/release.py 2022-10-30 10:30:09.000000000 +0100 +++ new/ipython-8.7.0/IPython/core/release.py 2022-11-28 14:50:12.000000000 +0100 @@ -16,7 +16,7 @@ # release. 'dev' as a _version_extra string means this is a development # version _version_major = 8 -_version_minor = 6 +_version_minor = 7 _version_patch = 0 _version_extra = ".dev" # _version_extra = "rc1" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/IPython/core/tests/test_completer.py new/ipython-8.7.0/IPython/core/tests/test_completer.py --- old/ipython-8.6.0/IPython/core/tests/test_completer.py 2022-10-29 13:43:50.000000000 +0200 +++ new/ipython-8.7.0/IPython/core/tests/test_completer.py 2022-11-28 09:58:47.000000000 +0100 @@ -1396,6 +1396,65 @@ configure({"b_matcher": True}) _("do not suppress", ["completion_b"]) + configure(True) + _("do not suppress", ["completion_a"]) + + def test_matcher_suppression_with_iterator(self): + @completion_matcher(identifier="matcher_returning_iterator") + def matcher_returning_iterator(text): + return iter(["completion_iter"]) + + @completion_matcher(identifier="matcher_returning_list") + def matcher_returning_list(text): + return ["completion_list"] + + with custom_matchers([matcher_returning_iterator, matcher_returning_list]): + ip = get_ipython() + c = ip.Completer + + def _(text, expected): + c.use_jedi = False + s, matches = c.complete(text) + self.assertEqual(expected, matches) + + def configure(suppression_config): + cfg = Config() + cfg.IPCompleter.suppress_competing_matchers = suppression_config + c.update_config(cfg) + + configure(False) + _("---", ["completion_iter", "completion_list"]) + + configure(True) + _("---", ["completion_iter"]) + + configure(None) + _("--", ["completion_iter", "completion_list"]) + + def test_matcher_suppression_with_jedi(self): + ip = get_ipython() + c = ip.Completer + c.use_jedi = True + + def configure(suppression_config): + cfg = Config() + cfg.IPCompleter.suppress_competing_matchers = suppression_config + c.update_config(cfg) + + def _(): + with provisionalcompleter(): + matches = [completion.text for completion in c.completions("dict.", 5)] + self.assertIn("keys", matches) + + configure(False) + _() + + configure(True) + _() + + configure(None) + _() + def test_matcher_disabling(self): @completion_matcher(identifier="a_matcher") def a_matcher(text): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/IPython/core/ultratb.py new/ipython-8.7.0/IPython/core/ultratb.py --- old/ipython-8.6.0/IPython/core/ultratb.py 2022-10-30 08:09:10.000000000 +0100 +++ new/ipython-8.7.0/IPython/core/ultratb.py 2022-11-28 09:58:47.000000000 +0100 @@ -173,7 +173,7 @@ def _format_filename(file, ColorFilename, ColorNormal, *, lineno=None): """ - Format filename lines with `In [n]` if it's the nth code cell or `File *.py` if it's a module. + Format filename lines with custom formatting from caching compiler or `File *.py` by default Parameters ---------- @@ -184,23 +184,29 @@ ColorScheme's normal coloring to be used. """ ipinst = get_ipython() - - if ipinst is not None and file in ipinst.compile._filename_map: - file = "[%s]" % ipinst.compile._filename_map[file] + if ( + ipinst is not None + and (data := ipinst.compile.format_code_name(file)) is not None + ): + label, name = data if lineno is None: - tpl_link = f"Cell {ColorFilename}In {{file}}{ColorNormal}" + tpl_link = f"{{label}} {ColorFilename}{{name}}{ColorNormal}" else: - tpl_link = f"Cell {ColorFilename}In {{file}}, line {{lineno}}{ColorNormal}" + tpl_link = ( + f"{{label}} {ColorFilename}{{name}}, line {{lineno}}{ColorNormal}" + ) else: - file = util_path.compress_user( + label = "File" + name = util_path.compress_user( py3compat.cast_unicode(file, util_path.fs_encoding) ) if lineno is None: - tpl_link = f"File {ColorFilename}{{file}}{ColorNormal}" + tpl_link = f"{{label}} {ColorFilename}{{name}}{ColorNormal}" else: - tpl_link = f"File {ColorFilename}{{file}}:{{lineno}}{ColorNormal}" + # can we make this the more friendly ", line {{lineno}}", or do we need to preserve the formatting with the colon? + tpl_link = f"{{label}} {ColorFilename}{{name}}:{{lineno}}{ColorNormal}" - return tpl_link.format(file=file, lineno=lineno) + return tpl_link.format(label=label, name=name, lineno=lineno) #--------------------------------------------------------------------------- # Module classes diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/IPython/sphinxext/ipython_directive.py new/ipython-8.7.0/IPython/sphinxext/ipython_directive.py --- old/ipython-8.6.0/IPython/sphinxext/ipython_directive.py 2022-10-29 13:02:00.000000000 +0200 +++ new/ipython-8.7.0/IPython/sphinxext/ipython_directive.py 2022-11-28 09:58:47.000000000 +0100 @@ -981,8 +981,9 @@ self.shell.warning_is_error = warning_is_error # setup bookmark for saving figures directory - self.shell.process_input_line('bookmark ipy_savedir %s'%savefig_dir, - store_history=False) + self.shell.process_input_line( + 'bookmark ipy_savedir "%s"' % savefig_dir, store_history=False + ) self.shell.clear_cout() return rgxin, rgxout, promptin, promptout diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/IPython/utils/_sysinfo.py new/ipython-8.7.0/IPython/utils/_sysinfo.py --- old/ipython-8.6.0/IPython/utils/_sysinfo.py 2022-10-30 10:30:09.000000000 +0100 +++ new/ipython-8.7.0/IPython/utils/_sysinfo.py 2022-11-28 14:50:12.000000000 +0100 @@ -1,2 +1,2 @@ # GENERATED BY setup.py -commit = "f8d0e4c79" +commit = "ff770b25d" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/MANIFEST.in new/ipython-8.7.0/MANIFEST.in --- old/ipython-8.6.0/MANIFEST.in 2022-09-28 10:27:21.000000000 +0200 +++ new/ipython-8.7.0/MANIFEST.in 2022-11-15 11:31:42.000000000 +0100 @@ -4,6 +4,7 @@ include setupbase.py include MANIFEST.in include pytest.ini +include py.typed include mypy.ini include .mailmap include .flake8 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/PKG-INFO new/ipython-8.7.0/PKG-INFO --- old/ipython-8.6.0/PKG-INFO 2022-10-30 10:30:09.000000000 +0100 +++ new/ipython-8.7.0/PKG-INFO 2022-11-28 14:50:12.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: ipython -Version: 8.6.0 +Version: 8.7.0 Summary: IPython: Productive Interactive Computing Home-page: https://ipython.org Author: The IPython Development Team diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/docs/source/whatsnew/version8.rst new/ipython-8.7.0/docs/source/whatsnew/version8.rst --- old/ipython-8.6.0/docs/source/whatsnew/version8.rst 2022-10-30 10:29:48.000000000 +0100 +++ new/ipython-8.7.0/docs/source/whatsnew/version8.rst 2022-11-28 10:06:22.000000000 +0100 @@ -2,6 +2,32 @@ 8.x Series ============ + +.. _version 8.7.0: + +IPython 8.7.0 +------------- + + +Small release of IPython with a couple of bug fixes and new features for this +month. Next month is end of year, it is unclear if there will be a release close +the new year's eve, or if the next release will be at end of January. + +Here are a few of the relevant fixes, +as usual you can find the full list of PRs on GitHub under `the 8.7 milestone +<https://github.com/ipython/ipython/pulls?q=milestone%3A8.7>`__. + + + - :ghpull:`13834` bump the minimum prompt toolkit to 3.0.11. + - IPython shipped with the ``py.typed`` marker now, and we are progressively + adding more types. :ghpull:`13831` + - :ghpull:`13817` add configuration of code blacks formatting. + + +Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring +work on IPython and related libraries. + + .. _version 8.6.0: IPython 8.6.0 @@ -40,7 +66,7 @@ The ``open()`` function present in the user namespace by default will now refuse to open the file descriptors 0,1,2 (stdin, out, err), to avoid crashing IPython. -This mostly occurs in teaching context when incorrect values get passed around. +This mostly occurs in teaching context when incorrect values get passed around. The ``?``, ``??``, and corresponding ``pinfo``, ``pinfo2`` magics can now find diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/ipython.egg-info/PKG-INFO new/ipython-8.7.0/ipython.egg-info/PKG-INFO --- old/ipython-8.6.0/ipython.egg-info/PKG-INFO 2022-10-30 10:30:09.000000000 +0100 +++ new/ipython-8.7.0/ipython.egg-info/PKG-INFO 2022-11-28 14:50:12.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: ipython -Version: 8.6.0 +Version: 8.7.0 Summary: IPython: Productive Interactive Computing Home-page: https://ipython.org Author: The IPython Development Team diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/ipython.egg-info/SOURCES.txt new/ipython-8.7.0/ipython.egg-info/SOURCES.txt --- old/ipython-8.6.0/ipython.egg-info/SOURCES.txt 2022-10-30 10:30:09.000000000 +0100 +++ new/ipython-8.7.0/ipython.egg-info/SOURCES.txt 2022-11-28 14:50:12.000000000 +0100 @@ -18,6 +18,7 @@ IPython/consoleapp.py IPython/display.py IPython/paths.py +IPython/py.typed IPython/core/__init__.py IPython/core/alias.py IPython/core/application.py diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/ipython.egg-info/entry_points.txt new/ipython-8.7.0/ipython.egg-info/entry_points.txt --- old/ipython-8.6.0/ipython.egg-info/entry_points.txt 2022-10-30 10:30:09.000000000 +0100 +++ new/ipython-8.7.0/ipython.egg-info/entry_points.txt 2022-11-28 14:50:12.000000000 +0100 @@ -1,8 +1,4 @@ [console_scripts] ipython = IPython:start_ipython ipython3 = IPython:start_ipython - -[pygments.lexers] -ipython = IPython.lib.lexers:IPythonLexer -ipython3 = IPython.lib.lexers:IPython3Lexer -ipythonconsole = IPython.lib.lexers:IPythonConsoleLexer +ipython3.10 = IPython:start_ipython diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/ipython.egg-info/requires.txt new/ipython-8.7.0/ipython.egg-info/requires.txt --- old/ipython-8.6.0/ipython.egg-info/requires.txt 2022-10-30 10:30:09.000000000 +0100 +++ new/ipython-8.7.0/ipython.egg-info/requires.txt 2022-11-28 14:50:12.000000000 +0100 @@ -3,7 +3,7 @@ jedi>=0.16 matplotlib-inline pickleshare -prompt_toolkit<3.1.0,>3.0.1 +prompt_toolkit<3.1.0,>=3.0.11 pygments>=2.4.0 stack_data traitlets>=5 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/setup.cfg new/ipython-8.7.0/setup.cfg --- old/ipython-8.6.0/setup.cfg 2022-10-30 10:30:09.000000000 +0100 +++ new/ipython-8.7.0/setup.cfg 2022-11-28 14:50:12.000000000 +0100 @@ -37,7 +37,7 @@ matplotlib-inline pexpect>4.3; sys_platform != "win32" pickleshare - prompt_toolkit>3.0.1,<3.1.0 + prompt_toolkit>=3.0.11,<3.1.0 pygments>=2.4.0 stack_data traitlets>=5 @@ -106,9 +106,6 @@ IPython.testing.plugin = *.txt [options.entry_points] -console_scripts = - ipython = IPython:start_ipython - ipython3 = IPython:start_ipython pygments.lexers = ipythonconsole = IPython.lib.lexers:IPythonConsoleLexer ipython = IPython.lib.lexers:IPythonLexer diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/setup.py new/ipython-8.7.0/setup.py --- old/ipython-8.6.0/setup.py 2022-09-28 10:27:21.000000000 +0200 +++ new/ipython-8.7.0/setup.py 2022-11-28 09:58:47.000000000 +0100 @@ -66,7 +66,7 @@ # Our own imports sys.path.insert(0, ".") -from setupbase import target_update +from setupbase import target_update, find_entry_points from setupbase import ( setup_args, @@ -139,6 +139,7 @@ 'install_scripts_sym': install_scripts_for_symlink, 'unsymlink': unsymlink, } +setup_args["entry_points"] = {"console_scripts": find_entry_points()} #--------------------------------------------------------------------------- # Do the actual setup now