Hello community, here is the log from the commit of package python-pyenchant for openSUSE:Factory checked in at 2020-06-11 14:37:39 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-pyenchant (Old) and /work/SRC/openSUSE:Factory/.python-pyenchant.new.3606 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pyenchant" Thu Jun 11 14:37:39 2020 rev:18 rq:810504 version:3.1.1 Changes: -------- --- /work/SRC/openSUSE:Factory/python-pyenchant/python-pyenchant.changes 2020-05-28 09:08:54.083962361 +0200 +++ /work/SRC/openSUSE:Factory/.python-pyenchant.new.3606/python-pyenchant.changes 2020-06-11 14:37:46.648102766 +0200 @@ -1,0 +2,10 @@ +Sun May 31 18:31:14 UTC 2020 - Matej Cepl <mc...@suse.com> + +- Update to version 3.1.1: + - On Windows, set PATH instead of calling SetDllDirectory + before loading the Enchant C library. This allows PyEnchant to + co-exist with other libraries in the same program. Fix + gh#pyenchant/pyenchant#207. + - Hopefully fix gh#pyenchant/pyenchant#203 as well. + +------------------------------------------------------------------- Old: ---- pyenchant-3.1.0.tar.gz New: ---- pyenchant-3.1.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-pyenchant.spec ++++++ --- /var/tmp/diff_new_pack.l6XxFx/_old 2020-06-11 14:37:47.144104184 +0200 +++ /var/tmp/diff_new_pack.l6XxFx/_new 2020-06-11 14:37:47.144104184 +0200 @@ -19,7 +19,7 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} %define skip_python2 1 Name: python-pyenchant -Version: 3.1.0 +Version: 3.1.1 Release: 0 Summary: Python bindings for the Enchant spellchecking system License: LGPL-2.1-or-later @@ -66,8 +66,7 @@ %check export LANG=en_US.UTF-8 %python_exec -c 'import enchant; print(vars(enchant.Dict()))' -# gh#pyenchant/pyenchant#203 -%pytest -k 'not test_docstrings' +%pytest %files %{python_files} %license LICENSE.txt ++++++ pyenchant-3.1.0.tar.gz -> pyenchant-3.1.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenchant-3.1.0/enchant/__init__.py new/pyenchant-3.1.1/enchant/__init__.py --- old/pyenchant-3.1.0/enchant/__init__.py 2020-05-20 11:13:39.000000000 +0200 +++ new/pyenchant-3.1.1/enchant/__init__.py 2020-05-31 17:56:21.000000000 +0200 @@ -72,7 +72,7 @@ """ _DOC_ERRORS = ["enchnt", "enchnt", "incant", "fr"] -__version__ = "3.1.0" +__version__ = "3.1.1" import os import warnings @@ -282,7 +282,8 @@ self._check_this() new_dict = _e.broker_request_dict(self._this, tag.encode()) if new_dict is None: - e_str = "Dictionary for language '%s' could not be found" + e_str = "Dictionary for language '%s' could not be found\n" + e_str += "Please check https://pyenchant.github.io/pyenchant/ for details" self._raise_error(e_str % (tag,), DictNotFoundError) if new_dict not in self._live_dicts: self._live_dicts[new_dict] = 1 @@ -906,6 +907,8 @@ """ return _e.set_prefix_dir(path) + set_prefix_dir._DOC_ERRORS = ["plugins"] + def get_user_config_dir(): """Return the path that will be used by some diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenchant-3.1.0/enchant/_enchant.py new/pyenchant-3.1.1/enchant/_enchant.py --- old/pyenchant-3.1.0/enchant/_enchant.py 2020-05-20 11:13:39.000000000 +0200 +++ new/pyenchant-3.1.1/enchant/_enchant.py 2020-05-31 17:56:21.000000000 +0200 @@ -68,8 +68,9 @@ # Make sure all the dlls found next to libenchant-2.dll # (libglib-2.0-0.dll, libgmodule-2.0-0.dll, ...) can be # used without having to modify %PATH% - find_message("calling SetDllDirectoryW ", bin_path) - ctypes.windll.kernel32.SetDllDirectoryW(bin_path) + new_path = bin_path + os.pathsep + os.environ["PATH"] + find_message("Prepending ", bin_path, " to %PATH%") + os.environ["PATH"] = new_path return enchant_dll_path diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenchant-3.1.0/setup.cfg new/pyenchant-3.1.1/setup.cfg --- old/pyenchant-3.1.0/setup.cfg 2020-05-20 11:13:39.000000000 +0200 +++ new/pyenchant-3.1.1/setup.cfg 2020-05-31 17:56:21.000000000 +0200 @@ -1,6 +1,6 @@ [metadata] name = pyenchant -version = 3.1.0 +version = 3.1.1 description = Python bindings for the Enchant spellchecking system long_description = file: README.rst author = Dimitri Merejkowsky diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenchant-3.1.0/tbump.toml new/pyenchant-3.1.1/tbump.toml --- old/pyenchant-3.1.0/tbump.toml 2020-05-20 11:13:39.000000000 +0200 +++ new/pyenchant-3.1.1/tbump.toml 2020-05-31 17:56:21.000000000 +0200 @@ -1,5 +1,5 @@ [version] -current = "3.1.0" +current = "3.1.1" regex = ''' (?P<major>\d+) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenchant-3.1.0/tests/test_checker.py new/pyenchant-3.1.1/tests/test_checker.py --- old/pyenchant-3.1.0/tests/test_checker.py 2020-05-20 11:13:39.000000000 +0200 +++ new/pyenchant-3.1.1/tests/test_checker.py 2020-05-31 17:56:21.000000000 +0200 @@ -205,11 +205,11 @@ def test_bug2785373(): """Testcases for bug #2785373.""" - c = SpellChecker(enchant.Dict("en"), "") + c = SpellChecker(enchant.Dict("en_US"), "") c.set_text("So, one dey when I wes 17, I left.") for err in c: pass - c = SpellChecker(enchant.Dict("en"), "") + c = SpellChecker(enchant.Dict("en_US"), "") c.set_text("So, one dey when I wes 17, I left.") for err in c: pass diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenchant-3.1.0/tests/test_dict.py new/pyenchant-3.1.1/tests/test_dict.py --- old/pyenchant-3.1.0/tests/test_dict.py 2020-05-20 11:13:39.000000000 +0200 +++ new/pyenchant-3.1.1/tests/test_dict.py 2020-05-31 17:56:21.000000000 +0200 @@ -128,7 +128,7 @@ def test_pickling(en_us_dict): """Test that pickling doesn't corrupt internal state.""" - d1 = Dict("en") + d1 = Dict("en_US") assert d1.check("hello") d2 = pickle.loads(pickle.dumps(d1)) assert d1.check("hello") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenchant-3.1.0/tests/test_docstrings.py new/pyenchant-3.1.1/tests/test_docstrings.py --- old/pyenchant-3.1.0/tests/test_docstrings.py 2020-05-20 11:13:39.000000000 +0200 +++ new/pyenchant-3.1.1/tests/test_docstrings.py 2020-05-31 17:56:21.000000000 +0200 @@ -111,7 +111,7 @@ if hasattr(obj, "__doc__"): skip_errors = [w for w in getattr(obj, "_DOC_ERRORS", [])] chkr = enchant.checker.SpellChecker( - "en", obj.__doc__, filters=[enchant.tokenize.URLFilter] + "en_US", obj.__doc__, filters=[enchant.tokenize.URLFilter] ) for err in chkr: if len(err.word) == 1: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenchant-3.1.0/website/content/changelog.rst new/pyenchant-3.1.1/website/content/changelog.rst --- old/pyenchant-3.1.0/website/content/changelog.rst 2020-05-20 11:13:39.000000000 +0200 +++ new/pyenchant-3.1.1/website/content/changelog.rst 2020-05-31 17:56:21.000000000 +0200 @@ -1,9 +1,17 @@ Changelog ========= -3.0.2 ------- +3.1.1 (2020-05-31) +------------------ +* On Windows, set PATH instead of calling ``SetDllDirectory`` before loading the + Enchant C library. This allows PyEnchant to co-exist with other libraries + in the same program. Fix #207. + +3.1.0 (2020-05-20) +------------------- + +* Add ``enchant.get_user_config_dir()`` * Fix: ``enchant.get_enchant_version()`` now returns a ``str``, not some ``bytes`` 3.0.1 (2020-03-01) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenchant-3.1.0/website/content/install.rst new/pyenchant-3.1.1/website/content/install.rst --- old/pyenchant-3.1.0/website/content/install.rst 2020-05-20 11:13:39.000000000 +0200 +++ new/pyenchant-3.1.1/website/content/install.rst 2020-05-31 17:56:21.000000000 +0200 @@ -9,11 +9,18 @@ You can install it with ``pip`` as usual. -However, PyEnchant needs to find the Enchant C library in order to work properly. The way to -achieve this depends on the platform you are using: +However, to work properly, PyEnchant needs to: + +* find the Enchant C library +* find the dictionaries for your particular language + +The way to achieve this depends on the platform you are using: + +Installing the Enchant C library +-------------------------------- On Linux --------- +++++++++ The quickest way is to install `libenchant` using the package manager of your current distribution. PyEnchant tries to be compatible with a large @@ -29,7 +36,7 @@ might not bring along `binutils` by default. On macOS --------- +++++++++ The quickest way is to install `libenchant` using `Homebrew <https://brew.sh/>`_: @@ -39,7 +46,7 @@ brew install enchant On Windows ----------- ++++++++++++ The `enchant` C library depends on `glib2`, which poses some interesting challenges. @@ -47,7 +54,7 @@ both with their pros and cons. Using the binary wheel -+++++++++++++++++++++++ +~~~~~~~~~~~~~~~~~~~~~~~ The Windows binary wheels on *pypi.org* contain a pre-compiled `enchant` library, if your Python version is compatible, it will get used by `pip` automatically. @@ -63,7 +70,7 @@ * A copy of the `glib2.dll` and other dependencies are included Using MinGW -+++++++++++ +~~~~~~~~~~~ An other way to use `pyenchant` is to install MinGW (for instance with `Chocolatey <https://chocolatey.org/>`_), then use `pacman` to install @@ -88,6 +95,38 @@ so typically *not* the one you've installed from `python.org`. +Installing a dictionary +------------------------ + +Let's assume you want to use PyEnchant on a text written in German. + +First, use the Enchant Python API to list known languages and providers:: + + import enchant + broker = enchant.Broker() + broker.describe() + broker.list_languages() + + +If ``enchant.list_languages()`` shows ``de_DE``, you're done and can move on to the +tutorial section. + +If not, you should install the dictionary for one of the listed providers. + +So for instance, if the ``hunspell`` is listed as a Enchant provider, you +should install the German dictionary for the ``hunspell`` provider. + +On **Linux** and **macOS**, this can be done by installing the ``hunspell-de`` +package. + +On **Windows**, if you have installed PyEnchant from a +wheel, you can download the hunspell dictionary files you need +(both the `.dic` and `.aff` extensions) and put them inside +``/path/to/enchant/data/mingw<bits>/enchant/share/hunspell``. You +can find many dictionaries in `LibreOffice sources +<https://cgit.freedesktop.org/libreoffice/dictionaries/tree/>`_. + + Troubleshooting --------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenchant-3.1.0/website/content/tutorial.rst new/pyenchant-3.1.1/website/content/tutorial.rst --- old/pyenchant-3.1.0/website/content/tutorial.rst 2020-05-20 11:13:39.000000000 +0200 +++ new/pyenchant-3.1.1/website/content/tutorial.rst 2020-05-31 17:56:21.000000000 +0200 @@ -71,24 +71,6 @@ * store_replacement: note that one word was used to replace another, meaning that it will appear higher in the list of suggestions in the future. -Adding support for more languages -+++++++++++++++++++++++++++++++++ - -Let's assume you want to use PyEnchant on a text written in German. - -Let's also assume that ``enchant.list_languages()`` dose not show the language tag you are interested in ``de_DE`` is this case. - -First, you should use the ``describe()`` method of the ``Broker`` class to list available providers. - -Let's say ``aspell`` is found in the list. Now you have to install the correct dictionary for the aspell provider. -On **Linux** and **macOS**, this can be done by installing the ``aspell-de`` packgae using your favorite package manager. - -On **Windows**, if you have installed PyEnchant from a wheel, you can download the hunspell dictionary files you -need (both the `.dic` and `.aff` extensions) and put them inside ``/path/to/site-packages/enchant/data/mingw<bits>/enchant/share/hunspell``. - -You can find many dictionaries in `libreoffice sources <https://cgit.freedesktop.org/libreoffice/dictionaries/tree/>`_. - - Personal Word Lists ++++++++++++++++++++